[jts] 09/10: Imported Upstream version 1.11

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Tue Aug 4 17:08:47 UTC 2015


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository jts.

commit cf77d307ce327a91bc77b3870790baff4d27e7f2
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Tue Aug 4 19:06:22 2015 +0200

    Imported Upstream version 1.11
---
 bin/jts.css                                        |   139 -
 bin/test.bat                                       |     2 +-
 bin/test_robust.bat                                |     4 +-
 bin/{test_vivid.bat => test_stmlf.bat}             |     4 +-
 bin/testrunner.properties                          |     4 +-
 doc/JTS Version History.html                       |   779 +
 doc/LICENSE.txt                                    |   504 +
 jtsio/doc/javadoc/allclasses-frame.html            |    34 +
 jtsio/doc/javadoc/allclasses-noframe.html          |    34 +
 .../vividsolutions/jts/io/oracle/OraReader.html    |   378 +
 .../vividsolutions/jts/io/oracle/OraWriter.html    |   353 +
 .../jts/io/oracle/package-frame.html               |    34 +
 .../jts/io/oracle/package-summary.html             |   165 +
 .../vividsolutions/jts/io/oracle/package-tree.html |   143 +
 .../com/vividsolutions/jts/io/sde/SdeReader.html   |   346 +
 .../vividsolutions/jts/io/sde/package-frame.html   |    32 +
 .../vividsolutions/jts/io/sde/package-summary.html |   161 +
 .../vividsolutions/jts/io/sde/package-tree.html    |   143 +
 jtsio/doc/javadoc/constant-values.html             |   164 +
 jtsio/doc/javadoc/deprecated-list.html             |   132 +
 jtsio/doc/javadoc/help-doc.html                    |   187 +
 jtsio/doc/javadoc/index-all.html                   |   212 +
 jtsio/doc/javadoc/index.html                       |    26 +
 jtsio/doc/javadoc/overview-frame.html              |    44 +
 jtsio/doc/javadoc/overview-summary.html            |   146 +
 jtsio/doc/javadoc/overview-tree.html               |   142 +
 jtsio/doc/javadoc/package-list                     |     2 +
 jtsio/doc/javadoc/packages.html                    |    31 +
 jtsio/doc/javadoc/resources/inherit.gif            |   Bin 0 -> 57 bytes
 jtsio/doc/javadoc/stylesheet.css                   |    29 +
 .../vividsolutions/jts/io/oracle/Constants.java    |   123 +
 .../vividsolutions/jts/io/oracle/OraReader.java    |   857 +
 .../vividsolutions/jts/io/oracle/OraWriter.java    |   819 +
 .../com/vividsolutions/jts/io/oracle/package.html  |     6 +
 .../com/vividsolutions/jts/io/sde/SdeReader.java   |   264 +
 .../src/com/vividsolutions/jts/io/sde/package.html |     6 +
 .../jts/generator/GeometryGenerator.java           |   169 +
 .../jts/generator/GridGenerator.java               |   175 +
 .../jts/generator/LineStringGenerator.java         |   219 +
 .../jts/generator/MultiGenerator.java              |   190 +
 .../jts/generator/PointGenerator.java              |    34 +-
 .../jts/generator/PolygonGenerator.java            |   328 +
 .../jts/io/gml2/GMLReaderTestCase.java             |   146 +
 .../jts/io/gml2/StaticLineStringTest.java          |   118 +
 .../jts/io/gml2/StaticMultiLineStringTest.java     |   128 +
 .../jts/io/gml2/StaticMultiPointTest.java          |    90 +
 .../jts/io/gml2/StaticMultiPolygonTest.java        |   226 +
 .../jts/io/gml2/StaticPointTest.java               |    86 +
 .../jts/io/gml2/StaticPolygonTest.java             |   195 +
 .../jts/io/gml2/WritingTestCase.java               |    64 +-
 .../com/vividsolutions/jts/io/gml2/geometry.xsd    |   349 +
 .../jts/io/oracle/ConnectedTestCase.java           |   120 +
 .../jts/io/oracle/StaticLineStringTest.java        |   190 +
 .../jts/io/oracle/StaticMultiLineStringTest.java   |   207 +
 .../jts/io/oracle/StaticMultiPointTest.java        |   171 +
 .../jts/io/oracle/StaticMultiPolygonTest.java      |   394 +
 .../jts/io/oracle/StaticPointTest.java             |   159 +
 .../jts/io/oracle/StaticPolygonTest.java           |   350 +
 .../jts/io/oracle/connection.properties            |     5 +
 jtsio/test/data/linestrings.xml                    |   312 +
 jtsio/test/data/multilinestrings.xml               |  1479 +
 jtsio/test/data/multipoints.xml                    |   580 +
 jtsio/test/data/multipolygons.xml                  |  8380 ++++
 jtsio/test/data/points.xml                         |   105 +
 jtsio/test/data/polygons.xml                       |  2047 +
 jtsio/test/readme                                  |     1 +
 src/.classpath                                     |    12 +
 src/.project                                       |    29 +
 src/Doxyfile                                       |   200 -
 src/com/vividsolutions/jts/JTSVersion.java         |     4 +-
 src/com/vividsolutions/jts/algorithm/Angle.java    |   307 +
 .../jts/algorithm/BoundaryNodeRule.java            |   191 +
 .../vividsolutions/jts/algorithm/CGAlgorithms.java |   211 +-
 .../jts/algorithm/CentralEndpointIntersector.java  |   125 +
 .../vividsolutions/jts/algorithm/CentroidArea.java |    44 +-
 .../vividsolutions/jts/algorithm/CentroidLine.java |    13 +-
 .../vividsolutions/jts/algorithm/HCoordinate.java  |    71 +-
 .../jts/algorithm/InteriorPointArea.java           |     5 +-
 .../jts/algorithm/LineIntersector.java             |    26 +-
 .../jts/algorithm/MCPointInRing.java               |     5 +-
 .../jts/algorithm/MinimumBoundingCircle.java       |   277 +
 .../jts/algorithm/MinimumDiameter.java             |   133 +-
 .../jts/algorithm/NonRobustCGAlgorithms.java       |     1 -
 .../jts/algorithm/NonRobustLineIntersector.java    |    22 +-
 .../vividsolutions/jts/algorithm/PointInRing.java  |     2 +
 .../vividsolutions/jts/algorithm/PointLocator.java |    75 +-
 .../jts/algorithm/RayCrossingCounter.java          |   225 +
 .../jts/algorithm/RobustCGAlgorithms.java          |     3 +-
 .../jts/algorithm/RobustDeterminant.java           |    12 +
 .../jts/algorithm/RobustLineIntersector.java       |   175 +-
 .../jts/algorithm/SIRtreePointInRing.java          |   127 -
 .../vividsolutions/jts/algorithm/VectorMath.java   |    86 +
 .../distance/DiscreteHausdorffDistance.java        |   226 +
 .../jts/algorithm/distance/DistanceToPoint.java    |    92 +
 .../jts/algorithm/distance/PointPairDistance.java  |   120 +
 .../jts/algorithm/distance/package.html            |    13 +
 .../locate/IndexedPointInAreaLocator.java          |   157 +
 .../PointOnGeometryLocator.java}                   |    24 +-
 .../{ => locate}/SimplePointInAreaLocator.java     |    54 +-
 .../jts/algorithm/locate/package.html              |    13 +
 .../jts/algorithm/match/AreaSimilarityMeasure.java |    40 +
 .../match/HausdorffSimilarityMeasure.java          |    62 +
 .../jts/algorithm/match/SimilarityMeasure.java     |    22 +
 .../algorithm/match/SimilarityMeasureCombiner.java |    16 +
 .../jts/algorithm/match/package.html               |    13 +
 .../vividsolutions/jts/awt/FontGlyphReader.java    |    85 +
 .../jts/awt/GeometryCollectionShape.java           |   128 +
 .../IdentityPointTransformation.java}              |    22 +-
 .../PointShapeFactory.java}                        |    26 +-
 .../PointTransformation.java}                      |    28 +-
 src/com/vividsolutions/jts/awt/PolygonShape.java   |   142 +
 .../jts/awt/ShapeCollectionPathIterator.java       |   121 +
 src/com/vividsolutions/jts/awt/ShapeReader.java    |   160 +
 src/com/vividsolutions/jts/awt/ShapeWriter.java    |   203 +
 .../jts/awt/SqarePointShapeFactory.java            |    93 +
 src/com/vividsolutions/jts/awt/package.html        |    13 +
 src/com/vividsolutions/jts/densify/Densifier.java  |   178 +
 src/com/vividsolutions/jts/densify/package.html    |    13 +
 src/com/vividsolutions/jts/geom/Coordinate.java    |    49 +-
 .../vividsolutions/jts/geom/CoordinateArrays.java  |    35 +-
 .../vividsolutions/jts/geom/CoordinateList.java    |    68 +-
 .../jts/geom/CoordinateSequenceComparator.java     |     2 +-
 .../jts/geom/CoordinateSequenceFilter.java         |    89 +
 .../jts/geom/CoordinateSequences.java              |    32 +
 .../jts/geom/DefaultCoordinateSequence.java        |     6 +-
 .../jts/geom/DefaultCoordinateSequenceFactory.java |     4 +-
 src/com/vividsolutions/jts/geom/Dimension.java     |     9 +-
 src/com/vividsolutions/jts/geom/Envelope.java      |   157 +-
 src/com/vividsolutions/jts/geom/Geometry.java      |   549 +-
 .../jts/geom/GeometryCollection.java               |    44 +-
 .../jts/geom/GeometryCollectionIterator.java       |     2 +-
 .../jts/geom/GeometryComponentFilter.java          |     9 +-
 .../vividsolutions/jts/geom/GeometryFactory.java   |   100 +-
 .../jts/geom/IntersectionMatrix.java               |    43 +-
 src/com/vividsolutions/jts/geom/LineSegment.java   |   169 +-
 src/com/vividsolutions/jts/geom/LineString.java    |    77 +-
 src/com/vividsolutions/jts/geom/Lineal.java        |    12 +
 src/com/vividsolutions/jts/geom/LinearRing.java    |    32 +-
 src/com/vividsolutions/jts/geom/Location.java      |    27 +-
 .../vividsolutions/jts/geom/MultiLineString.java   |    35 +-
 src/com/vividsolutions/jts/geom/MultiPoint.java    |    15 +-
 src/com/vividsolutions/jts/geom/MultiPolygon.java  |    30 +-
 .../vividsolutions/jts/geom/OctagonalEnvelope.java |   362 +
 src/com/vividsolutions/jts/geom/Point.java         |    55 +-
 src/com/vividsolutions/jts/geom/Polygon.java       |    66 +-
 src/com/vividsolutions/jts/geom/Polygonal.java     |    14 +
 .../vividsolutions/jts/geom/PrecisionModel.java    |    89 +-
 src/com/vividsolutions/jts/geom/Puntal.java        |    12 +
 src/com/vividsolutions/jts/geom/Triangle.java      |   288 +-
 .../geom/impl/CoordinateArraySequenceFactory.java  |     7 +-
 .../jts/geom/impl/PackedCoordinateSequence.java    |    36 +-
 .../geom/impl/PackedCoordinateSequenceFactory.java |    32 +
 src/com/vividsolutions/jts/geom/impl/package.html  |    13 +
 .../geom/prep/AbstractPreparedPolygonContains.java |   246 +
 .../jts/geom/prep/BasicPreparedGeometry.java       |   220 +
 .../jts/geom/prep/PreparedGeometry.java            |   188 +
 .../jts/geom/prep/PreparedGeometryFactory.java     |    85 +
 .../prep/PreparedLineString.java}                  |    55 +-
 .../geom/prep/PreparedLineStringIntersects.java    |   142 +
 .../prep/PreparedPoint.java}                       |    34 +-
 .../jts/geom/prep/PreparedPolygon.java             |   127 +
 .../jts/geom/prep/PreparedPolygonContains.java     |   101 +
 .../geom/prep/PreparedPolygonContainsProperly.java |   126 +
 .../jts/geom/prep/PreparedPolygonCovers.java       |   101 +
 .../jts/geom/prep/PreparedPolygonIntersects.java   |   117 +
 .../jts/geom/prep/PreparedPolygonPredicate.java    |   134 +
 src/com/vividsolutions/jts/geom/prep/package.html  |    13 +
 .../jts/geom/util/AffineTransformation.java        |  1053 +
 .../jts/geom/util/AffineTransformationBuilder.java |   131 +
 .../jts/geom/util/AffineTransformationFactory.java |   166 +
 ...cter.java => ComponentCoordinateExtracter.java} |    30 +-
 .../jts/geom/util/GeometryCollectionMapper.java    |    35 +
 .../jts/geom/util/GeometryCombiner.java            |   156 +
 .../jts/geom/util/GeometryEditor.java              |    60 +-
 .../jts/geom/util/GeometryExtracter.java           |   105 +
 .../jts/geom/util/GeometryTransformer.java         |    66 +-
 ...ygonExtracter.java => LineStringExtracter.java} |    47 +-
 .../jts/geom/util/LinearComponentExtracter.java    |    97 +-
 src/com/vividsolutions/jts/geom/util/Matrix.java   |    88 +
 .../util/NoninvertibleTransformationException.java |    20 +
 .../jts/geom/util/PointExtracter.java              |    34 +-
 .../jts/geom/util/PolygonExtracter.java            |    35 +-
 .../jts/geom/util/SineStarFactory.java             |   115 +
 src/com/vividsolutions/jts/geomgraph/EdgeEnd.java  |     2 +-
 .../vividsolutions/jts/geomgraph/EdgeEndStar.java  |    22 +-
 .../jts/geomgraph/EdgeIntersection.java            |     6 +
 src/com/vividsolutions/jts/geomgraph/EdgeList.java |    27 +-
 .../jts/geomgraph/EdgeNodingValidator.java         |    43 +-
 src/com/vividsolutions/jts/geomgraph/EdgeRing.java |    17 +-
 .../jts/geomgraph/GeometryGraph.java               |    78 +-
 src/com/vividsolutions/jts/geomgraph/Label.java    |    14 +-
 src/com/vividsolutions/jts/geomgraph/Node.java     |     1 +
 .../vividsolutions/jts/geomgraph/PlanarGraph.java  |    10 +-
 src/com/vividsolutions/jts/geomgraph/Quadrant.java |    52 +-
 .../jts/geomgraph/index/EdgeSetIntersector.java    |     7 +-
 .../jts/geomgraph/index/SegmentIntersector.java    |     6 +-
 .../vividsolutions/jts/index/bintree/Bintree.java  |    42 +-
 .../vividsolutions/jts/index/bintree/Interval.java |     5 +
 src/com/vividsolutions/jts/index/bintree/Node.java |     2 +
 .../vividsolutions/jts/index/bintree/NodeBase.java |    65 +-
 .../jts/index/chain/MonotoneChain.java             |     7 +-
 .../jts/index/chain/MonotoneChainBuilder.java      |    35 +-
 .../intervalrtree/IntervalRTreeBranchNode.java}    |    61 +-
 .../intervalrtree/IntervalRTreeLeafNode.java}      |    34 +-
 .../intervalrtree/IntervalRTreeNode.java}          |    68 +-
 .../intervalrtree/SortedPackedIntervalRTree.java   |   152 +
 .../jts/index/intervalrtree/package.html           |    13 +
 .../vividsolutions/jts/index/kdtree/KdNode.java    |   165 +
 .../vividsolutions/jts/index/kdtree/KdTree.java    |   217 +
 .../vividsolutions/jts/index/kdtree/package.html   |    13 +
 .../jts/index/quadtree/Quadtree.java               |    32 +-
 .../vividsolutions/jts/index/quadtree/Root.java    |     2 +-
 .../jts/index/strtree/AbstractNode.java            |     4 +-
 .../jts/index/strtree/AbstractSTRtree.java         |    54 +-
 .../vividsolutions/jts/index/strtree/STRtree.java  |    11 +-
 .../vividsolutions/jts/io/ByteArrayInStream.java   |    57 +-
 src/com/vividsolutions/jts/io/WKBReader.java       |    86 +-
 src/com/vividsolutions/jts/io/WKBWriter.java       |    73 +-
 src/com/vividsolutions/jts/io/WKTFileReader.java   |   149 +
 src/com/vividsolutions/jts/io/WKTReader.java       |   148 +-
 src/com/vividsolutions/jts/io/WKTWriter.java       |   136 +-
 .../vividsolutions/jts/io/gml2/GMLConstants.java   |     6 +-
 .../com/vividsolutions/jts/io/gml2/GMLHandler.java |   211 +-
 .../com/vividsolutions/jts/io/gml2/GMLReader.java  |    89 +-
 src/com/vividsolutions/jts/io/gml2/GMLWriter.java  |   487 +
 .../jts/io/gml2/GeometryStrategies.java            |     0
 src/com/vividsolutions/jts/io/gml2/package.html    |     6 +
 .../jts/linearref/LengthIndexedLine.java           |    24 +
 .../jts/linearref/LinearLocation.java              |    54 +-
 .../jts/linearref/LocationIndexOfPoint.java        |    23 +-
 .../jts/linearref/LocationIndexedLine.java         |    51 +
 ...{SegmentString.java => BasicSegmentString.java} |    66 +-
 .../jts/noding/FastNodingValidator.java            |   137 +
 .../noding/FastSegmentSetIntersectionFinder.java   |    63 +
 .../jts/noding/InteriorIntersectionFinder.java     |   180 +
 .../jts/noding/IntersectionAdder.java              |    11 +-
 .../jts/noding/IntersectionFinderAdder.java        |    44 +-
 .../vividsolutions/jts/noding/MCIndexNoder.java    |     5 +-
 ...ava => MCIndexSegmentSetMutualIntersector.java} |   281 +-
 .../jts/noding/NodableSegmentString.java           |    21 +
 ...{SegmentString.java => NodedSegmentString.java} |    94 +-
 .../vividsolutions/jts/noding/NodingValidator.java |     1 +
 src/com/vividsolutions/jts/noding/ScaledNoder.java |    29 +-
 .../jts/noding/SegmentIntersectionDetector.java    |   214 +
 .../jts/noding/SegmentIntersector.java             |    16 +-
 src/com/vividsolutions/jts/noding/SegmentNode.java |     4 +-
 .../vividsolutions/jts/noding/SegmentNodeList.java |    10 +-
 ...ector.java => SegmentSetMutualIntersector.java} |   138 +-
 .../vividsolutions/jts/noding/SegmentString.java   |   117 +-
 .../jts/noding/SegmentStringDissolver.java         |    21 +-
 .../jts/noding/SegmentStringUtil.java              |    35 +
 src/com/vividsolutions/jts/noding/SimpleNoder.java |     2 +-
 ...java => SimpleSegmentSetMutualIntersector.java} |   169 +-
 .../jts/noding/snapround/GeometryNoder.java        |    87 +
 .../jts/noding/snapround/HotPixel.java             |    27 +
 .../jts/noding/snapround/MCIndexPointSnapper.java  |     5 +-
 .../jts/noding/snapround/MCIndexSnapRounder.java   |    12 +-
 .../jts/noding/snapround/SimpleSnapRounder.java    |    55 +-
 .../vividsolutions/jts/operation/BoundaryOp.java   |   179 +
 .../jts/operation/GeometryGraphOperation.java      |    20 +-
 .../vividsolutions/jts/operation/IsSimpleOp.java   |   140 +-
 .../jts/operation/buffer/BufferBuilder.java        |    76 +-
 .../buffer/BufferInputLineSimplifier.java          |   257 +
 .../jts/operation/buffer/BufferOp.java             |   103 +-
 .../jts/operation/buffer/BufferParameters.java     |   294 +
 .../jts/operation/buffer/BufferSubgraph.java       |    11 +-
 .../jts/operation/buffer/OffsetCurveBuilder.java   |   615 +-
 .../operation/buffer/OffsetCurveSetBuilder.java    |    12 +-
 .../operation/buffer/OffsetCurveVertexList.java    |   133 +
 .../jts/operation/buffer/RightmostEdgeFinder.java  |     8 +-
 .../jts/operation/buffer/SubgraphDepthLocater.java |     4 +-
 .../validate/BufferCurveMaximumDistanceFinder.java |   143 +
 .../buffer/validate/BufferDistanceValidator.java   |   235 +
 .../buffer/validate/BufferResultValidator.java     |   205 +
 .../buffer/validate/DistanceToPointFinder.java     |    92 +
 .../buffer/validate/PointPairDistance.java         |   113 +
 .../jts/operation/buffer/validate/package.html     |    13 +
 .../jts/operation/distance/DistanceOp.java         |   205 +-
 .../jts/operation/distance/GeometryLocation.java   |    35 +-
 .../jts/operation/linemerge/LineMerger.java        |    46 +-
 .../jts/operation/linemerge/LineSequencer.java     |     2 +-
 .../jts/operation/linemerge/package.html           |    13 +
 .../overlay/ConsistentPolygonRingChecker.java      |   127 +
 .../jts/operation/overlay/MaximalEdgeRing.java     |    16 +-
 .../jts/operation/overlay/MinimalEdgeRing.java     |     4 +-
 .../jts/operation/overlay/OverlayOp.java           |    84 +-
 .../jts/operation/overlay/PolygonBuilder.java      |    13 +-
 .../operation/overlay/snap/GeometrySnapper.java    |   177 +
 .../operation/overlay/snap/LineStringSnapper.java  |   171 +
 .../overlay/snap/SnapIfNeededOverlayOp.java        |    80 +
 .../jts/operation/overlay/snap/SnapOverlayOp.java  |   116 +
 .../jts/operation/overlay/snap/package.html        |    13 +
 .../overlay/validate/FuzzyPointLocator.java        |   118 +
 .../overlay/validate/OffsetPointGenerator.java     |   100 +
 .../overlay/validate/OverlayResultValidator.java   |   182 +
 .../jts/operation/overlay/validate/package.html    |    13 +
 .../jts/operation/polygonize/EdgeRing.java         |    23 +-
 .../jts/operation/polygonize/PolygonizeGraph.java  |    46 +-
 .../jts/operation/polygonize/Polygonizer.java      |    41 +-
 .../jts/operation/polygonize/package.html          |    13 +
 .../jts/operation/predicate/RectangleContains.java |    36 +-
 .../operation/predicate/RectangleIntersects.java   |     1 +
 .../predicate/SegmentIntersectionTester.java       |     4 +-
 .../jts/operation/predicate/package.html           |    13 +
 .../jts/operation/relate/EdgeEndBundle.java        |    40 +-
 .../jts/operation/relate/EdgeEndBundleStar.java    |     5 +-
 .../jts/operation/relate/RelateOp.java             |    69 +-
 .../jts/operation/union/CascadedPolygonUnion.java  |   371 +
 .../jts/operation/union/PointGeometryUnion.java    |    66 +
 .../jts/operation/union/UnaryUnionOp.java          |   233 +
 .../jts/operation/union/UnionInteracting.java      |   119 +
 .../jts/operation/union/package.html               |    13 +
 .../operation/valid/ConnectedInteriorTester.java   |    45 +-
 .../jts/operation/valid/ConsistentAreaTester.java  |     2 +-
 .../operation/valid/IndexedNestedRingTester.java   |   115 +
 .../jts/operation/valid/IsValidOp.java             |    53 +-
 .../operation/valid/TopologyValidationError.java   |     7 +-
 .../jts/planargraph/DirectedEdge.java              |     6 +-
 src/com/vividsolutions/jts/planargraph/Edge.java   |     2 +-
 src/com/vividsolutions/jts/planargraph/Node.java   |     9 +
 .../jts/planargraph/PlanarGraph.java               |    12 +-
 .../vividsolutions/jts/planargraph/Subgraph.java   |     4 +-
 .../jts/planargraph/algorithm/package.html         |    13 +
 src/com/vividsolutions/jts/polygonize/package.html |    14 -
 .../vividsolutions/jts/precision/CommonBits.java   |     8 +-
 .../CoordinatePrecisionReducerFilter.java          |    53 +
 .../jts/precision/EnhancedPrecisionOp.java         |     2 +-
 .../precision/SimpleGeometryPrecisionReducer.java  |    14 +
 .../jts/simplify/DouglasPeuckerSimplifier.java     |    73 +-
 .../jts/simplify/LineSegmentIndex.java             |     7 +-
 .../jts/simplify/TaggedLineSegment.java            |     2 +-
 .../jts/simplify/TaggedLineString.java             |     8 +-
 .../jts/simplify/TaggedLineStringSimplifier.java   |     2 +-
 .../jts/simplify/TaggedLinesSimplifier.java        |     4 +-
 .../jts/simplify/TopologyPreservingSimplifier.java |    14 +-
 src/com/vividsolutions/jts/simplify/package.html   |    13 +
 .../ConformingDelaunayTriangulationBuilder.java    |   197 +
 .../ConformingDelaunayTriangulator.java            |   563 +
 .../ConstraintEnforcementException.java            |    85 +
 .../ConstraintSplitPointFinder.java}               |    30 +-
 .../jts/triangulate/ConstraintVertex.java          |   109 +
 .../ConstraintVertexFactory.java}                  |    20 +-
 .../triangulate/DelaunayTriangulationBuilder.java  |   196 +
 .../IncrementalDelaunayTriangulator.java           |   143 +
 .../MidpointSplitPointFinder.java}                 |    31 +-
 .../NonEncroachingSplitPointFinder.java            |    94 +
 .../vividsolutions/jts/triangulate/Segment.java    |   222 +
 .../jts/triangulate/SplitSegment.java              |   110 +
 .../VertexTaggedGeometryDataMapper.java            |    75 +
 .../jts/triangulate/VoronoiDiagramBuilder.java     |   180 +
 .../vividsolutions/jts/triangulate/package.html    |    13 +
 .../quadedge/EdgeConnectedTriangleTraversal.java   |    94 +
 .../quadedge/LastFoundQuadEdgeLocator.java         |    77 +
 .../quadedge/LocateFailureException.java}          |    61 +-
 .../jts/triangulate/quadedge/QuadEdge.java         |   434 +
 .../quadedge/QuadEdgeLocator.java}                 |    22 +-
 .../triangulate/quadedge/QuadEdgeSubdivision.java  |   944 +
 .../jts/triangulate/quadedge/QuadEdgeTriangle.java |   283 +
 .../quadedge/QuadEdgeUtil.java}                    |    54 +-
 .../jts/triangulate/quadedge/TraversalVisitor.java |    59 +
 .../quadedge/TriangleVisitor.java}                 |    24 +-
 .../jts/triangulate/quadedge/Vertex.java           |   527 +
 .../jts/triangulate/quadedge/package.html          |    14 +
 .../vividsolutions/jts/util/CollectionUtil.java    |    18 +-
 src/com/vividsolutions/jts/util/Debug.java         |    75 +-
 .../jts/util/GeometricShapeFactory.java            |   182 +-
 src/com/vividsolutions/jts/util/Memory.java        |   108 +
 .../ObjectCounter.java}                            |    75 +-
 src/com/vividsolutions/jts/util/PriorityQueue.java |   155 +
 .../jtsexample/geom/ConstructionExample.java       |     2 +-
 .../geom/prep/PreparedGeometryExample.java         |    94 +
 .../jtsexample/io/gml2/KMLReaderExample.java       |   166 +
 .../operation/distance/ClosestPointExample.java    |     2 +-
 .../operation/polygonize/PolygonizeExample.java    |     2 -
 .../precision/EnhancedPrecisionOpExample.java      |     2 -
 .../technique/PolygonUnionUsingBuffer.java         |     1 -
 .../com/vividsolutions/jts/io/gml2/GMLWriter.java  |   350 -
 src/jump-workbench-properties.xml                  |     3 -
 test/validate/TestRelateLC.xml                     |    71 -
 test/vivid/TestRelateLC.xml                        |    79 -
 testxml/external/GEOSBuffer.xml                    |    47 +
 testxml/external/TestBufferExternal.xml            |    58 +
 testxml/external/TestBufferExternal2.xml           |   508 +
 testxml/external/TestOverlay.xml                   |    23 +
 testxml/failure/TestBigNastyBuffer.xml             |    27 +
 testxml/failure/TestOverlay.xml                    |   112 +
 {test/vivid => testxml/general}/TestBoundary.xml   |    16 +-
 testxml/general/TestBuffer.xml                     |   119 +
 testxml/general/TestBufferMitredJoin.xml           |    60 +
 {test/vivid => testxml/general}/TestCentroid.xml   |    21 +-
 .../general}/TestConvexHull-big.xml                |     2 +-
 {test/vivid => testxml/general}/TestConvexHull.xml |    14 +-
 testxml/general/TestDensify.xml                    |    57 +
 testxml/general/TestDistance.xml                   |    60 +
 {test/vivid => testxml/general}/TestFunctionAA.xml |     0
 .../general}/TestFunctionAAPrec.xml                |     0
 {test/vivid => testxml/general}/TestFunctionLA.xml |     0
 .../general}/TestFunctionLAPrec.xml                |     0
 {test/vivid => testxml/general}/TestFunctionLL.xml |    27 +-
 .../general}/TestFunctionLLPrec.xml                |     0
 {test/vivid => testxml/general}/TestFunctionPA.xml |    10 +-
 {test/vivid => testxml/general}/TestFunctionPL.xml |    37 +-
 .../general}/TestFunctionPLPrec.xml                |     2 +-
 {test/vivid => testxml/general}/TestFunctionPP.xml |    32 +-
 .../general}/TestInteriorPoint.xml                 |     2 +-
 testxml/general/TestPreparedPointPredicate.xml     |    34 +
 testxml/general/TestPreparedPolygonPredicate.xml   |   177 +
 ...estPreparedPredicatesWithGeometryCollection.xml |    81 +
 .../general}/TestRectanglePredicate.xml            |   100 +
 {test/vivid => testxml/general}/TestRelateAA.xml   |    88 +-
 {test/vivid => testxml/general}/TestRelateAC.xml   |     5 +-
 {test/vivid => testxml/general}/TestRelateLA.xml   |     0
 testxml/general/TestRelateLC.xml                   |    41 +
 {test/vivid => testxml/general}/TestRelateLL.xml   |    14 +
 {test/vivid => testxml/general}/TestRelatePA.xml   |     8 +-
 {test/vivid => testxml/general}/TestRelatePL.xml   |    10 +-
 {test/vivid => testxml/general}/TestRelatePP.xml   |     8 +-
 {test/vivid => testxml/general}/TestSimple.xml     |     4 +-
 testxml/general/TestUnaryUnion.xml                 |   150 +
 {test/vivid => testxml/general}/TestValid.xml      |    58 +-
 {test/vivid => testxml/general}/TestValid2-big.xml |     2 +-
 {test/vivid => testxml/general}/TestValid2.xml     |   136 +-
 .../general}/TestWithinDistance.xml                |     2 +-
 testxml/robust/ExternalRobustness.xml              |   210 +
 testxml/robust/TestRobustOverlayError.xml          |    19 +
 .../robust/TestRobustOverlayFixed.xml              |     2 +-
 .../robust/TestRobustOverlayFloat.xml              |    32 +-
 {test => testxml}/robust/TestRobustRelate.xml      |     2 +-
 testxml/stmlf/stmlf-cases-20061018_int.xml         | 44826 +++++++++++++++++++
 testxml/stmlf/stmlf-cases-20061020_int.xml         |   337 +
 {test => testxml}/validate/TestRelateAA-big.xml    |     0
 {test => testxml}/validate/TestRelateAA.xml        |    30 -
 {test => testxml}/validate/TestRelateAC.xml        |     0
 {test => testxml}/validate/TestRelateLA.xml        |     0
 testxml/validate/TestRelateLC.xml                  |    37 +
 {test => testxml}/validate/TestRelateLL.xml        |     0
 {test => testxml}/validate/TestRelatePA.xml        |    52 +-
 {test => testxml}/validate/TestRelatePL.xml        |    32 +-
 {test => testxml}/validate/TestRelatePP.xml        |    40 +-
 439 files changed, 94798 insertions(+), 3880 deletions(-)

diff --git a/bin/jts.css b/bin/jts.css
deleted file mode 100644
index eb15dd5..0000000
--- a/bin/jts.css
+++ /dev/null
@@ -1,139 +0,0 @@
-BODY
-{
-    BACKGROUND-COLOR: lightblue;
-    FONT-FAMILY: Verdana, Arial;
-    FONT-SIZE: 10pt;
-    FONT-WEIGHT: normal
-}
-H2
-{
-    BACKGROUND-COLOR: darkblue;
-    COLOR: white;
-    FONT-FAMILY: Verdana, Arial;
-    FONT-SIZE: 12pt;
-    FONT-WEIGHT: bolder;
-    MARGIN-BOTTOM: 2pt;
-    PADDING-LEFT: 5px
-}
-H3
-{
-    BACKGROUND-COLOR: lightskyblue;
-    FONT-WEIGHT: normal;
-    MARGIN-BOTTOM: 2pt
-}
-H4
-{
-    BACKGROUND-COLOR: limegreen;
-    FONT-WEIGHT: normal
-}
-H5
-{
-    BACKGROUND-COLOR: burlywood;
-    FONT-WEIGHT: normal
-}
-H6
-{
-    FONT-SIZE: 12pt
-}
-TH
-{
-    BACKGROUND-COLOR: burlywood
-}
-.initialLetter
-{
-    COLOR: lightblue
-}
-.foo
-{
-    COLOR: goldenrod
-}
-.wktA
-{
-    COLOR: blue;
-    FONT-SIZE: 8pt
-}
-.wktB
-{
-    COLOR: red;
-    FONT-SIZE: 8pt
-}
-.methodTitle
-{
-    BACKGROUND-COLOR: steelblue;
-    COLOR: yellow
-}
-.wktR
-{
-    FONT-SIZE: 8pt
-}
-.precisionModel
-{
-    FONT-SIZE: 8pt
-}
-.resultTrue
-{
-    COLOR: green
-}
-.resultFalse
-{
-    COLOR: red
-}
-.MenuBody
-{
-    BACKGROUND-COLOR: midnightblue
-}
-.MenuItem
-{
-    COLOR: white
-}
-.MenuTitle
-{
-    COLOR: #3366ff;
-    FONT-SIZE: 14pt;
-    TEXT-ALIGN: center
-}
-TD
-{
-    FONT-SIZE: 10pt
-}
-.orgName
-{
-    FONT-SIZE: 8pt;
-    FONT-STYLE: italic;
-    FONT-WEIGHT: lighter
-}
-.creditName
-{
-    FONT-WEIGHT: bolder;
-    PADDING-LEFT: 10px
-}
-.creditTitle
-{
-    BACKGROUND-COLOR: steelblue;
-    COLOR: yellow;
-    FONT-WEIGHT: bolder;
-    PADDING-LEFT: 10px;
-    PADDING-RIGHT: 10px
-}
-H1
-{
-    BORDER-BOTTOM: darkblue thin solid;
-    BORDER-TOP: medium none;
-    FONT-STYLE: italic;
-    MARGIN-BOTTOM: 2px;
-    PADDING-BOTTOM: 4px
-}
-.testTitle
-{
-    FONT-SIZE: 16pt;
-    FONT-WEIGHT: bolder
-}
-.caption
-{
-    FONT-SIZE: 8pt;
-    FONT-STYLE: italic
-}
-.bigCaption
-{
-    FONT-WEIGHT: bolder
-}
diff --git a/bin/test.bat b/bin/test.bat
index 675c220..759f65e 100644
--- a/bin/test.bat
+++ b/bin/test.bat
@@ -13,7 +13,7 @@ for %%i in (..\lib\*.*) do (
  call :setclass
 )  
 
-java com.vividsolutions.jtstest.testrunner.TopologyTestApp -Files ..\test\validate
+java com.vividsolutions.jtstest.testrunner.TopologyTestApp -Files ..\testxml\validate ..\testxml\general
 pause
 
 goto :eof
diff --git a/bin/test_robust.bat b/bin/test_robust.bat
index daa95a0..a206dca 100644
--- a/bin/test_robust.bat
+++ b/bin/test_robust.bat
@@ -1,5 +1,5 @@
 @echo off
-rem A batch file to run the XML test files written by Geographic Data BC.
+rem A batch file to run a XML test files
 
 set CLASSPATH=
 for %%i in (..\lib\*.*) do (
@@ -13,7 +13,7 @@ for %%i in (..\lib\*.*) do (
  call :setclass
 )  
 
-java com.vividsolutions.jtstest.testrunner.TopologyTestApp -Files ..\test\robust
+java com.vividsolutions.jtstest.testrunner.TopologyTestApp -Files ..\testxml\robust
 pause
 
 goto :eof
diff --git a/bin/test_vivid.bat b/bin/test_stmlf.bat
similarity index 72%
rename from bin/test_vivid.bat
rename to bin/test_stmlf.bat
index 1eb408c..62dd5d4 100644
--- a/bin/test_vivid.bat
+++ b/bin/test_stmlf.bat
@@ -1,5 +1,5 @@
 @echo off
-rem A batch file to run the XML test files written by Geographic Data BC.
+rem A batch file to run a XML test files
 
 set CLASSPATH=
 for %%i in (..\lib\*.*) do (
@@ -13,7 +13,7 @@ for %%i in (..\lib\*.*) do (
  call :setclass
 )  
 
-java com.vividsolutions.jtstest.testrunner.TopologyTestApp -Files ..\test\vivid
+java com.vividsolutions.jtstest.testrunner.TopologyTestApp -Files ..\testxml\stmlf -geomop com.vividsolutions.jtstest.testrunner.geomop.OverlayValidatedGeometryOperation
 pause
 
 goto :eof
diff --git a/bin/testrunner.properties b/bin/testrunner.properties
index cca7ce2..9f4e8dc 100644
--- a/bin/testrunner.properties
+++ b/bin/testrunner.properties
@@ -1,3 +1,3 @@
 #Properties file for class com.vividsolutions.jtstest.testrunner.TopologyTestApp
-#Fri May 24 10:18:11 PDT 2002
-TestFiles=
+#Wed Dec 06 16:08:49 PST 2006
+TestFiles=\ Z\:\\proj\\jts\\robust\\tests\\unit\\cmp-5966094-2025063.xml
diff --git a/doc/JTS Version History.html b/doc/JTS Version History.html
new file mode 100644
index 0000000..710898b
--- /dev/null
+++ b/doc/JTS Version History.html	
@@ -0,0 +1,779 @@
+<html>
+
+<head>
+<title>JTS Version History</title>
+</head>
+
+<body bgcolor='lightblue'>
+<h1 style='text-align:center;'>
+JTS TOPOLOGY SUITE
+<br>
+<i>Version History</i>
+</h1>
+
+
+This document lists the change history of release versions of the JTS Topology Suite
+<p>
+
+<!-- ================================================================ -->
+<hr size='4' color='darkblue'>
+<h2>Version 1.11</h2>
+
+<i>Release Date:  March 1, 2010</i>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>Added <tt>CoordinateArrays.isRing</tt>
+<li>Added <tt>CGAlgorithms.signedArea(CoordinateSequence)</tt>
+<li>Added <tt>CoordinateArrays.copyDeep(...)</tt> method to copy sections of arrays
+<li>Added <tt>CoordinateList.add(Coordinate[], boolean, int, int)</tt> method to add sections of arrays
+<li>Added <tt>LineSegment.toGeometry()</tt>, <tt>LineSegment.lineIntersection()()</tt>
+<li>Added <tt>LineSegment.hashCode()</tt>
+<li>Added geometric similarity classes (<tt>HausdorffSimilarityMeasure</tt>, <tt>AreaSimilarityMeasure</tt>)
+<li>Added <tt>MinimumDiameter.getMinimumRectangle()</tt>
+<li>Added <tt>MinimumBoundingCircle</tt> class
+<li>Added <tt>Densifier</tt> class
+<li>Added triangulation API, including <tt>QuadEdgeSubdivision</tt>, <tt>IncrementalDelaunayTriangulator</tt>,
+	<tt>ConformingDelaunayTriangulator</tt> and supporting classes
+<li>Added <tt>VoronoiDiagramBuilder</tt> to perform Voronoi diagram generation
+<li>Added <tt>scaleInstance(scaleX, scaleY, x, y)</tt> to <tt>AffineTransformation</tt>
+<li>Added <tt>AffineTransformationFactory</tt> to allow generating transformations from various kinds of control inputs
+<li>Added <tt>BinTree.remove()</tt> method
+<li>Fixed <tt>BinTree.query()</tt> to allow null interval arguments
+<li>Added <tt>ShapeReader</tt> API to convert Java2D Shapes into JTS Geometry
+<li>Added <tt>ShapeWriter</tt> API to convert JTS geometry into Java2D Shapes
+<li>Added <tt>FontGlyphReader</tt> API to render Java2D text font glyphs into geometry
+<li>Added <tt>SdeReader</tt> to <b>jtsio</b> library
+<li>Added <tt>Debug</tt> break methods
+<li>Added <tt>Memory</tt> utility for reporting memory statistics
+<li>Added <tt>ObjectCounter</tt> utility for counting objects
+<li>Added <tt>createSquircle</tt> and <tt>createSuperCircle</tt> to <tt>GeometricShapeFactory</tt>
+</ul>
+
+<h3>Performance Improvements</h3>
+<ul>
+<li>Improved performance of <tt>Geometry.getArea()</tt> and <tt>Geometry.getLength()</tt> when used with custom <tt>CoordinateSequence</tt>s
+</ul>
+
+<h3>API Changes</h3>
+<ul>
+<li>Deprecated <tt>WKBWriter.bytesToHex</tt> in favour of <tt>WKBWriter.toHex</tt>to regularize and simplify method name
+</ul>
+
+<h3>Bug Fixes</h3>
+<ul>
+<li>Fixed Point.isValid() to check for invalid coordinates (ie with Nan ordinates)
+<li>Fixed <tt>Geometry.distance()</tt> and <tt>DistanceOp</tt> to return 0.0 for empty inputs
+<li>Fixed <tt>Buffer</tt> to handle degenerate polygons with too few distinct points correctly
+<li>Added illegal state check in <tt>LineSegment.pointAlongOffset()</tt>
+<li>Fixed exception strategy in <tt>BufferSubgraph</tt> to handle certain robustness failures correctly
+<li>Fixed robustness problem in <tt>OffsetCurveBuilder</tt> in computing mitred joins for nearly parallel segments
+<li>Fixed minor bug in <tt>BufferInputLineSimplifier</tt> which prevented simplification of some situations
+<li>Fixed bug in <tt>BufferInputLineSimplifier</tt> which caused over-simplification for large tolerances
+<li>Fixed bug in <tt>Angle.normalizePositive</tt> to handle values > 2PI correctly
+<li>Fixed <tt>WKTWriter</tt> to emit correct syntax for MULTIPOINTs
+<li>Fixed <tt>WKTReader</tt> to accept correct syntax for MULTIPOINTs
+<li><tt>CGAlgorithms.isCCW</tt> now checks for too few points in the ring and throws an <tt>IllegalArgumentException</tt>
+<li>Fixed bug in <tt>AffineTransformation#eqals</tt> (logic bug)
+<li>Fixed bug in <tt>CoordinateList#closeRing</tt> (cloning closing Coordinate)
+</ul>
+
+<!------- TestBuilder -------------------->
+<hr size='0' color='darkblue'>
+<h3 style='font-family:sans-serif; color:darkblue'>JTS TestBuilder</h3>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>WKT input is cleaned automatically when loaded (illegal chars are removed)
+<li>Added WKT-Formatted option to Test Case View dialog
+<li>Many new geometry functions added
+<li>Geometry functions are displayed in tree
+<li>Geometry functions can be implemented as Java static class methods.
+<li>Geometry function classes can be loaded dynamically from command-line
+<li>Improved handling of very large geometry inputs and results
+<li>Threaded rendering allows display of very large geometries without limiting usability
+<li>Added Draw Rectangle tool
+<li>Added Drag-n-drop loading of .SHP files
+<li>Added Info tool to provide persistent display of geometry point/segment information
+<li>Added display of memory usage
+</ul>
+
+
+<!-- ================================================================ -->
+<hr size='4' color='darkblue'>
+<h2>Version 1.10</h2>
+
+<i>Release Date:  December 31, 2008</i>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>Added <tt>Geometry.reverse()</tt> method for all geometry types
+<li>Added <tt>setSrsName</tt>, <tt>setNamespace</tt>, <tt>setCustomRootElements</tt> methods to <tt>GMLWriter</tt>
+<li>Added <tt>Envelope.getArea</tt> method
+<li>Added <tt>copy</tt>, <tt>copyCoord</tt> methods to <tt>CoordinateSequences</tt>
+<li>Added <tt>area</tt> method to <tt>Envelope</tt>
+<li>Added <tt>extractPoint(pt, offset)</tt> methods to <tt>LengthIndexedLine</tt> and <tt>LocationIndexedLine</tt>
+<li>Added <tt>CoordinatePrecisionReducerFilter</tt>
+<li>Added <tt>UnaryUnionOp(Collection, GeometryFactory)</tt> constructor to handle empty inputs more automatically
+<li>Added <tt>DiscreteHausdorffDistance</tt> class
+<li>Made <tt>LineMerger</tt> able to be called incrementally
+<li>Added <tt>GeometricShapeFactory.createArcPolygon</tt> to create a polygonal arc
+<li>Enhanced <tt>Geometry.buffer()</tt> to preserve SRID
+</ul>
+
+<h3>Performance Improvements</h3>
+<ul>
+<li>Improved performance for <code>EdgeList</code> (by using a more efficient technique for detecting duplicate edges)
+<li>Improved performance for <code>ByteArrayInStream</code> (by avoiding use of <tt>java.io.ByteArrayInputStream</tt>)
+<li>Unrolled intersection computation in <tt>HCoordinate</tt> to avoid object allocation
+<li>Improved performance for buffering via better offset curve generation and simplification.
+<li>Improved performance for <tt>IsValipOp</tt> by switching to use <tt>STRtree</tt> for nested hole checking
+</ul>
+
+<h3>Bug Fixes</h3>
+<ul>
+<li>Fixed <tt>Geometry.getClassSortIndex()</tt> to lazily initialize the sorted class list.  This fixes a threading bug.
+<li>Fixed <tt>RectangleContains</tt> to return correct result for points on the boundary of the rectangle
+<li>Fixed error in <tt>com.vividsolutions.jts.simplify.LineSegmentIndex</tt> which caused polygons
+simplified using <tt>TopologyPreservingSimplifier</tt> to be invalid in certain situations
+<li>Fixed error in <tt>DouglasPeuckerSimplifier</tt> which caused empty polygons to be returned when they contained a very small hole
+<li>Fixed <tt>PackedCoordinateSequence</tt> to return <tt>NaN</tt> for null ordinate values
+<li>Fixed <tt>Geometry.centroid()</tt> (<tt>CentroidArea</tt>) so that it handles degenerate (zero-area) polygons
+<li>Fixed <tt>Geometry.buffer()</tt> (<tt>OffsetCurveBuilder</tt>) so that it handles JOIN_MITRE cases with nearly collinear lines correctly
+<li>Fixed <tt>GeometryFactory.toGeometry(Envelope)</tt> to return a CW polygon
+<li>Fixed <tt>UnaryUnionOp</tt> to correctly handle heterogeneous inputs with P/L/A components
+<li>Fixed <tt>UnaryUnionOp</tt> to accept <tt>LINEARRING</tt>s
+<li>Fixed <tt>CentroidArea</tt> to handle zero-area polygons correctly
+<li>Fixed <tt>WKBWriter</tt> to always output 3D when requested, and to handle 2D <tt>PackedCoordinateSequences</tt> correctly in this case
+<li>Fixed <tt>NodedSegmentString</tt> to handle zero-length line segments correctly (via <tt>safeOctant</tt>)
+<li>Cleaned up code to remove unneeded <tt>CGAlgorithms</tt> objects
+<li>Fixed <tt>GeometricShapeFactory.createArc</tt> to ensure arc has requested number of vertices
+</ul>
+
+<h3>API Changes</h3>
+<ul>
+<li>Moved GML I/O classes into core JTS codebase
+<li>Changed <tt>GMLWriter</tt> to not write the <tt>srsName</tt> attribute by default
+<li>In <tt>DistanceOp</tt> switched to using <tt>nearestPoints</tt> method names
+<li>Exposed <tt>STRtree.getRoot()</tt> method
+</ul>
+
+
+<!------- TestBuilder -------------------->
+<hr size='0' color='darkblue'>
+<h3 style='font-family:sans-serif; color:darkblue'>JTS TestBuilder</h3>
+
+<h3>UI Improvements</h3>
+<ul>
+<li>Added ability to read GML from input panel
+<li>Added GML output to View dialog
+<li>Added file drag'n'drop to Geometry Input text areas
+<li>Add display of computation time
+<li>Added Stats panel
+<li>Added Scalar functions panel, with extensible function list
+<li>Added <b>Save as PNG...</b>
+</ul>
+
+<!------- TestRunner -------------------->
+<hr size='0' color='darkblue'>
+<h3 style='font-family:sans-serif; color:darkblue'>JTS TestRunner</h3>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>Added <tt>-testCaseIndex</tt> command-line option
+</ul>
+
+<!-- ================================================================ -->
+<hr size='4' color='darkblue'>
+<h2>Version 1.9</h2>
+
+<i>Release Date: January 2, 2008</i>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>Added <tt>Polygonal</tt>, <tt>Lineal</tt>, <tt>Puntal</tt> tag interfaces to better categorize geometry classes
+<li>Added <tt>Geometry.union()</tt> method, <tt>UnaryUnionOp</tt> class for efficient unioning of geometrys
+<li>Added <tt>Triangle.area3D</tt> method
+<li>Added <tt>LineSegment.pointAlongOffset</tt> method
+<li>Added <tt>LineSegment.orientationIndex(Coordinate)</tt> method
+<li>Added <tt>PreparedGeometry</tt> classes and methods to optimize some geometry functions in batch situations
+<li>Added <tt>Envelope.covers</tt> methods, for preciseness
+<li>Added <tt>OctagonalEnvelope</tt> class
+<li>Improved <tt>CGAlgorithms.isPointInRing</tt> method to handle case where point lies on the ring
+<li>Added <tt>CGAlgorithms.locatePointInRing</tt> method
+<li>Added <tt>PointInAreaLocator</tt> interface, enhanced <tt>SimplePointInAreaLocator</tt> to extend this
+<li>Added <tt>RayCrossingCounter</tt>,  <tt>IndexedPointInAreaLocator</tt> classes for more efficient Point-In-Polygon testing
+<li>Added <tt>GeometryCombiner</tt> class
+<li>Enhanced <tt>BufferOp</tt> with join styles
+<li>Enhanced <tt>WKTReader</tt> to accept any case for <tt>NaN</tt> number symbols
+<li>Added <tt>WKTFileReader</tt> class
+<li>Improved performance of <tt>CoordinateList</tt> constructors
+<li>Added <tt>CascadedPolygonUnion</tt> class
+<li>Added <tt>LinearLocation.isOnSameSegment</tt> method
+<li>Added <tt>LinearLocation.getSegment</tt> method
+<li>Added <tt>LocationIndexedLine.indexOfAfter</tt> method
+<li>Added interpolation of Z value to linear referencing methods
+<li>Added methods to rotate around a given point to <tt>AffineTransformation</tt>
+<li>Allowed <tt>GeometricShapeFactory</tt> to be subclassed to add new shapes
+<li>Added <tt>SineStarFactory</tt> (primarily to support testing)
+<li>Added <tt>SortedPackedIntervalRTree</tt> class
+<li>Added <tt>SegmentSetMutualIntersector</tt> interface and implementations
+<li>Added <tt>Node.remove(DirectedEdge)</tt> method in <tt>planargraph</tt> package
+</ul>
+
+<h3>Performance Improvements</h3>
+<ul>
+<li>Improved performance for <code>SimplePointInAreaLocator</code> (by checking ring envelopes as a filter)
+</ul>
+
+<h3>Bug Fixes</h3>
+<ul>
+<li><tt>Geometry.buffer</tt> operation fixed to always return polygonal geometries
+<li>Fixed bug in <code>Geometry.buffer(distance, quadrantSegs)</code>
+causing failure for some cases with <tt>quadrantSegs = 1</tt>
+<li>Fixed bug in <tt>GeometryFactory.toGeometry(Envelope)</tt>
+which was returning invalid Polygons for "linear" envelopes
+<li>Fixed bug in <tt>MonotoneChainBuilder</tt> which caused failures in situations with segments of zero length
+<li>Fixed <tt>PointLocator</tt> to handle locating in Point geometries
+<li>Fixed <tt>GeometricShapeFactory</tt> to always use provided PrecisionModel
+<li>Fixed <tt>LinearLocation.clone</tt> method
+<li>Fixed <tt>LinearLocation.isValid</tt> method
+<li>Fixed <tt>Polygonizer</tt> to accept single-point linestrings (which are ignored)
+</ul>
+
+<h3>API Changes</h3>
+<ul>
+<li>Deprecated <code>RobustCGAlgorithms</code>
+<li>Deprecated <code>BufferOp</code> cap style constants (these are now provided in </tt>BufferParameters</tt>)
+<li>Removed <code>SIRPointInRing</code>
+</ul>
+
+<!------- TestRunner -------------------->
+<hr size='0' color='darkblue'>
+<h3 style='font-family:sans-serif; color:darkblue'>JTS TestRunner</h3>
+
+<h3>New Features</h3>
+<ul>
+<li>Added ability to specify GeometryOperation in XML file
+<li>Added <tt>BufferValidatedGeometryOperation</tt>
+<li>Added ability to specify custom result matching via <tt>resultMatcher</tt> parameter
+in XML files
+<li>Added <tt>BufferResultMatcher</tt>
+</ul>
+
+
+<!------- TestBuilder -------------------->
+<hr size='0' color='darkblue'>
+<h3 style='font-family:sans-serif; color:darkblue'>JTS TestBuilder</h3>
+
+<h3>UI Improvements</h3>
+<ul>
+<li>Improved rendering of geometries
+<li>Improved symbology for orientation
+<li>Simplified Geometry creation
+<li>Improved vertex move/add
+<li>Added tooltip for coordinate location
+<li>Added more geometry functions
+<li>Added Copy Result to Test button
+</ul>
+
+<h3>Code Improvements</h3>
+<ul>
+<li>Restructured code for more flexibility, better Swing functionality
+<li>Made it easier to add geometry functions
+</ul>
+
+
+<!-- ================================================================ -->
+<hr size='4' color='darkblue'>
+<h2>Version 1.8</h2>
+
+<i>Release Date: December 19, 2006</i>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>Improved robustness for overlay operations, via using geometry snapping
+<li>Added <code>Angle</code> class
+<li>Added methods to <code>Triangle</code> class
+<li>Added <code>LineSegment.midPoint</code> method
+<li>Added ability to specify output of Z values to <code>WKTWriter</code>
+<li>Added <code>setFormatted</code>, <code>setTab</code>, <code>setMaxCoordinatesPerLine</code> methods to <code>WKTWriter</code>
+<li>Added <code>BoundaryNodeRule</code> classes, and ability to specify a Boundary Node Rule
+in <code>RelateOp</code>, <code>IsSimpleOp</code>, <code>BoundaryOp</code>
+<li>Added ability to get the failure location to <code>IsSimpleOp</code>
+<li>Added <code>BoundaryOp</code> with improved algorithm for lineal geometries.  Changed lineal Geometry classes to use it.
+<li>Enhanced <code>Geometry</code> overlay methods to accept empty <code>GeometryCollections.</code>
+<li>Enhanced Error Handling for <tt>WKTReader</tt>
+<li>Added <code>CoordinateSequenceFilter</code>
+<li>Added <code>AffineTransformation</code> and <code>AffineTransformationBuilder</code>
+</ul>
+
+<h3>API Changes</h3>
+<ul>
+<li>Changed API for <code>IsSimpleOp</code> (required to support returning failure location)
+</ul>
+
+<h3>Bug Fixes</h3>
+<ul>
+<li>Fixed bug in <code>GeometryFactory.buildGeometry</code>
+causing failure if input contained all GeometryCollections of the same subclass
+<li>Changed AssertFailure to TopologyException in <code>PolygonBuilder</code>
+<li>Improved correctness of <tt>RobustLineIntersector</tt> in certain cases where segment endpoints intersect
+<li>Eliminated duplicate method execution in <code>TestRunner</code>
+</ul>
+
+<hr size='0' color='darkblue'>
+<h3 style='font-family:sans-serif; color:darkblue'>JTS TestBuilder</h3>
+
+<h3>New Features</h3>
+<ul>
+<li>Zoom tool can now draw zoom box as well as click
+<li>Cut, Copy and Paste buttons for Input WKT
+<li>added ability to specify custom Geometry Operations
+</ul>
+
+<hr size='0' color='darkblue'>
+<h3 style='font-family:sans-serif; color:darkblue'>JTS TestRunner</h3>
+
+<h3>New Features</h3>
+<ul>
+<li>added ability to specify custom Geometry Operations
+</ul>
+
+<h3>Bug Fixes</h3>
+<ul>
+<li>Eliminated duplicate method execution
+</ul>
+
+
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.7.2</h2>
+
+<i>Release Date: June 22, 2006</i>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>Added support for EWKB (SRIDs only) to <code>WKBReader</code>
+</ul>
+
+<h3>Bug Fixes</h3>
+<ul>
+<li>Fixed bug in <code>CoordinateArrays.ptNotInList</code>.
+Changed <code>polygonize.EdgeRing</code> to used corrected code.
+<li>Fixed bug causing duplicate points in <code>ScaledNoder</code>
+<li>Fixed bug causing Null Pointer for empty geometries in <code>OraWriter</code>
+<li>Changed AssertFailure to TopologyException in <code>EdgeNode</code>
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.7.1</h2>
+
+<i>Release Date: March 20, 2006</i>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>Added Hex string conversion to <code>WKBReader</code> and <code>WKBWriter</code>
+</ul>
+
+<h3>Bug Fixes</h3>
+<ul>
+<li>Fixed null point cloning bug in <code>TopologyValidationError</code> (<i>thanks to Markus Gebhard</i>)
+<li>Fixed bug in <code>PointLocator</code> fix for LinearRings
+<li>Fixed bug in <code>Geometry.isValid</code> and <code>IsValidOp</code> causing some valid polygons
+to be reported as having a Disconnected Interior (specifically, polygons containing
+holes touching at a single point, where the point is the highest point in the hole rings, and where the holes
+have a specific orientation)
+<li>Fixed bug in <code>Polygon.isRectangle</code>, which reported some valid rectangles as false
+</ul>
+
+<h3>Performance Improvements</h3>
+<ul>
+<li>Improved performance for <code>Geometry#withinDistance</code> (via short-circuiting)
+</ul>
+
+<h3>Contributors</h3>
+<ul>
+<li>Dave Blasby
+<li>Koen van Dijken
+</ul>
+
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.7</h2>
+
+<i>Release Date: December 7, 2005</i>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>Added <code>JTSVersion</code> class to provide access to the API version information
+<li>Added <code>covers</code> and <code>coveredBy</code> predicates to <code>Geometry</code>
+<li>Added <code>Geometry#buffer(distance, quadSegs, endCapStyle)</code> method to expose buffer end cap styles
+<li>Added <code>LineString#reverse</code> and <code>MultiLineString#reverse</code> methods
+<li>Added <code>centre</code>, <code>intersection</code>, <code>translate</code>,
+<code>expandBy(distance)</code>, <code>expandBy(dx, dy)</code>
+methods to <code>Envelope</code>
+<li>Added <code>CollectionUtil</code> class for performing operations over collections
+<li>Added <code>CoordinateArrays</code> comparators
+<li>Added <code>CoordinateSequence#getDimension</code>
+<li>Added convenience methods <code>toPoint</code> and <code>toLineString</code> to <code>WKTWriter</code>
+<li>Added WKB API (<code>WKBReader</code> and <code>WKBWriter</code> classes in <code>com.vividsolutions.jts.io</code>
+<li><code>WKTReader</code> has better handling of numeric parsing, including support for scientific notation
+<li>Added <code>IsValidOp#setSelfTouchingRingFormingHoleValid</code> to allow validating SDE-style polygons
+<li>Added check for non-closed rings in <code>IsValidOp</code>
+<li>Added Linear Referencing API (<code>com.vividsolutions.jts.linearref</code>
+<li>Added <code>LineSequencer</code> class to <code>com.vividsolutions.jts.operation.linemerge</code>
+<li>Added <code>Subgraph</code> class to <code>com.vividsolutions.jts.planargraph</code>
+<li>Added <code>isRemoved</code> method to <code>GraphComponent</code>
+<li>Added <code>ConnectedSubgraphFinder</code> class to <code>com.vividsolutions.jts.planargraph.algorithm</code>
+<li>Added <code>setVisited</code>, <code>getComponentWithVisitedState</code>,
+<code>setVisited</code>, <code>getComponentWithVisitedState</code>
+methods to <code>com.vividsolutions.jts.planargraph.GraphComponent</code>
+<li>Added classes to perform Snap Rounding (in <code>com.vividsolutions.jts.noding.snapround</code>>
+<li>Improved buffering speed and robustness by using Snap Rounding
+<li>Added buffer optimization for results with large numbers of polygons and/or holes
+<li>Added <code>STRtree#query(Envelope, ItemVisitor)</code> method
+<li>Added <code>Debug#toLine</code> methods
+<li>Added <code>ConvexHull(Coordinate[])</code> constructor
+</ul>
+
+<h3>Bug Fixes</h3>
+<ul>
+<li>Fixed decimal formatting in <code>WKTWriter</code> to force a leading 0 in decimal numbers
+<li>Fixed bug in <code>CoordinateArraySequence#setOrdinate</code>
+<li>Fixed bug when checking validity of polygon with hole (<code>IsValidOp#checkHolesInShell</code>)
+<li>Improved correctness of computated intersections in <code>RobustLineIntersector</code>
+<li>Fixed bugs in <code>CoordinateList.clone</code> (thanks to Matthias Bobzien)
+<li>Fixed bug in <code>Envelope.equals</code> (thanks to John Cartwright)
+<li>Fixed <code>PointLocator</code> for LinearRings
+</ul>
+
+<h3>Performance Improvements</h3>
+<ul>
+<li>Improved performance for overlay operations (point inclusion, identical edge detection)
+<li>Improved Convex Hull performance
+</ul>
+
+<h3>API Changes</h3>
+<ul>
+<li>Added <code>SpatiaIndex#query(Envelope, ItemVisitor)</code> method signature
+<li>Added <code>CoordinateSequence#getDimension()</code> method signature
+<li>Marked <code>GeometryEditor.CoordinateOperation#edit(Geometry, GeometryFactory)</code> method
+as <code>final</code>, to prevent incorrect use
+</ul>
+
+<h3>Semantics Changes</h3>
+<ul>
+<li>CoordinateArraySequence#setOrdinate now checks that the ordinate index is in range
+</ul>
+
+
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.6</h2>
+
+Release Date: February 3, 2005
+
+<h3>API Changes</h3>
+<ul>
+<li>Changed to using <code>CoordinateArraySequence</code> instead of <code>DefaultCoordinateSequence</code>
+(to provide a more descriptive name).
+</ul>
+
+<h3>Semantics Changes</h3>
+<ul>
+<li>PrecisionModel#makePrecise changed to use Symmetric Arithmetic Rounding rather than Banker's Rounding
+</ul>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>Added ability to enable <code>Debug</code> methods by setting a system property
+<li>Added <code>getNumGeometries</code> and <code>getGeometryN</code> methods to Geometry class, to make API more uniform
+<li>Improved API for <code>CoordinateSequence</code> allows more options for improving memory usage and handling custom coordinate storage methods
+<li>Added <code>PackedCoordinateSequence</code> to provide reduced memory footprint for geometry objects if desired
+<li>Added optimized spatial predicates for rectangles
+<li>Added Debug#isDebugging method
+</ul>
+
+<h3>Bug Fixes</h3>
+<ul>
+<li>Fixed bug in <code>Geometry#within()</code> short circuiting
+<li>Fixed bug causing <code>Geometry#isValid</code> to throw IllegalArgumentException for certain kinds of holes with invalid rings
+<li>Fixed bug causing redundant linestrings to be returned in the result of overlaying polygons containing holes touching their shell.
+<li><code>Polygon#getBoundary</code> now returns a <code>LinearRing</code> if the polygon does not have holes
+</ul>
+
+<h3>Architecture Changes</h3>
+<ul>
+<li>Removed a proliferation of references to the default <code>CoordinateSequenceFactory</code>
+</ul>
+
+<h3>Contributors</h3>
+<ul>
+<li>Andrea Aime
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.5</h2>
+Release Date: September 22, 2004
+<p>
+This version is upwards compatible with Version 1.4
+
+<h3>API Changes</h3>
+<ul>
+<li>None
+</ul>
+
+<h3>Semantics Changes</h3>
+<ul>
+<li>None
+</ul>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li><code>CGAlgorithms#isCCW</code> now handles coordinate lists with repeated points.  Also throws an IllegalArgumentException if the input ring does not have 3 distinct points
+<li><code>isValid</code> now checks for invalid coordinates (e.g. ones with Nan or infinite numbers)
+<li>added copyDeep() method to <code>CoordinateArrays</code>
+<li>added geometry simplification operations <code>DouglasPeuckerSimplifier</code> and <code>TopologyPreservingSimplifier</code>
+<li>added methods to <code>Quadtree</code> and <code>STRtree</code> to remove items and query using the Visitor pattern
+</ul>
+
+<h3>Performance Improvements</h3>
+<ul>
+<li>Added short-circuit tests in geometry named predicates based on envelope tests
+</ul>
+<h3>Bug Fixes</h3>
+<ul>
+<li>Fixed bugs in <code>Geometry</code> serialization
+<li>Fixed bug in <code>ValidOp</code> which reported some MultiPolygons with shells nested inside a hole as invalid
+<li>Fixed bug in buffer which caused buffers of some polygons with small & large holes to not contain any holes
+<li>Fixed bug in <code>Polygonizer</code> which caused exception if no lines were supplied
+</ul>
+<h3>Architecture Changes</h3>
+<ul>
+<li>Basic CG algorithm methods made static in the <code>CGAlgorithms</code> class
+<li>Various utility methods made public in <code>CoordinateArrays</code> class
+</ul>
+<h3>Documentation</h3>
+<ul>
+<li>More examples provided in <code>com.vividsolutions.jtsexamples package</code>
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.4</h2>
+
+Release Date: November 4, 2003
+<h3>Semantics Changes</h3>
+<ul>
+<li>none
+</ul>
+<h3>Functionality Improvements</h3>
+<ul>
+<li>Added "LINEARRING" tag to WKT syntax
+<li>Added GeometryEditor class to allow easy copy/modify of Geometrys
+<li>Added GeometricShapeFactory class to easily create standard geometric shapes
+<li>Geometries can now carry arbitrary user-defined data objects (via Geometry#get/setUserData(Object) method)
+<li>Added CoordinateSequence and CoordinateSequenceFactory interfaces, and default implementations (BasicCoordinateSequence, BasicCoordinateSequenceFactory)
+<li>Added Geometry#getFactory
+<li>Added new PrecisionModel type of FLOATING_SINGLE, for rounding to single precision floating point
+<li>Added DistanceOp#getClosestPoints method, which returns the closest points between two Geometries
+<li>Added com.vividsolutions.jts.noding package containing classes to perform fast indexed noding of linestrings
+<li>Added com.vividsolutions.jts.operation.polygonize package containing classes to perform polygonization
+<li>Added com.vividsolutions.jts.operation.linemerge package containing classes to perform line merging
+<li>Added SimpleGeometryPrecisionReducer to allow reducing precision of coordinates of a Geometry
+<li>Added LineSegment#closestPoints method to compute the closest points between two line segments
+<li>Added MinimumDiameter class to compute minimum diameters of Geometries
+<li>Added geom.Triangle class to contain algorithms for Triangles
+<li>BufferOp now allows end cap styles to be specified.  Three types are supported: round, butt and square.
+</ul>
+<h3>Performance Improvements</h3>
+<ul>
+<li>EdgeList now provides a findEqualEdge method which is substantially faster than findEdgeIndex, for large lists
+<li>Buffering is now faster and much more robust
+<li>Overlap operations are now more robust
+</ul>
+<h3>Bug Fixes</h3>
+<ul>
+<li>Envelope#init(Envelope) now handles null Envelopes correctly
+<li>CoordinateList#add() now correctly ignores the z-value of Coordinates in determining equality
+<li>Geometry#isValid now correctly handles checking validity of LinearRings
+<li>Fixed infinite loop bug causing Out Of Memory errors during polygon intersection
+<li>Geometry#clone now correctly clones the Geometry's Envelope
+<li>LineIntersector#computeEdgeDistance now correctly computes a non-zero edge distance in certain situations when a fixed precision model was being used and the line segment was a single unit in length
+<li>Fixed incorrect calculation of depths in DirectedEdgeStar#computeDepths
+<li>Fixed BufferSubgraph#addReachable to use explicit stack to avoid stack overflow problems
+<li>Fixed various bugs causing some kinds of buffers to be computed incorrectly
+</ul>
+<h3>API Changes</h3>
+<ul>
+<li>WKTReader/Writer: changed protected members to private
+<li>PrecisionModel type is now an object rather than an int
+<li>ConvexHull API changed to remove requirement to pass in CGAlgorithms object
+</ul>
+<h3>Code Architecture Changes</h3>
+<ul>
+<li>geom.util package added for utility classes which parse and modify geometries
+</ul>
+<h3>Documentation</h3>
+<ul>
+<li>More examples provided in com.vividsolutions.jtsexamples package
+<li>Added JTS Developers Guide
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.3</h2>
+Release Date: April 4, 2003
+<h3>Semantics Changes</h3>
+<ul>
+<li>all Geometry methods are now reentrant (thread-safe)
+<li>Fixed-precision coordinates are now stored in a rounded but non-scaled form.  This makes them compatible with non-precise (Floating) coordinates, and simplifies working with precise coordinates directly.  Mixed precision models are now supported in Geometry methods; method results are in the more precise of the input precision models.
+<li>Offsets are no longer supported in the Fixed precision model.  This is necessary to allow storing fixed precision coordinates in a non-scaled form.  This does not reduce the total precision available, since coordinates are stored in a floating-point format.
+<li>SRID and Precision Model are no longer checked for equality during Geometry operations.  This removes a limitation which provided little semantic benefit.
+</ul>
+
+<h3>Functionality Improvements</h3>
+<ul>
+<li>added Geometry.isWithinDistance(Geometry g, double distance) method, to provide optimized proximity queries
+<li>added Geometry.buffer(double distance, int quadrantSegments) method, allowing control over accuracy of buffer approximation
+<li>added Geometry.getCentroid() method
+<li>added Geometry.getInteriorPoint() method, which uses heuristic methods to return a point in the interior of a Geometry
+<li>GeometryFactory.toGeometryArray now returns null if the argument is null
+</ul>
+<h3>Performance Improvements</h3>
+<ul>
+<li>Removed unnecessary string construction in EdgeEndStar.propagateSideLabels()
+<li>Eliminated unnecessary computation of self-intersections in rings during relate and spatial functions.  This provides a large increase in speed when working with large rings and polygons.  (Note that IsValid still checks for these self-intersections, which are illegal in LinearRings)
+<li>Add short-circuit code to RobustLineIntersector to detect non-intersections more efficiently
+</ul>
+<h3>Bug Fixes</h3>
+<ul>
+<li>Fixed ClassCastException occurring in GeometryCollection.getLength()
+<li>Fixed bug in Edge Intersection insertion (replaced Coordinate#equals with equals2D to ensure that intersection creation is not sensitive to Z-value).
+<li>Fixed handling LineStrings with too few points in GeometryGraph.addLineString
+<li>Fixed: was not checking that MultiPolygons don't contain components with too few points.
+<li>Fixed Envelope.distance() to return correct distance for all envelopes.
+<li>Fixed a few Geometry methods to make them re-entrant.
+<li>Fixed CoordinateList.closeRing() to ensure endpoints are not duplicated
+<li>Fixed CGAlgorithms.signedArea() to use a simpler algorithm which is more robust and faster.
+<li>Fixed bug preventing validating Rings containing an initial repeated point.
+</ul>
+<h3>API Changes</h3>
+<ul>
+<li>Added default constructor to WKTReader.  It uses the default GeometryFactory
+<li>Add two static intersects() methods to Envelope, to allow computing intersections with envelopes defined by points only.
+<li>Dropped BinaryPower; its functionality is provided by DoubleBits in a more robust fashion.
+<li>Removed a couple of redundant private static methods from Geometry; they have been replaced by methods in CoordinateArrays
+<li>The Geometry class is now marked as Serializable
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.2</h2>
+
+Release Date: 7 October 2002
+<h3>Semantics Changes</h3>
+<ul>
+<li>JTS now allows Geometrys to have repeated points.  All operations will continue to perform as before.  This removes a significant incompatibility with the OGC spatial data model.
+<li>TopologyExceptions may now be thrown by spatial overlay methods.  This helps to distinguish between code bugs and known robustness problems.  It also provides a machine-readable coordinate for the error location.
+</ul>
+<h3>Functionality Improvements</h3>
+<ul>
+<li>RobustLineIntersector now uses "normalized" coordinates to maximize the accuracy of intersection computation.
+<li>Upgraded Quadtree with more robust implementation
+<li>Replaced IntervalTree with a more robust implementation of BinTree
+<li>Added STRTree 2-D spatial index, which exhibits better performance than QuadTrees in many situations.
+<li>Added EnhancePrecisionOp, which uses precisioning enhancing techniques to reduce the number of failure cases due to robustness problems.
+</ul>
+<h3>Bug Fixes</h3>
+<ul>
+<li>fixed ConvexHull to use TreeSet instead of HashSet for coordinates
+<li>Fixed isValid for GeometryCollections containing Polygons, which were sometimes erroneously returning a validity failure for correct Geometrys.
+<li>Fixed bug in LineSegment.distancePointLine() which would return the incorrect distance for a LineSegment with two identical points
+<li>Improved error handling in CGAlgorithms.isCCW()
+<li>IsValid now checks for too few points in a geometry component (e.g. due to repeated points in a ring)
+</ul>
+<h3>API Changes</h3>
+<ul>
+<li>added Stopwatch class
+<li>added Geometry.getArea() and Geometry.getLength() methods
+<li>added CGAlgorithms.signedArea() method
+<li>added methods to LineSegment - closestPoint(), getLength()
+<li>added CoordinateArrrays and CoordinateLists utility classes
+<li>Added TopologyValidationError.getErrorType() method
+<li>Added Envelope#intersects; deprecated Envelope#overlaps.
+<li>Added Geometry#geometryChanged() method to allow signaling when Geometry coordinates have been mutated by a client class
+<li>Added STRTree class implementing a Sort-Tile-Recursive spatial index (a variant of a packed R-tree)
+<li>Deleted IntervalTree 1-D spatial index (replaced by BinTree)
+<li>Add BinTree 1-D spatial index
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.1.1</h2>
+
+Release Date: 9 April 2002
+<h3>Bug Fixes</h3>
+<ul>
+<li>fixed decimal-point symbol localization bug in WKTWriter
+<li>fixed bug in Envelope.int(Envelope env)
+<li>fixed filename case of SFSMultiLineString.java and IntervalTree.java
+</ul>
+<h3>API Changes</h3>
+<ul>
+<li>deleted TopologyException class
+<li>renamed CGAlgorithms.isPointInPolygon to isPointInRing (a more accurate description of what the method computes)
+</ul>
+<h3>API Additions</h3>
+<ul>
+<li>added Geometry.getCoordinate() method
+<li>added Geometry.distance() method
+<li>added GeometryComponentFilter interface and Geometry.apply(GeometryComponentFilter) method
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.1</h2>
+
+Release Date: 28 March 2002
+<h3>New Features</h3>
+<ul>
+<li>added Geometry.isSimple() and Geometry.isValid() methods
+<li>improved design of topological data structures
+<li>added Geometry.setSRID() method
+<li>improved functionality of the Envelope class
+<li>added ability to write to an arbitrary java.io.Writer object to WKTWriter
+<li>added Validate and Mark Location functionality to TestBuilder
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 1.0</h2>
+Release Date: 1 February 2002
+<ul>
+<li>Removed some non-compatibilities with Java 1.1
+<li>Fixed bug in constructing buffer outline around inside of angles
+<li>In TestBuilder vertices are now displayed with fixed size in view units
+<li>Improved code for WKTWriter.writeFormatted()
+<li>Fixed bug in constructor for LinearRing
+<li>Improved implementation of sweepline intersection algorithm to avoid use of dynamic set.
+<li>Fixed bug in ConvexHull.cleanRing()
+<li>Refactored RobustLineIntersector and NonRobustLineIntersector
+</ul>
+
+<!----------------------------------------------------------------------->
+<hr size='4' color='darkblue'>
+<h2>Version 0.0</h2>
+Release Date: 30 May 2001
+
+<p>
+<i>Baseline version</i>
+
+</body>
+</html>
diff --git a/doc/LICENSE.txt b/doc/LICENSE.txt
new file mode 100644
index 0000000..cbee875
--- /dev/null
+++ b/doc/LICENSE.txt
@@ -0,0 +1,504 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+

+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+

+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+

+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+

+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+

+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+

+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+

+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+

+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+

+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/jtsio/doc/javadoc/allclasses-frame.html b/jtsio/doc/javadoc/allclasses-frame.html
new file mode 100644
index 0000000..001dd08
--- /dev/null
+++ b/jtsio/doc/javadoc/allclasses-frame.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+All Classes
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameHeadingFont">
+<B>All Classes</B></FONT>
+<BR>
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle" target="classFrame">OraReader</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle" target="classFrame">OraWriter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/sde/SdeReader.html" title="class in com.vividsolutions.jts.io.sde" target="classFrame">SdeReader</A>
+<BR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/allclasses-noframe.html b/jtsio/doc/javadoc/allclasses-noframe.html
new file mode 100644
index 0000000..8e2e54e
--- /dev/null
+++ b/jtsio/doc/javadoc/allclasses-noframe.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+All Classes
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameHeadingFont">
+<B>All Classes</B></FONT>
+<BR>
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle">OraWriter</A>
+<BR>
+<A HREF="com/vividsolutions/jts/io/sde/SdeReader.html" title="class in com.vividsolutions.jts.io.sde">SdeReader</A>
+<BR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/OraReader.html b/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/OraReader.html
new file mode 100644
index 0000000..132d17d
--- /dev/null
+++ b/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/OraReader.html
@@ -0,0 +1,378 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+OraReader
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.oracle.OraReader class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="OraReader";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV CLASS 
+ <A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="OraReader.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: NESTED | <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io.oracle</FONT>
+<BR>
+Class OraReader</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.oracle.OraReader</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>OraReader</B><DT>extends java.lang.Object</DL>
+
+<P>
+Reads a <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/Geometry.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from an Oracle <tt>MDSYS.GEOMETRY</tt> object.
+
+ A <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A> may be provided, otherwise
+ a default one will be used.
+ The provided GeometryFactory will be used, with the exception of the SRID field.
+ This will be extracted from the Geometry.
+ <p>
+ If a <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/PrecisionModel.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A> is supplied it is the callers's responsibility
+ to ensure that it matches the precision of the incoming data.
+ If a lower precision for the data is required, a subsequent
+ process must be run on the data to reduce its precision.
+ <p>
+ To use this class a suitable Oracle JDBC driver JAR must be present.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>9i</DD>
+<DT><B>Author:</B></DT>
+  <DD>David Zwiers, Vivid Solutions., Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+<A NAME="field_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Field Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE>static int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html#NULL_DIMENSION">NULL_DIMENSION</A></B></CODE>
+
+<BR>
+           </TD>
+</TR>
+</TABLE>
+ 
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html#OraReader()">OraReader</A></B>()</CODE>
+
+<BR>
+          Creates a new reader, with a default GeometryFactory.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html#OraReader(com.vividsolutions.jts.geom.GeometryFactory)">OraReader</A></B>(<A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html" title="class or interface in com.vividsolutions.jts.geom">GeometryFactory</A> gf)</CODE>
+
+<BR>
+          Creates a new reader, with the supplied <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.</TD>
+</TR>
+</TABLE>
+ 
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html#getDimension()">getDimension</A></B>()</CODE>
+
+<BR>
+          Gets the number of coordinate dimensions which will be read.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/Geometry.html" title="class or interface in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html#read(oracle.sql.STRUCT)">read</A></B>(oracle.sql.STRUCT struct)</CODE>
+
+<BR>
+          This method will attempt to create a JTS Geometry for the MDSYS.GEOMETRY
+ provided.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html#setDimension(int)">setDimension</A></B>(int dimension)</CODE>
+
+<BR>
+          Sets the number of coordinate dimensions to read.</TD>
+</TR>
+</TABLE>
+ <A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+ 
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+<A NAME="field_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Field Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="NULL_DIMENSION"><!-- --></A><H3>
+NULL_DIMENSION</H3>
+<PRE>
+public static final int <B>NULL_DIMENSION</B></PRE>
+<DL>
+<DL>
+<DT><B>See Also:</B><DD><A HREF="../../../../../constant-values.html#com.vividsolutions.jts.io.oracle.OraReader.NULL_DIMENSION">Constant Field Values</A></DL>
+</DL>
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="OraReader()"><!-- --></A><H3>
+OraReader</H3>
+<PRE>
+public <B>OraReader</B>()</PRE>
+<DL>
+<DD>Creates a new reader, with a default GeometryFactory.
+<P>
+<DT><B>See Also:</B><DD><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html#OraReader(com.vividsolutions.jts.geom.GeometryFactory)"><CODE>OraReader(GeometryFactory)</CODE></A></DL>
+<HR>
+
+<A NAME="OraReader(com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+OraReader</H3>
+<PRE>
+public <B>OraReader</B>(<A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html" title="class or interface in com.vividsolutions.jts.geom">GeometryFactory</A> gf)</PRE>
+<DL>
+<DD>Creates a new reader, with the supplied <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.
+ It is assumed that the supplied <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/PrecisionModel.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>PrecisionModel</CODE></A>
+ matches the precision of the incoming data -
+ coordinates are <b>not</b> made precise.
+<P>
+<DT><B>Parameters:</B><DD><CODE>gf</CODE> - A non-null geometry factory for later use.
+<DT><B>Throws:</B>
+<DD><CODE>java.lang.NullPointerException</CODE> - when the geometry factory is null.</DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getDimension()"><!-- --></A><H3>
+getDimension</H3>
+<PRE>
+public int <B>getDimension</B>()</PRE>
+<DL>
+<DD>Gets the number of coordinate dimensions which will be read.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the dimension which will be read</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDimension(int)"><!-- --></A><H3>
+setDimension</H3>
+<PRE>
+public void <B>setDimension</B>(int dimension)</PRE>
+<DL>
+<DD>Sets the number of coordinate dimensions to read.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>dimension</CODE> - the dimension to read</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="read(oracle.sql.STRUCT)"><!-- --></A><H3>
+read</H3>
+<PRE>
+public <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/Geometry.html" title="class or interface in com.vividsolutions.jts.geom">Geometry</A> <B>read</B>(oracle.sql.STRUCT struct)
+              throws java.sql.SQLException</PRE>
+<DL>
+<DD>This method will attempt to create a JTS Geometry for the MDSYS.GEOMETRY
+ provided. The Type of gemetry returned will depend on the input datum,
+ where the Geometry type is specified within the STRUCT.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>struct</CODE> - The MDSYS.GEOMETRY Object to decode
+<DT><B>Returns:</B><DD>A JTS Geometry if one could be created, null otherwise
+<DT><B>Throws:</B>
+<DD><CODE>java.sql.SQLException</CODE> - When a read error occured within the struct</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV CLASS 
+ <A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle"><B>NEXT CLASS</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="OraReader.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: NESTED | <A HREF="#field_summary">FIELD</A> | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL: <A HREF="#field_detail">FIELD</A> | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/OraWriter.html b/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/OraWriter.html
new file mode 100644
index 0000000..2a3e6cf
--- /dev/null
+++ b/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/OraWriter.html
@@ -0,0 +1,353 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+OraWriter
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.oracle.OraWriter class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="OraWriter";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle"><B>PREV CLASS</B></A> 
+ NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="OraWriter.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io.oracle</FONT>
+<BR>
+Class OraWriter</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.oracle.OraWriter</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>OraWriter</B><DT>extends java.lang.Object</DL>
+
+<P>
+Translates a JTS Geometry into an Oracle STRUCT representing an MDSYS.GEOMETRY object. 
+ 
+ A connection to an oracle instance with access to the definition of the MDSYS.GEOMETRY 
+ object is required by the oracle driver.
+<P>
+
+<P>
+<DL>
+<DT><B>Version:</B></DT>
+  <DD>9i</DD>
+<DT><B>Author:</B></DT>
+  <DD>David Zwiers, Vivid Solutions.</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html#OraWriter(oracle.jdbc.OracleConnection)">OraWriter</A></B>(oracle.jdbc.OracleConnection con)</CODE>
+
+<BR>
+          Initialize the Oracle MDSYS.GEOMETRY Encoder with a valid oracle connection.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html#OraWriter(oracle.jdbc.OracleConnection, int)">OraWriter</A></B>(oracle.jdbc.OracleConnection con,
+          int dimension)</CODE>
+
+<BR>
+          Initialize the Oracle MDSYS.GEOMETRY Encoder with a valid oracle connection.</TD>
+</TR>
+</TABLE>
+ 
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html#setDimension(int)">setDimension</A></B>(int dimension)</CODE>
+
+<BR>
+           </TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html#setSRID(int)">setSRID</A></B>(int srid)</CODE>
+
+<BR>
+          Provides the oppotunity to force all geometries written using this writter to be written using the 
+ specified srid.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> oracle.sql.STRUCT</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html#write(com.vividsolutions.jts.geom.Geometry)">write</A></B>(<A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/Geometry.html" title="class or interface in com.vividsolutions.jts.geom">Geometry</A> geom)</CODE>
+
+<BR>
+          This routine will translate the JTS Geometry into an Oracle MDSYS.GEOMETRY STRUCT.</TD>
+</TR>
+</TABLE>
+ <A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+ 
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="OraWriter(oracle.jdbc.OracleConnection)"><!-- --></A><H3>
+OraWriter</H3>
+<PRE>
+public <B>OraWriter</B>(oracle.jdbc.OracleConnection con)</PRE>
+<DL>
+<DD>Initialize the Oracle MDSYS.GEOMETRY Encoder with a valid oracle connection. 
+ 
+ The connection should have sufficient priveledges to view the description of the MDSYS.GEOMETRY type.
+ 
+ The dimension is set to 2
+<P>
+<DT><B>Parameters:</B><DD><CODE>con</CODE> - </DL>
+<HR>
+
+<A NAME="OraWriter(oracle.jdbc.OracleConnection, int)"><!-- --></A><H3>
+OraWriter</H3>
+<PRE>
+public <B>OraWriter</B>(oracle.jdbc.OracleConnection con,
+                 int dimension)</PRE>
+<DL>
+<DD>Initialize the Oracle MDSYS.GEOMETRY Encoder with a valid oracle connection. 
+ 
+ The connection should have sufficient priveledges to view the description of the MDSYS.GEOMETRY type.
+<P>
+<DT><B>Parameters:</B><DD><CODE>con</CODE> - <DD><CODE>dimension</CODE> - </DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="setSRID(int)"><!-- --></A><H3>
+setSRID</H3>
+<PRE>
+public void <B>setSRID</B>(int srid)</PRE>
+<DL>
+<DD>Provides the oppotunity to force all geometries written using this writter to be written using the 
+ specified srid. This is useful in two cases: 1) when you do not want the geometry's srid to be 
+ over-written or 2) when you want to ensure an entire layer is always written using a constant srid.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>srid</CODE> - </DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="write(com.vividsolutions.jts.geom.Geometry)"><!-- --></A><H3>
+write</H3>
+<PRE>
+public oracle.sql.STRUCT <B>write</B>(<A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/Geometry.html" title="class or interface in com.vividsolutions.jts.geom">Geometry</A> geom)
+                        throws java.sql.SQLException</PRE>
+<DL>
+<DD>This routine will translate the JTS Geometry into an Oracle MDSYS.GEOMETRY STRUCT.
+ 
+ Although invalid geometries may be encoded, and inserted into an Oracle DB, this is 
+ not recomended. It is the responsibility of the user to ensure the geometry is valid 
+ prior to calling this method. The user should also ensure the the geometry's SRID 
+ field contains the correct value, if an SRID is desired. An incorrect SRID value may 
+ cause index exceptions during an insert or update. 
+ 
+ When a null Geometry is passed in, a non-null, empty STRUCT is returned. Therefore, 
+ inserting the the result of calling this method directly into a table will never result 
+ in null insertions. 
+ (March 2006)
+ 
+ To pass a NULL Geometry into an oracle geometry parameter using jdbc, use 
+ java.sql.CallableStatement.setNull(index,java.sql.Types.STRUCT,"MDSYS.SDO_GEOMETRY")
+ (April 2006)
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>geom</CODE> - JTS Geometry to encode
+<DT><B>Returns:</B><DD>Oracle MDSYS.GEOMETRY STRUCT
+<DT><B>Throws:</B>
+<DD><CODE>java.sql.SQLException</CODE></DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDimension(int)"><!-- --></A><H3>
+setDimension</H3>
+<PRE>
+public void <B>setDimension</B>(int dimension)</PRE>
+<DL>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>dimension</CODE> - The dimension to set.</DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle"><B>PREV CLASS</B></A> 
+ NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="OraWriter.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-frame.html b/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-frame.html
new file mode 100644
index 0000000..a19e5e9
--- /dev/null
+++ b/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-frame.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+com.vividsolutions.jts.io.oracle
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.oracle package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/io/oracle/package-summary.html" target="classFrame">com.vividsolutions.jts.io.oracle</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT> 
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="OraReader.html" title="class in com.vividsolutions.jts.io.oracle" target="classFrame">OraReader</A>
+<BR>
+<A HREF="OraWriter.html" title="class in com.vividsolutions.jts.io.oracle" target="classFrame">OraWriter</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-summary.html b/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-summary.html
new file mode 100644
index 0000000..19c05fa
--- /dev/null
+++ b/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-summary.html
@@ -0,0 +1,165 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+com.vividsolutions.jts.io.oracle
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.oracle package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.io.oracle";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV PACKAGE 
+ <A HREF="../../../../../com/vividsolutions/jts/io/sde/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.io.oracle
+</H2>
+Classes to read and write Oracle SDO_GEOMETRY object structures.
+<P>
+<B>See:</B>
+<BR>
+          <A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A></B></TD>
+<TD>Reads a <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/Geometry.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from an Oracle <tt>MDSYS.GEOMETRY</tt> object.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle">OraWriter</A></B></TD>
+<TD>Translates a JTS Geometry into an Oracle STRUCT representing an MDSYS.GEOMETRY object.</TD>
+</TR>
+</TABLE>
+ 
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.io.oracle Description
+</H2>
+
+<P>
+Classes to read and write Oracle SDO_GEOMETRY object structures.
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV PACKAGE 
+ <A HREF="../../../../../com/vividsolutions/jts/io/sde/package-summary.html"><B>NEXT PACKAGE</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-tree.html b/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-tree.html
new file mode 100644
index 0000000..a4689f2
--- /dev/null
+++ b/jtsio/doc/javadoc/com/vividsolutions/jts/io/oracle/package-tree.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+com.vividsolutions.jts.io.oracle Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.io.oracle Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV 
+ <A HREF="../../../../../com/vividsolutions/jts/io/sde/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.io.oracle
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.io.oracle.<A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle"><B>OraReader</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.oracle.<A HREF="../../../../../com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle"><B>OraWriter</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV 
+ <A HREF="../../../../../com/vividsolutions/jts/io/sde/package-tree.html"><B>NEXT</B></A></FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/com/vividsolutions/jts/io/sde/SdeReader.html b/jtsio/doc/javadoc/com/vividsolutions/jts/io/sde/SdeReader.html
new file mode 100644
index 0000000..c113908
--- /dev/null
+++ b/jtsio/doc/javadoc/com/vividsolutions/jts/io/sde/SdeReader.html
@@ -0,0 +1,346 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+SdeReader
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.sde.SdeReader class">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="SdeReader";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV CLASS 
+ NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="SdeReader.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<!-- ======== START OF CLASS DATA ======== -->
+<H2>
+<FONT SIZE="-1">
+com.vividsolutions.jts.io.sde</FONT>
+<BR>
+Class SdeReader</H2>
+<PRE>
+java.lang.Object
+  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by"><B>com.vividsolutions.jts.io.sde.SdeReader</B>
+</PRE>
+<HR>
+<DL>
+<DT>public class <B>SdeReader</B><DT>extends java.lang.Object</DL>
+
+<P>
+Reads a <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/Geometry.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from an ESRI SDE Shape.
+ <p>
+ The SDE geometry model differs from the OGC model used by JTS.
+ In particular:
+ <ul>
+ <li>Simple lines are read as <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/LineString.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>LineString</CODE></A>s
+ <li>Inverted Polygons and Exverted Holes are read as is.
+ These create invalid JTS polygons, and must be
+ rectified if further operations are to be performed on them.
+ </ul>
+ <p>
+ This class allows specifying the maximum number of coordinate dimensions to read.
+ If dimensions higher than 2 are not required, it may be more efficient to not read them.
+ <p>
+ To use this class the ESRI SDE Java libraries must be present.
+ <p>
+ Currently reading measure (M) ordinates is not supported.
+<P>
+
+<P>
+<DL>
+<DT><B>Author:</B></DT>
+  <DD>Martin Davis</DD>
+</DL>
+<HR>
+
+<P>
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+
+<A NAME="constructor_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Constructor Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/sde/SdeReader.html#SdeReader()">SdeReader</A></B>()</CODE>
+
+<BR>
+          Creates a reader that creates geometries using the default <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/sde/SdeReader.html#SdeReader(com.vividsolutions.jts.geom.GeometryFactory)">SdeReader</A></B>(<A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html" title="class or interface in com.vividsolutions.jts.geom">GeometryFactory</A> geometryFactory)</CODE>
+
+<BR>
+          Creates a reader that creates geometries using the given <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.</TD>
+</TR>
+</TABLE>
+ 
+<!-- ========== METHOD SUMMARY =========== -->
+
+<A NAME="method_summary"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Method Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> int</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/sde/SdeReader.html#getDimension()">getDimension</A></B>()</CODE>
+
+<BR>
+          Gets the maximum number of coordinate dimensions which will be read.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/Geometry.html" title="class or interface in com.vividsolutions.jts.geom">Geometry</A></CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/sde/SdeReader.html#read(com.esri.sde.sdk.client.SeShape)">read</A></B>(com.esri.sde.sdk.client.SeShape shape)</CODE>
+
+<BR>
+          Reads a <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/Geometry.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from a given SDE shape.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
+<CODE> void</CODE></FONT></TD>
+<TD><CODE><B><A HREF="../../../../../com/vividsolutions/jts/io/sde/SdeReader.html#setDimension(int)">setDimension</A></B>(int dimension)</CODE>
+
+<BR>
+          Sets the maximum number of coordinate dimensions to read.</TD>
+</TR>
+</TABLE>
+ <A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD><B>Methods inherited from class java.lang.Object</B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
+</TR>
+</TABLE>
+ 
+<P>
+
+<!-- ============ FIELD DETAIL =========== -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+
+<A NAME="constructor_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Constructor Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="SdeReader()"><!-- --></A><H3>
+SdeReader</H3>
+<PRE>
+public <B>SdeReader</B>()</PRE>
+<DL>
+<DD>Creates a reader that creates geometries using the default <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.
+<P>
+</DL>
+<HR>
+
+<A NAME="SdeReader(com.vividsolutions.jts.geom.GeometryFactory)"><!-- --></A><H3>
+SdeReader</H3>
+<PRE>
+public <B>SdeReader</B>(<A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html" title="class or interface in com.vividsolutions.jts.geom">GeometryFactory</A> geometryFactory)</PRE>
+<DL>
+<DD>Creates a reader that creates geometries using the given <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.
+<P>
+<DT><B>Parameters:</B><DD><CODE>geometryFactory</CODE> - </DL>
+
+<!-- ============ METHOD DETAIL ========== -->
+
+<A NAME="method_detail"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=1><FONT SIZE="+2">
+<B>Method Detail</B></FONT></TD>
+</TR>
+</TABLE>
+
+<A NAME="getDimension()"><!-- --></A><H3>
+getDimension</H3>
+<PRE>
+public int <B>getDimension</B>()</PRE>
+<DL>
+<DD>Gets the maximum number of coordinate dimensions which will be read.
+<P>
+<DD><DL>
+
+<DT><B>Returns:</B><DD>the dimension which will be read</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="setDimension(int)"><!-- --></A><H3>
+setDimension</H3>
+<PRE>
+public void <B>setDimension</B>(int dimension)</PRE>
+<DL>
+<DD>Sets the maximum number of coordinate dimensions to read.
+ If this is larger than the number of dimensions actually 
+ present in the input geometry, the higher ordinates will not
+ be read, and NaN will be returned as their value.
+ <p>
+ The default is to read only the X and Y ordinates (dimension = 2).
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>dimension</CODE> - the dimension to read</DL>
+</DD>
+</DL>
+<HR>
+
+<A NAME="read(com.esri.sde.sdk.client.SeShape)"><!-- --></A><H3>
+read</H3>
+<PRE>
+public <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/Geometry.html" title="class or interface in com.vividsolutions.jts.geom">Geometry</A> <B>read</B>(com.esri.sde.sdk.client.SeShape shape)
+              throws com.esri.sde.sdk.client.SeException</PRE>
+<DL>
+<DD>Reads a <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/Geometry.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from a given SDE shape.
+<P>
+<DD><DL>
+<DT><B>Parameters:</B><DD><CODE>shape</CODE> - the shape to read
+<DT><B>Returns:</B><DD>the geometry which represents the input shape
+<DT><B>Throws:</B>
+<DD><CODE>com.esri.sde.sdk.client.SeException</CODE></DL>
+</DD>
+</DL>
+<!-- ========= END OF CLASS DATA ========= -->
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV CLASS 
+ NEXT CLASS</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="SdeReader.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+<TR>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+  SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
+<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
+DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/com/vividsolutions/jts/io/sde/package-frame.html b/jtsio/doc/javadoc/com/vividsolutions/jts/io/sde/package-frame.html
new file mode 100644
index 0000000..3b1cec2
--- /dev/null
+++ b/jtsio/doc/javadoc/com/vividsolutions/jts/io/sde/package-frame.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+com.vividsolutions.jts.io.sde
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.sde package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+<FONT size="+1" CLASS="FrameTitleFont">
+<A HREF="../../../../../com/vividsolutions/jts/io/sde/package-summary.html" target="classFrame">com.vividsolutions.jts.io.sde</A></FONT>
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
+Classes</FONT> 
+<FONT CLASS="FrameItemFont">
+<BR>
+<A HREF="SdeReader.html" title="class in com.vividsolutions.jts.io.sde" target="classFrame">SdeReader</A></FONT></TD>
+</TR>
+</TABLE>
+
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/com/vividsolutions/jts/io/sde/package-summary.html b/jtsio/doc/javadoc/com/vividsolutions/jts/io/sde/package-summary.html
new file mode 100644
index 0000000..9f3dd94
--- /dev/null
+++ b/jtsio/doc/javadoc/com/vividsolutions/jts/io/sde/package-summary.html
@@ -0,0 +1,161 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+com.vividsolutions.jts.io.sde
+</TITLE>
+
+<META NAME="keywords" CONTENT="com.vividsolutions.jts.io.sde package">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.io.sde";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../com/vividsolutions/jts/io/oracle/package-summary.html"><B>PREV PACKAGE</B></A> 
+ NEXT PACKAGE</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<H2>
+Package com.vividsolutions.jts.io.sde
+</H2>
+Classes to read and write ESRI SDE shapes.
+<P>
+<B>See:</B>
+<BR>
+          <A HREF="#package_description"><B>Description</B></A>
+<P>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Class Summary</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="15%"><B><A HREF="../../../../../com/vividsolutions/jts/io/sde/SdeReader.html" title="class in com.vividsolutions.jts.io.sde">SdeReader</A></B></TD>
+<TD>Reads a <A HREF="../../../../../../../../doc/javadoc/com/vividsolutions/jts/geom/Geometry.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from an ESRI SDE Shape.</TD>
+</TR>
+</TABLE>
+ 
+
+<P>
+<A NAME="package_description"><!-- --></A><H2>
+Package com.vividsolutions.jts.io.sde Description
+</H2>
+
+<P>
+Classes to read and write ESRI SDE shapes.
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Package</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../com/vividsolutions/jts/io/oracle/package-summary.html"><B>PREV PACKAGE</B></A> 
+ NEXT PACKAGE</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/com/vividsolutions/jts/io/sde/package-tree.html b/jtsio/doc/javadoc/com/vividsolutions/jts/io/sde/package-tree.html
new file mode 100644
index 0000000..5258b0a
--- /dev/null
+++ b/jtsio/doc/javadoc/com/vividsolutions/jts/io/sde/package-tree.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+com.vividsolutions.jts.io.sde Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="com.vividsolutions.jts.io.sde Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../com/vividsolutions/jts/io/oracle/package-tree.html"><B>PREV</B></A> 
+ NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For Package com.vividsolutions.jts.io.sde
+</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="../../../../../overview-tree.html">All Packages</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.io.sde.<A HREF="../../../../../com/vividsolutions/jts/io/sde/SdeReader.html" title="class in com.vividsolutions.jts.io.sde"><B>SdeReader</B></A></UL>
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ <A HREF="../../../../../com/vividsolutions/jts/io/oracle/package-tree.html"><B>PREV</B></A> 
+ NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="../../../../../index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/constant-values.html b/jtsio/doc/javadoc/constant-values.html
new file mode 100644
index 0000000..72f2b3a
--- /dev/null
+++ b/jtsio/doc/javadoc/constant-values.html
@@ -0,0 +1,164 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+Constant Field Values
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Constant Field Values";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV 
+ NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="constant-values.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H1>
+Constant Field Values</H1>
+</CENTER>
+<HR SIZE="4" NOSHADE>
+<B>Contents</B><UL>
+<LI><A HREF="#com.vividsolutions">com.vividsolutions.*</A>
+</UL>
+
+<A NAME="com.vividsolutions"><!-- --></A>
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD ALIGN="left"><FONT SIZE="+2">
+<B>com.vividsolutions.*</B></FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
+<TD COLSPAN=3><B>com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A></B></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<A NAME="com.vividsolutions.jts.io.oracle.OraReader.NULL_DIMENSION"><!-- --></A><TD ALIGN="right"><FONT SIZE="-1">
+<CODE>public static final int</CODE></FONT></TD>
+<TD ALIGN="left"><CODE><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html#NULL_DIMENSION">NULL_DIMENSION</A></CODE></TD>
+<TD ALIGN="right"><CODE>-1</CODE></TD>
+</TR>
+</FONT></TD>
+</TR>
+</TABLE>
+
+<P>
+
+<P>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV 
+ NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="constant-values.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/deprecated-list.html b/jtsio/doc/javadoc/deprecated-list.html
new file mode 100644
index 0000000..0c806ea
--- /dev/null
+++ b/jtsio/doc/javadoc/deprecated-list.html
@@ -0,0 +1,132 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+Deprecated List
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Deprecated List";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Deprecated</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV 
+ NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="deprecated-list.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+<B>Deprecated API</B></H2>
+</CENTER>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Deprecated</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV 
+ NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="deprecated-list.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/help-doc.html b/jtsio/doc/javadoc/help-doc.html
new file mode 100644
index 0000000..1b2d844
--- /dev/null
+++ b/jtsio/doc/javadoc/help-doc.html
@@ -0,0 +1,187 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+API Help
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="API Help";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV 
+ NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="help-doc.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H1>
+How This API Document Is Organized</H1>
+</CENTER>
+This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.<H3>
+Overview</H3>
+<BLOCKQUOTE>
+
+<P>
+The <A HREF="overview-summary.html">Overview</A> page is the front page of this API document and provides a list of all packages with a summary for each.  This page can also contain an overall description of the set of packages.</BLOCKQUOTE>
+<H3>
+Package</H3>
+<BLOCKQUOTE>
+
+<P>
+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:<UL>
+<LI>Interfaces (italic)<LI>Classes<LI>Exceptions<LI>Errors</UL>
+</BLOCKQUOTE>
+<H3>
+Class/Interface</H3>
+<BLOCKQUOTE>
+
+<P>
+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:<UL>
+<LI>Class inheritance diagram<LI>Direct Subclasses<LI>All Known Subinterfaces<LI>All Known Implementing Classes<LI>Class/interface declaration<LI>Class/interface description
+<P>
+<LI>Nested Class Summary<LI>Field Summary<LI>Constructor Summary<LI>Method Summary
+<P>
+<LI>Field Detail<LI>Constructor Detail<LI>Method Detail</UL>
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.</BLOCKQUOTE>
+<H3>
+Tree (Class Hierarchy)</H3>
+<BLOCKQUOTE>
+There is a <A HREF="overview-tree.html">Class Hierarchy</A> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with <code>java.lang.Object</code>. The interfaces do not inherit from <code>java.lang.Object</code>.<UL>
+<LI>When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.<LI>When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.</UL>
+</BLOCKQUOTE>
+<H3>
+Deprecated API</H3>
+<BLOCKQUOTE>
+The <A HREF="deprecated-list.html">Deprecated API</A> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</BLOCKQUOTE>
+<H3>
+Index</H3>
+<BLOCKQUOTE>
+The <A HREF="index-all.html">Index</A> contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.</BLOCKQUOTE>
+<H3>
+Prev/Next</H3>
+These links take you to the next or previous class, interface, package, or related page.<H3>
+Frames/No Frames</H3>
+These links show and hide the HTML frames.  All pages are available with or without frames.
+<P>
+<H3>
+Serialized Form</H3>
+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.
+<P>
+<FONT SIZE="-1">
+<EM>
+This help file applies to API documentation generated using the standard doclet.</EM>
+</FONT>
+<BR>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV 
+ NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="help-doc.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/index-all.html b/jtsio/doc/javadoc/index-all.html
new file mode 100644
index 0000000..5db3f55
--- /dev/null
+++ b/jtsio/doc/javadoc/index-all.html
@@ -0,0 +1,212 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+Index
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Index";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV 
+ NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="index-all.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<A HREF="#_C_">C</A> <A HREF="#_G_">G</A> <A HREF="#_N_">N</A> <A HREF="#_O_">O</A> <A HREF="#_R_">R</A> <A HREF="#_S_">S</A> <A HREF="#_W_">W</A> <HR>
+<A NAME="_C_"><!-- --></A><H2>
+<B>C</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/oracle/package-summary.html"><B>com.vividsolutions.jts.io.oracle</B></A> - package com.vividsolutions.jts.io.oracle<DD>Classes to read and write Oracle SDO_GEOMETRY object structures.<DT><A HREF="com/vividsolutions/jts/io/sde/package-summary.html"><B>com.vividsolutions.jts.io.sde</B></A> - package com.vividsolutions.jts.io.sde<DD>Classes to read and write ESRI SDE shapes.</DL>
+<HR>
+<A NAME="_G_"><!-- --></A><H2>
+<B>G</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html#getDimension()"><B>getDimension()</B></A> - 
+Method in class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A>
+<DD>Gets the number of coordinate dimensions which will be read.
+<DT><A HREF="com/vividsolutions/jts/io/sde/SdeReader.html#getDimension()"><B>getDimension()</B></A> - 
+Method in class com.vividsolutions.jts.io.sde.<A HREF="com/vividsolutions/jts/io/sde/SdeReader.html" title="class in com.vividsolutions.jts.io.sde">SdeReader</A>
+<DD>Gets the maximum number of coordinate dimensions which will be read.
+</DL>
+<HR>
+<A NAME="_N_"><!-- --></A><H2>
+<B>N</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html#NULL_DIMENSION"><B>NULL_DIMENSION</B></A> - 
+Static variable in class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A>
+<DD> 
+</DL>
+<HR>
+<A NAME="_O_"><!-- --></A><H2>
+<B>O</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle"><B>OraReader</B></A> - class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A>.<DD>Reads a <A HREF="../../../doc/javadoc/com/vividsolutions/jts/geom/Geometry.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from an Oracle <tt>MDSYS.GE [...]
+Constructor for class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A>
+<DD>Creates a new reader, with a default GeometryFactory.
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html#OraReader(com.vividsolutions.jts.geom.GeometryFactory)"><B>OraReader(GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A>
+<DD>Creates a new reader, with the supplied <A HREF="../../../doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle"><B>OraWriter</B></A> - class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle">OraWriter</A>.<DD>Translates a JTS Geometry into an Oracle STRUCT representing an MDSYS.GEOMETRY object.<DT><A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html#OraWriter(oracle.jdbc.OracleConnection)"><B>O [...]
+Constructor for class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle">OraWriter</A>
+<DD>Initialize the Oracle MDSYS.GEOMETRY Encoder with a valid oracle connection.
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html#OraWriter(oracle.jdbc.OracleConnection, int)"><B>OraWriter(OracleConnection, int)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle">OraWriter</A>
+<DD>Initialize the Oracle MDSYS.GEOMETRY Encoder with a valid oracle connection.
+</DL>
+<HR>
+<A NAME="_R_"><!-- --></A><H2>
+<B>R</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html#read(oracle.sql.STRUCT)"><B>read(STRUCT)</B></A> - 
+Method in class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A>
+<DD>This method will attempt to create a JTS Geometry for the MDSYS.GEOMETRY
+ provided.
+<DT><A HREF="com/vividsolutions/jts/io/sde/SdeReader.html#read(com.esri.sde.sdk.client.SeShape)"><B>read(SeShape)</B></A> - 
+Method in class com.vividsolutions.jts.io.sde.<A HREF="com/vividsolutions/jts/io/sde/SdeReader.html" title="class in com.vividsolutions.jts.io.sde">SdeReader</A>
+<DD>Reads a <A HREF="../../../doc/javadoc/com/vividsolutions/jts/geom/Geometry.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from a given SDE shape.
+</DL>
+<HR>
+<A NAME="_S_"><!-- --></A><H2>
+<B>S</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/sde/SdeReader.html" title="class in com.vividsolutions.jts.io.sde"><B>SdeReader</B></A> - class com.vividsolutions.jts.io.sde.<A HREF="com/vividsolutions/jts/io/sde/SdeReader.html" title="class in com.vividsolutions.jts.io.sde">SdeReader</A>.<DD>Reads a <A HREF="../../../doc/javadoc/com/vividsolutions/jts/geom/Geometry.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>Geometry</CODE></A> from an ESRI SDE Shape.<DT><A HREF="com/vi [...]
+Constructor for class com.vividsolutions.jts.io.sde.<A HREF="com/vividsolutions/jts/io/sde/SdeReader.html" title="class in com.vividsolutions.jts.io.sde">SdeReader</A>
+<DD>Creates a reader that creates geometries using the default <A HREF="../../../doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/io/sde/SdeReader.html#SdeReader(com.vividsolutions.jts.geom.GeometryFactory)"><B>SdeReader(GeometryFactory)</B></A> - 
+Constructor for class com.vividsolutions.jts.io.sde.<A HREF="com/vividsolutions/jts/io/sde/SdeReader.html" title="class in com.vividsolutions.jts.io.sde">SdeReader</A>
+<DD>Creates a reader that creates geometries using the given <A HREF="../../../doc/javadoc/com/vividsolutions/jts/geom/GeometryFactory.html" title="class or interface in com.vividsolutions.jts.geom"><CODE>GeometryFactory</CODE></A>.
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraReader.html#setDimension(int)"><B>setDimension(int)</B></A> - 
+Method in class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle">OraReader</A>
+<DD>Sets the number of coordinate dimensions to read.
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html#setDimension(int)"><B>setDimension(int)</B></A> - 
+Method in class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle">OraWriter</A>
+<DD> 
+<DT><A HREF="com/vividsolutions/jts/io/sde/SdeReader.html#setDimension(int)"><B>setDimension(int)</B></A> - 
+Method in class com.vividsolutions.jts.io.sde.<A HREF="com/vividsolutions/jts/io/sde/SdeReader.html" title="class in com.vividsolutions.jts.io.sde">SdeReader</A>
+<DD>Sets the maximum number of coordinate dimensions to read.
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html#setSRID(int)"><B>setSRID(int)</B></A> - 
+Method in class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle">OraWriter</A>
+<DD>Provides the oppotunity to force all geometries written using this writter to be written using the 
+ specified srid.
+</DL>
+<HR>
+<A NAME="_W_"><!-- --></A><H2>
+<B>W</B></H2>
+<DL>
+<DT><A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html#write(com.vividsolutions.jts.geom.Geometry)"><B>write(Geometry)</B></A> - 
+Method in class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle">OraWriter</A>
+<DD>This routine will translate the JTS Geometry into an Oracle MDSYS.GEOMETRY STRUCT.
+</DL>
+<HR>
+<A HREF="#_C_">C</A> <A HREF="#_G_">G</A> <A HREF="#_N_">N</A> <A HREF="#_O_">O</A> <A HREF="#_R_">R</A> <A HREF="#_S_">S</A> <A HREF="#_W_">W</A> 
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV 
+ NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="index-all.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/index.html b/jtsio/doc/javadoc/index.html
new file mode 100644
index 0000000..56fa676
--- /dev/null
+++ b/jtsio/doc/javadoc/index.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc on Mon Mar 01 21:11:45 PST 2010-->
+<TITLE>
+Generated Documentation (Untitled)
+</TITLE>
+</HEAD>
+<FRAMESET cols="20%,80%">
+<FRAMESET rows="30%,70%">
+<FRAME src="overview-frame.html" name="packageListFrame" title="All Packages">
+<FRAME src="allclasses-frame.html" name="packageFrame" title="All classes and interfaces (except non-static nested types)">
+</FRAMESET>
+<FRAME src="overview-summary.html" name="classFrame" title="Package, class and interface descriptions">
+<NOFRAMES>
+<H2>
+Frame Alert</H2>
+
+<P>
+This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
+<BR>
+Link to<A HREF="overview-summary.html">Non-frame version.</A>
+</NOFRAMES>
+</FRAMESET>
+</HTML>
diff --git a/jtsio/doc/javadoc/overview-frame.html b/jtsio/doc/javadoc/overview-frame.html
new file mode 100644
index 0000000..f41763a
--- /dev/null
+++ b/jtsio/doc/javadoc/overview-frame.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+Overview
+</TITLE>
+
+<META NAME="keywords" CONTENT="Overview">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT size="+1" CLASS="FrameTitleFont">
+<B></B></FONT></TD>
+</TR>
+</TABLE>
+
+<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
+<TR>
+<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="allclasses-frame.html" target="packageFrame">All Classes</A></FONT>
+<P>
+<FONT size="+1" CLASS="FrameHeadingFont">
+Packages</FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/io/oracle/package-frame.html" target="packageFrame">com.vividsolutions.jts.io.oracle</A></FONT>
+<BR>
+<FONT CLASS="FrameItemFont"><A HREF="com/vividsolutions/jts/io/sde/package-frame.html" target="packageFrame">com.vividsolutions.jts.io.sde</A></FONT>
+<BR>
+</TD>
+</TR>
+</TABLE>
+
+<P>
+ 
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/overview-summary.html b/jtsio/doc/javadoc/overview-summary.html
new file mode 100644
index 0000000..ca76b24
--- /dev/null
+++ b/jtsio/doc/javadoc/overview-summary.html
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+Overview
+</TITLE>
+
+<META NAME="keywords" CONTENT="Overview">
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Overview";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Overview</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV 
+ NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="overview-summary.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+
+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
+<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
+<TD COLSPAN=2><FONT SIZE="+2">
+<B>Packages</B></FONT></TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/io/oracle/package-summary.html">com.vividsolutions.jts.io.oracle</A></B></TD>
+<TD>Classes to read and write Oracle SDO_GEOMETRY object structures.</TD>
+</TR>
+<TR BGCOLOR="white" CLASS="TableRowColor">
+<TD WIDTH="20%"><B><A HREF="com/vividsolutions/jts/io/sde/package-summary.html">com.vividsolutions.jts.io.sde</A></B></TD>
+<TD>Classes to read and write ESRI SDE shapes.</TD>
+</TR>
+</TABLE>
+
+<P>
+ <HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Overview</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV 
+ NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="overview-summary.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/overview-tree.html b/jtsio/doc/javadoc/overview-tree.html
new file mode 100644
index 0000000..c730085
--- /dev/null
+++ b/jtsio/doc/javadoc/overview-tree.html
@@ -0,0 +1,142 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+Class Hierarchy
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+<SCRIPT type="text/javascript">
+function windowTitle()
+{
+    parent.document.title="Class Hierarchy";
+}
+</SCRIPT>
+
+</HEAD>
+
+<BODY BGCOLOR="white" onload="windowTitle();">
+
+
+<!-- ========= START OF TOP NAVBAR ======= -->
+<A NAME="navbar_top"><!-- --></A>
+<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_top_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV 
+ NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="overview-tree.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_top"></A>
+<!-- ========= END OF TOP NAVBAR ========= -->
+
+<HR>
+<CENTER>
+<H2>
+Hierarchy For All Packages</H2>
+</CENTER>
+<DL>
+<DT><B>Package Hierarchies:</B><DD><A HREF="com/vividsolutions/jts/io/oracle/package-tree.html">com.vividsolutions.jts.io.oracle</A>, <A HREF="com/vividsolutions/jts/io/sde/package-tree.html">com.vividsolutions.jts.io.sde</A></DL>
+<HR>
+<H2>
+Class Hierarchy
+</H2>
+<UL>
+<LI TYPE="circle">class java.lang.Object<UL>
+<LI TYPE="circle">class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraReader.html" title="class in com.vividsolutions.jts.io.oracle"><B>OraReader</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.oracle.<A HREF="com/vividsolutions/jts/io/oracle/OraWriter.html" title="class in com.vividsolutions.jts.io.oracle"><B>OraWriter</B></A><LI TYPE="circle">class com.vividsolutions.jts.io.sde.<A HREF="com/vividsolutions/jts/io/sde/SdeReader.html" title="class  [...]
+</UL>
+<HR>
+
+
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<A NAME="navbar_bottom"><!-- --></A>
+<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
+<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
+<TR>
+<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
+<A NAME="navbar_bottom_firstrow"><!-- --></A>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
+  <TR ALIGN="center" VALIGN="top">
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT> </TD>
+  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">  <FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
+  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
+  </TR>
+</TABLE>
+</TD>
+<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
+</EM>
+</TD>
+</TR>
+
+<TR>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+ PREV 
+ NEXT</FONT></TD>
+<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
+  <A HREF="index.html" target="_top"><B>FRAMES</B></A>   
+ <A HREF="overview-tree.html" target="_top"><B>NO FRAMES</B></A>   
+ <SCRIPT type="text/javascript">
+  <!--
+  if(window==top) {
+    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+  }
+  //-->
+</SCRIPT>
+<NOSCRIPT>
+  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
+</NOSCRIPT>
+
+</FONT></TD>
+</TR>
+</TABLE>
+<A NAME="skip-navbar_bottom"></A>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+
+<HR>
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/package-list b/jtsio/doc/javadoc/package-list
new file mode 100644
index 0000000..e0eb2d7
--- /dev/null
+++ b/jtsio/doc/javadoc/package-list
@@ -0,0 +1,2 @@
+com.vividsolutions.jts.io.oracle
+com.vividsolutions.jts.io.sde
diff --git a/jtsio/doc/javadoc/packages.html b/jtsio/doc/javadoc/packages.html
new file mode 100644
index 0000000..3aaa486
--- /dev/null
+++ b/jtsio/doc/javadoc/packages.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--NewPage-->
+<HTML>
+<HEAD>
+<!-- Generated by javadoc (build 1.4.2_09) on Mon Mar 01 21:11:45 PST 2010 -->
+<TITLE>
+
+</TITLE>
+
+
+<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
+
+
+</HEAD>
+
+<BODY BGCOLOR="white">
+
+<BR>
+
+<BR>
+
+<BR>
+<CENTER>
+The front page has been relocated.Please see:
+<BR>
+          <A HREF="index.html">Frame version</A>
+<BR>
+          <A HREF="overview-summary.html">Non-frame version.</A></CENTER>
+
+</BODY>
+</HTML>
diff --git a/jtsio/doc/javadoc/resources/inherit.gif b/jtsio/doc/javadoc/resources/inherit.gif
new file mode 100644
index 0000000..c814867
Binary files /dev/null and b/jtsio/doc/javadoc/resources/inherit.gif differ
diff --git a/jtsio/doc/javadoc/stylesheet.css b/jtsio/doc/javadoc/stylesheet.css
new file mode 100644
index 0000000..14c3737
--- /dev/null
+++ b/jtsio/doc/javadoc/stylesheet.css
@@ -0,0 +1,29 @@
+/* Javadoc style sheet */
+
+/* Define colors, fonts and other style attributes here to override the defaults */
+
+/* Page background color */
+body { background-color: #FFFFFF }
+
+/* Headings */
+h1 { font-size: 145% }
+
+/* Table colors */
+.TableHeadingColor     { background: #CCCCFF } /* Dark mauve */
+.TableSubHeadingColor  { background: #EEEEFF } /* Light mauve */
+.TableRowColor         { background: #FFFFFF } /* White */
+
+/* Font used in left-hand frame lists */
+.FrameTitleFont   { font-size: 100%; font-family: Helvetica, Arial, sans-serif }
+.FrameHeadingFont { font-size:  90%; font-family: Helvetica, Arial, sans-serif }
+.FrameItemFont    { font-size:  90%; font-family: Helvetica, Arial, sans-serif }
+
+/* Navigation bar fonts and colors */
+.NavBarCell1    { background-color:#EEEEFF;} /* Light mauve */
+.NavBarCell1Rev { background-color:#00008B;} /* Dark Blue */
+.NavBarFont1    { font-family: Arial, Helvetica, sans-serif; color:#000000;}
+.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;}
+
+.NavBarCell2    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
+.NavBarCell3    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
+
diff --git a/jtsio/src/com/vividsolutions/jts/io/oracle/Constants.java b/jtsio/src/com/vividsolutions/jts/io/oracle/Constants.java
new file mode 100644
index 0000000..673b5d7
--- /dev/null
+++ b/jtsio/src/com/vividsolutions/jts/io/oracle/Constants.java
@@ -0,0 +1,123 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+/*
+ *    Geotools2 - OpenSource mapping toolkit
+ *    http://geotools.org
+ *    (C) 2003, Geotools Project Managment Committee (PMC)
+ *
+ *    This library is free software; you can redistribute it and/or
+ *    modify it under the terms of the GNU Lesser General Public
+ *    License as published by the Free Software Foundation;
+ *    version 2.1 of the License.
+ *
+ *    This library is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *    Lesser General Public License for more details.
+ *
+ */
+package com.vividsolutions.jts.io.oracle;
+
+/**
+ * Set of constants used to interact with MDSYS.GEOMETRY and JTS Geometries. 
+ * 
+ *
+ * @author David Zwiers, Vivid Solutions.
+ */
+class Constants {
+	
+	/**
+	 * Null SRID
+	 */
+	public static final int SRID_NULL = -1;
+	
+	/**
+	 * 
+	 * Extracted from the Oracle Documentation for SDO_ETYPE
+	 * 
+	 * This list may need to be expanded in the future to handle additional Geometry Types.
+	 *
+	 * @author David Zwiers, Vivid Solutions.
+	 * @author Jody Garnett, Refractions Research, Inc.
+	 */
+	static final class SDO_ETYPE{
+
+	    /** <code>ETYPE</code> code representing Point */
+	    public static final int POINT = 1;
+	
+	    /** <code>ETYPE</code> code representing Line */
+	    public static final int LINE = 2;
+	    
+		/** <code>ETYPE</code> code representing Polygon */
+		public static final int POLYGON = 3;
+	
+	    /** <code>ETYPE</code> code representing exterior counterclockwise  polygon ring */
+	    public static final int POLYGON_EXTERIOR = 1003;
+	
+	    /** <code>ETYPE</code> code representing interior clockwise  polygon ring */
+	    public static final int POLYGON_INTERIOR = 2003;
+	}
+    
+	/**
+	 * Extracted from the Oracle Documentation for SDO_GTYPE.
+	 * This represents the last two digits in a GTYPE, where the first id dimension and the second if LRS
+	 * 
+	 * This list may need to be expanded in the future to handle additional Geometry Types.
+	 *
+	 * @author David Zwiers, Vivid Solutions.
+	 * @author Brent Owens, The Open Planning Project.
+	 */
+	static final class SDO_GTEMPLATE{
+	
+		/** <code>TT</code> code representing Point */
+		public static final int POINT         = 01;
+	
+		/** <code>TT</code> code representing Line (or Curve) */
+		public static final int LINE          = 02;  
+	    
+		/** <code>TT</code> code representing Polygon */
+		public static final int POLYGON       = 03;
+	
+		/** <code>TT</code> code representing Collection */
+		public static final int COLLECTION    = 04;   
+	
+		/** <code>TT</code> code representing Multpoint */
+		public static final int MULTIPOINT    = 05;       
+	
+		/** <code>TT</code> code representing Multiline (or Multicurve) */
+		public static final int MULTILINE     = 06;
+	
+		/** <code>TT</code> code representing MULTIPOLYGON */
+		public static final int MULTIPOLYGON  = 07;
+	}
+}
diff --git a/jtsio/src/com/vividsolutions/jts/io/oracle/OraReader.java b/jtsio/src/com/vividsolutions/jts/io/oracle/OraReader.java
new file mode 100644
index 0000000..ee7470b
--- /dev/null
+++ b/jtsio/src/com/vividsolutions/jts/io/oracle/OraReader.java
@@ -0,0 +1,857 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+/*
+ *    Geotools2 - OpenSource mapping toolkit
+ *    http://geotools.org
+ *    (C) 2003, Geotools Project Managment Committee (PMC)
+ *
+ *    This library is free software; you can redistribute it and/or
+ *    modify it under the terms of the GNU Lesser General Public
+ *    License as published by the Free Software Foundation;
+ *    version 2.1 of the License.
+ *
+ *    This library is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *    Lesser General Public License for more details.
+ *
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.sql.SQLException;
+import java.util.*;
+
+import oracle.sql.*;
+
+import com.vividsolutions.jts.algorithm.CGAlgorithms;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Reads a {@link Geometry} from an Oracle <tt>MDSYS.GEOMETRY</tt> object.
+ *
+ * A {@link GeometryFactory} may be provided, otherwise
+ * a default one will be used.
+ * The provided GeometryFactory will be used, with the exception of the SRID field.
+ * This will be extracted from the Geometry.
+ * <p>
+ * If a {@link PrecisionModel} is supplied it is the callers's responsibility
+ * to ensure that it matches the precision of the incoming data.
+ * If a lower precision for the data is required, a subsequent
+ * process must be run on the data to reduce its precision.
+ * <p>
+ * To use this class a suitable Oracle JDBC driver JAR must be present.
+ *
+ * @version 9i
+ * @author David Zwiers, Vivid Solutions.
+ * @author Martin Davis
+ */
+public class OraReader {
+	private GeometryFactory geometryFactory;
+
+	public static final int NULL_DIMENSION = -1;
+	private int dimension = -1;
+
+	/**
+	 * Creates a new reader, with a default GeometryFactory.
+	 *
+	 * @see #OraReader(GeometryFactory)
+	 */
+	public OraReader() {
+		this(new GeometryFactory());
+	}
+
+	/**
+	 * Creates a new reader, with the supplied {@link GeometryFactory}.
+	 * It is assumed that the supplied {@link PrecisionModel}
+	 * matches the precision of the incoming data -
+	 * coordinates are <b>not</b> made precise.
+	 *
+	 * @param gf A non-null geometry factory for later use.
+	 *
+	 * @throws NullPointerException when the geometry factory is null.
+	 */
+	public OraReader(GeometryFactory gf) {
+		if (gf == null)
+			throw new NullPointerException("Geometry Factory may not be Null");
+		this.geometryFactory = gf;
+	}
+	/**
+	 * Gets the number of coordinate dimensions which will be read.
+	 *
+	 * @return the dimension which will be read
+	 */
+	public int getDimension() {
+		return dimension;
+	}
+
+	/**
+	 * Sets the number of coordinate dimensions to read.
+	 *
+	 * @param dimension the dimension to read
+	 */
+	public void setDimension(int dimension) {
+		this.dimension = dimension;
+	}
+
+	/**
+	 * This method will attempt to create a JTS Geometry for the MDSYS.GEOMETRY
+	 * provided. The Type of gemetry returned will depend on the input datum,
+	 * where the Geometry type is specified within the STRUCT.
+	 *
+	 * @param struct The MDSYS.GEOMETRY Object to decode
+	 * @return A JTS Geometry if one could be created, null otherwise
+	 * @throws SQLException When a read error occured within the struct
+	 */
+	public Geometry read(STRUCT struct) throws SQLException {
+
+		// Note Returning null for null Datum
+		if (struct == null)
+			return null;
+
+		Datum data[] = struct.getOracleAttributes();
+		int gType = asInteger(data[0], 0);
+		int SRID = asInteger(data[1], Constants.SRID_NULL);
+		double point[] = asDoubleArray((STRUCT) data[2], Double.NaN);
+		int elemInfo[] = asIntArray((ARRAY) data[3], 0);
+		double ordinates[] = asDoubleArray((ARRAY) data[4], Double.NaN);
+		GeometryFactory gf = geometryFactory;
+		if(geometryFactory.getSRID() != SRID){
+			// clone it and use the geom's srid
+			gf = new GeometryFactory(geometryFactory.getPrecisionModel(),SRID,geometryFactory.getCoordinateSequenceFactory());
+		}
+
+		return create(gf, gType, point, elemInfo, ordinates);
+	}
+
+	/**
+     * Decode geometry from provided SDO encoded information.
+     *
+     * <p></p>
+     *
+     * @param gf Used to construct returned Geometry
+     * @param gType SDO_GTEMPLATE represents dimension, LRS, and geometry type
+     * @param point
+     * @param elemInfo
+     * @param ordinates
+     *
+     * @return Geometry as encoded
+     */
+    private Geometry create(GeometryFactory gf, int gType,
+        double[] point, int[] elemInfo, double[] ordinates) {
+
+        int lrs = (gType%1000)/100;
+
+        // find the dimension: represented by the smaller of the two dimensions
+        int dim = 0;
+        if(dimension != NULL_DIMENSION){
+        	dim = dimension;
+        }else{
+        	dim = Math.min(gType/1000,gf.getCoordinateSequenceFactory().create(0,0).getDimension()) ;
+        }
+
+        if(dim<2){
+        	throw new IllegalArgumentException("Dimension D:" + dim + " is not valid for JTS. " +
+        			"Either specify a dimension or use Oracle Locator Version 9i or later");
+        }
+
+        // extract the geometry template type
+        // this is represented as the rightmost two digits
+        int geomTemplate = gType - (dim * 1000) - (lrs * 100);
+
+        CoordinateSequence coords = null;
+
+        if (lrs == 0 && geomTemplate == 1 && point != null && elemInfo == null) {
+            // Single Point Type Optimization
+            coords = coordinates(gf.getCoordinateSequenceFactory(), dim, lrs, geomTemplate, point);
+            elemInfo = new int[] { 1, Constants.SDO_ETYPE.POINT, 1 };
+        } else {
+            coords = coordinates(gf.getCoordinateSequenceFactory(), dim, lrs, geomTemplate, ordinates);
+        }
+
+        switch (geomTemplate) {
+        case Constants.SDO_GTEMPLATE.POINT:
+            return createPoint(gf, dim, lrs, elemInfo, 0, coords);
+
+        case Constants.SDO_GTEMPLATE.LINE:
+            return createLine(gf, dim, lrs, elemInfo, 0, coords);
+
+        case Constants.SDO_GTEMPLATE.POLYGON:
+            return createPolygon(gf, dim, lrs, elemInfo, 0, coords);
+
+        case Constants.SDO_GTEMPLATE.MULTIPOINT:
+            return createMultiPoint(gf, dim, lrs, elemInfo, 0, coords);
+
+        case Constants.SDO_GTEMPLATE.MULTILINE:
+            return createMultiLine(gf, dim, lrs, elemInfo, 0, coords, -1);
+
+        case Constants.SDO_GTEMPLATE.MULTIPOLYGON:
+            return createMultiPolygon(gf, dim, lrs, elemInfo, 0, coords, -1);
+
+        case Constants.SDO_GTEMPLATE.COLLECTION:
+            return createCollection(gf, dim, lrs, elemInfo, 0, coords,-1);
+
+        default:
+            return null;
+        }
+    }
+
+    /**
+     * Construct CoordinateList as described by GTYPE.
+     *
+     * The number of ordinates per coordinate are taken to be lrs+dim, and the
+     * number of ordinates should be a multiple of this value.
+
+     * In the Special case of GTYPE 2001 and a three ordinates are interpreted
+     * as a single Coordinate rather than an error.
+     *
+     * @param f CoordinateSequenceFactory used to encode ordiantes for JTS
+     * @param ordinates
+     *
+     * @return protected
+     *
+     * @throws IllegalArgumentException
+     */
+    private CoordinateSequence coordinates(CoordinateSequenceFactory f,
+        int dim, int lrs, int gtemplate, double[] ordinates) {
+        if ((ordinates == null) || (ordinates.length == 0)) {
+            return f.create(new Coordinate[0]);
+        }
+
+        //      POINT_TYPE Special Case
+        //
+        if ((dim == 2) && (lrs == 0) && (gtemplate == 01) && (ordinates.length == 3)) {
+            return f.create(new Coordinate[] {
+                    new Coordinate(ordinates[0], ordinates[1], ordinates[2]),
+                });
+        }
+
+        int len = dim + lrs;
+
+        if ((len == 0 && ordinates.length!=0 ) || (len != 0 && ((ordinates.length % len) != 0))){
+            throw new IllegalArgumentException("Dimension D:" + dim + " and L:"
+                + lrs + " denote Coordinates " + "of " + len
+                + " ordinates. This cannot be resolved with"
+                + "an ordinate array of length " + ordinates.length);
+        }
+
+        int length = (len == 0?0:ordinates.length / len);
+
+        // we would have to ask for a dimension which represents all the requested
+        // dimension and measures from a mask array in the future
+        CoordinateSequence cs = f.create(length,dim);
+
+        int actualDim = cs.getDimension();
+        for(int i=0;i<length;i++){
+        	int j=0;
+        	// in the future change this condition to include ignored dimensions from mask array
+        	for(;j<actualDim && j<dim;j++){
+        		cs.setOrdinate(i,j,ordinates[i*len+j]);
+        		// may not always want to inc. j when we have a mask array
+        	}
+        	// in the future change this condition to include ignored dimensions from mask array
+        	for(int d = j;j<actualDim && (j-d)<lrs;j++){
+        		cs.setOrdinate(i,j,ordinates[i*len+j]);
+        		// may not always want to inc. j when we have a mask array
+        	}
+        }
+        return cs;
+    }
+
+    /**
+     * Create MultiGeometry as encoded by elemInfo.
+     *
+     * @param gf Used to construct MultiLineString
+     * @param elemInfo Interpretation of coords
+     * @param elemIndex Triplet in elemInfo to process as a Polygon
+     * @param coords Coordinates to interpret using elemInfo
+     * @param numGeom Number of triplets (or -1 for rest)
+     *
+     * @return GeometryCollection
+     *
+     * @throws IllegalArgumentException DWhen faced with an encoding error
+     */
+    private GeometryCollection createCollection(GeometryFactory gf, int dim, int lrs, int[] elemInfo, int elemIndex, CoordinateSequence coords, int numGeom) {
+
+    	int sOffset = StartingOffset(elemInfo, elemIndex);
+
+        int length = coords.size()*dim;
+
+		if (!(sOffset <= length))
+		    throw new IllegalArgumentException("ELEM_INFO STARTING_OFFSET "+sOffset+" inconsistent with ORDINATES length "+coords.size());
+
+        int endTriplet = (numGeom != -1) ? elemIndex + numGeom : elemInfo.length / 3 + 1;
+
+        List list = new LinkedList();
+        int etype;
+        int interpretation;
+        Geometry geom;
+
+        boolean cont = true;
+        for (int i = elemIndex; cont && i < endTriplet; i++) {
+            etype = eType(elemInfo, i);
+            interpretation = interpretation(elemInfo, i);
+
+            switch (etype) {
+            case -1:
+                cont = false; // We are the of the list - get out of here
+
+            case Constants.SDO_ETYPE.POINT:
+
+                if (interpretation == 1) {
+                    geom = createPoint(gf, dim, lrs, elemInfo, i, coords);
+                } else if (interpretation > 1) {
+                    geom = createMultiPoint(gf, dim, lrs, elemInfo, i, coords);
+                } else {
+                    throw new IllegalArgumentException(
+                        "ETYPE.POINT requires INTERPRETATION >= 1");
+                }
+
+                break;
+
+            case Constants.SDO_ETYPE.LINE:
+                geom = createLine(gf, dim, lrs, elemInfo, i, coords);
+
+                break;
+
+            case Constants.SDO_ETYPE.POLYGON:
+            case Constants.SDO_ETYPE.POLYGON_EXTERIOR:
+                geom = createPolygon(gf, dim, lrs, elemInfo, i, coords);
+                i += ((Polygon) geom).getNumInteriorRing();
+
+                break;
+
+            case Constants.SDO_ETYPE.POLYGON_INTERIOR:
+                throw new IllegalArgumentException(
+                    "ETYPE 2003 (Polygon Interior) no expected in a GeometryCollection"
+                    + "(2003 is used to represent polygon holes, in a 1003 polygon exterior)");
+
+            default:
+                throw new IllegalArgumentException("ETYPE " + etype
+                    + " not representable as a JTS Geometry."
+                    + "(Custom and Compound Straight and Curved Geometries not supported)");
+            }
+
+            list.add(geom);
+        }
+
+        GeometryCollection geoms = gf.createGeometryCollection((Geometry[]) list.toArray(new Geometry[list.size()]));
+
+        return geoms;
+    }
+
+    /**
+     * Create MultiPolygon as encoded by elemInfo.
+     *
+     *
+     * @param gf Used to construct MultiLineString
+     * @param elemInfo Interpretation of coords
+     * @param elemIndex Triplet in elemInfo to process as a Polygon
+     * @param coords Coordinates to interpret using elemInfo
+     * @param numGeom Number of triplets (or -1 for rest)
+     *
+     * @return MultiPolygon
+     */
+    private MultiPolygon createMultiPolygon(GeometryFactory gf, int dim, int lrs, int[] elemInfo, int elemIndex, CoordinateSequence coords, int numGeom){
+
+    	int sOffset = StartingOffset(elemInfo, elemIndex);
+        int etype = eType(elemInfo, elemIndex);
+        int interpretation = interpretation(elemInfo, elemIndex);
+
+        int length = coords.size()*dim;
+
+		if (!(sOffset >= 1) || !(sOffset <= length))
+		    throw new IllegalArgumentException("ELEM_INFO STARTING_OFFSET "+sOffset+" inconsistent with ORDINATES length "+coords.size());
+		if(!(etype == Constants.SDO_ETYPE.POLYGON) && !(etype == Constants.SDO_ETYPE.POLYGON_EXTERIOR))
+		    throw new IllegalArgumentException("ETYPE "+etype+" inconsistent with expected POLYGON or POLYGON_EXTERIOR");
+		if (interpretation != 1 && interpretation != 3){
+			return null;
+		}
+
+        int endTriplet = (numGeom != -1) ? elemIndex + numGeom : (elemInfo.length / 3) + 1;
+
+        List list = new LinkedList();
+        boolean cont = true;
+
+        for (int i = elemIndex; cont && i < endTriplet && (etype = eType(elemInfo, i)) != -1; i++) {
+            if ((etype == Constants.SDO_ETYPE.POLYGON) || (etype == Constants.SDO_ETYPE.POLYGON_EXTERIOR)) {
+                Polygon poly = createPolygon(gf, dim, lrs, elemInfo, i, coords);
+                i += poly.getNumInteriorRing(); // skip interior rings
+                list.add(poly);
+            } else { // not a Polygon - get out here
+            	cont = false;
+            }
+        }
+
+        MultiPolygon polys = gf.createMultiPolygon((Polygon[]) list.toArray(new Polygon[list.size()]));
+
+        return polys;
+    }
+
+    /**
+     * Create MultiLineString as encoded by elemInfo.
+     *
+     *
+     * @param gf Used to construct MultiLineString
+     * @param elemInfo Interpretation of coords
+     * @param elemIndex Triplet in elemInfo to process as a Polygon
+     * @param coords Coordinates to interpret using elemInfo
+     * @param numGeom Number of triplets (or -1 for rest)
+     *
+     * @return MultiLineString
+     */
+    private MultiLineString createMultiLine(GeometryFactory gf, int dim, int lrs, int[] elemInfo, int elemIndex, CoordinateSequence coords, int numGeom) {
+
+    	int sOffset = StartingOffset(elemInfo, elemIndex);
+        int etype = eType(elemInfo, elemIndex);
+        int interpretation = interpretation(elemInfo, elemIndex);
+
+        int length = coords.size()*dim;
+
+		if (!(sOffset >= 1) || !(sOffset <= length))
+		    throw new IllegalArgumentException("ELEM_INFO STARTING_OFFSET "+sOffset+" inconsistent with ORDINATES length "+coords.size());
+		if(!(etype == Constants.SDO_ETYPE.LINE))
+		    throw new IllegalArgumentException("ETYPE "+etype+" inconsistent with expected LINE");
+		if (!(interpretation == 1)){
+            // we cannot represent INTERPRETATION > 1
+			return null;
+		}
+
+        int endTriplet = (numGeom != -1) ? (elemIndex + numGeom) : (elemInfo.length / 3);
+
+        List list = new LinkedList();
+
+        boolean cont = true;
+        for (int i = elemIndex; cont && i < endTriplet && (etype = eType(elemInfo, i)) != -1 ;i++) {
+            if (etype == Constants.SDO_ETYPE.LINE) {
+                list.add(createLine(gf, dim, lrs, elemInfo, i, coords));
+            } else { // not a LineString - get out of here
+                cont = false;
+            }
+        }
+
+        MultiLineString lines = gf.createMultiLineString((LineString[]) list.toArray(new LineString[list.size()]));
+
+        return lines;
+    }
+
+    /**
+     * Create MultiPoint as encoded by elemInfo.
+     *
+     *
+     * @param gf Used to construct polygon
+     * @param elemInfo Interpretation of coords
+     * @param elemIndex Triplet in elemInfo to process as a Polygon
+     * @param coords Coordinates to interpret using elemInfo
+     *
+     * @return MultiPoint
+     */
+    private MultiPoint createMultiPoint(GeometryFactory gf, int dim, int lrs, int[] elemInfo, int elemIndex, CoordinateSequence coords) {
+
+    	int sOffset = StartingOffset(elemInfo, elemIndex);
+        int etype = eType(elemInfo, elemIndex);
+        int interpretation = interpretation(elemInfo, elemIndex);
+
+		if (!(sOffset >= 1) || !(sOffset <= coords.size()))
+		    throw new IllegalArgumentException("ELEM_INFO STARTING_OFFSET "+sOffset+" inconsistent with ORDINATES length "+coords.size());
+		if(!(etype == Constants.SDO_ETYPE.POINT))
+		    throw new IllegalArgumentException("ETYPE "+etype+" inconsistent with expected POINT");
+		if (!(interpretation > 1)){
+			return null;
+		}
+
+        int len = dim + lrs;
+
+        int start = (sOffset - 1) / len;
+        int end = start + interpretation;
+
+        MultiPoint points = gf.createMultiPoint(subList(gf.getCoordinateSequenceFactory(), coords, start, end));
+
+        return points;
+    }
+
+    /**
+     * Create Polygon as encoded.
+     *
+     * @see #interpretation(int[], int)
+     *
+     * @param gf Used to construct polygon
+     * @param elemInfo Interpretation of coords
+     * @param elemIndex Triplet in elemInfo to process as a Polygon
+     * @param coords Coordinates to interpret using elemInfo
+     *
+     * @return Polygon as encoded by elemInfo, or null when faced with and
+     *         encoding that can not be captured by JTS
+     * @throws IllegalArgumentException When faced with an invalid SDO encoding
+     */
+    private Polygon createPolygon(GeometryFactory gf, int dim, int lrs, int[] elemInfo, int elemIndex, CoordinateSequence coords) {
+
+    	int sOffset = StartingOffset(elemInfo, elemIndex);
+        int etype = eType(elemInfo, elemIndex);
+        int interpretation = interpretation(elemInfo, elemIndex);
+
+        if( !(1 <= sOffset && sOffset <= (coords.size() * dim))){
+            throw new IllegalArgumentException(
+                    "ELEM_INFO STARTING_OFFSET "+sOffset+
+                    "inconsistent with COORDINATES length "+(coords.size() * dim) );
+        }
+
+		if(!(etype == Constants.SDO_ETYPE.POLYGON) && !(etype == Constants.SDO_ETYPE.POLYGON_EXTERIOR)){
+			throw new IllegalArgumentException("ETYPE "+etype+" inconsistent with expected POLYGON or POLYGON_EXTERIOR");
+		}
+		if (!(interpretation == 1) && !(interpretation == 3)){
+			return null;
+		}
+
+        LinearRing exteriorRing = createLinearRing(gf, dim, lrs, elemInfo, elemIndex, coords);
+
+        List rings = new LinkedList();
+
+        boolean cont = true;
+        for (int i = elemIndex + 1; cont && (etype = eType(elemInfo, i)) != -1; i++) {
+            if (etype == Constants.SDO_ETYPE.POLYGON_INTERIOR) {
+                rings.add(createLinearRing(gf, dim, lrs, elemInfo, i, coords));
+            } else if (etype == Constants.SDO_ETYPE.POLYGON) { // need to test Clockwiseness of Ring to see if it is
+                                                 // interior or not - (use POLYGON_INTERIOR to avoid pain)
+
+                LinearRing ring = createLinearRing(gf, dim, lrs, elemInfo, i, coords);
+
+                if (CGAlgorithms.isCCW(ring.getCoordinates())) { // it is an Interior Hole
+                    rings.add(ring);
+                } else { // it is the next Polygon! - get out of here
+                    cont = false;
+                }
+            } else { // not a LinearRing - get out of here
+                cont = false;
+            }
+        }
+
+        Polygon poly = gf.createPolygon(exteriorRing, (LinearRing[]) rings.toArray(new LinearRing[rings.size()]));
+
+        return poly;
+    }
+
+    /**
+     * Create Linear Ring for exterior/interior polygon ELEM_INFO triplets.
+     *
+     * @param gf
+     * @param elemInfo
+     * @param elemIndex
+     * @param coords
+     *
+     * @return LinearRing
+     *
+     * @throws IllegalArgumentException If circle, or curve is requested
+     */
+    private LinearRing createLinearRing(GeometryFactory gf, int dim, int lrs, int[] elemInfo, int elemIndex, CoordinateSequence coords) {
+
+    	int sOffset = StartingOffset(elemInfo, elemIndex);
+        int etype = eType(elemInfo, elemIndex);
+        int interpretation = interpretation(elemInfo, elemIndex);
+        int length = coords.size()*dim;
+
+		if (!(sOffset <= length))
+		    throw new IllegalArgumentException("ELEM_INFO STARTING_OFFSET "+sOffset+" inconsistent with ORDINATES length "+coords.size());
+		if(!(etype == Constants.SDO_ETYPE.POLYGON) && !(etype == Constants.SDO_ETYPE.POLYGON_EXTERIOR) && !(etype == Constants.SDO_ETYPE.POLYGON_INTERIOR)){
+		    throw new IllegalArgumentException("ETYPE "+etype+" inconsistent with expected POLYGON, POLYGON_EXTERIOR or POLYGON_INTERIOR");
+		}
+		if (!(interpretation == 1) && !(interpretation == 3)){
+			return null;
+		}
+        LinearRing ring;
+
+
+		int len = (dim+lrs);
+		int start = (sOffset - 1) / len;
+		int eOffset = StartingOffset(elemInfo, elemIndex+1); // -1 for end
+        int end = (eOffset != -1) ? ((eOffset - 1) / len) : coords.size();
+
+        if (interpretation == 1) {
+            ring = gf.createLinearRing(subList(gf.getCoordinateSequenceFactory(),coords, start,end));
+        } else { // interpretation == 3
+            // rectangle does not maintain measures
+            //
+            CoordinateSequence ext = subList(gf.getCoordinateSequenceFactory(),coords, start,end);
+            Coordinate min = ext.getCoordinate(0);
+            Coordinate max = ext.getCoordinate(1);
+            ring = gf.createLinearRing(new Coordinate[] {
+                        min, new Coordinate(max.x, min.y), max,
+                        new Coordinate(min.x, max.y), min
+                    });
+        }
+
+        return ring;
+    }
+
+    /**
+     * Create LineString as encoded.
+     *
+     * @param gf
+     * @param elemInfo
+     * @param coords
+     *
+     * @return LineString
+     *
+     * @throws IllegalArgumentException If asked to create a curve
+     */
+    private LineString createLine(GeometryFactory gf, int dim, int lrs, int[] elemInfo, int elemIndex, CoordinateSequence coords) {
+
+    	int sOffset = StartingOffset(elemInfo, elemIndex);
+        int etype = eType(elemInfo, elemIndex);
+        int interpretation = interpretation(elemInfo, elemIndex);
+
+		if (etype != Constants.SDO_ETYPE.LINE)
+			return null;
+
+        if (interpretation != 1) {
+            throw new IllegalArgumentException("ELEM_INFO INTERPRETAION "
+                + interpretation + " not supported"
+                + "by JTS LineString.  Straight edges"
+                + "( ELEM_INFO INTERPRETAION 1) is supported");
+        }
+
+		int len = (dim+lrs);
+		int start = (sOffset - 1) / len;
+		int eOffset = StartingOffset(elemInfo, elemIndex+1); // -1 for end
+        int end = (eOffset != -1) ? ((eOffset - 1) / len) : coords.size();
+
+
+        LineString line = gf.createLineString(subList(gf.getCoordinateSequenceFactory(),coords, start,end));
+
+        return line;
+    }
+
+    /**
+     * Create Point as encoded.
+     *
+     * @param gf
+     * @param dim The number of Dimensions
+     * @param elemInfo
+     * @param elemIndex
+     * @param coords
+     *
+     * @return Point
+     */
+    private Point createPoint(GeometryFactory gf, int dim, int lrs, int[] elemInfo, int elemIndex, CoordinateSequence coords) {
+    	int sOffset = StartingOffset(elemInfo, elemIndex);
+        int etype = eType(elemInfo, elemIndex);
+        int interpretation = interpretation(elemInfo, elemIndex);
+
+		if (!(sOffset >= 1) || !(sOffset <= coords.size()))
+		    throw new IllegalArgumentException("ELEM_INFO STARTING_OFFSET "+sOffset+" inconsistent with ORDINATES length "+coords.size());
+		if (etype != Constants.SDO_ETYPE.POINT)
+		    throw new IllegalArgumentException("ETYPE "+etype+" inconsistent with expected POINT");
+		if (interpretation != 1){
+			return null;
+		}
+
+		int len = (dim+lrs);
+		int start = (sOffset - 1) / len;
+		int eOffset = StartingOffset(elemInfo, elemIndex+1); // -1 for end
+
+		Point point = null;
+        if ((sOffset == 1) && (eOffset == -1)) {
+            // Use all Coordinates
+        	point = gf.createPoint( coords);
+        }else{
+	        int end = (eOffset != -1) ? ((eOffset - 1) / len) : coords.size();
+	        point = gf.createPoint(subList(gf.getCoordinateSequenceFactory(),coords,start,end));
+        }
+
+        return point;
+    }
+
+
+    /**
+     * Version of List.subList() that returns a CoordinateSequence.
+     *
+     * <p>
+     * Returns from start (inclusive) to end (exlusive):
+     * </p>
+     *
+     * @param factory Manages CoordinateSequences for JTS
+     * @param coords coords to sublist
+     * @param start starting offset
+     * @param end upper bound of sublist
+     *
+     * @return CoordianteSequence
+     */
+    private CoordinateSequence subList(CoordinateSequenceFactory factory, CoordinateSequence coords, int start, int end) {
+        if ((start == 0) && (end == coords.size())) {
+            return coords;
+        }
+
+        if (coords instanceof List) {
+            List sublist = ((List) coords).subList(start, end);
+
+            if (sublist instanceof CoordinateSequence) {
+                return (CoordinateSequence) sublist;
+            }
+        }
+
+        CoordinateList list = new CoordinateList(coords.toCoordinateArray());
+
+        Coordinate[] array = new Coordinate[end - start];
+        int index = 0;
+
+        for (Iterator i = list.subList(start, end).iterator(); i.hasNext(); index++) {
+            array[index] = (Coordinate) i.next();
+        }
+
+        return factory.create(array);
+    }
+
+    /**
+     * ETYPE access for the elemInfo triplet indicated.
+     * <p>
+     * @see Constants.SDO_ETYPE for an indication of possible values
+     *
+     * @param elemInfo
+     * @param tripletIndex
+     * @return ETYPE for indicated triplet
+     */
+    private int eType(int[] elemInfo, int tripletIndex) {
+        if (((tripletIndex * 3) + 1) >= elemInfo.length) {
+            return -1;
+        }
+
+        return elemInfo[(tripletIndex * 3) + 1];
+    }
+
+
+    /**
+     * Accesses the interpretation value for the current geometry
+     *
+     * JTS valid interpretation is: 1 for strait edges, 3 for rectangle
+     *
+     * Other interpretations include: 2 for arcs, 4 for circles
+     *
+     * mostly useful for polygons
+     *
+     * @param elemInfo
+     * @param tripletIndex
+     * @return Starting Offset for the ordinates of the geometry
+     */
+    private int interpretation(int[] elemInfo, int tripletIndex) {
+        if (((tripletIndex * 3) + 2) >= elemInfo.length) {
+            return -1;
+        }
+
+        return elemInfo[(tripletIndex * 3) + 2];
+    }
+
+    /**
+     * Accesses the starting index in the ordinate array for the current geometry
+     *
+     * mostly useful for polygons
+     *
+     * @param elemInfo
+     * @param tripletIndex
+     * @return Starting Offset for the ordinates of the geometry
+     */
+    private int StartingOffset(int[] elemInfo, int tripletIndex) {
+        if (((tripletIndex * 3) + 0) >= elemInfo.length) {
+            return -1;
+        }
+
+        return elemInfo[(tripletIndex * 3) + 0];
+    }
+
+	/** Presents datum as an int */
+	private int asInteger(Datum datum, final int DEFAULT)
+			throws SQLException {
+		if (datum == null)
+			return DEFAULT;
+		return ((NUMBER) datum).intValue();
+	}
+
+	/** Presents datum as a double */
+	private double asDouble(Datum datum, final double DEFAULT) {
+		if (datum == null)
+			return DEFAULT;
+		return ((NUMBER) datum).doubleValue();
+	}
+
+	/** Presents struct as a double[] */
+	private double[] asDoubleArray(STRUCT struct, final double DEFAULT)
+			throws SQLException {
+		if (struct == null)
+			return null;
+		return asDoubleArray(struct.getOracleAttributes(), DEFAULT);
+	}
+
+	/** Presents array as a double[] */
+	private double[] asDoubleArray(ARRAY array, final double DEFAULT)
+			throws SQLException {
+		if (array == null)
+			return null;
+		if (DEFAULT == 0)
+			return array.getDoubleArray();
+
+		return asDoubleArray(array.getOracleArray(), DEFAULT);
+	}
+
+	/** Presents Datum[] as a double[] */
+	private double[] asDoubleArray(Datum data[], final double DEFAULT) {
+		if (data == null)
+			return null;
+		double array[] = new double[data.length];
+		for (int i = 0; i < data.length; i++) {
+			array[i] = asDouble(data[i], DEFAULT);
+		}
+		return array;
+	}
+
+	private int[] asIntArray(ARRAY array, int DEFAULT)
+			throws SQLException {
+		if (array == null)
+			return null;
+		if (DEFAULT == 0)
+			return array.getIntArray();
+
+		return asIntArray(array.getOracleArray(), DEFAULT);
+	}
+
+	/** Presents Datum[] as a int[] */
+	private int[] asIntArray(Datum data[], final int DEFAULT)
+			throws SQLException {
+		if (data == null)
+			return null;
+		int array[] = new int[data.length];
+		for (int i = 0; i < data.length; i++) {
+			array[i] = asInteger(data[i], DEFAULT);
+		}
+		return array;
+	}
+
+
+}
diff --git a/jtsio/src/com/vividsolutions/jts/io/oracle/OraWriter.java b/jtsio/src/com/vividsolutions/jts/io/oracle/OraWriter.java
new file mode 100644
index 0000000..36cabab
--- /dev/null
+++ b/jtsio/src/com/vividsolutions/jts/io/oracle/OraWriter.java
@@ -0,0 +1,819 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+/*
+ *    Geotools2 - OpenSource mapping toolkit
+ *    http://geotools.org
+ *    (C) 2003, Geotools Project Managment Committee (PMC)
+ *
+ *    This library is free software; you can redistribute it and/or
+ *    modify it under the terms of the GNU Lesser General Public
+ *    License as published by the Free Software Foundation;
+ *    version 2.1 of the License.
+ *
+ *    This library is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *    Lesser General Public License for more details.
+ *
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.sql.SQLException;
+import java.util.*;
+
+import com.vividsolutions.jts.algorithm.CGAlgorithms;
+import com.vividsolutions.jts.geom.*;
+
+import oracle.jdbc.OracleConnection;
+import oracle.sql.*;
+
+/**
+ * 
+ * Translates a JTS Geometry into an Oracle STRUCT representing an MDSYS.GEOMETRY object. 
+ * 
+ * A connection to an oracle instance with access to the definition of the MDSYS.GEOMETRY 
+ * object is required by the oracle driver.
+ * 
+ * @version 9i
+ * @author David Zwiers, Vivid Solutions.
+ */
+public class OraWriter {
+	private OracleConnection connection;
+	private int dimension = 2;
+	private int srid = Constants.SRID_NULL;
+	
+	private String DATATYPE = "MDSYS.SDO_GEOMETRY";
+	
+	/**
+	 * Initialize the Oracle MDSYS.GEOMETRY Encoder with a valid oracle connection. 
+	 * 
+	 * The connection should have sufficient priveledges to view the description of the MDSYS.GEOMETRY type.
+	 * 
+	 * The dimension is set to 2
+	 * 
+	 * @param con
+	 */
+	public OraWriter(OracleConnection con){
+		this.connection = con;
+	}
+	
+	/**
+	 * Initialize the Oracle MDSYS.GEOMETRY Encoder with a valid oracle connection. 
+	 * 
+	 * The connection should have sufficient priveledges to view the description of the MDSYS.GEOMETRY type.
+	 * 
+	 * @param con
+	 * @param dimension 
+	 */
+	public OraWriter(OracleConnection con, int dimension){
+		this.connection = con;
+		this.dimension = dimension;
+	}
+	
+	/**
+	 * Provides the oppotunity to force all geometries written using this writter to be written using the 
+	 * specified srid. This is useful in two cases: 1) when you do not want the geometry's srid to be 
+	 * over-written or 2) when you want to ensure an entire layer is always written using a constant srid.
+	 * 
+	 * @param srid
+	 */
+	public void setSRID(int srid){
+		this.srid = srid;
+	}
+
+	/**
+	 * This routine will translate the JTS Geometry into an Oracle MDSYS.GEOMETRY STRUCT.
+	 * 
+	 * Although invalid geometries may be encoded, and inserted into an Oracle DB, this is 
+	 * not recomended. It is the responsibility of the user to ensure the geometry is valid 
+	 * prior to calling this method. The user should also ensure the the geometry's SRID 
+	 * field contains the correct value, if an SRID is desired. An incorrect SRID value may 
+	 * cause index exceptions during an insert or update. 
+	 * 
+	 * When a null Geometry is passed in, a non-null, empty STRUCT is returned. Therefore, 
+	 * inserting the the result of calling this method directly into a table will never result 
+	 * in null insertions. 
+	 * (March 2006)
+	 * 
+	 * To pass a NULL Geometry into an oracle geometry parameter using jdbc, use 
+	 * java.sql.CallableStatement.setNull(index,java.sql.Types.STRUCT,"MDSYS.SDO_GEOMETRY")
+	 * (April 2006)
+	 * 
+	 * @param geom JTS Geometry to encode
+	 * @return Oracle MDSYS.GEOMETRY STRUCT
+	 * @throws SQLException 
+	 */
+	public STRUCT write(Geometry geom) throws SQLException{
+		
+		// this line may be problematic ... for v9i and later 
+		// need to revisit.
+		
+		// was this ... does not work for 9i
+//		if( geom == null) return toSTRUCT( null, DATATYPE );
+		
+		//works fro 9i
+		if( geom == null) return toSTRUCT( new Datum[5], DATATYPE );
+		
+		// does not work for 9i
+//		if( geom == null) return null;
+		
+		//empty geom
+		if( geom.isEmpty() || geom.getCoordinate() == null) 
+			return toSTRUCT( new Datum[5], DATATYPE );
+        
+        int gtype = gType( geom);
+        NUMBER SDO_GTYPE = new NUMBER( gtype );
+
+        //int srid = geom.getFactory().getSRID();
+        int srid = this.srid == Constants.SRID_NULL? geom.getSRID() : this.srid;
+        NUMBER SDO_SRID = srid == Constants.SRID_NULL ? null : new NUMBER( srid );
+        
+        double[] point = point( geom );
+        
+        STRUCT SDO_POINT;
+        
+        ARRAY SDO_ELEM_INFO;
+        ARRAY SDO_ORDINATES;
+        
+        if( point == null ){
+            int elemInfo[] = elemInfo( geom , gtype);
+            
+            List list = new ArrayList();
+            coordinates(list, geom);
+                        
+            int dim = gtype / 1000;
+            int lrs = (gtype - dim*1000)/100;
+            int len = dim+lrs; // size per coordinate
+            double[] ordinates = new double[list.size()*len];
+            
+            int k=0;
+            for(int i=0;i<list.size() && k<ordinates.length;i++){
+            	int j=0;
+            	double[] ords = (double[]) list.get(i);
+            	for(;j<len && j<ords.length;j++){
+            		ordinates[k++] = ords[j];
+            	}
+            	for(;j<len;j++){ // mostly safety
+            		ordinates[k++] = Double.NaN;
+            	}
+            }
+            
+            list = null;
+            
+            SDO_POINT = null;
+            SDO_ELEM_INFO = toARRAY( elemInfo, "MDSYS.SDO_ELEM_INFO_ARRAY" );
+            SDO_ORDINATES = toARRAY( ordinates, "MDSYS.SDO_ORDINATE_ARRAY" );                        
+        }
+        else { // Point Optimization
+            Datum data[] = new Datum[]{
+                toNUMBER( point[0] ),
+                toNUMBER( point[1] ),
+                toNUMBER( point[2] ),
+            };
+            SDO_POINT = toSTRUCT( data, "MDSYS.SDO_POINT_TYPE"  );
+            SDO_ELEM_INFO = null;
+            SDO_ORDINATES = null;
+        }                
+        Datum attributes[] = new Datum[]{
+            SDO_GTYPE,
+            SDO_SRID,
+            SDO_POINT,
+            SDO_ELEM_INFO,
+            SDO_ORDINATES
+        };
+        return toSTRUCT( attributes, DATATYPE );      
+	}
+
+	/**
+     * Encode Geometry as described by GTYPE and ELEM_INFO
+     * 
+     * @param list Flat list of Double
+     * @param geom Geometry 
+     *
+     * @throws IllegalArgumentException If geometry cannot be encoded
+     */
+    private void coordinates(List list, Geometry geom) {
+        switch (template(geom)) {
+
+        case Constants.SDO_GTEMPLATE.POINT:
+            addCoordinates(list, ((Point)geom).getCoordinateSequence());
+            return;
+        case Constants.SDO_GTEMPLATE.LINE:
+            addCoordinates(list, ((LineString)geom).getCoordinateSequence());
+            return;
+        case Constants.SDO_GTEMPLATE.POLYGON:
+            switch (elemInfoInterpretation(geom,Constants.SDO_ETYPE.POLYGON_EXTERIOR)) {
+            case 3:
+                Envelope e = geom.getEnvelopeInternal();
+                list.add(new double[] { e.getMinX(), e.getMinY() });
+                list.add(new double[] { e.getMaxX(), e.getMaxY() });
+                return;
+            case 1:
+            	Polygon polygon = (Polygon) geom;
+                int holes = polygon.getNumInteriorRing();
+                
+                // check outer ring's direction
+                CoordinateSequence ring = polygon.getExteriorRing().getCoordinateSequence();
+                if (!CGAlgorithms.isCCW(ring.toCoordinateArray())) {
+                    ring = reverse(polygon.getFactory().getCoordinateSequenceFactory(), ring); 
+                }
+                addCoordinates(list,ring);
+
+                for (int i = 0; i < holes; i++) {
+                	// check inner ring's direction
+                	ring = polygon.getInteriorRingN(i).getCoordinateSequence();
+                	if (CGAlgorithms.isCCW(ring.toCoordinateArray())) {
+                        ring = reverse(polygon.getFactory().getCoordinateSequenceFactory(), ring); 
+                    }
+                    
+                    addCoordinates(list,ring);
+                }
+                return;
+            }
+            break; // interpretations 2,4 not supported
+        case Constants.SDO_GTEMPLATE.MULTIPOINT:
+        case Constants.SDO_GTEMPLATE.MULTILINE:
+        case Constants.SDO_GTEMPLATE.MULTIPOLYGON:
+        case Constants.SDO_GTEMPLATE.COLLECTION:
+            for (int i = 0; i < geom.getNumGeometries(); i++) {
+                coordinates(list,geom.getGeometryN(i));
+            }
+            return;
+        }
+
+        throw new IllegalArgumentException("Cannot encode JTS "
+            + geom.getGeometryType() + " as "
+            + "SDO_ORDINATRES (Limitied to Point, Line, Polygon, "
+            + "GeometryCollection, MultiPoint, MultiLineString and MultiPolygon)");
+    }
+
+    /**
+     * Adds a double array to list.
+     * 
+     * <p>
+     * The double array will contain all the ordinates in the Coordiante
+     * sequence.
+     * </p>
+     *
+     * @param list
+     * @param sequence
+     */
+    private static void addCoordinates(List list, CoordinateSequence sequence) {
+    	Coordinate coord = null;
+        for (int i = 0; i < sequence.size(); i++) {
+        	coord = sequence.getCoordinate(i);
+        	if(coord.z == Double.NaN)
+        		list.add( new double[] { coord.x, coord.y});
+        	else
+        		list.add( new double[] { coord.x, coord.y, coord.z });
+        }
+    }
+
+    /**
+     * Return SDO_ELEM_INFO array for geometry
+     * 
+     * <pre><code><b>
+     * # Name                Meaning</b>
+     * 0 SDO_STARTING_OFFSET Offsets start at one
+     * 1 SDO_ETYPE           Describes how ordinates are ordered
+     * 2 SDO_INTERPRETATION  SDO_ETYPE: 4, 1005, or 2005
+     *                       Number of triplets involved in compound geometry
+     *                       
+     *                       SDO_ETYPE: 1, 2, 1003, or 2003
+     *                       Describes ordering of ordinates in geometry  
+     * </code></pre>
+     * 
+     * <p>
+     * For compound elements (SDO_ETYPE values 4 and 5) the last element of one
+     * is the first element of the next.
+     * </p>
+     *
+     * @param geom Geometry being represented
+     *
+     * @return Descriptionof Ordinates representation
+     */
+	private int[] elemInfo(Geometry geom, int gtype) {
+		List list = new LinkedList();
+
+        elemInfo(list, geom, 1, gtype);
+        
+        int[] array = new int[list.size()];
+        int offset = 0;
+
+        for (Iterator i = list.iterator(); i.hasNext(); offset++) {
+            array[offset] = ((Number) i.next()).intValue();
+        }
+
+        return array;
+    }
+	
+    /**
+     * Add to SDO_ELEM_INFO list for geometry and GTYPE.
+     *
+     * @param elemInfoList List used to gather SDO_ELEM_INFO
+     * @param geom Geometry to encode
+     * @param sOffSet Starting offset in SDO_ORDINATES
+     *
+     * @throws IllegalArgumentException If geom cannot be encoded by ElemInfo
+     */
+    private void elemInfo(List elemInfoList, Geometry geom, int sOffSet, int gtype) {
+
+        switch (gtype - (gtype/100) * 100) { // removes right two digits
+        case Constants.SDO_GTEMPLATE.POINT:
+            addInt(elemInfoList, sOffSet);
+            addInt(elemInfoList, Constants.SDO_ETYPE.POINT);
+            addInt(elemInfoList, 1); // INTERPRETATION single point
+
+            return;
+
+        case Constants.SDO_GTEMPLATE.MULTIPOINT:
+            MultiPoint points = (MultiPoint) geom;
+
+            addInt(elemInfoList, sOffSet);
+            addInt(elemInfoList, Constants.SDO_ETYPE.POINT);
+            addInt(elemInfoList, elemInfoInterpretation(points, Constants.SDO_ETYPE.POINT));
+
+            return;
+
+        case Constants.SDO_GTEMPLATE.LINE:
+            addInt(elemInfoList, sOffSet);
+            addInt(elemInfoList, Constants.SDO_ETYPE.LINE);
+            addInt(elemInfoList, 1); // INTERPRETATION straight edges    
+
+            return;
+
+        case Constants.SDO_GTEMPLATE.MULTILINE:
+        	MultiLineString lines = (MultiLineString) geom;
+            LineString line;
+            int offset = sOffSet;
+            int dim = gtype/1000;
+            int len = dim + (gtype-dim*1000)/100;
+
+            for (int i = 0; i < lines.getNumGeometries(); i++) {
+                line = (LineString) lines.getGeometryN(i);
+                addInt(elemInfoList, offset);
+                addInt(elemInfoList, Constants.SDO_ETYPE.LINE);
+                addInt(elemInfoList, 1); // INTERPRETATION straight edges  
+                offset += (line.getNumPoints() * len);
+            }
+
+            return;
+
+        case Constants.SDO_GTEMPLATE.POLYGON:
+        	Polygon polygon = (Polygon)geom;
+            int holes = polygon.getNumInteriorRing();
+
+            if (holes == 0) {
+                addInt(elemInfoList, sOffSet);
+                addInt(elemInfoList, elemInfoEType(polygon));
+                addInt(elemInfoList, elemInfoInterpretation(polygon, Constants.SDO_ETYPE.POLYGON_EXTERIOR));
+                return;
+            }
+
+            dim = gtype/1000;
+            len = dim + (gtype-dim*1000)/100;
+            offset = sOffSet;
+            LineString ring;
+
+            ring = polygon.getExteriorRing();
+            addInt(elemInfoList, offset);
+            addInt(elemInfoList, elemInfoEType(polygon));
+            addInt(elemInfoList, elemInfoInterpretation(polygon, Constants.SDO_ETYPE.POLYGON_EXTERIOR));
+            offset += (ring.getNumPoints() * len);
+
+            for (int i = 1; i <= holes; i++) {
+                ring = polygon.getInteriorRingN(i - 1);
+                addInt(elemInfoList, offset);
+                addInt(elemInfoList, Constants.SDO_ETYPE.POLYGON_INTERIOR);
+                addInt(elemInfoList, elemInfoInterpretation(ring, Constants.SDO_ETYPE.POLYGON_INTERIOR));
+                offset += (ring.getNumPoints() * len);
+            }
+
+            return;
+
+        case Constants.SDO_GTEMPLATE.MULTIPOLYGON:
+        	MultiPolygon polys = (MultiPolygon) geom;
+            Polygon poly;
+            offset = sOffSet;
+
+            dim = gtype/1000;
+            len = dim + (gtype-dim*1000)/100;
+
+            for (int i = 0; i < polys.getNumGeometries(); i++) {
+                poly = (Polygon) polys.getGeometryN(i);
+                elemInfo(elemInfoList, poly, offset, gType(poly));
+                if( isRectangle( poly )){
+                    offset += (2 * len);                
+                }
+                else {
+                    offset += (poly.getNumPoints() * len);                
+                }            
+            }
+
+            return;
+
+        case Constants.SDO_GTEMPLATE.COLLECTION:
+        	GeometryCollection geoms = (GeometryCollection) geom;
+            offset = sOffSet;
+            dim = gtype/1000;
+            len = dim + (gtype-dim*1000)/100;
+
+            for (int i = 0; i < geoms.getNumGeometries(); i++) {
+                geom = geoms.getGeometryN(i);
+                // MD  20/3/07 modified to provide gType of component geometry
+                elemInfo(elemInfoList, geom, offset, gType(geom));
+                if( geom instanceof Polygon && isRectangle( (Polygon) geom )){
+                    offset += (2 * len);                
+                }
+                else {
+                    offset += (geom.getNumPoints() * len);                
+                }                        
+            }
+
+            return;
+        }
+
+        throw new IllegalArgumentException("Cannot encode JTS "
+            + geom.getGeometryType() + " as SDO_ELEM_INFO "
+            + "(Limitied to Point, Line, Polygon, GeometryCollection, MultiPoint,"
+            + " MultiLineString and MultiPolygon)");
+    }
+
+    private void addInt(List list, int i) {
+        list.add(new Integer(i));
+    }
+
+    /**
+     * We need to check if a <code>polygon</code> a rectangle so we can produce
+     * the correct encoding.
+     * 
+     * Rectangles are only supported without a SRID!
+     *
+     * @param polygon
+     *
+     * @return <code>true</code> if polygon is SRID==0 and a rectangle
+     */
+    private boolean isRectangle(Polygon polygon) {
+        if (polygon.getFactory().getSRID() != Constants.SRID_NULL) {
+            // Rectangles only valid in CAD applications
+            // that do not have an SRID system
+            //
+            return false;
+        }
+
+        if (lrs(polygon) != 0) {
+            // cannot support LRS on a rectangle
+            return false;
+        }
+
+        Coordinate[] coords = polygon.getCoordinates();
+
+        if (coords.length != 5) {
+            return false;
+        }
+
+        if ((coords[0] == null) || (coords[1] == null) || (coords[2] == null)
+                || (coords[3] == null)) {
+            return false;
+        }
+
+        if (!coords[0].equals2D(coords[4])) {
+            return false;
+        }
+
+        double x1 = coords[0].x;
+        double y1 = coords[0].y;
+        double x2 = coords[1].x;
+        double y2 = coords[1].y;
+        double x3 = coords[2].x;
+        double y3 = coords[2].y;
+        double x4 = coords[3].x;
+        double y4 = coords[3].y;
+
+        if ((x1 == x4) && (y1 == y2) && (x3 == x2) && (y3 == y4)) {
+            // 1+-----+2
+            //  |     |
+            // 4+-----+3
+            return true;
+        }
+
+        if ((x1 == x2) && (y1 == y4) && (x3 == x4) && (y3 == y2)) {
+            // 2+-----+3
+            //  |     |
+            // 1+-----+4
+            return true;
+        }
+
+        return false;
+    }
+    /**
+     * Produce <code>SDO_ETYPE</code> for geometry description as stored in the
+     * <code>SDO_ELEM_INFO</code>.
+     * 
+     * <p>
+     * Describes how Ordinates are ordered:
+     * </p>
+     * <pre><code><b>
+     * Value Elements Meaning</b>
+     *    0           Custom Geometry (like spline) 
+     *    1  simple   Point (or Points)
+     *    2  simple   Line (or Lines)
+     *    3           polygon ring of unknown order (discouraged update to 1003 or 2003)
+     * 1003  simple   polygon ring (1 exterior counterclockwise order)
+     * 2003  simple   polygon ring (2 interior clockwise order)
+     *    4  compound series defines a linestring
+     *    5  compound series defines a polygon ring of unknown order (discouraged)
+     * 1005  compound series defines exterior polygon ring (counterclockwise order)
+     * 2005  compound series defines interior polygon ring (clockwise order)
+     * </code></pre>
+     * 
+     * @param geom Geometry being represented
+     *
+     * @return Descriptionof Ordinates representation
+     *
+     * @throws IllegalArgumentException
+     */
+    private int elemInfoEType(Geometry geom) {
+        switch (template(geom)) {
+
+        case Constants.SDO_GTEMPLATE.POINT:
+            return Constants.SDO_ETYPE.POINT;
+
+        case Constants.SDO_GTEMPLATE.LINE:
+            return Constants.SDO_ETYPE.LINE;
+
+        case Constants.SDO_GTEMPLATE.POLYGON:
+        	// jts convention
+            return Constants.SDO_ETYPE.POLYGON_EXTERIOR; // cc order
+
+        default:
+
+            // should never happen!
+            throw new IllegalArgumentException("Unknown encoding of SDO_GTEMPLATE");
+        }
+    }
+    
+    /**
+     * Allows specification of <code>INTERPRETATION</code> used to interpret
+     * <code>geom</code>.
+     * 
+     * @param geom Geometry to encode
+     * @param etype ETYPE value requiring an INTERPREATION
+     *
+     * @return INTERPRETATION ELEM_INFO entry for geom given etype
+     *
+     * @throws IllegalArgumentException If asked to encode a curve
+     */
+    private int elemInfoInterpretation(Geometry geom, int etype) {
+        switch (etype) {
+
+        case Constants.SDO_ETYPE.POINT:
+
+            if (geom instanceof Point) {
+                return 1;
+            }
+
+            if (geom instanceof MultiPoint) {
+                return ((MultiPoint) geom).getNumGeometries();
+            }
+
+            break;
+
+        case Constants.SDO_ETYPE.LINE:
+        	// always straight for jts
+            return 1;
+
+        case Constants.SDO_ETYPE.POLYGON:
+        case Constants.SDO_ETYPE.POLYGON_EXTERIOR:
+        case Constants.SDO_ETYPE.POLYGON_INTERIOR:
+
+            if (geom instanceof Polygon) {
+                Polygon polygon = (Polygon) geom;
+            	// always straight for jts
+                if (isRectangle(polygon)) {
+                    return 3;
+                }
+            }
+
+            return 1;
+        }
+
+        throw new IllegalArgumentException("Cannot encode JTS "
+            + geom.getGeometryType() + " as "
+            + "SDO_INTERPRETATION (Limitied to Point, Line, Polygon, "
+            + "GeometryCollection, MultiPoint, MultiLineString and MultiPolygon)");
+    }
+	
+    /**
+     * Return SDO_POINT_TYPE for geometry
+     * 
+     * Will return non null for Point objects. <code>null</code> is returned
+     * for all non point objects.
+
+     * You cannot use this with LRS Coordiantes
+     * Subclasses may wish to repress this method and force Points to be
+     * represented using SDO_ORDINATES.
+     *
+     * @param geom
+     *
+     * @return double[]
+     */
+	private double[] point(Geometry geom) {
+        if (geom instanceof Point && (lrs(geom) == 0)) {
+            Point point = (Point) geom;
+            Coordinate coord = point.getCoordinate();
+
+            return new double[] { coord.x, coord.y, coord.z };
+        }
+
+        // SDO_POINT_TYPE only used for non LRS Points
+        return null;
+    }
+
+    /**
+     * Produce SDO_GTEMPLATE representing provided Geometry.
+     * 
+     * <p>
+     * Encoding of Geometry type and dimension.
+     * </p>
+     * 
+     * <p>
+     * SDO_GTEMPLATE defined as for digits <code>[d][l][tt]</code>:
+     * </p>
+     * 
+     * @param geom
+     *
+     * @return SDO_GTEMPLATE
+     */
+	private int gType(Geometry geom) {
+        int d = dimension(geom) * 1000;
+        int l = lrs(geom) * 100;
+        int tt = template(geom);
+
+        return d + l + tt;
+    }
+
+    /**
+     * Return dimensions as defined by SDO_GTEMPLATE (either 2,3 or 4).
+     * 
+     *
+     * @param geom
+     *
+     * @return num dimensions
+     */
+    private int dimension(Geometry geom) {
+    	int d = Double.isNaN(geom.getCoordinate().z)?2:3;
+		return d<dimension?d:dimension;
+    }
+
+    /**
+     * Return LRS as defined by SDO_GTEMPLATE (either 3,4 or 0).
+     * 
+     * @param geom
+     *
+     * @return <code>0</code>
+     */
+    private int lrs(Geometry geom) {
+        // when measures are supported this may change
+    	// until then ... 
+    	return 0;
+    }
+    
+    /**
+     * Return TT as defined by SDO_GTEMPLATE (represents geometry type).
+     * 
+     * @see Constants.SDO_GTEMPLATE
+     *
+     * @param geom
+     *
+     * @return template code
+     */
+    private int template(Geometry geom) {
+        if (geom == null) {
+            return -1; // UNKNOWN
+        } else if (geom instanceof Point) {
+            return Constants.SDO_GTEMPLATE.POINT;
+        } else if (geom instanceof LineString) {
+            return Constants.SDO_GTEMPLATE.LINE;
+        } else if (geom instanceof Polygon) {
+            return Constants.SDO_GTEMPLATE.POLYGON;
+        } else if (geom instanceof MultiPoint) {
+            return Constants.SDO_GTEMPLATE.MULTIPOINT;
+        } else if (geom instanceof MultiLineString) {
+            return Constants.SDO_GTEMPLATE.MULTILINE;
+        } else if (geom instanceof MultiPolygon) {
+            return Constants.SDO_GTEMPLATE.MULTIPOLYGON;
+        } else if (geom instanceof GeometryCollection) {
+            return Constants.SDO_GTEMPLATE.COLLECTION;
+        }
+
+        throw new IllegalArgumentException("Cannot encode JTS "
+            + geom.getGeometryType() + " as SDO_GTEMPLATE "
+            + "(Limitied to Point, Line, Polygon, GeometryCollection, MultiPoint,"
+            + " MultiLineString and MultiPolygon)");
+    }
+	
+    /** Convience method for STRUCT construction. */
+    private STRUCT toSTRUCT( Datum attributes[], String dataType )
+            throws SQLException
+    {
+    	if( dataType.startsWith("*.")){
+    		dataType = "DRA."+dataType.substring(2);//TODO here
+    	}
+        StructDescriptor descriptor =
+            StructDescriptor.createDescriptor( dataType, connection );
+    
+         return new STRUCT( descriptor, connection, attributes );
+    }
+    
+    /** 
+     * Convience method for ARRAY construction.
+     * <p>
+     * Compare and contrast with toORDINATE - which treats <code>Double.NaN</code>
+     * as<code>NULL</code></p>
+     */
+    private ARRAY toARRAY( double doubles[], String dataType )
+            throws SQLException
+    {
+        ArrayDescriptor descriptor =
+            ArrayDescriptor.createDescriptor( dataType, connection );
+        
+         return new ARRAY( descriptor, connection, doubles );
+    }
+    
+    /** 
+     * Convience method for ARRAY construction.
+     */
+    private ARRAY toARRAY( int ints[], String dataType )
+        throws SQLException
+    {
+        ArrayDescriptor descriptor =
+            ArrayDescriptor.createDescriptor( dataType, connection );
+            
+         return new ARRAY( descriptor, connection, ints );
+    }
+
+    /** 
+     * Convience method for NUMBER construction.
+     * <p>
+     * Double.NaN is represented as <code>NULL</code> to agree
+     * with JTS use.</p>
+     */
+    private NUMBER toNUMBER( double number ) throws SQLException{
+        if( Double.isNaN( number )){
+            return null;
+        }
+        return new NUMBER( number );
+    }
+
+    /**
+     * reverses the coordinate order
+     *
+     * @param factory
+     * @param sequence
+     *
+     * @return CoordinateSequence reversed sequence
+     */
+    private CoordinateSequence reverse(CoordinateSequenceFactory factory, CoordinateSequence sequence) {
+    	CoordinateList list = new CoordinateList(sequence.toCoordinateArray());
+        Collections.reverse(list);
+        return factory.create(list.toCoordinateArray());
+    }
+
+	/**
+	 * @param dimension The dimension to set.
+	 */
+	public void setDimension(int dimension) {
+		this.dimension = dimension;
+	}
+}
diff --git a/jtsio/src/com/vividsolutions/jts/io/oracle/package.html b/jtsio/src/com/vividsolutions/jts/io/oracle/package.html
new file mode 100644
index 0000000..19fbdda
--- /dev/null
+++ b/jtsio/src/com/vividsolutions/jts/io/oracle/package.html
@@ -0,0 +1,6 @@
+<html>
+	<head><title>JTS IO: Java Topology Suite IO Library</title></head>
+	<body>
+	Classes to read and write Oracle SDO_GEOMETRY object structures.
+	</body>
+</html>
\ No newline at end of file
diff --git a/jtsio/src/com/vividsolutions/jts/io/sde/SdeReader.java b/jtsio/src/com/vividsolutions/jts/io/sde/SdeReader.java
new file mode 100644
index 0000000..ded8358
--- /dev/null
+++ b/jtsio/src/com/vividsolutions/jts/io/sde/SdeReader.java
@@ -0,0 +1,264 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.sde;
+
+import com.vividsolutions.jts.geom.*;
+import com.esri.sde.sdk.client.*;
+
+/**
+ * Reads a {@link Geometry} from an ESRI SDE Shape.
+ * <p>
+ * The SDE geometry model differs from the OGC model used by JTS.
+ * In particular:
+ * <ul>
+ * <li>Simple lines are read as {@link LineString}s
+ * <li>Inverted Polygons and Exverted Holes are read as is.
+ * These create invalid JTS polygons, and must be
+ * rectified if further operations are to be performed on them.
+ * </ul>
+ * <p>
+ * This class allows specifying the maximum number of coordinate dimensions to read.
+ * If dimensions higher than 2 are not required, it may be more efficient to not read them.
+ * <p>
+ * To use this class the ESRI SDE Java libraries must be present.
+ * <p>
+ * Currently reading measure (M) ordinates is not supported.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class SdeReader 
+{
+  private GeometryFactory geometryFactory;
+  private PrecisionModel precisionModel;
+  private CoordinateSequenceFactory coordSeqFact;
+  private int maxDimensionToRead = 2;
+  
+  /**
+   * Creates a reader that creates geometries using the default {@link GeometryFactory}.
+   */
+  public SdeReader() {
+    this(new GeometryFactory());
+  }
+  
+  /**
+   * Creates a reader that creates geometries using the given {@link GeometryFactory}.
+   * @param geometryFactory
+   */
+  public SdeReader(GeometryFactory geometryFactory) {
+    this.geometryFactory = geometryFactory;
+    precisionModel = geometryFactory.getPrecisionModel();
+    coordSeqFact = geometryFactory.getCoordinateSequenceFactory();
+  }
+
+	/**
+	 * Gets the maximum number of coordinate dimensions which will be read.
+	 * 
+	 * @return the dimension which will be read
+	 */
+	public int getDimension() {
+		return maxDimensionToRead;
+	}
+
+	/**
+	 * Sets the maximum number of coordinate dimensions to read.
+	 * If this is larger than the number of dimensions actually 
+	 * present in the input geometry, the higher ordinates will not
+	 * be read, and NaN will be returned as their value.
+	 * <p>
+	 * The default is to read only the X and Y ordinates (dimension = 2).
+	 * 
+	 * @param dimension the dimension to read
+	 */
+	public void setDimension(int dimension) {
+		this.maxDimensionToRead = dimension;
+	}
+
+	/**
+	 * Reads a {@link Geometry} from a given SDE shape.
+	 * 
+	 * @param shape the shape to read
+	 * @return the geometry which represents the input shape
+	 * 
+	 * @throws SeException
+	 */
+  public Geometry read(SeShape shape)
+  throws SeException
+  {
+  	switch (shape.getType()) {
+  	case SeShape.TYPE_POINT:
+  		return readPoint(shape);
+
+  	case SeShape.TYPE_MULTI_POINT:
+  		return readMultiPoint(shape);
+
+  	case SeShape.TYPE_LINE:
+  	case SeShape.TYPE_SIMPLE_LINE:
+  		return readLine(shape);
+
+  	case SeShape.TYPE_MULTI_LINE:
+  	case SeShape.TYPE_MULTI_SIMPLE_LINE:
+  		return readMultiLine(shape);
+
+  	case SeShape.TYPE_POLYGON:
+  		return readPolygon(shape);
+
+  	case SeShape.TYPE_MULTI_POLYGON:
+  		return readMultiPolygon(shape);
+
+  	}
+  	throw new IllegalArgumentException("Shapes of type " + shape.getType() + " are not supported");
+  }
+  
+  private Point readPoint(SeShape shape)
+  throws SeException
+  {
+  	java.util.List list = shape.getAllPoints(SeShape.TURN_RIGHT, false);  // get points and offsets
+  	SDEPoint[] sePts = (SDEPoint[]) list.get(0);
+  	return geometryFactory.createPoint(toCoordinates(sePts, 0, 1));
+  }
+  
+  private MultiPoint readMultiPoint(SeShape shape)
+  throws SeException
+  {
+  	java.util.List list = shape.getAllPoints(SeShape.TURN_RIGHT, false);  // get points and offsets
+  	SDEPoint[] sePts = (SDEPoint[]) list.get(0);
+  	return geometryFactory.createMultiPoint(toCoordinates(sePts, 0, sePts.length));
+  }
+  
+  private LineString readLine(SeShape shape)
+  throws SeException
+  {
+  	java.util.List list = shape.getAllPoints(SeShape.TURN_RIGHT, false);  // get points and offsets
+  	SDEPoint[] sePts = (SDEPoint[]) list.get(0);
+  	return geometryFactory.createLineString(toCoordinates(sePts, 0, sePts.length));
+  }
+  
+  private MultiLineString readMultiLine(SeShape shape)
+  throws SeException
+  {
+  	java.util.List list = shape.getAllPoints(SeShape.TURN_RIGHT, false);  // get points and offsets
+  	SDEPoint[] sePts = (SDEPoint[]) list.get(0);
+  	int[] partOffset = (int[]) list.get(1);
+  	
+  	LineString[] lines = new LineString[partOffset.length];
+  	for (int i = 0; i < partOffset.length; i++) {
+  		int end = sePts.length;
+  		if (i < partOffset.length - 1) 
+  			end = partOffset[i + 1];
+  		lines[i] = geometryFactory.createLineString(toCoordinates(sePts, partOffset[i], end));
+  	}
+  	return geometryFactory.createMultiLineString(lines);
+  }
+  
+  private Polygon readPolygon(SeShape shape)
+  throws SeException
+  {
+  	java.util.List list = shape.getAllPoints(SeShape.TURN_RIGHT, true);  // get points and offsets
+  	SDEPoint[] sePts = (SDEPoint[]) list.get(0);
+  	// a polygon has only one part
+  	int[] subPartOffset = (int[]) list.get(2);
+  	
+  	return readPolygon(sePts, subPartOffset, 0, subPartOffset.length);
+  }
+  
+  private Polygon readPolygon(SDEPoint[] sePts, int[] subPartOffset, int subPartStart, int subPartEnd)
+  throws SeException
+  {  	
+  	int numSubParts = subPartEnd - subPartStart;
+  	int nHoles = numSubParts - 1;
+  	if (nHoles < 0)
+  		nHoles = 0;
+  	LinearRing shell = null;
+  	LinearRing[] holes = new LinearRing[nHoles];
+  	int holeIndex = 0;
+  	
+  	for (int i = subPartStart; i < subPartEnd; i++) {
+  		int end = sePts.length;
+  		if (i < subPartEnd - 1) 
+  			end = subPartOffset[i + 1];
+  		LinearRing ring = geometryFactory.createLinearRing(toCoordinates(sePts, subPartOffset[i], end));
+  		
+  		if (shell == null) {
+  			shell = ring;
+  		}
+  		else {
+  			holes[holeIndex++] = ring;
+  		}
+  	}
+  	return geometryFactory.createPolygon(shell, holes);
+  }
+  
+  private MultiPolygon readMultiPolygon(SeShape shape)
+  throws SeException
+  {
+  	java.util.List list = shape.getAllPoints(SeShape.TURN_RIGHT, true);  // get points and offsets
+  	SDEPoint[] sePts = (SDEPoint[]) list.get(0);
+  	int[] partOffset = (int[]) list.get(1);
+  	int[] subPartOffset = (int[]) list.get(2);
+  	
+  	Polygon[] polys = new Polygon[partOffset.length];
+  	for (int i = 0; i < partOffset.length; i++) {
+  		int subPartEnd = subPartOffset.length;
+  		if (i + 1 < partOffset.length) {
+  			subPartEnd = partOffset[i + 1];
+  		}
+  		polys[i] = readPolygon(sePts, subPartOffset, partOffset[i], subPartEnd);
+  	}
+  	return geometryFactory.createMultiPolygon(polys);
+  }
+  
+  private void readCoordinate(SDEPoint p, CoordinateSequence seq, int index)
+  throws SeException
+  {
+  	seq.setOrdinate(index, 0, precisionModel.makePrecise(p.getX()));
+  	seq.setOrdinate(index, 1, precisionModel.makePrecise(p.getY()));
+  	// only read the Z dim if requested and present
+  	if (maxDimensionToRead >= 3 && p.is3D()) {
+  		seq.setOrdinate(index, 2, p.getZ());
+  	}
+  }
+  
+  private CoordinateSequence toCoordinates(SDEPoint[] sePts, int start, int end)
+  throws SeException
+  {
+  	int size = end - start;
+  	CoordinateSequence seq = coordSeqFact.create(size, maxDimensionToRead);
+  	int index = 0;
+  	for (int i = start; i < end; i++) {
+  		readCoordinate(sePts[i], seq, index);
+  		index++;
+  	}
+  	return seq;
+  }
+}
diff --git a/jtsio/src/com/vividsolutions/jts/io/sde/package.html b/jtsio/src/com/vividsolutions/jts/io/sde/package.html
new file mode 100644
index 0000000..5d5c540
--- /dev/null
+++ b/jtsio/src/com/vividsolutions/jts/io/sde/package.html
@@ -0,0 +1,6 @@
+<html>
+	<head><title>JTS IO: Java Topology Suite IO Library</title></head>
+	<body>
+	Classes to read and write ESRI SDE shapes.
+	</body>
+</html>
\ No newline at end of file
diff --git a/jtsio/test/com/vividsolutions/jts/generator/GeometryGenerator.java b/jtsio/test/com/vividsolutions/jts/generator/GeometryGenerator.java
new file mode 100644
index 0000000..b659a07
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/generator/GeometryGenerator.java
@@ -0,0 +1,169 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.generator;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * This class illustrates the basic functionality and configuration options for generating spatial data. 
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public abstract class GeometryGenerator {
+	protected int dimensions = 2;
+	protected GeometryFactory geometryFactory; // includes srid
+	protected Envelope boundingBox;
+	
+	/**
+	 * @return A Geometry which uses some or all of the Bounding Box specified.
+	 */
+	public abstract Geometry create();
+
+	
+	/**
+	 * @see GridGenerator
+	 * @return A new GridGenerator
+	 */
+	public static GridGenerator createGridGenerator(){
+		return new GridGenerator();
+	}
+	
+	/**
+	 * @see PointGenerator
+	 * @return A new PointGenerator
+	 */
+	public static PointGenerator createPointGenerator(){
+		return new PointGenerator();
+	}
+
+	/**
+	 * @see LineStringGenerator
+	 * @return A new LineStringGenerator
+	 */
+	public static LineStringGenerator createLineStringGenerator(){
+		LineStringGenerator lsg = new LineStringGenerator();
+		lsg.setGenerationAlgorithm(LineStringGenerator.ARC);
+		lsg.setNumberPoints(10);
+		return lsg;
+	}
+
+	/**
+	 * @see PolygonGenerator
+	 * @return A new PolygonGenerator
+	 */
+	public static PolygonGenerator createPolygonGenerator(){
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGenerationAlgorithm(PolygonGenerator.ARC);
+		pg.setNumberPoints(10);
+		pg.setNumberHoles(8);
+		return pg;
+	}
+
+	/**
+	 * @see PointGenerator
+	 * @see MultiGenerator
+	 * @return A new MultiGenerator
+	 */
+	public static MultiGenerator createMultiPointGenerator(){
+		MultiGenerator mg = new MultiGenerator(createPointGenerator());
+		mg.setNumberGeometries(4);
+		return mg;
+	}
+
+	/**
+	 * @see LineStringGenerator
+	 * @see MultiGenerator
+	 * @return A new PointGenerator
+	 */
+	public static MultiGenerator createMultiLineStringGenerator(){
+		MultiGenerator mg = new MultiGenerator(createLineStringGenerator());
+		mg.setNumberGeometries(4);
+		return mg;
+	}
+
+	/**
+	 * @see PolygonGenerator
+	 * @see MultiGenerator
+	 * @return A new PointGenerator
+	 */
+	public static MultiGenerator createMultiPolygonGenerator(){
+		MultiGenerator mg = new MultiGenerator(createPolygonGenerator());
+		mg.setNumberGeometries(4);
+		return mg;
+	}
+
+	/**
+	 * @return Returns the boundingBox.
+	 */
+	public Envelope getBoundingBox() {
+		return boundingBox;
+	}
+
+	/**
+	 * @param boundingBox The boundingBox to set.
+	 */
+	public void setBoundingBox(Envelope boundingBox) {
+		this.boundingBox = boundingBox;
+	}
+
+	/**
+	 * @return Returns the dimensions.
+	 */
+	public int getDimensions() {
+		return dimensions;
+	}
+
+	/**
+	 * @param dimensions The dimensions to set.
+	 */
+	public void setDimensions(int dimensions) {
+		this.dimensions = dimensions;
+		throw new RuntimeException("Dimensions other than 2 are not yet supported");
+	}
+
+	/**
+	 * @return Returns the geometryFactory.
+	 */
+	public GeometryFactory getGeometryFactory() {
+		return geometryFactory;
+	}
+
+	/**
+	 * @param geometryFactory The geometryFactory to set.
+	 */
+	public void setGeometryFactory(GeometryFactory geometryFactory) {
+		this.geometryFactory = geometryFactory;
+	}
+	
+	
+}
diff --git a/jtsio/test/com/vividsolutions/jts/generator/GridGenerator.java b/jtsio/test/com/vividsolutions/jts/generator/GridGenerator.java
new file mode 100644
index 0000000..843e127
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/generator/GridGenerator.java
@@ -0,0 +1,175 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.generator;
+
+import java.util.NoSuchElementException;
+
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.Geometry;
+
+/**
+ * This class should be used to generate a grid of bounding boxes, 
+ * most useful when creating multiple geometries.
+ *
+ * Successive calls to create() will walk the user though the grid. 
+ * Use canCreate() and reset() to control the walk through the grid.
+ * 
+ * @see #canCreate()
+ * @see #reset()
+ * 
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class GridGenerator extends GeometryGenerator {
+
+	protected int numberColumns = 1;
+	protected int numberRows = 1;
+	protected int index = 0;
+	
+	/**
+	 * Sets some default values.
+	 */
+	public GridGenerator(){
+		dimensions = 2;
+	}
+	
+	/**
+	 * 
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#create()
+	 * 
+	 * @throws NoSuchElementException when all the grids have been created (@see #create())
+	 * @throws NullPointerException when either the Geometry Factory, or the Bounding Box are undefined.
+	 */
+	public Geometry create() {
+		return geometryFactory.toGeometry(createEnv());
+	}
+	/**
+	 * 
+	 * @return Envelope 
+	 * 
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#create()
+	 * 
+	 * @throws NoSuchElementException when all the grids have been created (@see #create())
+	 * @throws NullPointerException when either the Geometry Factory, or the Bounding Box are undefined.
+	 */
+	public Envelope createEnv() {
+		if(!canCreate()){
+			throw new NoSuchElementException("There are not any grids left to create.");
+		}
+		if(geometryFactory == null){
+			throw new NullPointerException("GeometryFactory is not declared");
+		}
+		if(boundingBox == null || boundingBox.isNull()){
+			throw new NullPointerException("Bounding Box is not declared");
+		}
+
+		double x = boundingBox.getMinX(); // base x
+		double dx = boundingBox.getMaxX()-x;
+		
+		double y = boundingBox.getMinY(); // base y
+		double dy = boundingBox.getMaxY()-y;
+		
+		int row = numberRows==1?0:index / numberRows;
+		int col = numberColumns==1?0:index % numberColumns;
+		
+		double sx,sy; // size of a step
+		sx = dx/numberColumns;
+		sy = dy/numberRows;
+		
+		double minx, miny;
+		minx = x+col*sx;
+		miny = y+row*sy;
+		
+		Envelope box = new Envelope(geometryFactory.getPrecisionModel().makePrecise(minx),
+									geometryFactory.getPrecisionModel().makePrecise(minx+sx),
+									geometryFactory.getPrecisionModel().makePrecise(miny),
+									geometryFactory.getPrecisionModel().makePrecise(miny+sy));
+		
+		index++;
+		return box;
+	}
+
+	/**
+	 * @return true when more grids exist
+	 */
+	public boolean canCreate(){
+		return (numberColumns*numberRows)>index;
+	}
+	
+	/**
+	 * Resets the grid counter
+	 */
+	public void reset(){
+		index = 0;
+	}
+
+	/**
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#setDimensions(int)
+	 */
+	public void setDimensions(int dimensions) {
+		if(dimensions!=2)
+			throw new IllegalStateException("MAY NOT CHANGE GridGenerator's Dimensions");
+	}
+
+	/**
+	 * @return Returns the numberColumns.
+	 */
+	public int getNumberColumns() {
+		return numberColumns;
+	}
+
+	/**
+	 * @param numberColumns The numberColumns to set.
+	 */
+	public void setNumberColumns(int numberColumns) {
+		if(numberColumns<=0)
+			throw new IndexOutOfBoundsException("Index sizes must be positive, non zero");
+		this.numberColumns = numberColumns;
+	}
+
+	/**
+	 * @return Returns the numberRows.
+	 */
+	public int getNumberRows() {
+		return numberRows;
+	}
+
+	/**
+	 * @param numberRows The numberRows to set.
+	 */
+	public void setNumberRows(int numberRows) {
+		if(numberRows<=0)
+			throw new IndexOutOfBoundsException("Index sizes must be positive, non zero");
+		this.numberRows = numberRows;
+	}
+	
+}
diff --git a/jtsio/test/com/vividsolutions/jts/generator/LineStringGenerator.java b/jtsio/test/com/vividsolutions/jts/generator/LineStringGenerator.java
new file mode 100644
index 0000000..3e077ce
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/generator/LineStringGenerator.java
@@ -0,0 +1,219 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.generator;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.operation.valid.IsValidOp;
+
+/**
+ * 
+ * This class is used to create a line string within the specified bounding box.
+ * 
+ * Sucessive calls to create may or may not return the same geometry topology.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class LineStringGenerator extends GeometryGenerator {
+	protected int numberPoints = 2;
+	protected int generationAlgorithm = 0;
+	
+	/**
+	 * Create the points in a vertical line
+	 */
+	public static final int VERT = 1;
+	
+	/**
+	 * Create the points in a horizontal line
+	 */
+	public static final int HORZ = 2;
+	
+	/**
+	 * Create the points in an approximation of an open circle (one edge will not be included).
+	 * 
+	 * Note: this requires the number of points to be greater than 2.
+	 * 
+	 * @see #getNumberPoints()
+	 * @see #setNumberPoints(int)
+	 */
+	public static final int ARC = 0;
+	
+	/**
+	 * Number of interations attempting to create a valid line string
+	 */
+	private static final int RUNS = 5;
+
+	/**
+	 * As the user increases the number of points, the probability of creating a random valid linestring decreases. 
+	 * Please take not of this when selecting the generation style, and the number of points. 
+	 * 
+	 * May return null if a geometry could not be created.
+	 * 
+	 * @see #getNumberPoints()
+	 * @see #setNumberPoints(int)
+	 * @see #getGenerationAlgorithm()
+	 * @see #setGenerationAlgorithm(int)
+	 * 
+	 * @see #VERT
+	 * @see #HORZ
+	 * @see #ARC
+	 * 
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#create()
+	 * 
+	 * @throws IllegalStateException When the alg is not valid or the number of points is invalid
+	 * @throws NullPointerException when either the Geometry Factory, or the Bounding Box are undefined.
+	 */
+	public Geometry create() {
+
+		if(geometryFactory == null){
+			throw new NullPointerException("GeometryFactory is not declared");
+		}
+		if(boundingBox == null || boundingBox.isNull()){
+			throw new NullPointerException("Bounding Box is not declared");
+		}
+		if(numberPoints<2){
+			throw new IllegalStateException("Too few points");
+		}
+		
+		Coordinate[] coords = new Coordinate[numberPoints];
+
+		double x = boundingBox.getMinX(); // base x
+		double dx = boundingBox.getMaxX()-x;
+		
+		double y = boundingBox.getMinY(); // base y
+		double dy = boundingBox.getMaxY()-y;
+		
+		
+		for(int i=0;i<RUNS;i++){
+			switch(getGenerationAlgorithm()){
+			case VERT:
+				fillVert(x,dx,y,dy,coords,geometryFactory);
+				break;
+			case HORZ:
+				fillHorz(x,dx,y,dy,coords,geometryFactory);
+				break;
+			case ARC:
+				fillArc(x,dx,y,dy,coords,geometryFactory);
+				break;
+			default:
+				throw new IllegalStateException("Invalid Alg. Specified");
+			}
+			
+			LineString ls = geometryFactory.createLineString(coords);
+			IsValidOp valid = new IsValidOp(ls);
+			if(valid.isValid()){
+				return ls;
+			}
+		}
+		return null;
+	}
+	
+	private static void fillVert(double x, double dx, double y, double dy, Coordinate[] coords, GeometryFactory gf){
+		double fx = x+Math.random()*dx;
+		double ry = dy; // remainder of y distance
+		coords[0] = new Coordinate(fx,y);
+		gf.getPrecisionModel().makePrecise(coords[0]);
+		for(int i=1;i<coords.length-1;i++){
+			ry -= Math.random()*ry;
+			coords[i] = new Coordinate(fx,y+dy-ry);
+			gf.getPrecisionModel().makePrecise(coords[i]);
+		}
+		coords[coords.length-1] = new Coordinate(fx,y+dy);
+		gf.getPrecisionModel().makePrecise(coords[coords.length-1]);
+	}
+	
+	private static void fillHorz(double x, double dx, double y, double dy, Coordinate[] coords, GeometryFactory gf){
+		double fy = y+Math.random()*dy;
+		double rx = dx; // remainder of x distance
+		coords[0] = new Coordinate(x,fy);
+		gf.getPrecisionModel().makePrecise(coords[0]);
+		for(int i=1;i<coords.length-1;i++){
+			rx -= Math.random()*rx;
+			coords[i] = new Coordinate(x+dx-rx,fy);
+			gf.getPrecisionModel().makePrecise(coords[i]);
+		}
+		coords[coords.length-1] = new Coordinate(x+dx,fy);
+		gf.getPrecisionModel().makePrecise(coords[coords.length-1]);
+	}
+	
+	private static void fillArc(double x, double dx, double y, double dy, Coordinate[] coords, GeometryFactory gf){
+		if(coords.length == 2)
+			throw new IllegalStateException("Too few points for Arc");
+		
+		double theta = 360/coords.length;
+		double start = theta/2;
+		
+		double radius = dx<dy?dx/3:dy/3;
+		
+		double cx = x+(dx/2); // center
+		double cy = y+(dy/2); // center
+		
+		for(int i=0;i<coords.length;i++){
+			double angle = Math.toRadians(start+theta*i);
+			
+			double fx = Math.sin(angle)*radius; // may be neg.
+			double fy = Math.cos(angle)*radius; // may be neg.
+			
+			coords[i] = new Coordinate(cx+fx,cy+fy);
+			gf.getPrecisionModel().makePrecise(coords[i]);
+		}
+	}
+
+	/**
+	 * @return Returns the numberPoints.
+	 */
+	public int getNumberPoints() {
+		return numberPoints;
+	}
+
+	/**
+	 * @param numberPoints The numberPoints to set.
+	 */
+	public void setNumberPoints(int numberPoints) {
+		this.numberPoints = numberPoints;
+	}
+
+	/**
+	 * @return Returns the generationAlgorithm.
+	 */
+	public int getGenerationAlgorithm() {
+		return generationAlgorithm;
+	}
+
+	/**
+	 * @param generationAlgorithm The generationAlgorithm to set.
+	 */
+	public void setGenerationAlgorithm(int generationAlgorithm) {
+		this.generationAlgorithm = generationAlgorithm;
+	}
+	
+}
diff --git a/jtsio/test/com/vividsolutions/jts/generator/MultiGenerator.java b/jtsio/test/com/vividsolutions/jts/generator/MultiGenerator.java
new file mode 100644
index 0000000..afbc72f
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/generator/MultiGenerator.java
@@ -0,0 +1,190 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.generator;
+
+import java.util.ArrayList;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * 
+ * Cascades the effort of creating a set of topologically valid geometries.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class MultiGenerator extends GeometryGenerator {
+
+	private GeometryGenerator generator = null;
+	private int numberGeometries = 2;
+	private int generationAlgorithm = 0;
+	
+	/**
+	 * Grid style blocks
+	 */
+	public static final int BOX = 0;
+	/**
+	 * vertical strips
+	 */
+	public static final int VERT = 1;
+	/**
+	 * Horizontal strips
+	 */
+	public static final int HORZ = 2;
+	
+	/**
+	 * @param generator
+	 */
+	public MultiGenerator(GeometryGenerator generator) {
+		this.generator = generator;
+	}
+
+	/**
+	 * Creates a geometry collection representing the set of child geometries created.
+	 * 
+	 * @see #setNumberGeometries(int)
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#create()
+	 * 
+	 * @see #BOX
+	 * @see #VERT
+	 * @see #HORZ
+	 * 
+	 * @throws NullPointerException when the generator is missing
+	 * @throws IllegalStateException when the number of child geoms is too small
+	 * @throws IllegalStateException when the selected alg. is invalid
+	 */
+	public Geometry create() {
+		if(generator == null)
+			throw new NullPointerException("Missing child generator");
+		
+		if(numberGeometries < 1)
+			throw new IllegalStateException("Too few child geoms to create");
+		
+		ArrayList geoms = new ArrayList(numberGeometries);
+
+		GridGenerator grid = GeometryGenerator.createGridGenerator();
+		grid.setBoundingBox(boundingBox);
+		grid.setGeometryFactory(geometryFactory);
+		
+		switch(generationAlgorithm){
+		case BOX:
+
+			int nrow = (int)Math.sqrt(numberGeometries);
+			int ncol = numberGeometries/nrow;
+			grid.setNumberRows(nrow);
+			grid.setNumberColumns(ncol);
+			
+			break;
+		case VERT:
+
+			grid.setNumberRows(1);
+			grid.setNumberColumns(numberGeometries);
+			
+			break;
+		case HORZ:
+
+			grid.setNumberRows(numberGeometries);
+			grid.setNumberColumns(1);
+			
+			break;
+		default:
+			throw new IllegalStateException("Invalid Alg. Specified");
+		}
+		
+		while(grid.canCreate()){
+			generator.setBoundingBox(grid.createEnv());
+			geoms.add(generator.create());
+		}
+		
+		// yes ... there are better ways
+		if(generator instanceof PointGenerator){
+			return geometryFactory.createMultiPoint((Point[]) geoms.toArray(new Point[numberGeometries]));
+		}else{
+		if(generator instanceof LineStringGenerator){
+			return geometryFactory.createMultiLineString((LineString[]) geoms.toArray(new LineString[numberGeometries]));
+		}else{
+		if(generator instanceof PolygonGenerator){
+			return geometryFactory.createMultiPolygon((Polygon[]) geoms.toArray(new Polygon[numberGeometries]));
+		}else{
+			// same as multi
+			return geometryFactory.createGeometryCollection((Geometry[]) geoms.toArray(new Geometry[numberGeometries]));
+		}}}
+	}
+
+	/**
+	 * @return Returns the numberGeometries.
+	 */
+	public int getNumberGeometries() {
+		return numberGeometries;
+	}
+
+	/**
+	 * @param numberGeometries The numberGeometries to set.
+	 */
+	public void setNumberGeometries(int numberGeometries) {
+		this.numberGeometries = numberGeometries;
+	}
+
+	/**
+	 * @return Returns the generator.
+	 */
+	public GeometryGenerator getGenerator() {
+		return generator;
+	}
+
+	/**
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#setBoundingBox(com.vividsolutions.jts.geom.Envelope)
+	 */
+	public void setBoundingBox(Envelope boundingBox) {
+		super.setBoundingBox(boundingBox);
+		if(generator!=null)
+			generator.setBoundingBox(boundingBox);
+	}
+
+	/**
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#setDimensions(int)
+	 */
+	public void setDimensions(int dimensions) {
+		super.setDimensions(dimensions);
+		if(generator!=null)
+			generator.setDimensions(dimensions);
+	}
+
+	/**
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#setGeometryFactory(com.vividsolutions.jts.geom.GeometryFactory)
+	 */
+	public void setGeometryFactory(GeometryFactory geometryFactory) {
+		super.setGeometryFactory(geometryFactory);
+		if(generator!=null)
+			generator.setGeometryFactory(geometryFactory);
+	}
+}
diff --git a/src/com/vividsolutions/jts/algorithm/PointInRing.java b/jtsio/test/com/vividsolutions/jts/generator/PointGenerator.java
similarity index 55%
copy from src/com/vividsolutions/jts/algorithm/PointInRing.java
copy to jtsio/test/com/vividsolutions/jts/generator/PointGenerator.java
index 7950ecd..79c9930 100644
--- a/src/com/vividsolutions/jts/algorithm/PointInRing.java
+++ b/jtsio/test/com/vividsolutions/jts/generator/PointGenerator.java
@@ -1,4 +1,3 @@
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -31,17 +30,36 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.algorithm;
+package com.vividsolutions.jts.generator;
 
-import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.Point;
 
 /**
- * An interface for classes which test whether a {@link Coordinate} lies inside
- * a ring.
+ * 
+ * Creates a point based on the bounding box. 
+ * 
+ * This implementation returns the centroid.
  *
- * @version 1.7
+ * @author David Zwiers, Vivid Solutions. 
  */
-public interface PointInRing {
+public class PointGenerator extends GeometryGenerator {
+
+	/**
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#create()
+	 * @throws NullPointerException when either the Geometry Factory, or the Bounding Box are undefined.
+	 */
+	public Geometry create() {
+		if(geometryFactory == null){
+			throw new NullPointerException("GeometryFactory is not declared");
+		}
+		if(boundingBox == null || boundingBox.isNull()){
+			throw new NullPointerException("Bounding Box is not declared");
+		}
+		
+		Point p = geometryFactory.toGeometry(boundingBox).getCentroid();
+		geometryFactory.getPrecisionModel().makePrecise(p.getCoordinate());
+		return p;
+	}
 
-  boolean isInside(Coordinate pt);
 }
diff --git a/jtsio/test/com/vividsolutions/jts/generator/PolygonGenerator.java b/jtsio/test/com/vividsolutions/jts/generator/PolygonGenerator.java
new file mode 100644
index 0000000..80bfa6a
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/generator/PolygonGenerator.java
@@ -0,0 +1,328 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.generator;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.operation.valid.IsValidOp;
+
+/**
+ * 
+ * This class is used to create a polygon within the specified bounding box.
+ * 
+ * Sucessive calls to create may or may not return the same geometry topology.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class PolygonGenerator extends GeometryGenerator {
+	protected int numberPoints = 4;
+	protected int numberHoles = 0;
+	protected int generationAlgorithm = 0;
+	
+	/**
+	 * Creates rectangular polygons
+	 */
+	public static final int BOX = 0;
+	
+	/**
+	 * Creates polygons whose points will not be rectangular when there are more than 4 points 
+	 */
+	public static final int ARC = 1;
+	
+	private static final int RUNS = 5;
+	
+	/**
+	 * As the user increases the number of points, the probability of creating a random valid polygon decreases. 
+	 * Please take not of this when selecting the generation style, and the number of points. 
+	 * 
+	 * May return null if a geometry could not be created.
+	 * 
+	 * @see #getNumberPoints()
+	 * @see #setNumberPoints(int)
+	 * @see #getGenerationAlgorithm()
+	 * @see #setGenerationAlgorithm(int)
+	 * 
+	 * @see #BOX
+	 * @see #ARC
+	 * 
+	 * @see com.vividsolutions.jts.generator.GeometryGenerator#create()
+	 * 
+	 * @throws IllegalStateException When the alg is not valid or the number of points is invalid
+	 * @throws NullPointerException when either the Geometry Factory, or the Bounding Box are undefined.
+	 */
+	public Geometry create() {
+
+		if(geometryFactory == null){
+			throw new NullPointerException("GeometryFactory is not declared");
+		}
+		if(boundingBox == null || boundingBox.isNull()){
+			throw new NullPointerException("Bounding Box is not declared");
+		}
+		if(numberPoints<4){
+			throw new IllegalStateException("Too few points");
+		}
+		
+		double x = boundingBox.getMinX(); // base x
+		double dx = boundingBox.getMaxX()-x;
+		
+		double y = boundingBox.getMinY(); // base y
+		double dy = boundingBox.getMaxY()-y;
+		
+		Polygon p = null;
+		
+		for(int i=0;i<RUNS;i++){
+			switch(getGenerationAlgorithm()){
+			case BOX:
+				p = createBox(x,dx,y,dy,numberHoles,numberPoints,geometryFactory);
+				break;
+			case ARC:
+				p = createArc(x,dx,y,dy,numberHoles,numberPoints,geometryFactory);
+				break;
+			default:
+				throw new IllegalStateException("Invalid Alg. Specified");
+			}
+			
+			IsValidOp valid = new IsValidOp(p);
+			if(valid.isValid()){
+				return p;
+			}
+		}
+		return null;
+	}
+	
+	private static Polygon createArc(double x, double dx, double y, double dy, int nholes, int npoints, GeometryFactory gf){
+		// make outer ring first
+		double radius = dx<dy?dx/3:dy/3;
+		
+		double cx = x+(dx/2); // center
+		double cy = y+(dy/2); // center
+		
+		LinearRing outer = createArc(cx,cy,radius,npoints,gf);
+		
+		if(nholes == 0){
+			return gf.createPolygon(outer,null);
+		}
+		
+		LinearRing[] inner = new LinearRing[nholes];
+		
+		radius *= .75;
+		int degreesPerHole = 360/(nholes+1);
+		int degreesPerGap = degreesPerHole/nholes;
+		degreesPerGap = degreesPerGap<2?2:degreesPerGap;
+		degreesPerHole = (360-(degreesPerGap*nholes))/nholes;
+		
+		if(degreesPerHole < 2)
+			throw new RuntimeException("Slices too small for poly. Use Box alg.");
+		
+		int start = degreesPerGap/2;
+		for(int i=0;i<nholes;i++){
+			int st = start+(i*(degreesPerHole+degreesPerGap)); // start angle 
+			inner[i] = createTri(cx,cy,st,st+degreesPerHole,radius,gf);
+		}
+		
+		
+		return gf.createPolygon(outer,inner);
+	}
+	
+	private static LinearRing createTri(double cx, double cy ,int startAngle, int endAngle, double radius, GeometryFactory gf){
+
+		Coordinate[] coords = new Coordinate[4];
+		
+		double fx1,fx2,fy1,fy2;
+		
+		double angle = Math.toRadians(startAngle);
+		fx1 = Math.sin(angle)*radius; // may be neg.
+		fy1 = Math.cos(angle)*radius; // may be neg.
+		
+		angle = Math.toRadians(endAngle);
+		fx2 = Math.sin(angle)*radius; // may be neg.
+		fy2 = Math.cos(angle)*radius; // may be neg.
+		
+		coords[0] = new Coordinate(cx,cy);
+		gf.getPrecisionModel().makePrecise(coords[0]);
+		coords[1] = new Coordinate(cx+fx1,cy+fy1);
+		gf.getPrecisionModel().makePrecise(coords[1]);
+		coords[2] = new Coordinate(cx+fx2,cy+fy2);
+		gf.getPrecisionModel().makePrecise(coords[2]);
+		coords[3] = new Coordinate(cx,cy);
+		gf.getPrecisionModel().makePrecise(coords[3]);
+		
+		return gf.createLinearRing(coords);
+	}
+	
+	private static LinearRing createArc(double cx, double cy ,double radius, int npoints, GeometryFactory gf){
+
+		Coordinate[] coords = new Coordinate[npoints+1];
+		
+		double theta = 360/npoints;
+		
+		for(int i=0;i<npoints;i++){
+			double angle = Math.toRadians(theta*i);
+			
+			double fx = Math.sin(angle)*radius; // may be neg.
+			double fy = Math.cos(angle)*radius; // may be neg.
+			
+			coords[i] = new Coordinate(cx+fx,cy+fy);
+			gf.getPrecisionModel().makePrecise(coords[i]);
+		}
+		
+		coords[npoints] = new Coordinate(coords[0]);
+		gf.getPrecisionModel().makePrecise(coords[npoints]);
+		
+		return gf.createLinearRing(coords);
+	}
+	
+	private static Polygon createBox(double x, double dx, double y, double dy, int nholes, int npoints, GeometryFactory gf){
+		// make outer ring first
+		LinearRing outer = createBox(x,dx,y,dy,npoints,gf);
+		
+		if(nholes == 0){
+			return gf.createPolygon(outer,null);
+		}
+		
+		LinearRing[] inner = new LinearRing[nholes];
+		
+		int nrow = (int)Math.sqrt(nholes);
+		int ncol = nholes/nrow;
+		
+		double ddx = dx/(ncol+1);
+		double ddy = dy/(nrow+1);
+		
+		// spacers
+		double spx = ddx/(ncol+1);
+		double spy = ddy/(nrow+1);
+		
+		// should have more grids than required
+		int cindex = 0;
+		for(int i=0;i<nrow;i++){
+			for(int j=0;j<ncol;j++){
+				if(cindex<nholes){
+					// make another box
+					int pts = npoints/2;
+					pts = pts<4?4:pts;
+					
+					inner[cindex++] = createBox(spx+x+j*(ddx+spx),ddx,spy+y+i*(ddy+spy),ddy,pts,gf);
+				}
+			}
+		}
+		
+		return gf.createPolygon(outer,inner);
+	}
+	
+	private static LinearRing createBox(double x, double dx, double y, double dy, int npoints, GeometryFactory gf){
+
+		//figure out the number of points per side
+		int ptsPerSide = npoints/4;
+		int rPtsPerSide = npoints%4;
+		Coordinate[] coords = new Coordinate[npoints+1];
+		coords[0] = new Coordinate(x,y); // start
+		gf.getPrecisionModel().makePrecise(coords[0]);
+		
+		int cindex = 1;
+		for(int i=0;i<4;i++){ // sides
+			int npts = ptsPerSide+(rPtsPerSide-->0?1:0);
+			// npts atleast 1
+			
+			if(i%2 == 1){ // odd vert
+				double cy = dy/npts;
+				if(i > 1) // down
+					cy *=-1;
+				double tx = coords[cindex-1].x;
+				double sy = coords[cindex-1].y;
+				
+				for(int j=0;j<npts;j++){
+					coords[cindex] = new Coordinate(tx,sy+(j+1)*cy);
+					gf.getPrecisionModel().makePrecise(coords[cindex++]);
+				}
+			}else{ // even horz
+				double cx = dx/npts;
+				if(i > 1) // down
+					cx *=-1;
+				double ty = coords[cindex-1].y;
+				double sx = coords[cindex-1].x;
+				
+				for(int j=0;j<npts;j++){
+					coords[cindex] = new Coordinate(sx+(j+1)*cx,ty);
+					gf.getPrecisionModel().makePrecise(coords[cindex++]);
+				}
+			}
+		}
+		coords[npoints] = new Coordinate(x,y); // end
+		gf.getPrecisionModel().makePrecise(coords[npoints]);
+		
+		return gf.createLinearRing(coords);
+	}
+
+	/**
+	 * @return Returns the generationAlgorithm.
+	 */
+	public int getGenerationAlgorithm() {
+		return generationAlgorithm;
+	}
+
+	/**
+	 * @param generationAlgorithm The generationAlgorithm to set.
+	 */
+	public void setGenerationAlgorithm(int generationAlgorithm) {
+		this.generationAlgorithm = generationAlgorithm;
+	}
+
+	/**
+	 * @return Returns the numberHoles.
+	 */
+	public int getNumberHoles() {
+		return numberHoles;
+	}
+
+	/**
+	 * @param numberHoles The numberHoles to set.
+	 */
+	public void setNumberHoles(int numberHoles) {
+		this.numberHoles = numberHoles;
+	}
+
+	/**
+	 * @return Returns the numberPoints.
+	 */
+	public int getNumberPoints() {
+		return numberPoints;
+	}
+
+	/**
+	 * @param numberPoints The numberPoints to set.
+	 */
+	public void setNumberPoints(int numberPoints) {
+		this.numberPoints = numberPoints;
+	}
+	
+}
diff --git a/jtsio/test/com/vividsolutions/jts/io/gml2/GMLReaderTestCase.java b/jtsio/test/com/vividsolutions/jts/io/gml2/GMLReaderTestCase.java
new file mode 100644
index 0000000..2374f7d
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/io/gml2/GMLReaderTestCase.java
@@ -0,0 +1,146 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.FileReader;
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.xml.sax.SAXException;
+
+import com.vividsolutions.jts.geom.*;
+
+import junit.framework.TestCase;
+
+public class GMLReaderTestCase extends TestCase {
+
+	public GMLReaderTestCase(String arg0) {
+		super(arg0);
+		// TODO Auto-generated constructor stub
+	}
+	
+	protected static PrecisionModel precisionModel = new PrecisionModel(1000);
+	protected static GeometryFactory geometryFactory = new GeometryFactory(precisionModel);
+	
+	public void testPointRead() throws SAXException, IOException, ParserConfigurationException{
+		FileReader fr = new FileReader("./jtsio/test/data/points.xml");
+		
+		GMLReader gr = new GMLReader();
+		Geometry g = gr.read(fr,geometryFactory);
+		
+		GeometryCollection gc = (GeometryCollection)g;
+		assertTrue(gc.getNumGeometries() == 25);
+		
+		for(int i=0;i<25;i++){
+			Point p = (Point) gc.getGeometryN(i);
+			assertNotNull(p);
+		}
+	}
+
+	public void testLineStringRead() throws SAXException, IOException, ParserConfigurationException{
+		FileReader fr = new FileReader("./jtsio/test/data/linestrings.xml");
+		
+		GMLReader gr = new GMLReader();
+		Geometry g = gr.read(fr,geometryFactory);
+		
+		GeometryCollection gc = (GeometryCollection)g;
+		assertTrue(gc.getNumGeometries() == 25);
+		
+		for(int i=0;i<25;i++){
+			LineString ls = (LineString) gc.getGeometryN(i);
+			assertNotNull(ls);
+		}
+	}
+
+	public void testPolygonRead() throws SAXException, IOException, ParserConfigurationException{
+		FileReader fr = new FileReader("./jtsio/test/data/polygons.xml");
+		
+		GMLReader gr = new GMLReader();
+		Geometry g = gr.read(fr,geometryFactory);
+		
+		GeometryCollection gc = (GeometryCollection)g;
+		assertTrue(gc.getNumGeometries() == 25);
+		
+		for(int i=0;i<25;i++){
+			Polygon p = (Polygon) gc.getGeometryN(i);
+			assertNotNull(p);
+		}
+	}
+	
+	public void testMultiPointRead() throws SAXException, IOException, ParserConfigurationException{
+		FileReader fr = new FileReader("./jtsio/test/data/multipoints.xml");
+		
+		GMLReader gr = new GMLReader();
+		Geometry g = gr.read(fr,geometryFactory);
+		
+		GeometryCollection gc = (GeometryCollection)g;
+		assertTrue(gc.getNumGeometries() == 25);
+		
+		for(int i=0;i<25;i++){
+			MultiPoint p = (MultiPoint) gc.getGeometryN(i);
+			assertNotNull(p);
+		}
+	}
+
+	public void testMultiLineStringRead() throws SAXException, IOException, ParserConfigurationException{
+		FileReader fr = new FileReader("./jtsio/test/data/multilinestrings.xml");
+		
+		GMLReader gr = new GMLReader();
+		Geometry g = gr.read(fr,geometryFactory);
+		
+		GeometryCollection gc = (GeometryCollection)g;
+		assertTrue(gc.getNumGeometries() == 25);
+		
+		for(int i=0;i<25;i++){
+			MultiLineString ls = (MultiLineString) gc.getGeometryN(i);
+			assertNotNull(ls);
+		}
+	}
+
+	public void testMultiPolygonRead() throws SAXException, IOException, ParserConfigurationException{
+		FileReader fr = new FileReader("./jtsio/test/data/multipolygons.xml");
+		
+		GMLReader gr = new GMLReader();
+		Geometry g = gr.read(fr,geometryFactory);
+		
+		GeometryCollection gc = (GeometryCollection)g;
+		assertTrue(gc.getNumGeometries() == 25);
+		
+		for(int i=0;i<25;i++){
+			MultiPolygon p = (MultiPolygon) gc.getGeometryN(i);
+			assertNotNull(p);
+		}
+	}
+
+}
diff --git a/jtsio/test/com/vividsolutions/jts/io/gml2/StaticLineStringTest.java b/jtsio/test/com/vividsolutions/jts/io/gml2/StaticLineStringTest.java
new file mode 100644
index 0000000..0f43222
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/io/gml2/StaticLineStringTest.java
@@ -0,0 +1,118 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.sql.SQLException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.xml.sax.SAXException;
+
+import com.vividsolutions.jts.generator.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ * 
+ * NOTE: This test does require a precision to be used during the comparison, 
+ * as points are rounded somewhat when creating the oracle struct. 
+ * (One less decimal than a java double).
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticLineStringTest extends WritingTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticLineStringTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single line string
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleLineStringRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		LineStringGenerator pg = new LineStringGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberPoints(10);
+		
+		LineString pt = (LineString) pg.create();
+		
+		GMLWriter out = new GMLWriter();
+		out.setPrefix("");
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		LineString pt2 = (LineString) in.read(getReader(),geometryFactory);
+		
+//		System.out.println(pt);
+//		System.out.println(pt2);
+		assertTrue("The input LineString is not the same as the output LineString",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single line string with lotsa points
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleLineStringManyPointRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		LineStringGenerator pg = new LineStringGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setGenerationAlgorithm(LineStringGenerator.HORZ);
+		pg.setNumberPoints(1000);
+		
+		LineString pt = (LineString) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix("");
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		LineString pt2 = (LineString) in.read(getReader(),geometryFactory);
+
+		assertTrue("The input LineString is not the same as the output LineString",pt.equals(pt2));
+	}
+}
+
diff --git a/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiLineStringTest.java b/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiLineStringTest.java
new file mode 100644
index 0000000..fc07a19
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiLineStringTest.java
@@ -0,0 +1,128 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.xml.sax.SAXException;
+
+import com.vividsolutions.jts.generator.LineStringGenerator;
+import com.vividsolutions.jts.generator.MultiGenerator;
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.MultiLineString;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ * 
+ * NOTE: This test does require a precision to be used during the comparison, 
+ * as points are rounded somewhat when creating the oracle struct. 
+ * (One less decimal than a java double).
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticMultiLineStringTest extends WritingTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticMultiLineStringTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single line string
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleMultiLineStringRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		LineStringGenerator pgc = new LineStringGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(10);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiLineString pt = (MultiLineString) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		MultiLineString pt2 = (MultiLineString) in.read(getReader(),geometryFactory);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiLineString is not the same as the output MultiLineString",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single line string with lotsa points
+	 * @throws IOException 
+	 * @throws ParserConfigurationException 
+	 * @throws SAXException 
+	 */
+	public void testSingleMultiLineStringManyPointRoundTrip() throws IOException, SAXException, ParserConfigurationException{
+
+		LineStringGenerator pgc = new LineStringGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(1000);
+		pgc.setGenerationAlgorithm(LineStringGenerator.HORZ);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiLineString pt = (MultiLineString) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		MultiLineString pt2 = (MultiLineString) in.read(getReader(),geometryFactory);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiLineString is not the same as the output MultiLineString",pt.equals(pt2));
+	}
+}
diff --git a/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiPointTest.java b/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiPointTest.java
new file mode 100644
index 0000000..1beabc7
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiPointTest.java
@@ -0,0 +1,90 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.xml.sax.SAXException;
+
+import com.vividsolutions.jts.generator.MultiGenerator;
+import com.vividsolutions.jts.generator.PointGenerator;
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.MultiPoint;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticMultiPointTest extends WritingTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticMultiPointTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single MultiPoint
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleMultiPointRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		PointGenerator pgc = new PointGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPoint pt = (MultiPoint) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		MultiPoint pt2 = (MultiPoint) in.read(getReader(),geometryFactory);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPoint is not the same as the output MultiPoint",pt.equals(pt2));
+	}
+}
diff --git a/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiPolygonTest.java b/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiPolygonTest.java
new file mode 100644
index 0000000..2c77d92
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/io/gml2/StaticMultiPolygonTest.java
@@ -0,0 +1,226 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.xml.sax.SAXException;
+
+import com.vividsolutions.jts.generator.MultiGenerator;
+import com.vividsolutions.jts.generator.PolygonGenerator;
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.MultiPolygon;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ * 
+ * NOTE: This test does require a precision to be used during the comparison, 
+ * as points are rounded somewhat when creating the oracle struct. 
+ * (One less decimal than a java double).
+ * 
+ * NOTE: The points may be re-ordered during these tests. 
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticMultiPolygonTest extends WritingTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticMultiPolygonTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleMultiPolygonNoHoleRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(10);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		MultiPolygon pt2 = (MultiPolygon) in.read(getReader(),geometryFactory);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon with lotsa points
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleMultiPolygonManyPointsNoHoleRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(1000);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		MultiPolygon pt2 = (MultiPolygon) in.read(getReader(),geometryFactory);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleMultiPolygonHolesRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(10);
+		pgc.setNumberHoles(4);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		MultiPolygon pt2 = (MultiPolygon) in.read(getReader(),geometryFactory);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon with lotsa points
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleMultiPolygonManyPointsHolesRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(1000);
+		pgc.setNumberHoles(4);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		MultiPolygon pt2 = (MultiPolygon) in.read(getReader(),geometryFactory);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon with lotsa points
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSingleMultiPolygonManyPointsManyHolesRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(100);
+		pgc.setNumberHoles(100);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		MultiPolygon pt2 = (MultiPolygon) in.read(getReader(),geometryFactory);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+}
diff --git a/jtsio/test/com/vividsolutions/jts/io/gml2/StaticPointTest.java b/jtsio/test/com/vividsolutions/jts/io/gml2/StaticPointTest.java
new file mode 100644
index 0000000..1759b5a
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/io/gml2/StaticPointTest.java
@@ -0,0 +1,86 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.xml.sax.SAXException;
+
+import com.vividsolutions.jts.generator.PointGenerator;
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.Point;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticPointTest extends WritingTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticPointTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single point
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSinglePointRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		PointGenerator pg = new PointGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		
+		Point pt = (Point) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix(null);
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		Point pt2 = (Point) in.read(getReader(),geometryFactory);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input Point is not the same as the output Point",pt.equals(pt2));
+	}
+}
diff --git a/jtsio/test/com/vividsolutions/jts/io/gml2/StaticPolygonTest.java b/jtsio/test/com/vividsolutions/jts/io/gml2/StaticPolygonTest.java
new file mode 100644
index 0000000..c1cd3da
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/io/gml2/StaticPolygonTest.java
@@ -0,0 +1,195 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.xml.sax.SAXException;
+
+import com.vividsolutions.jts.generator.PolygonGenerator;
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.Polygon;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ * 
+ * NOTE: This test does require a precision to be used during the comparison, 
+ * as points are rounded somewhat when creating the oracle struct. 
+ * (One less decimal than a java double).
+ * 
+ * NOTE: The points may be re-ordered during these tests. 
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticPolygonTest extends WritingTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticPolygonTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single polygon
+	 * @throws IOException 
+	 * @throws ParserConfigurationException 
+	 * @throws SAXException 
+	 */
+	public void testSinglePolygonNoHoleRoundTrip() throws IOException, SAXException, ParserConfigurationException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberPoints(10);
+		
+		Polygon pt = (Polygon) pg.create();
+		
+		GMLWriter out = new GMLWriter();
+		out.setPrefix("");
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		Polygon pt2 = (Polygon) in.read(getReader(),geometryFactory);
+		
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single polygon with lotsa points
+	 * @throws IOException 
+	 * @throws ParserConfigurationException 
+	 * @throws SAXException 
+	 */
+	public void testSinglePolygonManyPointsNoHoleRoundTrip() throws IOException, SAXException, ParserConfigurationException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pg.setNumberPoints(1000);
+		
+		Polygon pt = (Polygon) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix("");
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		Polygon pt2 = (Polygon) in.read(getReader(),geometryFactory);
+
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single polygon
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSinglePolygonHolesRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberPoints(10);
+		pg.setNumberHoles(4);
+		
+		Polygon pt = (Polygon) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix("");
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		Polygon pt2 = (Polygon) in.read(getReader(),geometryFactory);
+		
+//		System.out.println(pt);
+//		System.out.println(pt2);
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single polygon with lotsa points
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSinglePolygonManyPointsHolesRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pg.setNumberPoints(1000);
+		pg.setNumberHoles(4);
+		
+		Polygon pt = (Polygon) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix("");
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		Polygon pt2 = (Polygon) in.read(getReader(),geometryFactory);
+
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single polygon with lotsa points
+	 * @throws ParserConfigurationException 
+	 * @throws IOException 
+	 * @throws SAXException 
+	 */
+	public void testSinglePolygonManyPointsManyHolesRoundTrip() throws SAXException, IOException, ParserConfigurationException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pg.setNumberPoints(100);
+		pg.setNumberHoles(100);
+		
+		Polygon pt = (Polygon) pg.create();
+
+		GMLWriter out = new GMLWriter();
+		out.setPrefix("");
+		out.write(pt,getWriter());
+		
+		GMLReader in = new GMLReader();
+		Polygon pt2 = (Polygon) in.read(getReader(),geometryFactory);
+
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+}
diff --git a/src/com/vividsolutions/jts/io/ByteArrayInStream.java b/jtsio/test/com/vividsolutions/jts/io/gml2/WritingTestCase.java
similarity index 54%
copy from src/com/vividsolutions/jts/io/ByteArrayInStream.java
copy to jtsio/test/com/vividsolutions/jts/io/gml2/WritingTestCase.java
index f34ba75..b3f54fa 100644
--- a/src/com/vividsolutions/jts/io/ByteArrayInStream.java
+++ b/jtsio/test/com/vividsolutions/jts/io/gml2/WritingTestCase.java
@@ -30,36 +30,48 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.io;
+package com.vividsolutions.jts.io.gml2;
 
 import java.io.*;
 
-/**
- * Allows an array of bytes to be used as an {@link InStream}.
- * To optimize memory usage, instances can be reused
- * with different byte arrays.
- */
-public class ByteArrayInStream
-	implements InStream
-{
-  private byte[] byteBuffer;
-  private ByteArrayInputStream bis;
+import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.PrecisionModel;
 
-  public ByteArrayInStream(byte[] byteBuffer)
-  {
-    setBuffer(byteBuffer);
-  }
+import junit.framework.TestCase;
 
-  public void setBuffer(byte[] byteBuffer)
-  {
-    this.byteBuffer = byteBuffer;
-    // for now - could be replaced with optimized custom code
-    bis = new ByteArrayInputStream(byteBuffer);
-  }
+/**
+ * 
+ * Abstract Test Case. Intended to provide some IO operations for the middle of a test.
+ * 
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class WritingTestCase extends TestCase {
+	
+	/**
+	 * @param arg
+	 */
+	public WritingTestCase(String arg){
+		super(arg);
+	}
+	
+	protected StringWriter sw = null;
+	protected Writer getWriter(){
+		sw = new StringWriter();
+		sw.write("<?xml version='1.0' encoding='UTF-8'?>\n");
+		return sw;
+	}
+	protected Reader getReader() throws IOException{
+		sw.flush();
+		sw.close();
+		String s = sw.toString();
+		
+//		System.out.println(s);
+		
+		return new StringReader(s);
+	}
+	
+	protected static PrecisionModel precisionModel = new PrecisionModel(1000);
+	protected static GeometryFactory geometryFactory = new GeometryFactory(precisionModel);
 
-  public void read(byte[] buf)
-  throws IOException
-  {
-    bis.read(buf);
-  }
 }
diff --git a/jtsio/test/com/vividsolutions/jts/io/gml2/geometry.xsd b/jtsio/test/com/vividsolutions/jts/io/gml2/geometry.xsd
new file mode 100644
index 0000000..4a857a8
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/io/gml2/geometry.xsd
@@ -0,0 +1,349 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema targetNamespace="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="2.1.2">
+  <annotation>
+    <appinfo>geometry.xsd v2.1.2 2002-07</appinfo>
+    <documentation xml:lang="en">
+      GML Geometry schema. Copyright (c) 2001,2002 OGC, All Rights Reserved.
+    </documentation>
+  </annotation>
+  <!-- bring in the XLink attributes -->
+  <import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlinks.xsd"/>
+  <!-- ==============================================================
+       global declarations
+  =================================================================== -->
+  <element name="_Geometry" type="gml:AbstractGeometryType" abstract="true"/>
+  <element name="_GeometryCollection" type="gml:GeometryCollectionType" abstract="true" substitutionGroup="gml:_Geometry"/>
+  <element name="geometryMember" type="gml:GeometryAssociationType"/>
+  <element name="pointMember" type="gml:PointMemberType" substitutionGroup="gml:geometryMember"/>
+  <element name="lineStringMember" type="gml:LineStringMemberType" substitutionGroup="gml:geometryMember"/>
+  <element name="polygonMember" type="gml:PolygonMemberType" substitutionGroup="gml:geometryMember"/>
+  <element name="outerBoundaryIs" type="gml:LinearRingMemberType"/>
+  <element name="innerBoundaryIs" type="gml:LinearRingMemberType"/>
+  <!-- primitive geometry elements -->
+  <element name="Point" type="gml:PointType" substitutionGroup="gml:_Geometry"/>
+  <element name="LineString" type="gml:LineStringType" substitutionGroup="gml:_Geometry"/>
+  <element name="LinearRing" type="gml:LinearRingType" substitutionGroup="gml:_Geometry"/>
+  <element name="Polygon" type="gml:PolygonType" substitutionGroup="gml:_Geometry"/>
+  <element name="Box" type="gml:BoxType"/>
+  <!-- aggregate geometry elements -->
+  <element name="MultiGeometry" type="gml:GeometryCollectionType" substitutionGroup="gml:_Geometry"/>
+  <element name="MultiPoint" type="gml:MultiPointType" substitutionGroup="gml:_Geometry"/>
+  <element name="MultiLineString" type="gml:MultiLineStringType" substitutionGroup="gml:_Geometry"/>
+  <element name="MultiPolygon" type="gml:MultiPolygonType" substitutionGroup="gml:_Geometry"/>
+  <!-- coordinate elements -->
+  <element name="coord" type="gml:CoordType"/>
+  <element name="coordinates" type="gml:CoordinatesType"/>
+  <!-- this attribute gives the location where an element is defined -->
+  <attribute name="remoteSchema" type="anyURI"/>
+  <!-- ==============================================================
+       abstract supertypes
+  =================================================================== -->
+  <complexType name="AbstractGeometryType" abstract="true">
+    <annotation>
+      <documentation>
+        All geometry elements are derived from this abstract supertype; 
+        a geometry element may have an identifying attribute (gid). 
+        It may be associated with a spatial reference system.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="anyType">
+        <attribute name="gid" type="ID" use="optional"/>
+        <attribute name="srsName" type="anyURI" use="optional"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <complexType name="AbstractGeometryCollectionBaseType" abstract="true">
+    <annotation>
+      <documentation>
+        This abstract base type for geometry collections just makes the 
+        srsName attribute mandatory.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="gml:AbstractGeometryType">
+        <attribute name="gid" type="ID" use="optional"/>
+        <attribute name="srsName" type="anyURI" use="required"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <attributeGroup name="AssociationAttributeGroup">
+    <annotation>
+      <documentation>
+        These attributes can be attached to any element, thus allowing it 
+        to act as a pointer. The 'remoteSchema' attribute allows an element 
+        that carries link attributes to indicate that the element is declared 
+        in a remote schema rather than by the schema that constrains the 
+        current document instance.  
+      </documentation>
+    </annotation>
+    <attributeGroup ref="xlink:simpleLink"/>
+    <attribute ref="gml:remoteSchema" use="optional"/>
+  </attributeGroup>
+  <complexType name="GeometryAssociationType">
+    <annotation>
+      <documentation>
+        An instance of this type (e.g. a geometryMember) can either 
+        enclose or point to a primitive geometry element. When serving 
+        as a simple link that references a remote geometry instance, 
+        the value of the gml:remoteSchema attribute can be used to 
+        locate a schema fragment that constrains the target instance.
+      </documentation>
+    </annotation>
+    <sequence minOccurs="0">
+      <element ref="gml:_Geometry"/>
+    </sequence>
+    <!-- <attributeGroup ref="gml:AssociationAttributeGroup"/> -->
+    <attributeGroup ref="xlink:simpleLink"/>
+    <attribute ref="gml:remoteSchema" use="optional"/>
+  </complexType>
+  <complexType name="PointMemberType">
+    <annotation>
+      <documentation>Restricts the geometry member to being a Point instance.</documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="gml:GeometryAssociationType">
+        <sequence minOccurs="0">
+          <element ref="gml:Point"/>
+        </sequence>
+        <attributeGroup ref="gml:AssociationAttributeGroup"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <complexType name="LineStringMemberType">
+    <annotation>
+      <documentation>Restricts the geometry member to being a LineString instance.</documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="gml:GeometryAssociationType">
+        <sequence minOccurs="0">
+          <element ref="gml:LineString"/>
+        </sequence>
+        <attributeGroup ref="gml:AssociationAttributeGroup"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <complexType name="PolygonMemberType">
+    <annotation>
+      <documentation>Restricts the geometry member to being a Polygon instance.</documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="gml:GeometryAssociationType">
+        <sequence minOccurs="0">
+          <element ref="gml:Polygon"/>
+        </sequence>
+        <attributeGroup ref="gml:AssociationAttributeGroup"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <complexType name="LinearRingMemberType">
+    <annotation>
+      <documentation>Restricts the outer or inner boundary of a polygon instance 
+			to being a LinearRing.</documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="gml:GeometryAssociationType">
+        <sequence minOccurs="0">
+          <element ref="gml:LinearRing"/>
+        </sequence>
+        <attributeGroup ref="gml:AssociationAttributeGroup"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <!-- ==============================================================
+       primitive geometry types
+  =================================================================== -->
+  <complexType name="PointType">
+    <annotation>
+      <documentation>
+        A Point is defined by a single coordinate tuple.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <extension base="gml:AbstractGeometryType">
+        <sequence>
+          <choice>
+            <element ref="gml:coord"/>
+            <element ref="gml:coordinates"/>
+          </choice>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="LineStringType">
+    <annotation>
+      <documentation>
+        A LineString is defined by two or more coordinate tuples, with 
+        linear interpolation between them. 
+      </documentation>
+    </annotation>
+    <complexContent>
+      <extension base="gml:AbstractGeometryType">
+        <sequence>
+          <choice>
+            <element ref="gml:coord" minOccurs="2" maxOccurs="unbounded"/>
+            <element ref="gml:coordinates"/>
+          </choice>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="LinearRingType">
+    <annotation>
+      <documentation>
+        A LinearRing is defined by four or more coordinate tuples, with 
+        linear interpolation between them; the first and last coordinates 
+        must be coincident.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <extension base="gml:AbstractGeometryType">
+        <sequence>
+          <choice>
+            <element ref="gml:coord" minOccurs="4" maxOccurs="unbounded"/>
+            <element ref="gml:coordinates"/>
+          </choice>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="BoxType">
+    <annotation>
+      <documentation>
+        The Box structure defines an extent using a pair of coordinate tuples.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <extension base="gml:AbstractGeometryType">
+        <sequence>
+          <choice>
+            <element ref="gml:coord" minOccurs="2" maxOccurs="2"/>
+            <element ref="gml:coordinates"/>
+          </choice>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="PolygonType">
+    <annotation>
+      <documentation>
+        A Polygon is defined by an outer boundary and zero or more inner 
+        boundaries which are in turn defined by LinearRings.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <extension base="gml:AbstractGeometryType">
+        <sequence>
+          <element ref="gml:outerBoundaryIs"/>
+          <element ref="gml:innerBoundaryIs" minOccurs="0" maxOccurs="unbounded"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <!-- ==============================================================
+       aggregate geometry types
+  =================================================================== -->
+  <complexType name="GeometryCollectionType">
+    <annotation>
+      <documentation>
+        A geometry collection must include one or more geometries, referenced 
+        through geometryMember elements. User-defined geometry collections 
+        that accept GML geometry classes as members must instantiate--or 
+        derive from--this type.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <extension base="gml:AbstractGeometryCollectionBaseType">
+        <sequence>
+          <element ref="gml:geometryMember" maxOccurs="unbounded"/>
+        </sequence>
+      </extension>
+    </complexContent>
+  </complexType>
+  <complexType name="MultiPointType">
+    <annotation>
+      <documentation>
+        A MultiPoint is defined by one or more Points, referenced through 
+        pointMember elements.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="gml:GeometryCollectionType">
+        <sequence>
+          <element ref="gml:pointMember" maxOccurs="unbounded"/>
+        </sequence>
+        <attribute name="gid" type="ID" use="optional"/>
+        <attribute name="srsName" type="anyURI" use="required"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <complexType name="MultiLineStringType">
+    <annotation>
+      <documentation>
+        A MultiLineString is defined by one or more LineStrings, referenced 
+        through lineStringMember elements.
+      </documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="gml:GeometryCollectionType">
+        <sequence>
+          <element ref="gml:lineStringMember" maxOccurs="unbounded"/>
+        </sequence>
+        <attribute name="gid" type="ID" use="optional"/>
+        <attribute name="srsName" type="anyURI" use="required"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <complexType name="MultiPolygonType">
+    <annotation>
+      <documentation>
+        A MultiPolygon is defined by one or more Polygons, referenced through 
+        polygonMember elements. 
+      </documentation>
+    </annotation>
+    <complexContent>
+      <restriction base="gml:GeometryCollectionType">
+        <sequence>
+          <element ref="gml:polygonMember" maxOccurs="unbounded"/>
+        </sequence>
+        <attribute name="gid" type="ID" use="optional"/>
+        <attribute name="srsName" type="anyURI" use="required"/>
+      </restriction>
+    </complexContent>
+  </complexType>
+  <!-- ==============================================================
+       There are two ways to represent coordinates: (1) as a sequence 
+       of <coord> elements that encapsulate tuples, or (2) using a 
+       single <coordinates> string.
+  =================================================================== -->
+  <complexType name="CoordType">
+    <annotation>
+      <documentation>
+        Represents a coordinate tuple in one, two, or three dimensions.
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="X" type="decimal"/>
+      <element name="Y" type="decimal" minOccurs="0"/>
+      <element name="Z" type="decimal" minOccurs="0"/>
+    </sequence>
+  </complexType>
+  <complexType name="CoordinatesType">
+    <annotation>
+      <documentation>
+        Coordinates can be included in a single string, but there is no 
+        facility for validating string content. The value of the 'cs' attribute 
+        is the separator for coordinate values, and the value of the 'ts' 
+        attribute gives the tuple separator (a single space by default); the 
+        default values may be changed to reflect local usage.
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="string">
+        <attribute name="decimal" type="string" use="optional" default="."/>
+        <attribute name="cs" type="string" use="optional" default=","/>
+        <attribute name="ts" type="string" use="optional" default="&#x20;"/>
+      </extension>
+    </simpleContent>
+  </complexType>
+</schema>
diff --git a/jtsio/test/com/vividsolutions/jts/io/oracle/ConnectedTestCase.java b/jtsio/test/com/vividsolutions/jts/io/oracle/ConnectedTestCase.java
new file mode 100644
index 0000000..bc6d6a9
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/io/oracle/ConnectedTestCase.java
@@ -0,0 +1,120 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.net.URL;
+import java.sql.*;
+import java.util.Properties;
+
+import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.PrecisionModel;
+
+import oracle.jdbc.OracleConnection;
+import junit.framework.TestCase;
+
+/**
+ * 
+ * Abstract Test Case. Intended to provide a connection with which test may be performed.
+ * 
+ * Sub-classes should not assume that either the connection will always exist, or 
+ * the connection has the required permissions.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class ConnectedTestCase extends TestCase {
+	
+	/**
+	 * @param arg
+	 */
+	public ConnectedTestCase(String arg){
+		super(arg);
+	}
+	
+	private OracleConnection connection = null;
+	
+	/**
+	 * Sub-classes should not assume that either the connection will always exist, or 
+	 * the connection has the required permissions.
+	 * 
+	 * @return OracleConnection
+	 */
+	protected OracleConnection getConnection(){
+		return connection;
+	}
+
+	/**
+	 * @see junit.framework.TestCase#setUp()
+	 */
+	protected void setUp() throws Exception {
+		super.setUp();
+		
+		Properties props = new Properties();
+		URL path = ClassLoader.getSystemResource("com/vividsolutions/jts/io/oracle/connection.properties");
+		props.load(path.openStream());
+		
+		connection = getOracleConnection(props.getProperty("test.server"),props.getProperty("test.port"),
+				props.getProperty("test.sid"),props.getProperty("test.user"),props.getProperty("test.pwd"));
+	}
+
+    private static OracleConnection getOracleConnection(String server, String port, String sid, String userid, String pwd) throws SQLException {
+        String url       = "jdbc:oracle:thin:@"+server+":"+port+":"+sid;
+        return (OracleConnection)openConnection( "oracle.jdbc.driver.OracleDriver", url, userid, pwd );
+    }
+
+
+
+    private static Connection openConnection( String driver, String url, String uid, String pwd ) throws SQLException {
+
+        Connection conn  = null;
+        try {
+            Class.forName( driver );
+        } catch ( java.lang.ClassNotFoundException e ) {
+            fail( e.getMessage() );
+        }
+        conn = DriverManager.getConnection( url, uid, pwd );
+        return conn;
+    }
+
+	/**
+	 * @see junit.framework.TestCase#tearDown()
+	 */
+	protected void tearDown() throws Exception {
+		super.tearDown();
+		if(connection != null && !connection.isClosed())
+			connection.close();
+	}
+	
+	protected static PrecisionModel precisionModel = new PrecisionModel(1000);
+	protected static GeometryFactory geometryFactory = new GeometryFactory(precisionModel);
+
+}
diff --git a/jtsio/test/com/vividsolutions/jts/io/oracle/StaticLineStringTest.java b/jtsio/test/com/vividsolutions/jts/io/oracle/StaticLineStringTest.java
new file mode 100644
index 0000000..b623989
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/io/oracle/StaticLineStringTest.java
@@ -0,0 +1,190 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.sql.SQLException;
+
+import oracle.sql.STRUCT;
+
+import com.vividsolutions.jts.generator.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ * 
+ * NOTE: This test does require a precision to be used during the comparison, 
+ * as points are rounded somewhat when creating the oracle struct. 
+ * (One less decimal than a java double).
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticLineStringTest extends ConnectedTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticLineStringTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single line string
+	 * @throws SQLException 
+	 */
+	public void testSingleLineStringRoundTrip() throws SQLException{
+		LineStringGenerator pg = new LineStringGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberPoints(10);
+		
+		LineString pt = (LineString) pg.create();
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		LineString pt2 = (LineString) or.read(st);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input LineString is not the same as the output LineString",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a 100 non overlapping line strings
+	 * @throws SQLException 
+	 */
+	public void testGridLineStringsRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(10);
+		grid.setNumberRows(10);
+		
+		LineString[] pt = new LineString[100];
+		STRUCT[] st = new STRUCT[100];
+
+		LineStringGenerator pg = new LineStringGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setNumberPoints(10);
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<100){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (LineString) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<100 && pt[i] != null){
+			LineString pt2 = (LineString) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input LineString is not the same as the output LineString",pt[i].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a 8 overlapping line strings (4 distinct line strings)
+	 * @throws SQLException 
+	 */
+	public void testOverlappingLineStringsRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(2);
+		grid.setNumberRows(2);
+		
+		LineString[] pt = new LineString[4];
+		STRUCT[] st = new STRUCT[8];
+
+		LineStringGenerator pg = new LineStringGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setNumberPoints(10);
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<8){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (LineString) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		for(int j=0;j<4;j++){
+			if(pt[j]!=null)
+				st[i++] = ow.write(pt[j]);
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<8 && pt[i%4] != null){
+			LineString pt2 = (LineString) or.read(st[i]);
+//			System.out.println((pt==null?"NULL":pt[i%4].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input LineString is not the same as the output LineString",pt[i%4].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a single line string with lotsa points
+	 * @throws SQLException 
+	 */
+	public void testSingleLineStringManyPointRoundTrip() throws SQLException{
+		LineStringGenerator pg = new LineStringGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setGenerationAlgorithm(LineStringGenerator.HORZ);
+		pg.setNumberPoints(1000);
+		
+		LineString pt = (LineString) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		LineString pt2 = (LineString) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input LineString is not the same as the output LineString",pt.equals(pt2));
+	}
+}
diff --git a/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiLineStringTest.java b/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiLineStringTest.java
new file mode 100644
index 0000000..74b674a
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiLineStringTest.java
@@ -0,0 +1,207 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.sql.SQLException;
+
+import oracle.sql.STRUCT;
+
+import com.vividsolutions.jts.generator.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ * 
+ * NOTE: This test does require a precision to be used during the comparison, 
+ * as points are rounded somewhat when creating the oracle struct. 
+ * (One less decimal than a java double).
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticMultiLineStringTest extends ConnectedTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticMultiLineStringTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single line string
+	 * @throws SQLException 
+	 */
+	public void testSingleMultiLineStringRoundTrip() throws SQLException{
+		LineStringGenerator pgc = new LineStringGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(10);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiLineString pt = (MultiLineString) pg.create();
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		MultiLineString pt2 = (MultiLineString) or.read(st);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiLineString is not the same as the output MultiLineString",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a 100 non overlapping line strings
+	 * @throws SQLException 
+	 */
+	public void testGridMultiLineStringsRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(10);
+		grid.setNumberRows(10);
+		
+		MultiLineString[] pt = new MultiLineString[100];
+		STRUCT[] st = new STRUCT[100];
+
+		LineStringGenerator pgc = new LineStringGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(10);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<100){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (MultiLineString) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<100 && pt[i] != null){
+			MultiLineString pt2 = (MultiLineString) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input MultiLineString is not the same as the output MultiLineString",pt[i].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a 8 overlapping line strings (4 distinct line strings)
+	 * @throws SQLException 
+	 */
+	public void testOverlappingMultiLineStringsRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(2);
+		grid.setNumberRows(2);
+		
+		MultiLineString[] pt = new MultiLineString[4];
+		STRUCT[] st = new STRUCT[8];
+
+		LineStringGenerator pgc = new LineStringGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(10);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<8){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (MultiLineString) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		for(int j=0;j<4;j++){
+			if(pt[j]!=null)
+				st[i++] = ow.write(pt[j]);
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<8 && pt[i%4] != null){
+			MultiLineString pt2 = (MultiLineString) or.read(st[i]);
+//			System.out.println((pt==null?"NULL":pt[i%4].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input MultiLineString is not the same as the output MultiLineString",pt[i%4].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a single line string with lotsa points
+	 * @throws SQLException 
+	 */
+	public void testSingleMultiLineStringManyPointRoundTrip() throws SQLException{
+
+		LineStringGenerator pgc = new LineStringGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(1000);
+		pgc.setGenerationAlgorithm(LineStringGenerator.HORZ);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiLineString pt = (MultiLineString) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		MultiLineString pt2 = (MultiLineString) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiLineString is not the same as the output MultiLineString",pt.equals(pt2));
+	}
+}
diff --git a/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiPointTest.java b/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiPointTest.java
new file mode 100644
index 0000000..6ca04f0
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiPointTest.java
@@ -0,0 +1,171 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.sql.SQLException;
+
+import oracle.sql.STRUCT;
+
+import com.vividsolutions.jts.generator.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticMultiPointTest extends ConnectedTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticMultiPointTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single MultiPoint
+	 * @throws SQLException 
+	 */
+	public void testSingleMultiPointRoundTrip() throws SQLException{
+		PointGenerator pgc = new PointGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPoint pt = (MultiPoint) pg.create();
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		MultiPoint pt2 = (MultiPoint) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPoint is not the same as the output MultiPoint",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a 100 non overlapping MultiPoints
+	 * @throws SQLException 
+	 */
+	public void testGridMultiPointsRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(10);
+		grid.setNumberRows(10);
+		
+		MultiPoint[] pt = new MultiPoint[100];
+		STRUCT[] st = new STRUCT[100];
+
+		PointGenerator pgc = new PointGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<100){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (MultiPoint) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<100 && pt[i] != null){
+			MultiPoint pt2 = (MultiPoint) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input MultiPoint is not the same as the output MultiPoint",pt[i].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a 8 overlapping MultiPoints (4 distinct MultiPoints)
+	 * @throws SQLException 
+	 */
+	public void testOverlappingMultiPointsRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(2);
+		grid.setNumberRows(2);
+		
+		MultiPoint[] pt = new MultiPoint[4];
+		STRUCT[] st = new STRUCT[8];
+
+		PointGenerator pgc = new PointGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<8){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (MultiPoint) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		for(int j=0;j<4;j++){
+			if(pt[j]!=null)
+				st[i++] = ow.write(pt[j]);
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<8 && pt[i%4] != null){
+			MultiPoint pt2 = (MultiPoint) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input MultiPoint is not the same as the output MultiPoint",pt[i%4].equals(pt2));
+			i++;
+		}
+	}
+}
diff --git a/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiPolygonTest.java b/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiPolygonTest.java
new file mode 100644
index 0000000..b503c27
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/io/oracle/StaticMultiPolygonTest.java
@@ -0,0 +1,394 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.sql.SQLException;
+
+import oracle.sql.STRUCT;
+
+import com.vividsolutions.jts.generator.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ * 
+ * NOTE: This test does require a precision to be used during the comparison, 
+ * as points are rounded somewhat when creating the oracle struct. 
+ * (One less decimal than a java double).
+ * 
+ * NOTE: The points may be re-ordered during these tests. 
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticMultiPolygonTest extends ConnectedTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticMultiPolygonTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon
+	 * @throws SQLException 
+	 */
+	public void testSingleMultiPolygonNoHoleRoundTrip() throws SQLException{
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(10);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		MultiPolygon pt2 = (MultiPolygon) or.read(st);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a 100 non overlapping MultiPolygon
+	 * @throws SQLException 
+	 */
+	public void testGridMultiPolygonsNoHoleRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(10);
+		grid.setNumberRows(10);
+		
+		MultiPolygon[] pt = new MultiPolygon[100];
+		STRUCT[] st = new STRUCT[100];
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(10);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<100){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (MultiPolygon) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<100 && pt[i] != null){
+			MultiPolygon pt2 = (MultiPolygon) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt[i].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a 8 overlapping line MultiPolygons (4 distinct MultiPolygons)
+	 * @throws SQLException 
+	 */
+	public void testOverlappingMultiPolygonsNoHoleRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(2);
+		grid.setNumberRows(2);
+		
+		MultiPolygon[] pt = new MultiPolygon[4];
+		STRUCT[] st = new STRUCT[8];
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setNumberPoints(10);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<8){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (MultiPolygon) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		for(int j=0;j<4;j++){
+			if(pt[j]!=null)
+				st[i++] = ow.write(pt[j]);
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<8 && pt[i%4] != null){
+			MultiPolygon pt2 = (MultiPolygon) or.read(st[i]);
+//			System.out.println((pt==null?"NULL":pt[i%4].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt[i%4].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon with lotsa points
+	 * @throws SQLException 
+	 */
+	public void testSingleMultiPolygonManyPointsNoHoleRoundTrip() throws SQLException{
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(1000);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		MultiPolygon pt2 = (MultiPolygon) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon
+	 * @throws SQLException 
+	 */
+	public void testSingleMultiPolygonHolesRoundTrip() throws SQLException{
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(10);
+		pgc.setNumberHoles(4);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		MultiPolygon pt2 = (MultiPolygon) or.read(st);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a 100 non overlapping MultiPolygon
+	 * @throws SQLException 
+	 */
+	public void testGridMultiPolygonsHolesRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(10);
+		grid.setNumberRows(10);
+		
+		MultiPolygon[] pt = new MultiPolygon[100];
+		STRUCT[] st = new STRUCT[100];
+
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(10);
+		pgc.setNumberHoles(4);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<100){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (MultiPolygon) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<100 && pt[i] != null){
+			MultiPolygon pt2 = (MultiPolygon) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt[i].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a 8 overlapping line MultiPolygons (4 distinct MultiPolygons)
+	 * @throws SQLException 
+	 */
+	public void testOverlappingMultiPolygonsHolesRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(2);
+		grid.setNumberRows(2);
+		
+		MultiPolygon[] pt = new MultiPolygon[4];
+		STRUCT[] st = new STRUCT[8];
+
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(10);
+		pgc.setNumberHoles(4);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<8){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (MultiPolygon) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		for(int j=0;j<4;j++){
+			if(pt[j]!=null)
+				st[i++] = ow.write(pt[j]);
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<8 && pt[i%4] != null){
+			MultiPolygon pt2 = (MultiPolygon) or.read(st[i]);
+//			System.out.println((pt==null?"NULL":pt[i%4].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt[i%4].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon with lotsa points
+	 * @throws SQLException 
+	 */
+	public void testSingleMultiPolygonManyPointsHolesRoundTrip() throws SQLException{
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(1000);
+		pgc.setNumberHoles(4);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		MultiPolygon pt2 = (MultiPolygon) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single MultiPolygon with lotsa points
+	 * @throws SQLException 
+	 */
+	public void testSingleMultiPolygonManyPointsManyHolesRoundTrip() throws SQLException{
+
+		PolygonGenerator pgc = new PolygonGenerator();
+		pgc.setGeometryFactory(geometryFactory);
+		pgc.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pgc.setNumberPoints(100);
+		pgc.setNumberHoles(100);
+		MultiGenerator pg = new MultiGenerator(pgc);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberGeometries(3);
+		pg.setGeometryFactory(geometryFactory);
+		
+		MultiPolygon pt = (MultiPolygon) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		MultiPolygon pt2 = (MultiPolygon) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input MultiPolygon is not the same as the output MultiPolygon",pt.equals(pt2));
+	}
+}
diff --git a/jtsio/test/com/vividsolutions/jts/io/oracle/StaticPointTest.java b/jtsio/test/com/vividsolutions/jts/io/oracle/StaticPointTest.java
new file mode 100644
index 0000000..4198784
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/io/oracle/StaticPointTest.java
@@ -0,0 +1,159 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.sql.SQLException;
+
+import oracle.sql.STRUCT;
+
+import com.vividsolutions.jts.generator.GridGenerator;
+import com.vividsolutions.jts.generator.PointGenerator;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticPointTest extends ConnectedTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticPointTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single point
+	 * @throws SQLException 
+	 */
+	public void testSinglePointRoundTrip() throws SQLException{
+		PointGenerator pg = new PointGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		
+		Point pt = (Point) pg.create();
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		Point pt2 = (Point) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input Point is not the same as the output Point",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a 100 non overlapping points
+	 * @throws SQLException 
+	 */
+	public void testGridPointsRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(10);
+		grid.setNumberRows(10);
+		
+		Point[] pt = new Point[100];
+		STRUCT[] st = new STRUCT[100];
+
+		PointGenerator pg = new PointGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<100){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (Point) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<100 && pt[i] != null){
+			Point pt2 = (Point) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input Point is not the same as the output Point",pt[i].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a 8 overlapping points (4 distinct points)
+	 * @throws SQLException 
+	 */
+	public void testOverlappingPointsRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(2);
+		grid.setNumberRows(2);
+		
+		Point[] pt = new Point[4];
+		STRUCT[] st = new STRUCT[8];
+
+		PointGenerator pg = new PointGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<8){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (Point) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		for(int j=0;j<4;j++){
+			if(pt[j]!=null)
+				st[i++] = ow.write(pt[j]);
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<8 && pt[i%4] != null){
+			Point pt2 = (Point) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input Point is not the same as the output Point",pt[i%4].equals(pt2));
+			i++;
+		}
+	}
+}
diff --git a/jtsio/test/com/vividsolutions/jts/io/oracle/StaticPolygonTest.java b/jtsio/test/com/vividsolutions/jts/io/oracle/StaticPolygonTest.java
new file mode 100644
index 0000000..8417209
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/io/oracle/StaticPolygonTest.java
@@ -0,0 +1,350 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.oracle;
+
+import java.sql.SQLException;
+
+import oracle.sql.STRUCT;
+
+import com.vividsolutions.jts.generator.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * 
+ * Does round trip testing by creating the oracle object, then decoding it. 
+ * 
+ * These tests do not include insert / delete / select operations.
+ * 
+ * NOTE: This test does require a precision to be used during the comparison, 
+ * as points are rounded somewhat when creating the oracle struct. 
+ * (One less decimal than a java double).
+ * 
+ * NOTE: The points may be re-ordered during these tests. 
+ *
+ * @author David Zwiers, Vivid Solutions. 
+ */
+public class StaticPolygonTest extends ConnectedTestCase {
+
+	/**
+	 * @param arg
+	 */
+	public StaticPolygonTest(String arg) {
+		super(arg);
+	}
+
+	/**
+	 * Round Trip test for a single polygon
+	 * @throws SQLException 
+	 */
+	public void testSinglePolygonNoHoleRoundTrip() throws SQLException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberPoints(10);
+		
+		Polygon pt = (Polygon) pg.create();
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		Polygon pt2 = (Polygon) or.read(st);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a 100 non overlapping polygon
+	 * @throws SQLException 
+	 */
+	public void testGridPolygonsNoHoleRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(10);
+		grid.setNumberRows(10);
+		
+		Polygon[] pt = new Polygon[100];
+		STRUCT[] st = new STRUCT[100];
+
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setNumberPoints(10);
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<100){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (Polygon) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<100 && pt[i] != null){
+			Polygon pt2 = (Polygon) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input polygon is not the same as the output polygon",pt[i].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a 8 overlapping line polygons (4 distinct polygons)
+	 * @throws SQLException 
+	 */
+	public void testOverlappingPolygonsNoHoleRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(2);
+		grid.setNumberRows(2);
+		
+		Polygon[] pt = new Polygon[4];
+		STRUCT[] st = new STRUCT[8];
+
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setNumberPoints(10);
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<8){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (Polygon) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		for(int j=0;j<4;j++){
+			if(pt[j]!=null)
+				st[i++] = ow.write(pt[j]);
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<8 && pt[i%4] != null){
+			Polygon pt2 = (Polygon) or.read(st[i]);
+//			System.out.println((pt==null?"NULL":pt[i%4].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input polygon is not the same as the output polygon",pt[i%4].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a single polygon with lotsa points
+	 * @throws SQLException 
+	 */
+	public void testSinglePolygonManyPointsNoHoleRoundTrip() throws SQLException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pg.setNumberPoints(1000);
+		
+		Polygon pt = (Polygon) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		Polygon pt2 = (Polygon) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single polygon
+	 * @throws SQLException 
+	 */
+	public void testSinglePolygonHolesRoundTrip() throws SQLException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setNumberPoints(10);
+		pg.setNumberHoles(4);
+		
+		Polygon pt = (Polygon) pg.create();
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		Polygon pt2 = (Polygon) or.read(st);
+		
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a 100 non overlapping polygon
+	 * @throws SQLException 
+	 */
+	public void testGridPolygonsHolesRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(10);
+		grid.setNumberRows(10);
+		
+		Polygon[] pt = new Polygon[100];
+		STRUCT[] st = new STRUCT[100];
+
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setNumberPoints(10);
+		pg.setNumberHoles(4);
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<100){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (Polygon) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<100 && pt[i] != null){
+			Polygon pt2 = (Polygon) or.read(st[i]);
+//			System.out.println((pt[i]==null?"NULL":pt[i].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input polygon is not the same as the output polygon",pt[i].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a 8 overlapping line polygons (4 distinct polygons)
+	 * @throws SQLException 
+	 */
+	public void testOverlappingPolygonsHolesRoundTrip() throws SQLException{
+		GridGenerator grid = new GridGenerator();
+		grid.setGeometryFactory(geometryFactory);
+		grid.setBoundingBox(new Envelope(0,10,0,10));
+		grid.setNumberColumns(2);
+		grid.setNumberRows(2);
+		
+		Polygon[] pt = new Polygon[4];
+		STRUCT[] st = new STRUCT[8];
+
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setNumberPoints(10);
+		pg.setNumberHoles(4);
+		OraWriter ow = new OraWriter(getConnection());
+		
+		int i=0;
+		while(grid.canCreate() && i<8){
+			pg.setBoundingBox(grid.createEnv());
+			pt[i] = (Polygon) pg.create();
+			st[i] = ow.write(pt[i]);
+			i++;
+		}
+		for(int j=0;j<4;j++){
+			if(pt[j]!=null)
+				st[i++] = ow.write(pt[j]);
+		}
+		
+		OraReader or = new OraReader();
+		i=0;
+		while(i<8 && pt[i%4] != null){
+			Polygon pt2 = (Polygon) or.read(st[i]);
+//			System.out.println((pt==null?"NULL":pt[i%4].toString()));
+//			System.out.println((pt2==null?"NULL":pt2.toString()));
+			assertTrue("The input polygon is not the same as the output polygon",pt[i%4].equals(pt2));
+			i++;
+		}
+	}
+
+	/**
+	 * Round Trip test for a single polygon with lotsa points
+	 * @throws SQLException 
+	 */
+	public void testSinglePolygonManyPointsHolesRoundTrip() throws SQLException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pg.setNumberPoints(1000);
+		pg.setNumberHoles(4);
+		
+		Polygon pt = (Polygon) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		Polygon pt2 = (Polygon) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+
+	/**
+	 * Round Trip test for a single polygon with lotsa points
+	 * @throws SQLException 
+	 */
+	public void testSinglePolygonManyPointsManyHolesRoundTrip() throws SQLException{
+		PolygonGenerator pg = new PolygonGenerator();
+		pg.setGeometryFactory(geometryFactory);
+		pg.setBoundingBox(new Envelope(0,10,0,10));
+		pg.setGenerationAlgorithm(PolygonGenerator.BOX);
+		pg.setNumberPoints(100);
+		pg.setNumberHoles(100);
+		
+		Polygon pt = (Polygon) pg.create();
+//		System.out.println((pt==null?"NULL":pt.toString()));
+		
+		OraWriter ow = new OraWriter(getConnection());
+		STRUCT st = ow.write(pt);
+		
+		OraReader or = new OraReader();
+		Polygon pt2 = (Polygon) or.read(st);
+
+//		System.out.println((pt==null?"NULL":pt.toString()));
+//		System.out.println((pt2==null?"NULL":pt2.toString()));
+		assertTrue("The input polygon is not the same as the output polygon",pt.equals(pt2));
+	}
+}
diff --git a/jtsio/test/com/vividsolutions/jts/io/oracle/connection.properties b/jtsio/test/com/vividsolutions/jts/io/oracle/connection.properties
new file mode 100644
index 0000000..32b0689
--- /dev/null
+++ b/jtsio/test/com/vividsolutions/jts/io/oracle/connection.properties
@@ -0,0 +1,5 @@
+test.server=Neptune
+test.port=1521
+test.sid=LRDW
+test.user=inventory
+test.pwd=password
\ No newline at end of file
diff --git a/jtsio/test/data/linestrings.xml b/jtsio/test/data/linestrings.xml
new file mode 100644
index 0000000..66dd0ce
--- /dev/null
+++ b/jtsio/test/data/linestrings.xml
@@ -0,0 +1,312 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<MultiGeometry>
+	<LineString>
+		<coordinates>24824.045318333192,38536.15071012041
+			26157.378651666528,37567.42733944659 26666.666666666668,36000.0
+			26157.378651666528,34432.57266055341
+			24824.045318333192,33463.84928987959
+			23175.954681666804,33463.84928987959
+			21842.621348333472,34432.57266055341 21333.333333333332,36000.0
+			21842.621348333472,37567.42733944659
+			23175.954681666808,38536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>32824.04531833319,38536.15071012041
+			34157.37865166653,37567.42733944659 34666.666666666664,36000.0
+			34157.37865166653,34432.57266055341
+			32824.04531833319,33463.84928987959
+			31175.954681666804,33463.84928987959
+			29842.621348333472,34432.57266055341 29333.333333333332,36000.0
+			29842.621348333472,37567.42733944659
+			31175.954681666808,38536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>40824.04531833319,38536.15071012041
+			42157.37865166653,37567.42733944659 42666.666666666664,36000.0
+			42157.37865166653,34432.57266055341
+			40824.04531833319,33463.84928987959
+			39175.95468166681,33463.84928987959
+			37842.62134833347,34432.57266055341 37333.333333333336,36000.0
+			37842.62134833347,37567.42733944659
+			39175.95468166681,38536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>48824.04531833319,38536.15071012041
+			50157.37865166653,37567.42733944659 50666.666666666664,36000.0
+			50157.37865166653,34432.57266055341
+			48824.04531833319,33463.84928987959
+			47175.95468166681,33463.84928987959
+			45842.62134833347,34432.57266055341 45333.333333333336,36000.0
+			45842.62134833347,37567.42733944659
+			47175.95468166681,38536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>56824.04531833319,38536.15071012041
+			58157.37865166653,37567.42733944659 58666.666666666664,36000.0
+			58157.37865166653,34432.57266055341
+			56824.04531833319,33463.84928987959
+			55175.95468166681,33463.84928987959
+			53842.62134833347,34432.57266055341 53333.333333333336,36000.0
+			53842.62134833347,37567.42733944659
+			55175.95468166681,38536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>24824.045318333192,50536.15071012041
+			26157.378651666528,49567.42733944659 26666.666666666668,48000.0
+			26157.378651666528,46432.57266055341
+			24824.045318333192,45463.84928987959
+			23175.954681666804,45463.84928987959
+			21842.621348333472,46432.57266055341 21333.333333333332,48000.0
+			21842.621348333472,49567.42733944659
+			23175.954681666808,50536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>32824.04531833319,50536.15071012041
+			34157.37865166653,49567.42733944659 34666.666666666664,48000.0
+			34157.37865166653,46432.57266055341
+			32824.04531833319,45463.84928987959
+			31175.954681666804,45463.84928987959
+			29842.621348333472,46432.57266055341 29333.333333333332,48000.0
+			29842.621348333472,49567.42733944659
+			31175.954681666808,50536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>40824.04531833319,50536.15071012041
+			42157.37865166653,49567.42733944659 42666.666666666664,48000.0
+			42157.37865166653,46432.57266055341
+			40824.04531833319,45463.84928987959
+			39175.95468166681,45463.84928987959
+			37842.62134833347,46432.57266055341 37333.333333333336,48000.0
+			37842.62134833347,49567.42733944659
+			39175.95468166681,50536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>48824.04531833319,50536.15071012041
+			50157.37865166653,49567.42733944659 50666.666666666664,48000.0
+			50157.37865166653,46432.57266055341
+			48824.04531833319,45463.84928987959
+			47175.95468166681,45463.84928987959
+			45842.62134833347,46432.57266055341 45333.333333333336,48000.0
+			45842.62134833347,49567.42733944659
+			47175.95468166681,50536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>56824.04531833319,50536.15071012041
+			58157.37865166653,49567.42733944659 58666.666666666664,48000.0
+			58157.37865166653,46432.57266055341
+			56824.04531833319,45463.84928987959
+			55175.95468166681,45463.84928987959
+			53842.62134833347,46432.57266055341 53333.333333333336,48000.0
+			53842.62134833347,49567.42733944659
+			55175.95468166681,50536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>24824.045318333192,62536.15071012041
+			26157.378651666528,61567.42733944659 26666.666666666668,60000.0
+			26157.378651666528,58432.57266055341
+			24824.045318333192,57463.84928987959
+			23175.954681666804,57463.84928987959
+			21842.621348333472,58432.57266055341 21333.333333333332,60000.0
+			21842.621348333472,61567.42733944659
+			23175.954681666808,62536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>32824.04531833319,62536.15071012041
+			34157.37865166653,61567.42733944659 34666.666666666664,60000.0
+			34157.37865166653,58432.57266055341
+			32824.04531833319,57463.84928987959
+			31175.954681666804,57463.84928987959
+			29842.621348333472,58432.57266055341 29333.333333333332,60000.0
+			29842.621348333472,61567.42733944659
+			31175.954681666808,62536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>40824.04531833319,62536.15071012041
+			42157.37865166653,61567.42733944659 42666.666666666664,60000.0
+			42157.37865166653,58432.57266055341
+			40824.04531833319,57463.84928987959
+			39175.95468166681,57463.84928987959
+			37842.62134833347,58432.57266055341 37333.333333333336,60000.0
+			37842.62134833347,61567.42733944659
+			39175.95468166681,62536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>48824.04531833319,62536.15071012041
+			50157.37865166653,61567.42733944659 50666.666666666664,60000.0
+			50157.37865166653,58432.57266055341
+			48824.04531833319,57463.84928987959
+			47175.95468166681,57463.84928987959
+			45842.62134833347,58432.57266055341 45333.333333333336,60000.0
+			45842.62134833347,61567.42733944659
+			47175.95468166681,62536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>56824.04531833319,62536.15071012041
+			58157.37865166653,61567.42733944659 58666.666666666664,60000.0
+			58157.37865166653,58432.57266055341
+			56824.04531833319,57463.84928987959
+			55175.95468166681,57463.84928987959
+			53842.62134833347,58432.57266055341 53333.333333333336,60000.0
+			53842.62134833347,61567.42733944659
+			55175.95468166681,62536.15071012041 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>24824.045318333192,74536.1507101204
+			26157.378651666528,73567.4273394466 26666.666666666668,72000.0
+			26157.378651666528,70432.5726605534
+			24824.045318333192,69463.8492898796
+			23175.954681666804,69463.8492898796
+			21842.621348333472,70432.5726605534 21333.333333333332,72000.0
+			21842.621348333472,73567.4273394466
+			23175.954681666808,74536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>32824.04531833319,74536.1507101204
+			34157.37865166653,73567.4273394466 34666.666666666664,72000.0
+			34157.37865166653,70432.5726605534 32824.04531833319,69463.8492898796
+			31175.954681666804,69463.8492898796
+			29842.621348333472,70432.5726605534 29333.333333333332,72000.0
+			29842.621348333472,73567.4273394466
+			31175.954681666808,74536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>40824.04531833319,74536.1507101204
+			42157.37865166653,73567.4273394466 42666.666666666664,72000.0
+			42157.37865166653,70432.5726605534 40824.04531833319,69463.8492898796
+			39175.95468166681,69463.8492898796 37842.62134833347,70432.5726605534
+			37333.333333333336,72000.0 37842.62134833347,73567.4273394466
+			39175.95468166681,74536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>48824.04531833319,74536.1507101204
+			50157.37865166653,73567.4273394466 50666.666666666664,72000.0
+			50157.37865166653,70432.5726605534 48824.04531833319,69463.8492898796
+			47175.95468166681,69463.8492898796 45842.62134833347,70432.5726605534
+			45333.333333333336,72000.0 45842.62134833347,73567.4273394466
+			47175.95468166681,74536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>56824.04531833319,74536.1507101204
+			58157.37865166653,73567.4273394466 58666.666666666664,72000.0
+			58157.37865166653,70432.5726605534 56824.04531833319,69463.8492898796
+			55175.95468166681,69463.8492898796 53842.62134833347,70432.5726605534
+			53333.333333333336,72000.0 53842.62134833347,73567.4273394466
+			55175.95468166681,74536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>24824.045318333192,86536.1507101204
+			26157.378651666528,85567.4273394466 26666.666666666668,84000.0
+			26157.378651666528,82432.5726605534
+			24824.045318333192,81463.8492898796
+			23175.954681666804,81463.8492898796
+			21842.621348333472,82432.5726605534 21333.333333333332,84000.0
+			21842.621348333472,85567.4273394466
+			23175.954681666808,86536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>32824.04531833319,86536.1507101204
+			34157.37865166653,85567.4273394466 34666.666666666664,84000.0
+			34157.37865166653,82432.5726605534 32824.04531833319,81463.8492898796
+			31175.954681666804,81463.8492898796
+			29842.621348333472,82432.5726605534 29333.333333333332,84000.0
+			29842.621348333472,85567.4273394466
+			31175.954681666808,86536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>40824.04531833319,86536.1507101204
+			42157.37865166653,85567.4273394466 42666.666666666664,84000.0
+			42157.37865166653,82432.5726605534 40824.04531833319,81463.8492898796
+			39175.95468166681,81463.8492898796 37842.62134833347,82432.5726605534
+			37333.333333333336,84000.0 37842.62134833347,85567.4273394466
+			39175.95468166681,86536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>48824.04531833319,86536.1507101204
+			50157.37865166653,85567.4273394466 50666.666666666664,84000.0
+			50157.37865166653,82432.5726605534 48824.04531833319,81463.8492898796
+			47175.95468166681,81463.8492898796 45842.62134833347,82432.5726605534
+			45333.333333333336,84000.0 45842.62134833347,85567.4273394466
+			47175.95468166681,86536.1507101204 </coordinates>
+	</LineString>
+
+
+
+	<LineString>
+		<coordinates>56824.04531833319,86536.1507101204
+			58157.37865166653,85567.4273394466 58666.666666666664,84000.0
+			58157.37865166653,82432.5726605534 56824.04531833319,81463.8492898796
+			55175.95468166681,81463.8492898796 53842.62134833347,82432.5726605534
+			53333.333333333336,84000.0 53842.62134833347,85567.4273394466
+			55175.95468166681,86536.1507101204 </coordinates>
+	</LineString>
+</MultiGeometry>
diff --git a/jtsio/test/data/multilinestrings.xml b/jtsio/test/data/multilinestrings.xml
new file mode 100644
index 0000000..53a486f
--- /dev/null
+++ b/jtsio/test/data/multilinestrings.xml
@@ -0,0 +1,1479 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<MultiGeometry>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,34268.0753550602
+					23078.689325833264,33783.7136697233
+					23333.333333333332,33000.0
+					23078.689325833264,32216.286330276704
+					22412.022659166596,31731.924644939794
+					21587.977340833404,31731.924644939794
+					20921.310674166736,32216.286330276704
+					20666.666666666668,33000.0
+					20921.310674166736,33783.7136697233
+					21587.977340833404,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,34268.0753550602
+					27078.689325833264,33783.7136697233
+					27333.333333333332,33000.0
+					27078.689325833264,32216.286330276704
+					26412.022659166596,31731.924644939794
+					25587.977340833404,31731.924644939794
+					24921.310674166736,32216.286330276704
+					24666.666666666668,33000.0
+					24921.310674166736,33783.7136697233
+					25587.977340833404,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,40268.0753550602
+					23078.689325833264,39783.7136697233
+					23333.333333333332,39000.0
+					23078.689325833264,38216.2863302767
+					22412.022659166596,37731.9246449398
+					21587.977340833404,37731.9246449398
+					20921.310674166736,38216.2863302767
+					20666.666666666668,39000.0
+					20921.310674166736,39783.7136697233
+					21587.977340833404,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,40268.0753550602
+					27078.689325833264,39783.7136697233
+					27333.333333333332,39000.0
+					27078.689325833264,38216.2863302767
+					26412.022659166596,37731.9246449398
+					25587.977340833404,37731.9246449398
+					24921.310674166736,38216.2863302767
+					24666.666666666668,39000.0
+					24921.310674166736,39783.7136697233
+					25587.977340833404,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,34268.0753550602
+					31078.689325833264,33783.7136697233
+					31333.333333333332,33000.0
+					31078.689325833264,32216.286330276704
+					30412.022659166596,31731.924644939794
+					29587.977340833404,31731.924644939794
+					28921.310674166736,32216.286330276704
+					28666.666666666668,33000.0
+					28921.310674166736,33783.7136697233
+					29587.977340833404,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,34268.0753550602
+					35078.689325833264,33783.7136697233
+					35333.333333333336,33000.0
+					35078.689325833264,32216.286330276704
+					34412.0226591666,31731.924644939794
+					33587.9773408334,31731.924644939794
+					32921.310674166736,32216.286330276704
+					32666.666666666668,33000.0
+					32921.310674166736,33783.7136697233
+					33587.9773408334,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,40268.0753550602
+					31078.689325833264,39783.7136697233
+					31333.333333333332,39000.0
+					31078.689325833264,38216.2863302767
+					30412.022659166596,37731.9246449398
+					29587.977340833404,37731.9246449398
+					28921.310674166736,38216.2863302767
+					28666.666666666668,39000.0
+					28921.310674166736,39783.7136697233
+					29587.977340833404,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,40268.0753550602
+					35078.689325833264,39783.7136697233
+					35333.333333333336,39000.0
+					35078.689325833264,38216.2863302767
+					34412.0226591666,37731.9246449398
+					33587.9773408334,37731.9246449398
+					32921.310674166736,38216.2863302767
+					32666.666666666668,39000.0
+					32921.310674166736,39783.7136697233
+					33587.9773408334,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,34268.0753550602
+					39078.689325833264,33783.7136697233
+					39333.333333333336,33000.0
+					39078.689325833264,32216.286330276704
+					38412.0226591666,31731.924644939794
+					37587.9773408334,31731.924644939794
+					36921.310674166736,32216.286330276704
+					36666.666666666664,33000.0
+					36921.310674166736,33783.7136697233
+					37587.9773408334,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,34268.0753550602
+					43078.689325833264,33783.7136697233
+					43333.333333333336,33000.0
+					43078.689325833264,32216.286330276704
+					42412.0226591666,31731.924644939794
+					41587.9773408334,31731.924644939794
+					40921.310674166736,32216.286330276704
+					40666.666666666664,33000.0
+					40921.310674166736,33783.7136697233
+					41587.9773408334,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,40268.0753550602
+					39078.689325833264,39783.7136697233
+					39333.333333333336,39000.0
+					39078.689325833264,38216.2863302767
+					38412.0226591666,37731.9246449398
+					37587.9773408334,37731.9246449398
+					36921.310674166736,38216.2863302767
+					36666.666666666664,39000.0
+					36921.310674166736,39783.7136697233
+					37587.9773408334,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,40268.0753550602
+					43078.689325833264,39783.7136697233
+					43333.333333333336,39000.0
+					43078.689325833264,38216.2863302767
+					42412.0226591666,37731.9246449398
+					41587.9773408334,37731.9246449398
+					40921.310674166736,38216.2863302767
+					40666.666666666664,39000.0
+					40921.310674166736,39783.7136697233
+					41587.9773408334,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,34268.0753550602
+					47078.689325833264,33783.7136697233
+					47333.333333333336,33000.0
+					47078.689325833264,32216.286330276704
+					46412.0226591666,31731.924644939794
+					45587.9773408334,31731.924644939794
+					44921.310674166736,32216.286330276704
+					44666.666666666664,33000.0
+					44921.310674166736,33783.7136697233
+					45587.9773408334,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,34268.0753550602
+					51078.689325833264,33783.7136697233
+					51333.333333333336,33000.0
+					51078.689325833264,32216.286330276704
+					50412.0226591666,31731.924644939794
+					49587.9773408334,31731.924644939794
+					48921.310674166736,32216.286330276704
+					48666.666666666664,33000.0
+					48921.310674166736,33783.7136697233
+					49587.9773408334,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,40268.0753550602
+					47078.689325833264,39783.7136697233
+					47333.333333333336,39000.0
+					47078.689325833264,38216.2863302767
+					46412.0226591666,37731.9246449398
+					45587.9773408334,37731.9246449398
+					44921.310674166736,38216.2863302767
+					44666.666666666664,39000.0
+					44921.310674166736,39783.7136697233
+					45587.9773408334,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,40268.0753550602
+					51078.689325833264,39783.7136697233
+					51333.333333333336,39000.0
+					51078.689325833264,38216.2863302767
+					50412.0226591666,37731.9246449398
+					49587.9773408334,37731.9246449398
+					48921.310674166736,38216.2863302767
+					48666.666666666664,39000.0
+					48921.310674166736,39783.7136697233
+					49587.9773408334,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,34268.0753550602
+					55078.689325833264,33783.7136697233
+					55333.333333333336,33000.0
+					55078.689325833264,32216.286330276704
+					54412.0226591666,31731.924644939794
+					53587.9773408334,31731.924644939794
+					52921.310674166736,32216.286330276704
+					52666.666666666664,33000.0
+					52921.310674166736,33783.7136697233
+					53587.9773408334,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,34268.0753550602
+					59078.689325833264,33783.7136697233
+					59333.333333333336,33000.0
+					59078.689325833264,32216.286330276704
+					58412.0226591666,31731.924644939794
+					57587.9773408334,31731.924644939794
+					56921.310674166736,32216.286330276704
+					56666.666666666664,33000.0
+					56921.310674166736,33783.7136697233
+					57587.9773408334,34268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,40268.0753550602
+					55078.689325833264,39783.7136697233
+					55333.333333333336,39000.0
+					55078.689325833264,38216.2863302767
+					54412.0226591666,37731.9246449398
+					53587.9773408334,37731.9246449398
+					52921.310674166736,38216.2863302767
+					52666.666666666664,39000.0
+					52921.310674166736,39783.7136697233
+					53587.9773408334,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,40268.0753550602
+					59078.689325833264,39783.7136697233
+					59333.333333333336,39000.0
+					59078.689325833264,38216.2863302767
+					58412.0226591666,37731.9246449398
+					57587.9773408334,37731.9246449398
+					56921.310674166736,38216.2863302767
+					56666.666666666664,39000.0
+					56921.310674166736,39783.7136697233
+					57587.9773408334,40268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,46268.0753550602
+					23078.689325833264,45783.7136697233
+					23333.333333333332,45000.0
+					23078.689325833264,44216.2863302767
+					22412.022659166596,43731.9246449398
+					21587.977340833404,43731.9246449398
+					20921.310674166736,44216.2863302767
+					20666.666666666668,45000.0
+					20921.310674166736,45783.7136697233
+					21587.977340833404,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,46268.0753550602
+					27078.689325833264,45783.7136697233
+					27333.333333333332,45000.0
+					27078.689325833264,44216.2863302767
+					26412.022659166596,43731.9246449398
+					25587.977340833404,43731.9246449398
+					24921.310674166736,44216.2863302767
+					24666.666666666668,45000.0
+					24921.310674166736,45783.7136697233
+					25587.977340833404,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,52268.0753550602
+					23078.689325833264,51783.7136697233
+					23333.333333333332,51000.0
+					23078.689325833264,50216.2863302767
+					22412.022659166596,49731.9246449398
+					21587.977340833404,49731.9246449398
+					20921.310674166736,50216.2863302767
+					20666.666666666668,51000.0
+					20921.310674166736,51783.7136697233
+					21587.977340833404,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,52268.0753550602
+					27078.689325833264,51783.7136697233
+					27333.333333333332,51000.0
+					27078.689325833264,50216.2863302767
+					26412.022659166596,49731.9246449398
+					25587.977340833404,49731.9246449398
+					24921.310674166736,50216.2863302767
+					24666.666666666668,51000.0
+					24921.310674166736,51783.7136697233
+					25587.977340833404,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,46268.0753550602
+					31078.689325833264,45783.7136697233
+					31333.333333333332,45000.0
+					31078.689325833264,44216.2863302767
+					30412.022659166596,43731.9246449398
+					29587.977340833404,43731.9246449398
+					28921.310674166736,44216.2863302767
+					28666.666666666668,45000.0
+					28921.310674166736,45783.7136697233
+					29587.977340833404,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,46268.0753550602
+					35078.689325833264,45783.7136697233
+					35333.333333333336,45000.0
+					35078.689325833264,44216.2863302767
+					34412.0226591666,43731.9246449398
+					33587.9773408334,43731.9246449398
+					32921.310674166736,44216.2863302767
+					32666.666666666668,45000.0
+					32921.310674166736,45783.7136697233
+					33587.9773408334,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,52268.0753550602
+					31078.689325833264,51783.7136697233
+					31333.333333333332,51000.0
+					31078.689325833264,50216.2863302767
+					30412.022659166596,49731.9246449398
+					29587.977340833404,49731.9246449398
+					28921.310674166736,50216.2863302767
+					28666.666666666668,51000.0
+					28921.310674166736,51783.7136697233
+					29587.977340833404,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,52268.0753550602
+					35078.689325833264,51783.7136697233
+					35333.333333333336,51000.0
+					35078.689325833264,50216.2863302767
+					34412.0226591666,49731.9246449398
+					33587.9773408334,49731.9246449398
+					32921.310674166736,50216.2863302767
+					32666.666666666668,51000.0
+					32921.310674166736,51783.7136697233
+					33587.9773408334,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,46268.0753550602
+					39078.689325833264,45783.7136697233
+					39333.333333333336,45000.0
+					39078.689325833264,44216.2863302767
+					38412.0226591666,43731.9246449398
+					37587.9773408334,43731.9246449398
+					36921.310674166736,44216.2863302767
+					36666.666666666664,45000.0
+					36921.310674166736,45783.7136697233
+					37587.9773408334,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,46268.0753550602
+					43078.689325833264,45783.7136697233
+					43333.333333333336,45000.0
+					43078.689325833264,44216.2863302767
+					42412.0226591666,43731.9246449398
+					41587.9773408334,43731.9246449398
+					40921.310674166736,44216.2863302767
+					40666.666666666664,45000.0
+					40921.310674166736,45783.7136697233
+					41587.9773408334,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,52268.0753550602
+					39078.689325833264,51783.7136697233
+					39333.333333333336,51000.0
+					39078.689325833264,50216.2863302767
+					38412.0226591666,49731.9246449398
+					37587.9773408334,49731.9246449398
+					36921.310674166736,50216.2863302767
+					36666.666666666664,51000.0
+					36921.310674166736,51783.7136697233
+					37587.9773408334,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,52268.0753550602
+					43078.689325833264,51783.7136697233
+					43333.333333333336,51000.0
+					43078.689325833264,50216.2863302767
+					42412.0226591666,49731.9246449398
+					41587.9773408334,49731.9246449398
+					40921.310674166736,50216.2863302767
+					40666.666666666664,51000.0
+					40921.310674166736,51783.7136697233
+					41587.9773408334,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,46268.0753550602
+					47078.689325833264,45783.7136697233
+					47333.333333333336,45000.0
+					47078.689325833264,44216.2863302767
+					46412.0226591666,43731.9246449398
+					45587.9773408334,43731.9246449398
+					44921.310674166736,44216.2863302767
+					44666.666666666664,45000.0
+					44921.310674166736,45783.7136697233
+					45587.9773408334,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,46268.0753550602
+					51078.689325833264,45783.7136697233
+					51333.333333333336,45000.0
+					51078.689325833264,44216.2863302767
+					50412.0226591666,43731.9246449398
+					49587.9773408334,43731.9246449398
+					48921.310674166736,44216.2863302767
+					48666.666666666664,45000.0
+					48921.310674166736,45783.7136697233
+					49587.9773408334,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,52268.0753550602
+					47078.689325833264,51783.7136697233
+					47333.333333333336,51000.0
+					47078.689325833264,50216.2863302767
+					46412.0226591666,49731.9246449398
+					45587.9773408334,49731.9246449398
+					44921.310674166736,50216.2863302767
+					44666.666666666664,51000.0
+					44921.310674166736,51783.7136697233
+					45587.9773408334,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,52268.0753550602
+					51078.689325833264,51783.7136697233
+					51333.333333333336,51000.0
+					51078.689325833264,50216.2863302767
+					50412.0226591666,49731.9246449398
+					49587.9773408334,49731.9246449398
+					48921.310674166736,50216.2863302767
+					48666.666666666664,51000.0
+					48921.310674166736,51783.7136697233
+					49587.9773408334,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,46268.0753550602
+					55078.689325833264,45783.7136697233
+					55333.333333333336,45000.0
+					55078.689325833264,44216.2863302767
+					54412.0226591666,43731.9246449398
+					53587.9773408334,43731.9246449398
+					52921.310674166736,44216.2863302767
+					52666.666666666664,45000.0
+					52921.310674166736,45783.7136697233
+					53587.9773408334,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,46268.0753550602
+					59078.689325833264,45783.7136697233
+					59333.333333333336,45000.0
+					59078.689325833264,44216.2863302767
+					58412.0226591666,43731.9246449398
+					57587.9773408334,43731.9246449398
+					56921.310674166736,44216.2863302767
+					56666.666666666664,45000.0
+					56921.310674166736,45783.7136697233
+					57587.9773408334,46268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,52268.0753550602
+					55078.689325833264,51783.7136697233
+					55333.333333333336,51000.0
+					55078.689325833264,50216.2863302767
+					54412.0226591666,49731.9246449398
+					53587.9773408334,49731.9246449398
+					52921.310674166736,50216.2863302767
+					52666.666666666664,51000.0
+					52921.310674166736,51783.7136697233
+					53587.9773408334,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,52268.0753550602
+					59078.689325833264,51783.7136697233
+					59333.333333333336,51000.0
+					59078.689325833264,50216.2863302767
+					58412.0226591666,49731.9246449398
+					57587.9773408334,49731.9246449398
+					56921.310674166736,50216.2863302767
+					56666.666666666664,51000.0
+					56921.310674166736,51783.7136697233
+					57587.9773408334,52268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,58268.0753550602
+					23078.689325833264,57783.7136697233
+					23333.333333333332,57000.0
+					23078.689325833264,56216.2863302767
+					22412.022659166596,55731.9246449398
+					21587.977340833404,55731.9246449398
+					20921.310674166736,56216.2863302767
+					20666.666666666668,57000.0
+					20921.310674166736,57783.7136697233
+					21587.977340833404,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,58268.0753550602
+					27078.689325833264,57783.7136697233
+					27333.333333333332,57000.0
+					27078.689325833264,56216.2863302767
+					26412.022659166596,55731.9246449398
+					25587.977340833404,55731.9246449398
+					24921.310674166736,56216.2863302767
+					24666.666666666668,57000.0
+					24921.310674166736,57783.7136697233
+					25587.977340833404,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,64268.0753550602
+					23078.689325833264,63783.7136697233
+					23333.333333333332,63000.0
+					23078.689325833264,62216.2863302767
+					22412.022659166596,61731.9246449398
+					21587.977340833404,61731.9246449398
+					20921.310674166736,62216.2863302767
+					20666.666666666668,63000.0
+					20921.310674166736,63783.7136697233
+					21587.977340833404,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,64268.0753550602
+					27078.689325833264,63783.7136697233
+					27333.333333333332,63000.0
+					27078.689325833264,62216.2863302767
+					26412.022659166596,61731.9246449398
+					25587.977340833404,61731.9246449398
+					24921.310674166736,62216.2863302767
+					24666.666666666668,63000.0
+					24921.310674166736,63783.7136697233
+					25587.977340833404,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,58268.0753550602
+					31078.689325833264,57783.7136697233
+					31333.333333333332,57000.0
+					31078.689325833264,56216.2863302767
+					30412.022659166596,55731.9246449398
+					29587.977340833404,55731.9246449398
+					28921.310674166736,56216.2863302767
+					28666.666666666668,57000.0
+					28921.310674166736,57783.7136697233
+					29587.977340833404,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,58268.0753550602
+					35078.689325833264,57783.7136697233
+					35333.333333333336,57000.0
+					35078.689325833264,56216.2863302767
+					34412.0226591666,55731.9246449398
+					33587.9773408334,55731.9246449398
+					32921.310674166736,56216.2863302767
+					32666.666666666668,57000.0
+					32921.310674166736,57783.7136697233
+					33587.9773408334,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,64268.0753550602
+					31078.689325833264,63783.7136697233
+					31333.333333333332,63000.0
+					31078.689325833264,62216.2863302767
+					30412.022659166596,61731.9246449398
+					29587.977340833404,61731.9246449398
+					28921.310674166736,62216.2863302767
+					28666.666666666668,63000.0
+					28921.310674166736,63783.7136697233
+					29587.977340833404,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,64268.0753550602
+					35078.689325833264,63783.7136697233
+					35333.333333333336,63000.0
+					35078.689325833264,62216.2863302767
+					34412.0226591666,61731.9246449398
+					33587.9773408334,61731.9246449398
+					32921.310674166736,62216.2863302767
+					32666.666666666668,63000.0
+					32921.310674166736,63783.7136697233
+					33587.9773408334,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,58268.0753550602
+					39078.689325833264,57783.7136697233
+					39333.333333333336,57000.0
+					39078.689325833264,56216.2863302767
+					38412.0226591666,55731.9246449398
+					37587.9773408334,55731.9246449398
+					36921.310674166736,56216.2863302767
+					36666.666666666664,57000.0
+					36921.310674166736,57783.7136697233
+					37587.9773408334,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,58268.0753550602
+					43078.689325833264,57783.7136697233
+					43333.333333333336,57000.0
+					43078.689325833264,56216.2863302767
+					42412.0226591666,55731.9246449398
+					41587.9773408334,55731.9246449398
+					40921.310674166736,56216.2863302767
+					40666.666666666664,57000.0
+					40921.310674166736,57783.7136697233
+					41587.9773408334,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,64268.0753550602
+					39078.689325833264,63783.7136697233
+					39333.333333333336,63000.0
+					39078.689325833264,62216.2863302767
+					38412.0226591666,61731.9246449398
+					37587.9773408334,61731.9246449398
+					36921.310674166736,62216.2863302767
+					36666.666666666664,63000.0
+					36921.310674166736,63783.7136697233
+					37587.9773408334,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,64268.0753550602
+					43078.689325833264,63783.7136697233
+					43333.333333333336,63000.0
+					43078.689325833264,62216.2863302767
+					42412.0226591666,61731.9246449398
+					41587.9773408334,61731.9246449398
+					40921.310674166736,62216.2863302767
+					40666.666666666664,63000.0
+					40921.310674166736,63783.7136697233
+					41587.9773408334,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,58268.0753550602
+					47078.689325833264,57783.7136697233
+					47333.333333333336,57000.0
+					47078.689325833264,56216.2863302767
+					46412.0226591666,55731.9246449398
+					45587.9773408334,55731.9246449398
+					44921.310674166736,56216.2863302767
+					44666.666666666664,57000.0
+					44921.310674166736,57783.7136697233
+					45587.9773408334,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,58268.0753550602
+					51078.689325833264,57783.7136697233
+					51333.333333333336,57000.0
+					51078.689325833264,56216.2863302767
+					50412.0226591666,55731.9246449398
+					49587.9773408334,55731.9246449398
+					48921.310674166736,56216.2863302767
+					48666.666666666664,57000.0
+					48921.310674166736,57783.7136697233
+					49587.9773408334,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,64268.0753550602
+					47078.689325833264,63783.7136697233
+					47333.333333333336,63000.0
+					47078.689325833264,62216.2863302767
+					46412.0226591666,61731.9246449398
+					45587.9773408334,61731.9246449398
+					44921.310674166736,62216.2863302767
+					44666.666666666664,63000.0
+					44921.310674166736,63783.7136697233
+					45587.9773408334,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,64268.0753550602
+					51078.689325833264,63783.7136697233
+					51333.333333333336,63000.0
+					51078.689325833264,62216.2863302767
+					50412.0226591666,61731.9246449398
+					49587.9773408334,61731.9246449398
+					48921.310674166736,62216.2863302767
+					48666.666666666664,63000.0
+					48921.310674166736,63783.7136697233
+					49587.9773408334,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,58268.0753550602
+					55078.689325833264,57783.7136697233
+					55333.333333333336,57000.0
+					55078.689325833264,56216.2863302767
+					54412.0226591666,55731.9246449398
+					53587.9773408334,55731.9246449398
+					52921.310674166736,56216.2863302767
+					52666.666666666664,57000.0
+					52921.310674166736,57783.7136697233
+					53587.9773408334,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,58268.0753550602
+					59078.689325833264,57783.7136697233
+					59333.333333333336,57000.0
+					59078.689325833264,56216.2863302767
+					58412.0226591666,55731.9246449398
+					57587.9773408334,55731.9246449398
+					56921.310674166736,56216.2863302767
+					56666.666666666664,57000.0
+					56921.310674166736,57783.7136697233
+					57587.9773408334,58268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,64268.0753550602
+					55078.689325833264,63783.7136697233
+					55333.333333333336,63000.0
+					55078.689325833264,62216.2863302767
+					54412.0226591666,61731.9246449398
+					53587.9773408334,61731.9246449398
+					52921.310674166736,62216.2863302767
+					52666.666666666664,63000.0
+					52921.310674166736,63783.7136697233
+					53587.9773408334,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,64268.0753550602
+					59078.689325833264,63783.7136697233
+					59333.333333333336,63000.0
+					59078.689325833264,62216.2863302767
+					58412.0226591666,61731.9246449398
+					57587.9773408334,61731.9246449398
+					56921.310674166736,62216.2863302767
+					56666.666666666664,63000.0
+					56921.310674166736,63783.7136697233
+					57587.9773408334,64268.0753550602 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,70268.07535506021
+					23078.689325833264,69783.71366972329
+					23333.333333333332,69000.0
+					23078.689325833264,68216.28633027671
+					22412.022659166596,67731.92464493979
+					21587.977340833404,67731.92464493979
+					20921.310674166736,68216.28633027671
+					20666.666666666668,69000.0
+					20921.310674166736,69783.71366972329
+					21587.977340833404,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,70268.07535506021
+					27078.689325833264,69783.71366972329
+					27333.333333333332,69000.0
+					27078.689325833264,68216.28633027671
+					26412.022659166596,67731.92464493979
+					25587.977340833404,67731.92464493979
+					24921.310674166736,68216.28633027671
+					24666.666666666668,69000.0
+					24921.310674166736,69783.71366972329
+					25587.977340833404,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,76268.07535506021
+					23078.689325833264,75783.71366972329
+					23333.333333333332,75000.0
+					23078.689325833264,74216.28633027671
+					22412.022659166596,73731.92464493979
+					21587.977340833404,73731.92464493979
+					20921.310674166736,74216.28633027671
+					20666.666666666668,75000.0
+					20921.310674166736,75783.71366972329
+					21587.977340833404,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,76268.07535506021
+					27078.689325833264,75783.71366972329
+					27333.333333333332,75000.0
+					27078.689325833264,74216.28633027671
+					26412.022659166596,73731.92464493979
+					25587.977340833404,73731.92464493979
+					24921.310674166736,74216.28633027671
+					24666.666666666668,75000.0
+					24921.310674166736,75783.71366972329
+					25587.977340833404,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,70268.07535506021
+					31078.689325833264,69783.71366972329
+					31333.333333333332,69000.0
+					31078.689325833264,68216.28633027671
+					30412.022659166596,67731.92464493979
+					29587.977340833404,67731.92464493979
+					28921.310674166736,68216.28633027671
+					28666.666666666668,69000.0
+					28921.310674166736,69783.71366972329
+					29587.977340833404,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,70268.07535506021
+					35078.689325833264,69783.71366972329
+					35333.333333333336,69000.0
+					35078.689325833264,68216.28633027671
+					34412.0226591666,67731.92464493979
+					33587.9773408334,67731.92464493979
+					32921.310674166736,68216.28633027671
+					32666.666666666668,69000.0
+					32921.310674166736,69783.71366972329
+					33587.9773408334,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,76268.07535506021
+					31078.689325833264,75783.71366972329
+					31333.333333333332,75000.0
+					31078.689325833264,74216.28633027671
+					30412.022659166596,73731.92464493979
+					29587.977340833404,73731.92464493979
+					28921.310674166736,74216.28633027671
+					28666.666666666668,75000.0
+					28921.310674166736,75783.71366972329
+					29587.977340833404,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,76268.07535506021
+					35078.689325833264,75783.71366972329
+					35333.333333333336,75000.0
+					35078.689325833264,74216.28633027671
+					34412.0226591666,73731.92464493979
+					33587.9773408334,73731.92464493979
+					32921.310674166736,74216.28633027671
+					32666.666666666668,75000.0
+					32921.310674166736,75783.71366972329
+					33587.9773408334,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,70268.07535506021
+					39078.689325833264,69783.71366972329
+					39333.333333333336,69000.0
+					39078.689325833264,68216.28633027671
+					38412.0226591666,67731.92464493979
+					37587.9773408334,67731.92464493979
+					36921.310674166736,68216.28633027671
+					36666.666666666664,69000.0
+					36921.310674166736,69783.71366972329
+					37587.9773408334,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,70268.07535506021
+					43078.689325833264,69783.71366972329
+					43333.333333333336,69000.0
+					43078.689325833264,68216.28633027671
+					42412.0226591666,67731.92464493979
+					41587.9773408334,67731.92464493979
+					40921.310674166736,68216.28633027671
+					40666.666666666664,69000.0
+					40921.310674166736,69783.71366972329
+					41587.9773408334,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,76268.07535506021
+					39078.689325833264,75783.71366972329
+					39333.333333333336,75000.0
+					39078.689325833264,74216.28633027671
+					38412.0226591666,73731.92464493979
+					37587.9773408334,73731.92464493979
+					36921.310674166736,74216.28633027671
+					36666.666666666664,75000.0
+					36921.310674166736,75783.71366972329
+					37587.9773408334,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,76268.07535506021
+					43078.689325833264,75783.71366972329
+					43333.333333333336,75000.0
+					43078.689325833264,74216.28633027671
+					42412.0226591666,73731.92464493979
+					41587.9773408334,73731.92464493979
+					40921.310674166736,74216.28633027671
+					40666.666666666664,75000.0
+					40921.310674166736,75783.71366972329
+					41587.9773408334,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,70268.07535506021
+					47078.689325833264,69783.71366972329
+					47333.333333333336,69000.0
+					47078.689325833264,68216.28633027671
+					46412.0226591666,67731.92464493979
+					45587.9773408334,67731.92464493979
+					44921.310674166736,68216.28633027671
+					44666.666666666664,69000.0
+					44921.310674166736,69783.71366972329
+					45587.9773408334,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,70268.07535506021
+					51078.689325833264,69783.71366972329
+					51333.333333333336,69000.0
+					51078.689325833264,68216.28633027671
+					50412.0226591666,67731.92464493979
+					49587.9773408334,67731.92464493979
+					48921.310674166736,68216.28633027671
+					48666.666666666664,69000.0
+					48921.310674166736,69783.71366972329
+					49587.9773408334,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,76268.07535506021
+					47078.689325833264,75783.71366972329
+					47333.333333333336,75000.0
+					47078.689325833264,74216.28633027671
+					46412.0226591666,73731.92464493979
+					45587.9773408334,73731.92464493979
+					44921.310674166736,74216.28633027671
+					44666.666666666664,75000.0
+					44921.310674166736,75783.71366972329
+					45587.9773408334,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,76268.07535506021
+					51078.689325833264,75783.71366972329
+					51333.333333333336,75000.0
+					51078.689325833264,74216.28633027671
+					50412.0226591666,73731.92464493979
+					49587.9773408334,73731.92464493979
+					48921.310674166736,74216.28633027671
+					48666.666666666664,75000.0
+					48921.310674166736,75783.71366972329
+					49587.9773408334,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,70268.07535506021
+					55078.689325833264,69783.71366972329
+					55333.333333333336,69000.0
+					55078.689325833264,68216.28633027671
+					54412.0226591666,67731.92464493979
+					53587.9773408334,67731.92464493979
+					52921.310674166736,68216.28633027671
+					52666.666666666664,69000.0
+					52921.310674166736,69783.71366972329
+					53587.9773408334,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,70268.07535506021
+					59078.689325833264,69783.71366972329
+					59333.333333333336,69000.0
+					59078.689325833264,68216.28633027671
+					58412.0226591666,67731.92464493979
+					57587.9773408334,67731.92464493979
+					56921.310674166736,68216.28633027671
+					56666.666666666664,69000.0
+					56921.310674166736,69783.71366972329
+					57587.9773408334,70268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,76268.07535506021
+					55078.689325833264,75783.71366972329
+					55333.333333333336,75000.0
+					55078.689325833264,74216.28633027671
+					54412.0226591666,73731.92464493979
+					53587.9773408334,73731.92464493979
+					52921.310674166736,74216.28633027671
+					52666.666666666664,75000.0
+					52921.310674166736,75783.71366972329
+					53587.9773408334,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,76268.07535506021
+					59078.689325833264,75783.71366972329
+					59333.333333333336,75000.0
+					59078.689325833264,74216.28633027671
+					58412.0226591666,73731.92464493979
+					57587.9773408334,73731.92464493979
+					56921.310674166736,74216.28633027671
+					56666.666666666664,75000.0
+					56921.310674166736,75783.71366972329
+					57587.9773408334,76268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,82268.07535506021
+					23078.689325833264,81783.71366972329
+					23333.333333333332,81000.0
+					23078.689325833264,80216.28633027671
+					22412.022659166596,79731.92464493979
+					21587.977340833404,79731.92464493979
+					20921.310674166736,80216.28633027671
+					20666.666666666668,81000.0
+					20921.310674166736,81783.71366972329
+					21587.977340833404,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,82268.07535506021
+					27078.689325833264,81783.71366972329
+					27333.333333333332,81000.0
+					27078.689325833264,80216.28633027671
+					26412.022659166596,79731.92464493979
+					25587.977340833404,79731.92464493979
+					24921.310674166736,80216.28633027671
+					24666.666666666668,81000.0
+					24921.310674166736,81783.71366972329
+					25587.977340833404,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>22412.022659166596,88268.07535506021
+					23078.689325833264,87783.71366972329
+					23333.333333333332,87000.0
+					23078.689325833264,86216.28633027671
+					22412.022659166596,85731.92464493979
+					21587.977340833404,85731.92464493979
+					20921.310674166736,86216.28633027671
+					20666.666666666668,87000.0
+					20921.310674166736,87783.71366972329
+					21587.977340833404,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>26412.022659166596,88268.07535506021
+					27078.689325833264,87783.71366972329
+					27333.333333333332,87000.0
+					27078.689325833264,86216.28633027671
+					26412.022659166596,85731.92464493979
+					25587.977340833404,85731.92464493979
+					24921.310674166736,86216.28633027671
+					24666.666666666668,87000.0
+					24921.310674166736,87783.71366972329
+					25587.977340833404,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,82268.07535506021
+					31078.689325833264,81783.71366972329
+					31333.333333333332,81000.0
+					31078.689325833264,80216.28633027671
+					30412.022659166596,79731.92464493979
+					29587.977340833404,79731.92464493979
+					28921.310674166736,80216.28633027671
+					28666.666666666668,81000.0
+					28921.310674166736,81783.71366972329
+					29587.977340833404,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,82268.07535506021
+					35078.689325833264,81783.71366972329
+					35333.333333333336,81000.0
+					35078.689325833264,80216.28633027671
+					34412.0226591666,79731.92464493979
+					33587.9773408334,79731.92464493979
+					32921.310674166736,80216.28633027671
+					32666.666666666668,81000.0
+					32921.310674166736,81783.71366972329
+					33587.9773408334,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>30412.022659166596,88268.07535506021
+					31078.689325833264,87783.71366972329
+					31333.333333333332,87000.0
+					31078.689325833264,86216.28633027671
+					30412.022659166596,85731.92464493979
+					29587.977340833404,85731.92464493979
+					28921.310674166736,86216.28633027671
+					28666.666666666668,87000.0
+					28921.310674166736,87783.71366972329
+					29587.977340833404,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>34412.0226591666,88268.07535506021
+					35078.689325833264,87783.71366972329
+					35333.333333333336,87000.0
+					35078.689325833264,86216.28633027671
+					34412.0226591666,85731.92464493979
+					33587.9773408334,85731.92464493979
+					32921.310674166736,86216.28633027671
+					32666.666666666668,87000.0
+					32921.310674166736,87783.71366972329
+					33587.9773408334,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,82268.07535506021
+					39078.689325833264,81783.71366972329
+					39333.333333333336,81000.0
+					39078.689325833264,80216.28633027671
+					38412.0226591666,79731.92464493979
+					37587.9773408334,79731.92464493979
+					36921.310674166736,80216.28633027671
+					36666.666666666664,81000.0
+					36921.310674166736,81783.71366972329
+					37587.9773408334,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,82268.07535506021
+					43078.689325833264,81783.71366972329
+					43333.333333333336,81000.0
+					43078.689325833264,80216.28633027671
+					42412.0226591666,79731.92464493979
+					41587.9773408334,79731.92464493979
+					40921.310674166736,80216.28633027671
+					40666.666666666664,81000.0
+					40921.310674166736,81783.71366972329
+					41587.9773408334,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>38412.0226591666,88268.07535506021
+					39078.689325833264,87783.71366972329
+					39333.333333333336,87000.0
+					39078.689325833264,86216.28633027671
+					38412.0226591666,85731.92464493979
+					37587.9773408334,85731.92464493979
+					36921.310674166736,86216.28633027671
+					36666.666666666664,87000.0
+					36921.310674166736,87783.71366972329
+					37587.9773408334,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>42412.0226591666,88268.07535506021
+					43078.689325833264,87783.71366972329
+					43333.333333333336,87000.0
+					43078.689325833264,86216.28633027671
+					42412.0226591666,85731.92464493979
+					41587.9773408334,85731.92464493979
+					40921.310674166736,86216.28633027671
+					40666.666666666664,87000.0
+					40921.310674166736,87783.71366972329
+					41587.9773408334,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,82268.07535506021
+					47078.689325833264,81783.71366972329
+					47333.333333333336,81000.0
+					47078.689325833264,80216.28633027671
+					46412.0226591666,79731.92464493979
+					45587.9773408334,79731.92464493979
+					44921.310674166736,80216.28633027671
+					44666.666666666664,81000.0
+					44921.310674166736,81783.71366972329
+					45587.9773408334,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,82268.07535506021
+					51078.689325833264,81783.71366972329
+					51333.333333333336,81000.0
+					51078.689325833264,80216.28633027671
+					50412.0226591666,79731.92464493979
+					49587.9773408334,79731.92464493979
+					48921.310674166736,80216.28633027671
+					48666.666666666664,81000.0
+					48921.310674166736,81783.71366972329
+					49587.9773408334,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>46412.0226591666,88268.07535506021
+					47078.689325833264,87783.71366972329
+					47333.333333333336,87000.0
+					47078.689325833264,86216.28633027671
+					46412.0226591666,85731.92464493979
+					45587.9773408334,85731.92464493979
+					44921.310674166736,86216.28633027671
+					44666.666666666664,87000.0
+					44921.310674166736,87783.71366972329
+					45587.9773408334,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>50412.0226591666,88268.07535506021
+					51078.689325833264,87783.71366972329
+					51333.333333333336,87000.0
+					51078.689325833264,86216.28633027671
+					50412.0226591666,85731.92464493979
+					49587.9773408334,85731.92464493979
+					48921.310674166736,86216.28633027671
+					48666.666666666664,87000.0
+					48921.310674166736,87783.71366972329
+					49587.9773408334,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+	
+	<MultiLineString>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,82268.07535506021
+					55078.689325833264,81783.71366972329
+					55333.333333333336,81000.0
+					55078.689325833264,80216.28633027671
+					54412.0226591666,79731.92464493979
+					53587.9773408334,79731.92464493979
+					52921.310674166736,80216.28633027671
+					52666.666666666664,81000.0
+					52921.310674166736,81783.71366972329
+					53587.9773408334,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,82268.07535506021
+					59078.689325833264,81783.71366972329
+					59333.333333333336,81000.0
+					59078.689325833264,80216.28633027671
+					58412.0226591666,79731.92464493979
+					57587.9773408334,79731.92464493979
+					56921.310674166736,80216.28633027671
+					56666.666666666664,81000.0
+					56921.310674166736,81783.71366972329
+					57587.9773408334,82268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>54412.0226591666,88268.07535506021
+					55078.689325833264,87783.71366972329
+					55333.333333333336,87000.0
+					55078.689325833264,86216.28633027671
+					54412.0226591666,85731.92464493979
+					53587.9773408334,85731.92464493979
+					52921.310674166736,86216.28633027671
+					52666.666666666664,87000.0
+					52921.310674166736,87783.71366972329
+					53587.9773408334,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+		<lineStringMember>
+			<LineString>
+				<coordinates>58412.0226591666,88268.07535506021
+					59078.689325833264,87783.71366972329
+					59333.333333333336,87000.0
+					59078.689325833264,86216.28633027671
+					58412.0226591666,85731.92464493979
+					57587.9773408334,85731.92464493979
+					56921.310674166736,86216.28633027671
+					56666.666666666664,87000.0
+					56921.310674166736,87783.71366972329
+					57587.9773408334,88268.07535506021 </coordinates>
+			</LineString>
+		</lineStringMember>
+	</MultiLineString>
+</MultiGeometry>
diff --git a/jtsio/test/data/multipoints.xml b/jtsio/test/data/multipoints.xml
new file mode 100644
index 0000000..2875686
--- /dev/null
+++ b/jtsio/test/data/multipoints.xml
@@ -0,0 +1,580 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<MultiGeometry>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,33000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,39000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,45000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,51000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,57000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,63000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,69000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,75000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>22000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>26000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>30000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>34000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>38000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>42000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>46000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>50000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+	<MultiPoint>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,81000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>54000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+		<pointMember>
+			<Point>
+				<coordinates>58000.0,87000.0 </coordinates>
+			</Point>
+		</pointMember>
+	</MultiPoint>
+	
+</MultiGeometry>
diff --git a/jtsio/test/data/multipolygons.xml b/jtsio/test/data/multipolygons.xml
new file mode 100644
index 0000000..8db27f8
--- /dev/null
+++ b/jtsio/test/data/multipolygons.xml
@@ -0,0 +1,8380 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<MultiGeometry>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,34333.333333333336
+							22783.713669723296,34078.689325833264
+							23268.075355060206,33412.0226591666
+							23268.075355060206,32587.977340833404
+							22783.713669723296,31921.310674166736
+							22000.0,31666.666666666668
+							21216.286330276704,31921.310674166736
+							20731.924644939794,32587.977340833404
+							20731.924644939794,33412.0226591666
+							21216.286330276704,34078.689325833264
+							22000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,33000.0
+							22669.13060635886,33743.14482547739
+							22034.8994967025,33999.390827019095 22000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,33000.0
+							22998.629534754575,33052.33595624295
+							22731.35370161917,33681.9983600625 22000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,33000.0
+							22743.144825477393,32330.869393641144
+							22999.390827019095,32965.1005032975 22000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,33000.0
+							22052.335956242943,32001.370465245425
+							22681.9983600625,32268.64629838083 22000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,33000.0
+							21330.86939364114,32256.855174522607
+							21965.1005032975,32000.609172980905 22000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,33000.0
+							21001.370465245425,32947.66404375705
+							21268.64629838083,32318.0016399375 22000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,33000.0
+							21256.855174522607,33669.130606358856
+							21000.609172980905,33034.8994967025 22000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,33000.0
+							21947.664043757057,33998.629534754575
+							21318.0016399375,33731.35370161917 22000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,34333.333333333336
+							26783.713669723296,34078.689325833264
+							27268.075355060206,33412.0226591666
+							27268.075355060206,32587.977340833404
+							26783.713669723296,31921.310674166736
+							26000.0,31666.666666666668
+							25216.286330276704,31921.310674166736
+							24731.924644939794,32587.977340833404
+							24731.924644939794,33412.0226591666
+							25216.286330276704,34078.689325833264
+							26000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,33000.0
+							26669.13060635886,33743.14482547739
+							26034.8994967025,33999.390827019095 26000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,33000.0
+							26998.629534754575,33052.33595624295
+							26731.35370161917,33681.9983600625 26000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,33000.0
+							26743.144825477393,32330.869393641144
+							26999.390827019095,32965.1005032975 26000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,33000.0
+							26052.335956242943,32001.370465245425
+							26681.9983600625,32268.64629838083 26000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,33000.0
+							25330.86939364114,32256.855174522607
+							25965.1005032975,32000.609172980905 26000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,33000.0
+							25001.370465245425,32947.66404375705
+							25268.64629838083,32318.0016399375 26000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,33000.0
+							25256.855174522607,33669.130606358856
+							25000.609172980905,33034.8994967025 26000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,33000.0
+							25947.664043757057,33998.629534754575
+							25318.0016399375,33731.35370161917 26000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,40333.333333333336
+							22783.713669723296,40078.689325833264
+							23268.075355060206,39412.0226591666
+							23268.075355060206,38587.9773408334
+							22783.713669723296,37921.310674166736
+							22000.0,37666.666666666664
+							21216.286330276704,37921.310674166736
+							20731.924644939794,38587.9773408334
+							20731.924644939794,39412.0226591666
+							21216.286330276704,40078.689325833264
+							22000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,39000.0
+							22669.13060635886,39743.14482547739
+							22034.8994967025,39999.390827019095 22000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,39000.0
+							22998.629534754575,39052.33595624295
+							22731.35370161917,39681.9983600625 22000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,39000.0
+							22743.144825477393,38330.869393641144
+							22999.390827019095,38965.1005032975 22000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,39000.0
+							22052.335956242943,38001.370465245425
+							22681.9983600625,38268.64629838083 22000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,39000.0
+							21330.86939364114,38256.85517452261
+							21965.1005032975,38000.609172980905 22000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,39000.0
+							21001.370465245425,38947.66404375705
+							21268.64629838083,38318.0016399375 22000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,39000.0
+							21256.855174522607,39669.130606358856
+							21000.609172980905,39034.8994967025 22000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,39000.0
+							21947.664043757057,39998.629534754575
+							21318.0016399375,39731.35370161917 22000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,40333.333333333336
+							26783.713669723296,40078.689325833264
+							27268.075355060206,39412.0226591666
+							27268.075355060206,38587.9773408334
+							26783.713669723296,37921.310674166736
+							26000.0,37666.666666666664
+							25216.286330276704,37921.310674166736
+							24731.924644939794,38587.9773408334
+							24731.924644939794,39412.0226591666
+							25216.286330276704,40078.689325833264
+							26000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,39000.0
+							26669.13060635886,39743.14482547739
+							26034.8994967025,39999.390827019095 26000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,39000.0
+							26998.629534754575,39052.33595624295
+							26731.35370161917,39681.9983600625 26000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,39000.0
+							26743.144825477393,38330.869393641144
+							26999.390827019095,38965.1005032975 26000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,39000.0
+							26052.335956242943,38001.370465245425
+							26681.9983600625,38268.64629838083 26000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,39000.0
+							25330.86939364114,38256.85517452261
+							25965.1005032975,38000.609172980905 26000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,39000.0
+							25001.370465245425,38947.66404375705
+							25268.64629838083,38318.0016399375 26000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,39000.0
+							25256.855174522607,39669.130606358856
+							25000.609172980905,39034.8994967025 26000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,39000.0
+							25947.664043757057,39998.629534754575
+							25318.0016399375,39731.35370161917 26000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,34333.333333333336
+							30783.713669723296,34078.689325833264
+							31268.075355060206,33412.0226591666
+							31268.075355060206,32587.977340833404
+							30783.713669723296,31921.310674166736
+							30000.0,31666.666666666668
+							29216.286330276704,31921.310674166736
+							28731.924644939794,32587.977340833404
+							28731.924644939794,33412.0226591666
+							29216.286330276704,34078.689325833264
+							30000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,33000.0
+							30669.13060635886,33743.14482547739
+							30034.8994967025,33999.390827019095 30000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,33000.0
+							30998.629534754575,33052.33595624295
+							30731.35370161917,33681.9983600625 30000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,33000.0
+							30743.144825477393,32330.869393641144
+							30999.390827019095,32965.1005032975 30000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,33000.0
+							30052.335956242943,32001.370465245425
+							30681.9983600625,32268.64629838083 30000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,33000.0
+							29330.86939364114,32256.855174522607
+							29965.1005032975,32000.609172980905 30000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,33000.0
+							29001.370465245425,32947.66404375705
+							29268.64629838083,32318.0016399375 30000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,33000.0
+							29256.855174522607,33669.130606358856
+							29000.609172980905,33034.8994967025 30000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,33000.0
+							29947.664043757057,33998.629534754575
+							29318.0016399375,33731.35370161917 30000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,34333.333333333336
+							34783.7136697233,34078.689325833264
+							35268.0753550602,33412.0226591666
+							35268.0753550602,32587.977340833404
+							34783.7136697233,31921.310674166736
+							34000.0,31666.666666666668
+							33216.2863302767,31921.310674166736
+							32731.924644939794,32587.977340833404
+							32731.924644939794,33412.0226591666
+							33216.2863302767,34078.689325833264
+							34000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,33000.0
+							34669.130606358856,33743.14482547739
+							34034.8994967025,33999.390827019095 34000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,33000.0
+							34998.629534754575,33052.33595624295
+							34731.35370161917,33681.9983600625 34000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,33000.0
+							34743.14482547739,32330.869393641144
+							34999.390827019095,32965.1005032975 34000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,33000.0
+							34052.33595624295,32001.370465245425
+							34681.9983600625,32268.64629838083 34000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,33000.0
+							33330.869393641144,32256.855174522607
+							33965.1005032975,32000.609172980905 34000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,33000.0
+							33001.370465245425,32947.66404375705
+							33268.64629838083,32318.0016399375 34000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,33000.0
+							33256.85517452261,33669.130606358856
+							33000.609172980905,33034.8994967025 34000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,33000.0
+							33947.66404375705,33998.629534754575
+							33318.0016399375,33731.35370161917 34000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,40333.333333333336
+							30783.713669723296,40078.689325833264
+							31268.075355060206,39412.0226591666
+							31268.075355060206,38587.9773408334
+							30783.713669723296,37921.310674166736
+							30000.0,37666.666666666664
+							29216.286330276704,37921.310674166736
+							28731.924644939794,38587.9773408334
+							28731.924644939794,39412.0226591666
+							29216.286330276704,40078.689325833264
+							30000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,39000.0
+							30669.13060635886,39743.14482547739
+							30034.8994967025,39999.390827019095 30000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,39000.0
+							30998.629534754575,39052.33595624295
+							30731.35370161917,39681.9983600625 30000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,39000.0
+							30743.144825477393,38330.869393641144
+							30999.390827019095,38965.1005032975 30000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,39000.0
+							30052.335956242943,38001.370465245425
+							30681.9983600625,38268.64629838083 30000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,39000.0
+							29330.86939364114,38256.85517452261
+							29965.1005032975,38000.609172980905 30000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,39000.0
+							29001.370465245425,38947.66404375705
+							29268.64629838083,38318.0016399375 30000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,39000.0
+							29256.855174522607,39669.130606358856
+							29000.609172980905,39034.8994967025 30000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,39000.0
+							29947.664043757057,39998.629534754575
+							29318.0016399375,39731.35370161917 30000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,40333.333333333336
+							34783.7136697233,40078.689325833264
+							35268.0753550602,39412.0226591666
+							35268.0753550602,38587.9773408334
+							34783.7136697233,37921.310674166736
+							34000.0,37666.666666666664
+							33216.2863302767,37921.310674166736
+							32731.924644939794,38587.9773408334
+							32731.924644939794,39412.0226591666
+							33216.2863302767,40078.689325833264
+							34000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,39000.0
+							34669.130606358856,39743.14482547739
+							34034.8994967025,39999.390827019095 34000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,39000.0
+							34998.629534754575,39052.33595624295
+							34731.35370161917,39681.9983600625 34000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,39000.0
+							34743.14482547739,38330.869393641144
+							34999.390827019095,38965.1005032975 34000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,39000.0
+							34052.33595624295,38001.370465245425
+							34681.9983600625,38268.64629838083 34000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,39000.0
+							33330.869393641144,38256.85517452261
+							33965.1005032975,38000.609172980905 34000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,39000.0
+							33001.370465245425,38947.66404375705
+							33268.64629838083,38318.0016399375 34000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,39000.0
+							33256.85517452261,39669.130606358856
+							33000.609172980905,39034.8994967025 34000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,39000.0
+							33947.66404375705,39998.629534754575
+							33318.0016399375,39731.35370161917 34000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,34333.333333333336
+							38783.7136697233,34078.689325833264
+							39268.0753550602,33412.0226591666
+							39268.0753550602,32587.977340833404
+							38783.7136697233,31921.310674166736
+							38000.0,31666.666666666668
+							37216.2863302767,31921.310674166736
+							36731.9246449398,32587.977340833404
+							36731.9246449398,33412.0226591666
+							37216.2863302767,34078.689325833264
+							38000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,33000.0
+							38669.130606358856,33743.14482547739
+							38034.8994967025,33999.390827019095 38000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,33000.0
+							38998.629534754575,33052.33595624295
+							38731.35370161917,33681.9983600625 38000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,33000.0
+							38743.14482547739,32330.869393641144
+							38999.390827019095,32965.1005032975 38000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,33000.0
+							38052.33595624295,32001.370465245425
+							38681.9983600625,32268.64629838083 38000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,33000.0
+							37330.869393641144,32256.855174522607
+							37965.1005032975,32000.609172980905 38000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,33000.0
+							37001.370465245425,32947.66404375705
+							37268.64629838083,32318.0016399375 38000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,33000.0
+							37256.85517452261,33669.130606358856
+							37000.609172980905,33034.8994967025 38000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,33000.0
+							37947.66404375705,33998.629534754575
+							37318.0016399375,33731.35370161917 38000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,34333.333333333336
+							42783.7136697233,34078.689325833264
+							43268.0753550602,33412.0226591666
+							43268.0753550602,32587.977340833404
+							42783.7136697233,31921.310674166736
+							42000.0,31666.666666666668
+							41216.2863302767,31921.310674166736
+							40731.9246449398,32587.977340833404
+							40731.9246449398,33412.0226591666
+							41216.2863302767,34078.689325833264
+							42000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,33000.0
+							42669.130606358856,33743.14482547739
+							42034.8994967025,33999.390827019095 42000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,33000.0
+							42998.629534754575,33052.33595624295
+							42731.35370161917,33681.9983600625 42000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,33000.0
+							42743.14482547739,32330.869393641144
+							42999.390827019095,32965.1005032975 42000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,33000.0
+							42052.33595624295,32001.370465245425
+							42681.9983600625,32268.64629838083 42000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,33000.0
+							41330.869393641144,32256.855174522607
+							41965.1005032975,32000.609172980905 42000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,33000.0
+							41001.370465245425,32947.66404375705
+							41268.64629838083,32318.0016399375 42000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,33000.0
+							41256.85517452261,33669.130606358856
+							41000.609172980905,33034.8994967025 42000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,33000.0
+							41947.66404375705,33998.629534754575
+							41318.0016399375,33731.35370161917 42000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,40333.333333333336
+							38783.7136697233,40078.689325833264
+							39268.0753550602,39412.0226591666
+							39268.0753550602,38587.9773408334
+							38783.7136697233,37921.310674166736
+							38000.0,37666.666666666664
+							37216.2863302767,37921.310674166736
+							36731.9246449398,38587.9773408334
+							36731.9246449398,39412.0226591666
+							37216.2863302767,40078.689325833264
+							38000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,39000.0
+							38669.130606358856,39743.14482547739
+							38034.8994967025,39999.390827019095 38000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,39000.0
+							38998.629534754575,39052.33595624295
+							38731.35370161917,39681.9983600625 38000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,39000.0
+							38743.14482547739,38330.869393641144
+							38999.390827019095,38965.1005032975 38000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,39000.0
+							38052.33595624295,38001.370465245425
+							38681.9983600625,38268.64629838083 38000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,39000.0
+							37330.869393641144,38256.85517452261
+							37965.1005032975,38000.609172980905 38000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,39000.0
+							37001.370465245425,38947.66404375705
+							37268.64629838083,38318.0016399375 38000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,39000.0
+							37256.85517452261,39669.130606358856
+							37000.609172980905,39034.8994967025 38000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,39000.0
+							37947.66404375705,39998.629534754575
+							37318.0016399375,39731.35370161917 38000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,40333.333333333336
+							42783.7136697233,40078.689325833264
+							43268.0753550602,39412.0226591666
+							43268.0753550602,38587.9773408334
+							42783.7136697233,37921.310674166736
+							42000.0,37666.666666666664
+							41216.2863302767,37921.310674166736
+							40731.9246449398,38587.9773408334
+							40731.9246449398,39412.0226591666
+							41216.2863302767,40078.689325833264
+							42000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,39000.0
+							42669.130606358856,39743.14482547739
+							42034.8994967025,39999.390827019095 42000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,39000.0
+							42998.629534754575,39052.33595624295
+							42731.35370161917,39681.9983600625 42000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,39000.0
+							42743.14482547739,38330.869393641144
+							42999.390827019095,38965.1005032975 42000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,39000.0
+							42052.33595624295,38001.370465245425
+							42681.9983600625,38268.64629838083 42000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,39000.0
+							41330.869393641144,38256.85517452261
+							41965.1005032975,38000.609172980905 42000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,39000.0
+							41001.370465245425,38947.66404375705
+							41268.64629838083,38318.0016399375 42000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,39000.0
+							41256.85517452261,39669.130606358856
+							41000.609172980905,39034.8994967025 42000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,39000.0
+							41947.66404375705,39998.629534754575
+							41318.0016399375,39731.35370161917 42000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,34333.333333333336
+							46783.7136697233,34078.689325833264
+							47268.0753550602,33412.0226591666
+							47268.0753550602,32587.977340833404
+							46783.7136697233,31921.310674166736
+							46000.0,31666.666666666668
+							45216.2863302767,31921.310674166736
+							44731.9246449398,32587.977340833404
+							44731.9246449398,33412.0226591666
+							45216.2863302767,34078.689325833264
+							46000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,33000.0
+							46669.130606358856,33743.14482547739
+							46034.8994967025,33999.390827019095 46000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,33000.0
+							46998.629534754575,33052.33595624295
+							46731.35370161917,33681.9983600625 46000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,33000.0
+							46743.14482547739,32330.869393641144
+							46999.390827019095,32965.1005032975 46000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,33000.0
+							46052.33595624295,32001.370465245425
+							46681.9983600625,32268.64629838083 46000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,33000.0
+							45330.869393641144,32256.855174522607
+							45965.1005032975,32000.609172980905 46000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,33000.0
+							45001.370465245425,32947.66404375705
+							45268.64629838083,32318.0016399375 46000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,33000.0
+							45256.85517452261,33669.130606358856
+							45000.609172980905,33034.8994967025 46000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,33000.0
+							45947.66404375705,33998.629534754575
+							45318.0016399375,33731.35370161917 46000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,34333.333333333336
+							50783.7136697233,34078.689325833264
+							51268.0753550602,33412.0226591666
+							51268.0753550602,32587.977340833404
+							50783.7136697233,31921.310674166736
+							50000.0,31666.666666666668
+							49216.2863302767,31921.310674166736
+							48731.9246449398,32587.977340833404
+							48731.9246449398,33412.0226591666
+							49216.2863302767,34078.689325833264
+							50000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,33000.0
+							50669.130606358856,33743.14482547739
+							50034.8994967025,33999.390827019095 50000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,33000.0
+							50998.629534754575,33052.33595624295
+							50731.35370161917,33681.9983600625 50000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,33000.0
+							50743.14482547739,32330.869393641144
+							50999.390827019095,32965.1005032975 50000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,33000.0
+							50052.33595624295,32001.370465245425
+							50681.9983600625,32268.64629838083 50000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,33000.0
+							49330.869393641144,32256.855174522607
+							49965.1005032975,32000.609172980905 50000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,33000.0
+							49001.370465245425,32947.66404375705
+							49268.64629838083,32318.0016399375 50000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,33000.0
+							49256.85517452261,33669.130606358856
+							49000.609172980905,33034.8994967025 50000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,33000.0
+							49947.66404375705,33998.629534754575
+							49318.0016399375,33731.35370161917 50000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,40333.333333333336
+							46783.7136697233,40078.689325833264
+							47268.0753550602,39412.0226591666
+							47268.0753550602,38587.9773408334
+							46783.7136697233,37921.310674166736
+							46000.0,37666.666666666664
+							45216.2863302767,37921.310674166736
+							44731.9246449398,38587.9773408334
+							44731.9246449398,39412.0226591666
+							45216.2863302767,40078.689325833264
+							46000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,39000.0
+							46669.130606358856,39743.14482547739
+							46034.8994967025,39999.390827019095 46000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,39000.0
+							46998.629534754575,39052.33595624295
+							46731.35370161917,39681.9983600625 46000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,39000.0
+							46743.14482547739,38330.869393641144
+							46999.390827019095,38965.1005032975 46000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,39000.0
+							46052.33595624295,38001.370465245425
+							46681.9983600625,38268.64629838083 46000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,39000.0
+							45330.869393641144,38256.85517452261
+							45965.1005032975,38000.609172980905 46000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,39000.0
+							45001.370465245425,38947.66404375705
+							45268.64629838083,38318.0016399375 46000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,39000.0
+							45256.85517452261,39669.130606358856
+							45000.609172980905,39034.8994967025 46000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,39000.0
+							45947.66404375705,39998.629534754575
+							45318.0016399375,39731.35370161917 46000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,40333.333333333336
+							50783.7136697233,40078.689325833264
+							51268.0753550602,39412.0226591666
+							51268.0753550602,38587.9773408334
+							50783.7136697233,37921.310674166736
+							50000.0,37666.666666666664
+							49216.2863302767,37921.310674166736
+							48731.9246449398,38587.9773408334
+							48731.9246449398,39412.0226591666
+							49216.2863302767,40078.689325833264
+							50000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,39000.0
+							50669.130606358856,39743.14482547739
+							50034.8994967025,39999.390827019095 50000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,39000.0
+							50998.629534754575,39052.33595624295
+							50731.35370161917,39681.9983600625 50000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,39000.0
+							50743.14482547739,38330.869393641144
+							50999.390827019095,38965.1005032975 50000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,39000.0
+							50052.33595624295,38001.370465245425
+							50681.9983600625,38268.64629838083 50000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,39000.0
+							49330.869393641144,38256.85517452261
+							49965.1005032975,38000.609172980905 50000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,39000.0
+							49001.370465245425,38947.66404375705
+							49268.64629838083,38318.0016399375 50000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,39000.0
+							49256.85517452261,39669.130606358856
+							49000.609172980905,39034.8994967025 50000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,39000.0
+							49947.66404375705,39998.629534754575
+							49318.0016399375,39731.35370161917 50000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,34333.333333333336
+							54783.7136697233,34078.689325833264
+							55268.0753550602,33412.0226591666
+							55268.0753550602,32587.977340833404
+							54783.7136697233,31921.310674166736
+							54000.0,31666.666666666668
+							53216.2863302767,31921.310674166736
+							52731.9246449398,32587.977340833404
+							52731.9246449398,33412.0226591666
+							53216.2863302767,34078.689325833264
+							54000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,33000.0
+							54669.130606358856,33743.14482547739
+							54034.8994967025,33999.390827019095 54000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,33000.0
+							54998.629534754575,33052.33595624295
+							54731.35370161917,33681.9983600625 54000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,33000.0
+							54743.14482547739,32330.869393641144
+							54999.390827019095,32965.1005032975 54000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,33000.0
+							54052.33595624295,32001.370465245425
+							54681.9983600625,32268.64629838083 54000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,33000.0
+							53330.869393641144,32256.855174522607
+							53965.1005032975,32000.609172980905 54000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,33000.0
+							53001.370465245425,32947.66404375705
+							53268.64629838083,32318.0016399375 54000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,33000.0
+							53256.85517452261,33669.130606358856
+							53000.609172980905,33034.8994967025 54000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,33000.0
+							53947.66404375705,33998.629534754575
+							53318.0016399375,33731.35370161917 54000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,34333.333333333336
+							58783.7136697233,34078.689325833264
+							59268.0753550602,33412.0226591666
+							59268.0753550602,32587.977340833404
+							58783.7136697233,31921.310674166736
+							58000.0,31666.666666666668
+							57216.2863302767,31921.310674166736
+							56731.9246449398,32587.977340833404
+							56731.9246449398,33412.0226591666
+							57216.2863302767,34078.689325833264
+							58000.0,34333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,33000.0
+							58669.130606358856,33743.14482547739
+							58034.8994967025,33999.390827019095 58000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,33000.0
+							58998.629534754575,33052.33595624295
+							58731.35370161917,33681.9983600625 58000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,33000.0
+							58743.14482547739,32330.869393641144
+							58999.390827019095,32965.1005032975 58000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,33000.0
+							58052.33595624295,32001.370465245425
+							58681.9983600625,32268.64629838083 58000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,33000.0
+							57330.869393641144,32256.855174522607
+							57965.1005032975,32000.609172980905 58000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,33000.0
+							57001.370465245425,32947.66404375705
+							57268.64629838083,32318.0016399375 58000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,33000.0
+							57256.85517452261,33669.130606358856
+							57000.609172980905,33034.8994967025 58000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,33000.0
+							57947.66404375705,33998.629534754575
+							57318.0016399375,33731.35370161917 58000.0,33000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,40333.333333333336
+							54783.7136697233,40078.689325833264
+							55268.0753550602,39412.0226591666
+							55268.0753550602,38587.9773408334
+							54783.7136697233,37921.310674166736
+							54000.0,37666.666666666664
+							53216.2863302767,37921.310674166736
+							52731.9246449398,38587.9773408334
+							52731.9246449398,39412.0226591666
+							53216.2863302767,40078.689325833264
+							54000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,39000.0
+							54669.130606358856,39743.14482547739
+							54034.8994967025,39999.390827019095 54000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,39000.0
+							54998.629534754575,39052.33595624295
+							54731.35370161917,39681.9983600625 54000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,39000.0
+							54743.14482547739,38330.869393641144
+							54999.390827019095,38965.1005032975 54000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,39000.0
+							54052.33595624295,38001.370465245425
+							54681.9983600625,38268.64629838083 54000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,39000.0
+							53330.869393641144,38256.85517452261
+							53965.1005032975,38000.609172980905 54000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,39000.0
+							53001.370465245425,38947.66404375705
+							53268.64629838083,38318.0016399375 54000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,39000.0
+							53256.85517452261,39669.130606358856
+							53000.609172980905,39034.8994967025 54000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,39000.0
+							53947.66404375705,39998.629534754575
+							53318.0016399375,39731.35370161917 54000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,40333.333333333336
+							58783.7136697233,40078.689325833264
+							59268.0753550602,39412.0226591666
+							59268.0753550602,38587.9773408334
+							58783.7136697233,37921.310674166736
+							58000.0,37666.666666666664
+							57216.2863302767,37921.310674166736
+							56731.9246449398,38587.9773408334
+							56731.9246449398,39412.0226591666
+							57216.2863302767,40078.689325833264
+							58000.0,40333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,39000.0
+							58669.130606358856,39743.14482547739
+							58034.8994967025,39999.390827019095 58000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,39000.0
+							58998.629534754575,39052.33595624295
+							58731.35370161917,39681.9983600625 58000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,39000.0
+							58743.14482547739,38330.869393641144
+							58999.390827019095,38965.1005032975 58000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,39000.0
+							58052.33595624295,38001.370465245425
+							58681.9983600625,38268.64629838083 58000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,39000.0
+							57330.869393641144,38256.85517452261
+							57965.1005032975,38000.609172980905 58000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,39000.0
+							57001.370465245425,38947.66404375705
+							57268.64629838083,38318.0016399375 58000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,39000.0
+							57256.85517452261,39669.130606358856
+							57000.609172980905,39034.8994967025 58000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,39000.0
+							57947.66404375705,39998.629534754575
+							57318.0016399375,39731.35370161917 58000.0,39000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,46333.333333333336
+							22783.713669723296,46078.689325833264
+							23268.075355060206,45412.0226591666
+							23268.075355060206,44587.9773408334
+							22783.713669723296,43921.310674166736
+							22000.0,43666.666666666664
+							21216.286330276704,43921.310674166736
+							20731.924644939794,44587.9773408334
+							20731.924644939794,45412.0226591666
+							21216.286330276704,46078.689325833264
+							22000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,45000.0
+							22669.13060635886,45743.14482547739
+							22034.8994967025,45999.390827019095 22000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,45000.0
+							22998.629534754575,45052.33595624295
+							22731.35370161917,45681.9983600625 22000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,45000.0
+							22743.144825477393,44330.869393641144
+							22999.390827019095,44965.1005032975 22000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,45000.0
+							22052.335956242943,44001.370465245425
+							22681.9983600625,44268.64629838083 22000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,45000.0
+							21330.86939364114,44256.85517452261
+							21965.1005032975,44000.609172980905 22000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,45000.0
+							21001.370465245425,44947.66404375705
+							21268.64629838083,44318.0016399375 22000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,45000.0
+							21256.855174522607,45669.130606358856
+							21000.609172980905,45034.8994967025 22000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,45000.0
+							21947.664043757057,45998.629534754575
+							21318.0016399375,45731.35370161917 22000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,46333.333333333336
+							26783.713669723296,46078.689325833264
+							27268.075355060206,45412.0226591666
+							27268.075355060206,44587.9773408334
+							26783.713669723296,43921.310674166736
+							26000.0,43666.666666666664
+							25216.286330276704,43921.310674166736
+							24731.924644939794,44587.9773408334
+							24731.924644939794,45412.0226591666
+							25216.286330276704,46078.689325833264
+							26000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,45000.0
+							26669.13060635886,45743.14482547739
+							26034.8994967025,45999.390827019095 26000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,45000.0
+							26998.629534754575,45052.33595624295
+							26731.35370161917,45681.9983600625 26000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,45000.0
+							26743.144825477393,44330.869393641144
+							26999.390827019095,44965.1005032975 26000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,45000.0
+							26052.335956242943,44001.370465245425
+							26681.9983600625,44268.64629838083 26000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,45000.0
+							25330.86939364114,44256.85517452261
+							25965.1005032975,44000.609172980905 26000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,45000.0
+							25001.370465245425,44947.66404375705
+							25268.64629838083,44318.0016399375 26000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,45000.0
+							25256.855174522607,45669.130606358856
+							25000.609172980905,45034.8994967025 26000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,45000.0
+							25947.664043757057,45998.629534754575
+							25318.0016399375,45731.35370161917 26000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,52333.333333333336
+							22783.713669723296,52078.689325833264
+							23268.075355060206,51412.0226591666
+							23268.075355060206,50587.9773408334
+							22783.713669723296,49921.310674166736
+							22000.0,49666.666666666664
+							21216.286330276704,49921.310674166736
+							20731.924644939794,50587.9773408334
+							20731.924644939794,51412.0226591666
+							21216.286330276704,52078.689325833264
+							22000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,51000.0
+							22669.13060635886,51743.14482547739
+							22034.8994967025,51999.390827019095 22000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,51000.0
+							22998.629534754575,51052.33595624295
+							22731.35370161917,51681.9983600625 22000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,51000.0
+							22743.144825477393,50330.869393641144
+							22999.390827019095,50965.1005032975 22000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,51000.0
+							22052.335956242943,50001.370465245425
+							22681.9983600625,50268.64629838083 22000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,51000.0
+							21330.86939364114,50256.85517452261
+							21965.1005032975,50000.609172980905 22000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,51000.0
+							21001.370465245425,50947.66404375705
+							21268.64629838083,50318.0016399375 22000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,51000.0
+							21256.855174522607,51669.130606358856
+							21000.609172980905,51034.8994967025 22000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,51000.0
+							21947.664043757057,51998.629534754575
+							21318.0016399375,51731.35370161917 22000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,52333.333333333336
+							26783.713669723296,52078.689325833264
+							27268.075355060206,51412.0226591666
+							27268.075355060206,50587.9773408334
+							26783.713669723296,49921.310674166736
+							26000.0,49666.666666666664
+							25216.286330276704,49921.310674166736
+							24731.924644939794,50587.9773408334
+							24731.924644939794,51412.0226591666
+							25216.286330276704,52078.689325833264
+							26000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,51000.0
+							26669.13060635886,51743.14482547739
+							26034.8994967025,51999.390827019095 26000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,51000.0
+							26998.629534754575,51052.33595624295
+							26731.35370161917,51681.9983600625 26000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,51000.0
+							26743.144825477393,50330.869393641144
+							26999.390827019095,50965.1005032975 26000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,51000.0
+							26052.335956242943,50001.370465245425
+							26681.9983600625,50268.64629838083 26000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,51000.0
+							25330.86939364114,50256.85517452261
+							25965.1005032975,50000.609172980905 26000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,51000.0
+							25001.370465245425,50947.66404375705
+							25268.64629838083,50318.0016399375 26000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,51000.0
+							25256.855174522607,51669.130606358856
+							25000.609172980905,51034.8994967025 26000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,51000.0
+							25947.664043757057,51998.629534754575
+							25318.0016399375,51731.35370161917 26000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,46333.333333333336
+							30783.713669723296,46078.689325833264
+							31268.075355060206,45412.0226591666
+							31268.075355060206,44587.9773408334
+							30783.713669723296,43921.310674166736
+							30000.0,43666.666666666664
+							29216.286330276704,43921.310674166736
+							28731.924644939794,44587.9773408334
+							28731.924644939794,45412.0226591666
+							29216.286330276704,46078.689325833264
+							30000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,45000.0
+							30669.13060635886,45743.14482547739
+							30034.8994967025,45999.390827019095 30000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,45000.0
+							30998.629534754575,45052.33595624295
+							30731.35370161917,45681.9983600625 30000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,45000.0
+							30743.144825477393,44330.869393641144
+							30999.390827019095,44965.1005032975 30000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,45000.0
+							30052.335956242943,44001.370465245425
+							30681.9983600625,44268.64629838083 30000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,45000.0
+							29330.86939364114,44256.85517452261
+							29965.1005032975,44000.609172980905 30000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,45000.0
+							29001.370465245425,44947.66404375705
+							29268.64629838083,44318.0016399375 30000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,45000.0
+							29256.855174522607,45669.130606358856
+							29000.609172980905,45034.8994967025 30000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,45000.0
+							29947.664043757057,45998.629534754575
+							29318.0016399375,45731.35370161917 30000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,46333.333333333336
+							34783.7136697233,46078.689325833264
+							35268.0753550602,45412.0226591666
+							35268.0753550602,44587.9773408334
+							34783.7136697233,43921.310674166736
+							34000.0,43666.666666666664
+							33216.2863302767,43921.310674166736
+							32731.924644939794,44587.9773408334
+							32731.924644939794,45412.0226591666
+							33216.2863302767,46078.689325833264
+							34000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,45000.0
+							34669.130606358856,45743.14482547739
+							34034.8994967025,45999.390827019095 34000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,45000.0
+							34998.629534754575,45052.33595624295
+							34731.35370161917,45681.9983600625 34000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,45000.0
+							34743.14482547739,44330.869393641144
+							34999.390827019095,44965.1005032975 34000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,45000.0
+							34052.33595624295,44001.370465245425
+							34681.9983600625,44268.64629838083 34000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,45000.0
+							33330.869393641144,44256.85517452261
+							33965.1005032975,44000.609172980905 34000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,45000.0
+							33001.370465245425,44947.66404375705
+							33268.64629838083,44318.0016399375 34000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,45000.0
+							33256.85517452261,45669.130606358856
+							33000.609172980905,45034.8994967025 34000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,45000.0
+							33947.66404375705,45998.629534754575
+							33318.0016399375,45731.35370161917 34000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,52333.333333333336
+							30783.713669723296,52078.689325833264
+							31268.075355060206,51412.0226591666
+							31268.075355060206,50587.9773408334
+							30783.713669723296,49921.310674166736
+							30000.0,49666.666666666664
+							29216.286330276704,49921.310674166736
+							28731.924644939794,50587.9773408334
+							28731.924644939794,51412.0226591666
+							29216.286330276704,52078.689325833264
+							30000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,51000.0
+							30669.13060635886,51743.14482547739
+							30034.8994967025,51999.390827019095 30000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,51000.0
+							30998.629534754575,51052.33595624295
+							30731.35370161917,51681.9983600625 30000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,51000.0
+							30743.144825477393,50330.869393641144
+							30999.390827019095,50965.1005032975 30000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,51000.0
+							30052.335956242943,50001.370465245425
+							30681.9983600625,50268.64629838083 30000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,51000.0
+							29330.86939364114,50256.85517452261
+							29965.1005032975,50000.609172980905 30000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,51000.0
+							29001.370465245425,50947.66404375705
+							29268.64629838083,50318.0016399375 30000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,51000.0
+							29256.855174522607,51669.130606358856
+							29000.609172980905,51034.8994967025 30000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,51000.0
+							29947.664043757057,51998.629534754575
+							29318.0016399375,51731.35370161917 30000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,52333.333333333336
+							34783.7136697233,52078.689325833264
+							35268.0753550602,51412.0226591666
+							35268.0753550602,50587.9773408334
+							34783.7136697233,49921.310674166736
+							34000.0,49666.666666666664
+							33216.2863302767,49921.310674166736
+							32731.924644939794,50587.9773408334
+							32731.924644939794,51412.0226591666
+							33216.2863302767,52078.689325833264
+							34000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,51000.0
+							34669.130606358856,51743.14482547739
+							34034.8994967025,51999.390827019095 34000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,51000.0
+							34998.629534754575,51052.33595624295
+							34731.35370161917,51681.9983600625 34000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,51000.0
+							34743.14482547739,50330.869393641144
+							34999.390827019095,50965.1005032975 34000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,51000.0
+							34052.33595624295,50001.370465245425
+							34681.9983600625,50268.64629838083 34000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,51000.0
+							33330.869393641144,50256.85517452261
+							33965.1005032975,50000.609172980905 34000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,51000.0
+							33001.370465245425,50947.66404375705
+							33268.64629838083,50318.0016399375 34000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,51000.0
+							33256.85517452261,51669.130606358856
+							33000.609172980905,51034.8994967025 34000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,51000.0
+							33947.66404375705,51998.629534754575
+							33318.0016399375,51731.35370161917 34000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,46333.333333333336
+							38783.7136697233,46078.689325833264
+							39268.0753550602,45412.0226591666
+							39268.0753550602,44587.9773408334
+							38783.7136697233,43921.310674166736
+							38000.0,43666.666666666664
+							37216.2863302767,43921.310674166736
+							36731.9246449398,44587.9773408334
+							36731.9246449398,45412.0226591666
+							37216.2863302767,46078.689325833264
+							38000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,45000.0
+							38669.130606358856,45743.14482547739
+							38034.8994967025,45999.390827019095 38000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,45000.0
+							38998.629534754575,45052.33595624295
+							38731.35370161917,45681.9983600625 38000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,45000.0
+							38743.14482547739,44330.869393641144
+							38999.390827019095,44965.1005032975 38000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,45000.0
+							38052.33595624295,44001.370465245425
+							38681.9983600625,44268.64629838083 38000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,45000.0
+							37330.869393641144,44256.85517452261
+							37965.1005032975,44000.609172980905 38000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,45000.0
+							37001.370465245425,44947.66404375705
+							37268.64629838083,44318.0016399375 38000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,45000.0
+							37256.85517452261,45669.130606358856
+							37000.609172980905,45034.8994967025 38000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,45000.0
+							37947.66404375705,45998.629534754575
+							37318.0016399375,45731.35370161917 38000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,46333.333333333336
+							42783.7136697233,46078.689325833264
+							43268.0753550602,45412.0226591666
+							43268.0753550602,44587.9773408334
+							42783.7136697233,43921.310674166736
+							42000.0,43666.666666666664
+							41216.2863302767,43921.310674166736
+							40731.9246449398,44587.9773408334
+							40731.9246449398,45412.0226591666
+							41216.2863302767,46078.689325833264
+							42000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,45000.0
+							42669.130606358856,45743.14482547739
+							42034.8994967025,45999.390827019095 42000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,45000.0
+							42998.629534754575,45052.33595624295
+							42731.35370161917,45681.9983600625 42000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,45000.0
+							42743.14482547739,44330.869393641144
+							42999.390827019095,44965.1005032975 42000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,45000.0
+							42052.33595624295,44001.370465245425
+							42681.9983600625,44268.64629838083 42000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,45000.0
+							41330.869393641144,44256.85517452261
+							41965.1005032975,44000.609172980905 42000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,45000.0
+							41001.370465245425,44947.66404375705
+							41268.64629838083,44318.0016399375 42000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,45000.0
+							41256.85517452261,45669.130606358856
+							41000.609172980905,45034.8994967025 42000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,45000.0
+							41947.66404375705,45998.629534754575
+							41318.0016399375,45731.35370161917 42000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,52333.333333333336
+							38783.7136697233,52078.689325833264
+							39268.0753550602,51412.0226591666
+							39268.0753550602,50587.9773408334
+							38783.7136697233,49921.310674166736
+							38000.0,49666.666666666664
+							37216.2863302767,49921.310674166736
+							36731.9246449398,50587.9773408334
+							36731.9246449398,51412.0226591666
+							37216.2863302767,52078.689325833264
+							38000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,51000.0
+							38669.130606358856,51743.14482547739
+							38034.8994967025,51999.390827019095 38000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,51000.0
+							38998.629534754575,51052.33595624295
+							38731.35370161917,51681.9983600625 38000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,51000.0
+							38743.14482547739,50330.869393641144
+							38999.390827019095,50965.1005032975 38000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,51000.0
+							38052.33595624295,50001.370465245425
+							38681.9983600625,50268.64629838083 38000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,51000.0
+							37330.869393641144,50256.85517452261
+							37965.1005032975,50000.609172980905 38000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,51000.0
+							37001.370465245425,50947.66404375705
+							37268.64629838083,50318.0016399375 38000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,51000.0
+							37256.85517452261,51669.130606358856
+							37000.609172980905,51034.8994967025 38000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,51000.0
+							37947.66404375705,51998.629534754575
+							37318.0016399375,51731.35370161917 38000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,52333.333333333336
+							42783.7136697233,52078.689325833264
+							43268.0753550602,51412.0226591666
+							43268.0753550602,50587.9773408334
+							42783.7136697233,49921.310674166736
+							42000.0,49666.666666666664
+							41216.2863302767,49921.310674166736
+							40731.9246449398,50587.9773408334
+							40731.9246449398,51412.0226591666
+							41216.2863302767,52078.689325833264
+							42000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,51000.0
+							42669.130606358856,51743.14482547739
+							42034.8994967025,51999.390827019095 42000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,51000.0
+							42998.629534754575,51052.33595624295
+							42731.35370161917,51681.9983600625 42000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,51000.0
+							42743.14482547739,50330.869393641144
+							42999.390827019095,50965.1005032975 42000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,51000.0
+							42052.33595624295,50001.370465245425
+							42681.9983600625,50268.64629838083 42000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,51000.0
+							41330.869393641144,50256.85517452261
+							41965.1005032975,50000.609172980905 42000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,51000.0
+							41001.370465245425,50947.66404375705
+							41268.64629838083,50318.0016399375 42000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,51000.0
+							41256.85517452261,51669.130606358856
+							41000.609172980905,51034.8994967025 42000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,51000.0
+							41947.66404375705,51998.629534754575
+							41318.0016399375,51731.35370161917 42000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,46333.333333333336
+							46783.7136697233,46078.689325833264
+							47268.0753550602,45412.0226591666
+							47268.0753550602,44587.9773408334
+							46783.7136697233,43921.310674166736
+							46000.0,43666.666666666664
+							45216.2863302767,43921.310674166736
+							44731.9246449398,44587.9773408334
+							44731.9246449398,45412.0226591666
+							45216.2863302767,46078.689325833264
+							46000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,45000.0
+							46669.130606358856,45743.14482547739
+							46034.8994967025,45999.390827019095 46000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,45000.0
+							46998.629534754575,45052.33595624295
+							46731.35370161917,45681.9983600625 46000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,45000.0
+							46743.14482547739,44330.869393641144
+							46999.390827019095,44965.1005032975 46000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,45000.0
+							46052.33595624295,44001.370465245425
+							46681.9983600625,44268.64629838083 46000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,45000.0
+							45330.869393641144,44256.85517452261
+							45965.1005032975,44000.609172980905 46000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,45000.0
+							45001.370465245425,44947.66404375705
+							45268.64629838083,44318.0016399375 46000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,45000.0
+							45256.85517452261,45669.130606358856
+							45000.609172980905,45034.8994967025 46000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,45000.0
+							45947.66404375705,45998.629534754575
+							45318.0016399375,45731.35370161917 46000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,46333.333333333336
+							50783.7136697233,46078.689325833264
+							51268.0753550602,45412.0226591666
+							51268.0753550602,44587.9773408334
+							50783.7136697233,43921.310674166736
+							50000.0,43666.666666666664
+							49216.2863302767,43921.310674166736
+							48731.9246449398,44587.9773408334
+							48731.9246449398,45412.0226591666
+							49216.2863302767,46078.689325833264
+							50000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,45000.0
+							50669.130606358856,45743.14482547739
+							50034.8994967025,45999.390827019095 50000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,45000.0
+							50998.629534754575,45052.33595624295
+							50731.35370161917,45681.9983600625 50000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,45000.0
+							50743.14482547739,44330.869393641144
+							50999.390827019095,44965.1005032975 50000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,45000.0
+							50052.33595624295,44001.370465245425
+							50681.9983600625,44268.64629838083 50000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,45000.0
+							49330.869393641144,44256.85517452261
+							49965.1005032975,44000.609172980905 50000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,45000.0
+							49001.370465245425,44947.66404375705
+							49268.64629838083,44318.0016399375 50000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,45000.0
+							49256.85517452261,45669.130606358856
+							49000.609172980905,45034.8994967025 50000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,45000.0
+							49947.66404375705,45998.629534754575
+							49318.0016399375,45731.35370161917 50000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,52333.333333333336
+							46783.7136697233,52078.689325833264
+							47268.0753550602,51412.0226591666
+							47268.0753550602,50587.9773408334
+							46783.7136697233,49921.310674166736
+							46000.0,49666.666666666664
+							45216.2863302767,49921.310674166736
+							44731.9246449398,50587.9773408334
+							44731.9246449398,51412.0226591666
+							45216.2863302767,52078.689325833264
+							46000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,51000.0
+							46669.130606358856,51743.14482547739
+							46034.8994967025,51999.390827019095 46000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,51000.0
+							46998.629534754575,51052.33595624295
+							46731.35370161917,51681.9983600625 46000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,51000.0
+							46743.14482547739,50330.869393641144
+							46999.390827019095,50965.1005032975 46000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,51000.0
+							46052.33595624295,50001.370465245425
+							46681.9983600625,50268.64629838083 46000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,51000.0
+							45330.869393641144,50256.85517452261
+							45965.1005032975,50000.609172980905 46000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,51000.0
+							45001.370465245425,50947.66404375705
+							45268.64629838083,50318.0016399375 46000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,51000.0
+							45256.85517452261,51669.130606358856
+							45000.609172980905,51034.8994967025 46000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,51000.0
+							45947.66404375705,51998.629534754575
+							45318.0016399375,51731.35370161917 46000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,52333.333333333336
+							50783.7136697233,52078.689325833264
+							51268.0753550602,51412.0226591666
+							51268.0753550602,50587.9773408334
+							50783.7136697233,49921.310674166736
+							50000.0,49666.666666666664
+							49216.2863302767,49921.310674166736
+							48731.9246449398,50587.9773408334
+							48731.9246449398,51412.0226591666
+							49216.2863302767,52078.689325833264
+							50000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,51000.0
+							50669.130606358856,51743.14482547739
+							50034.8994967025,51999.390827019095 50000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,51000.0
+							50998.629534754575,51052.33595624295
+							50731.35370161917,51681.9983600625 50000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,51000.0
+							50743.14482547739,50330.869393641144
+							50999.390827019095,50965.1005032975 50000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,51000.0
+							50052.33595624295,50001.370465245425
+							50681.9983600625,50268.64629838083 50000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,51000.0
+							49330.869393641144,50256.85517452261
+							49965.1005032975,50000.609172980905 50000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,51000.0
+							49001.370465245425,50947.66404375705
+							49268.64629838083,50318.0016399375 50000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,51000.0
+							49256.85517452261,51669.130606358856
+							49000.609172980905,51034.8994967025 50000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,51000.0
+							49947.66404375705,51998.629534754575
+							49318.0016399375,51731.35370161917 50000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,46333.333333333336
+							54783.7136697233,46078.689325833264
+							55268.0753550602,45412.0226591666
+							55268.0753550602,44587.9773408334
+							54783.7136697233,43921.310674166736
+							54000.0,43666.666666666664
+							53216.2863302767,43921.310674166736
+							52731.9246449398,44587.9773408334
+							52731.9246449398,45412.0226591666
+							53216.2863302767,46078.689325833264
+							54000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,45000.0
+							54669.130606358856,45743.14482547739
+							54034.8994967025,45999.390827019095 54000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,45000.0
+							54998.629534754575,45052.33595624295
+							54731.35370161917,45681.9983600625 54000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,45000.0
+							54743.14482547739,44330.869393641144
+							54999.390827019095,44965.1005032975 54000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,45000.0
+							54052.33595624295,44001.370465245425
+							54681.9983600625,44268.64629838083 54000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,45000.0
+							53330.869393641144,44256.85517452261
+							53965.1005032975,44000.609172980905 54000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,45000.0
+							53001.370465245425,44947.66404375705
+							53268.64629838083,44318.0016399375 54000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,45000.0
+							53256.85517452261,45669.130606358856
+							53000.609172980905,45034.8994967025 54000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,45000.0
+							53947.66404375705,45998.629534754575
+							53318.0016399375,45731.35370161917 54000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,46333.333333333336
+							58783.7136697233,46078.689325833264
+							59268.0753550602,45412.0226591666
+							59268.0753550602,44587.9773408334
+							58783.7136697233,43921.310674166736
+							58000.0,43666.666666666664
+							57216.2863302767,43921.310674166736
+							56731.9246449398,44587.9773408334
+							56731.9246449398,45412.0226591666
+							57216.2863302767,46078.689325833264
+							58000.0,46333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,45000.0
+							58669.130606358856,45743.14482547739
+							58034.8994967025,45999.390827019095 58000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,45000.0
+							58998.629534754575,45052.33595624295
+							58731.35370161917,45681.9983600625 58000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,45000.0
+							58743.14482547739,44330.869393641144
+							58999.390827019095,44965.1005032975 58000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,45000.0
+							58052.33595624295,44001.370465245425
+							58681.9983600625,44268.64629838083 58000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,45000.0
+							57330.869393641144,44256.85517452261
+							57965.1005032975,44000.609172980905 58000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,45000.0
+							57001.370465245425,44947.66404375705
+							57268.64629838083,44318.0016399375 58000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,45000.0
+							57256.85517452261,45669.130606358856
+							57000.609172980905,45034.8994967025 58000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,45000.0
+							57947.66404375705,45998.629534754575
+							57318.0016399375,45731.35370161917 58000.0,45000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,52333.333333333336
+							54783.7136697233,52078.689325833264
+							55268.0753550602,51412.0226591666
+							55268.0753550602,50587.9773408334
+							54783.7136697233,49921.310674166736
+							54000.0,49666.666666666664
+							53216.2863302767,49921.310674166736
+							52731.9246449398,50587.9773408334
+							52731.9246449398,51412.0226591666
+							53216.2863302767,52078.689325833264
+							54000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,51000.0
+							54669.130606358856,51743.14482547739
+							54034.8994967025,51999.390827019095 54000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,51000.0
+							54998.629534754575,51052.33595624295
+							54731.35370161917,51681.9983600625 54000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,51000.0
+							54743.14482547739,50330.869393641144
+							54999.390827019095,50965.1005032975 54000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,51000.0
+							54052.33595624295,50001.370465245425
+							54681.9983600625,50268.64629838083 54000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,51000.0
+							53330.869393641144,50256.85517452261
+							53965.1005032975,50000.609172980905 54000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,51000.0
+							53001.370465245425,50947.66404375705
+							53268.64629838083,50318.0016399375 54000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,51000.0
+							53256.85517452261,51669.130606358856
+							53000.609172980905,51034.8994967025 54000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,51000.0
+							53947.66404375705,51998.629534754575
+							53318.0016399375,51731.35370161917 54000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,52333.333333333336
+							58783.7136697233,52078.689325833264
+							59268.0753550602,51412.0226591666
+							59268.0753550602,50587.9773408334
+							58783.7136697233,49921.310674166736
+							58000.0,49666.666666666664
+							57216.2863302767,49921.310674166736
+							56731.9246449398,50587.9773408334
+							56731.9246449398,51412.0226591666
+							57216.2863302767,52078.689325833264
+							58000.0,52333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,51000.0
+							58669.130606358856,51743.14482547739
+							58034.8994967025,51999.390827019095 58000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,51000.0
+							58998.629534754575,51052.33595624295
+							58731.35370161917,51681.9983600625 58000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,51000.0
+							58743.14482547739,50330.869393641144
+							58999.390827019095,50965.1005032975 58000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,51000.0
+							58052.33595624295,50001.370465245425
+							58681.9983600625,50268.64629838083 58000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,51000.0
+							57330.869393641144,50256.85517452261
+							57965.1005032975,50000.609172980905 58000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,51000.0
+							57001.370465245425,50947.66404375705
+							57268.64629838083,50318.0016399375 58000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,51000.0
+							57256.85517452261,51669.130606358856
+							57000.609172980905,51034.8994967025 58000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,51000.0
+							57947.66404375705,51998.629534754575
+							57318.0016399375,51731.35370161917 58000.0,51000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,58333.333333333336
+							22783.713669723296,58078.689325833264
+							23268.075355060206,57412.0226591666
+							23268.075355060206,56587.9773408334
+							22783.713669723296,55921.310674166736
+							22000.0,55666.666666666664
+							21216.286330276704,55921.310674166736
+							20731.924644939794,56587.9773408334
+							20731.924644939794,57412.0226591666
+							21216.286330276704,58078.689325833264
+							22000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,57000.0
+							22669.13060635886,57743.14482547739
+							22034.8994967025,57999.390827019095 22000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,57000.0
+							22998.629534754575,57052.33595624295
+							22731.35370161917,57681.9983600625 22000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,57000.0
+							22743.144825477393,56330.869393641144
+							22999.390827019095,56965.1005032975 22000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,57000.0
+							22052.335956242943,56001.370465245425
+							22681.9983600625,56268.64629838083 22000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,57000.0
+							21330.86939364114,56256.85517452261
+							21965.1005032975,56000.609172980905 22000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,57000.0
+							21001.370465245425,56947.66404375705
+							21268.64629838083,56318.0016399375 22000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,57000.0
+							21256.855174522607,57669.130606358856
+							21000.609172980905,57034.8994967025 22000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,57000.0
+							21947.664043757057,57998.629534754575
+							21318.0016399375,57731.35370161917 22000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,58333.333333333336
+							26783.713669723296,58078.689325833264
+							27268.075355060206,57412.0226591666
+							27268.075355060206,56587.9773408334
+							26783.713669723296,55921.310674166736
+							26000.0,55666.666666666664
+							25216.286330276704,55921.310674166736
+							24731.924644939794,56587.9773408334
+							24731.924644939794,57412.0226591666
+							25216.286330276704,58078.689325833264
+							26000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,57000.0
+							26669.13060635886,57743.14482547739
+							26034.8994967025,57999.390827019095 26000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,57000.0
+							26998.629534754575,57052.33595624295
+							26731.35370161917,57681.9983600625 26000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,57000.0
+							26743.144825477393,56330.869393641144
+							26999.390827019095,56965.1005032975 26000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,57000.0
+							26052.335956242943,56001.370465245425
+							26681.9983600625,56268.64629838083 26000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,57000.0
+							25330.86939364114,56256.85517452261
+							25965.1005032975,56000.609172980905 26000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,57000.0
+							25001.370465245425,56947.66404375705
+							25268.64629838083,56318.0016399375 26000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,57000.0
+							25256.855174522607,57669.130606358856
+							25000.609172980905,57034.8994967025 26000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,57000.0
+							25947.664043757057,57998.629534754575
+							25318.0016399375,57731.35370161917 26000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,64333.333333333336
+							22783.713669723296,64078.689325833264
+							23268.075355060206,63412.0226591666
+							23268.075355060206,62587.9773408334
+							22783.713669723296,61921.310674166736
+							22000.0,61666.666666666664
+							21216.286330276704,61921.310674166736
+							20731.924644939794,62587.9773408334
+							20731.924644939794,63412.0226591666
+							21216.286330276704,64078.689325833264
+							22000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,63000.0
+							22669.13060635886,63743.14482547739
+							22034.8994967025,63999.390827019095 22000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,63000.0
+							22998.629534754575,63052.33595624295
+							22731.35370161917,63681.9983600625 22000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,63000.0
+							22743.144825477393,62330.869393641144
+							22999.390827019095,62965.1005032975 22000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,63000.0
+							22052.335956242943,62001.370465245425
+							22681.9983600625,62268.64629838083 22000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,63000.0
+							21330.86939364114,62256.85517452261
+							21965.1005032975,62000.609172980905 22000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,63000.0
+							21001.370465245425,62947.66404375705
+							21268.64629838083,62318.0016399375 22000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,63000.0
+							21256.855174522607,63669.130606358856
+							21000.609172980905,63034.8994967025 22000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,63000.0
+							21947.664043757057,63998.629534754575
+							21318.0016399375,63731.35370161917 22000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,64333.333333333336
+							26783.713669723296,64078.689325833264
+							27268.075355060206,63412.0226591666
+							27268.075355060206,62587.9773408334
+							26783.713669723296,61921.310674166736
+							26000.0,61666.666666666664
+							25216.286330276704,61921.310674166736
+							24731.924644939794,62587.9773408334
+							24731.924644939794,63412.0226591666
+							25216.286330276704,64078.689325833264
+							26000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,63000.0
+							26669.13060635886,63743.14482547739
+							26034.8994967025,63999.390827019095 26000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,63000.0
+							26998.629534754575,63052.33595624295
+							26731.35370161917,63681.9983600625 26000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,63000.0
+							26743.144825477393,62330.869393641144
+							26999.390827019095,62965.1005032975 26000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,63000.0
+							26052.335956242943,62001.370465245425
+							26681.9983600625,62268.64629838083 26000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,63000.0
+							25330.86939364114,62256.85517452261
+							25965.1005032975,62000.609172980905 26000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,63000.0
+							25001.370465245425,62947.66404375705
+							25268.64629838083,62318.0016399375 26000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,63000.0
+							25256.855174522607,63669.130606358856
+							25000.609172980905,63034.8994967025 26000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,63000.0
+							25947.664043757057,63998.629534754575
+							25318.0016399375,63731.35370161917 26000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,58333.333333333336
+							30783.713669723296,58078.689325833264
+							31268.075355060206,57412.0226591666
+							31268.075355060206,56587.9773408334
+							30783.713669723296,55921.310674166736
+							30000.0,55666.666666666664
+							29216.286330276704,55921.310674166736
+							28731.924644939794,56587.9773408334
+							28731.924644939794,57412.0226591666
+							29216.286330276704,58078.689325833264
+							30000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,57000.0
+							30669.13060635886,57743.14482547739
+							30034.8994967025,57999.390827019095 30000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,57000.0
+							30998.629534754575,57052.33595624295
+							30731.35370161917,57681.9983600625 30000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,57000.0
+							30743.144825477393,56330.869393641144
+							30999.390827019095,56965.1005032975 30000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,57000.0
+							30052.335956242943,56001.370465245425
+							30681.9983600625,56268.64629838083 30000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,57000.0
+							29330.86939364114,56256.85517452261
+							29965.1005032975,56000.609172980905 30000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,57000.0
+							29001.370465245425,56947.66404375705
+							29268.64629838083,56318.0016399375 30000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,57000.0
+							29256.855174522607,57669.130606358856
+							29000.609172980905,57034.8994967025 30000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,57000.0
+							29947.664043757057,57998.629534754575
+							29318.0016399375,57731.35370161917 30000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,58333.333333333336
+							34783.7136697233,58078.689325833264
+							35268.0753550602,57412.0226591666
+							35268.0753550602,56587.9773408334
+							34783.7136697233,55921.310674166736
+							34000.0,55666.666666666664
+							33216.2863302767,55921.310674166736
+							32731.924644939794,56587.9773408334
+							32731.924644939794,57412.0226591666
+							33216.2863302767,58078.689325833264
+							34000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,57000.0
+							34669.130606358856,57743.14482547739
+							34034.8994967025,57999.390827019095 34000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,57000.0
+							34998.629534754575,57052.33595624295
+							34731.35370161917,57681.9983600625 34000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,57000.0
+							34743.14482547739,56330.869393641144
+							34999.390827019095,56965.1005032975 34000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,57000.0
+							34052.33595624295,56001.370465245425
+							34681.9983600625,56268.64629838083 34000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,57000.0
+							33330.869393641144,56256.85517452261
+							33965.1005032975,56000.609172980905 34000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,57000.0
+							33001.370465245425,56947.66404375705
+							33268.64629838083,56318.0016399375 34000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,57000.0
+							33256.85517452261,57669.130606358856
+							33000.609172980905,57034.8994967025 34000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,57000.0
+							33947.66404375705,57998.629534754575
+							33318.0016399375,57731.35370161917 34000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,64333.333333333336
+							30783.713669723296,64078.689325833264
+							31268.075355060206,63412.0226591666
+							31268.075355060206,62587.9773408334
+							30783.713669723296,61921.310674166736
+							30000.0,61666.666666666664
+							29216.286330276704,61921.310674166736
+							28731.924644939794,62587.9773408334
+							28731.924644939794,63412.0226591666
+							29216.286330276704,64078.689325833264
+							30000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,63000.0
+							30669.13060635886,63743.14482547739
+							30034.8994967025,63999.390827019095 30000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,63000.0
+							30998.629534754575,63052.33595624295
+							30731.35370161917,63681.9983600625 30000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,63000.0
+							30743.144825477393,62330.869393641144
+							30999.390827019095,62965.1005032975 30000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,63000.0
+							30052.335956242943,62001.370465245425
+							30681.9983600625,62268.64629838083 30000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,63000.0
+							29330.86939364114,62256.85517452261
+							29965.1005032975,62000.609172980905 30000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,63000.0
+							29001.370465245425,62947.66404375705
+							29268.64629838083,62318.0016399375 30000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,63000.0
+							29256.855174522607,63669.130606358856
+							29000.609172980905,63034.8994967025 30000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,63000.0
+							29947.664043757057,63998.629534754575
+							29318.0016399375,63731.35370161917 30000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,64333.333333333336
+							34783.7136697233,64078.689325833264
+							35268.0753550602,63412.0226591666
+							35268.0753550602,62587.9773408334
+							34783.7136697233,61921.310674166736
+							34000.0,61666.666666666664
+							33216.2863302767,61921.310674166736
+							32731.924644939794,62587.9773408334
+							32731.924644939794,63412.0226591666
+							33216.2863302767,64078.689325833264
+							34000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,63000.0
+							34669.130606358856,63743.14482547739
+							34034.8994967025,63999.390827019095 34000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,63000.0
+							34998.629534754575,63052.33595624295
+							34731.35370161917,63681.9983600625 34000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,63000.0
+							34743.14482547739,62330.869393641144
+							34999.390827019095,62965.1005032975 34000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,63000.0
+							34052.33595624295,62001.370465245425
+							34681.9983600625,62268.64629838083 34000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,63000.0
+							33330.869393641144,62256.85517452261
+							33965.1005032975,62000.609172980905 34000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,63000.0
+							33001.370465245425,62947.66404375705
+							33268.64629838083,62318.0016399375 34000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,63000.0
+							33256.85517452261,63669.130606358856
+							33000.609172980905,63034.8994967025 34000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,63000.0
+							33947.66404375705,63998.629534754575
+							33318.0016399375,63731.35370161917 34000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,58333.333333333336
+							38783.7136697233,58078.689325833264
+							39268.0753550602,57412.0226591666
+							39268.0753550602,56587.9773408334
+							38783.7136697233,55921.310674166736
+							38000.0,55666.666666666664
+							37216.2863302767,55921.310674166736
+							36731.9246449398,56587.9773408334
+							36731.9246449398,57412.0226591666
+							37216.2863302767,58078.689325833264
+							38000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,57000.0
+							38669.130606358856,57743.14482547739
+							38034.8994967025,57999.390827019095 38000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,57000.0
+							38998.629534754575,57052.33595624295
+							38731.35370161917,57681.9983600625 38000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,57000.0
+							38743.14482547739,56330.869393641144
+							38999.390827019095,56965.1005032975 38000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,57000.0
+							38052.33595624295,56001.370465245425
+							38681.9983600625,56268.64629838083 38000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,57000.0
+							37330.869393641144,56256.85517452261
+							37965.1005032975,56000.609172980905 38000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,57000.0
+							37001.370465245425,56947.66404375705
+							37268.64629838083,56318.0016399375 38000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,57000.0
+							37256.85517452261,57669.130606358856
+							37000.609172980905,57034.8994967025 38000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,57000.0
+							37947.66404375705,57998.629534754575
+							37318.0016399375,57731.35370161917 38000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,58333.333333333336
+							42783.7136697233,58078.689325833264
+							43268.0753550602,57412.0226591666
+							43268.0753550602,56587.9773408334
+							42783.7136697233,55921.310674166736
+							42000.0,55666.666666666664
+							41216.2863302767,55921.310674166736
+							40731.9246449398,56587.9773408334
+							40731.9246449398,57412.0226591666
+							41216.2863302767,58078.689325833264
+							42000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,57000.0
+							42669.130606358856,57743.14482547739
+							42034.8994967025,57999.390827019095 42000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,57000.0
+							42998.629534754575,57052.33595624295
+							42731.35370161917,57681.9983600625 42000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,57000.0
+							42743.14482547739,56330.869393641144
+							42999.390827019095,56965.1005032975 42000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,57000.0
+							42052.33595624295,56001.370465245425
+							42681.9983600625,56268.64629838083 42000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,57000.0
+							41330.869393641144,56256.85517452261
+							41965.1005032975,56000.609172980905 42000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,57000.0
+							41001.370465245425,56947.66404375705
+							41268.64629838083,56318.0016399375 42000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,57000.0
+							41256.85517452261,57669.130606358856
+							41000.609172980905,57034.8994967025 42000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,57000.0
+							41947.66404375705,57998.629534754575
+							41318.0016399375,57731.35370161917 42000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,64333.333333333336
+							38783.7136697233,64078.689325833264
+							39268.0753550602,63412.0226591666
+							39268.0753550602,62587.9773408334
+							38783.7136697233,61921.310674166736
+							38000.0,61666.666666666664
+							37216.2863302767,61921.310674166736
+							36731.9246449398,62587.9773408334
+							36731.9246449398,63412.0226591666
+							37216.2863302767,64078.689325833264
+							38000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,63000.0
+							38669.130606358856,63743.14482547739
+							38034.8994967025,63999.390827019095 38000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,63000.0
+							38998.629534754575,63052.33595624295
+							38731.35370161917,63681.9983600625 38000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,63000.0
+							38743.14482547739,62330.869393641144
+							38999.390827019095,62965.1005032975 38000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,63000.0
+							38052.33595624295,62001.370465245425
+							38681.9983600625,62268.64629838083 38000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,63000.0
+							37330.869393641144,62256.85517452261
+							37965.1005032975,62000.609172980905 38000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,63000.0
+							37001.370465245425,62947.66404375705
+							37268.64629838083,62318.0016399375 38000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,63000.0
+							37256.85517452261,63669.130606358856
+							37000.609172980905,63034.8994967025 38000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,63000.0
+							37947.66404375705,63998.629534754575
+							37318.0016399375,63731.35370161917 38000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,64333.333333333336
+							42783.7136697233,64078.689325833264
+							43268.0753550602,63412.0226591666
+							43268.0753550602,62587.9773408334
+							42783.7136697233,61921.310674166736
+							42000.0,61666.666666666664
+							41216.2863302767,61921.310674166736
+							40731.9246449398,62587.9773408334
+							40731.9246449398,63412.0226591666
+							41216.2863302767,64078.689325833264
+							42000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,63000.0
+							42669.130606358856,63743.14482547739
+							42034.8994967025,63999.390827019095 42000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,63000.0
+							42998.629534754575,63052.33595624295
+							42731.35370161917,63681.9983600625 42000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,63000.0
+							42743.14482547739,62330.869393641144
+							42999.390827019095,62965.1005032975 42000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,63000.0
+							42052.33595624295,62001.370465245425
+							42681.9983600625,62268.64629838083 42000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,63000.0
+							41330.869393641144,62256.85517452261
+							41965.1005032975,62000.609172980905 42000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,63000.0
+							41001.370465245425,62947.66404375705
+							41268.64629838083,62318.0016399375 42000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,63000.0
+							41256.85517452261,63669.130606358856
+							41000.609172980905,63034.8994967025 42000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,63000.0
+							41947.66404375705,63998.629534754575
+							41318.0016399375,63731.35370161917 42000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,58333.333333333336
+							46783.7136697233,58078.689325833264
+							47268.0753550602,57412.0226591666
+							47268.0753550602,56587.9773408334
+							46783.7136697233,55921.310674166736
+							46000.0,55666.666666666664
+							45216.2863302767,55921.310674166736
+							44731.9246449398,56587.9773408334
+							44731.9246449398,57412.0226591666
+							45216.2863302767,58078.689325833264
+							46000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,57000.0
+							46669.130606358856,57743.14482547739
+							46034.8994967025,57999.390827019095 46000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,57000.0
+							46998.629534754575,57052.33595624295
+							46731.35370161917,57681.9983600625 46000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,57000.0
+							46743.14482547739,56330.869393641144
+							46999.390827019095,56965.1005032975 46000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,57000.0
+							46052.33595624295,56001.370465245425
+							46681.9983600625,56268.64629838083 46000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,57000.0
+							45330.869393641144,56256.85517452261
+							45965.1005032975,56000.609172980905 46000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,57000.0
+							45001.370465245425,56947.66404375705
+							45268.64629838083,56318.0016399375 46000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,57000.0
+							45256.85517452261,57669.130606358856
+							45000.609172980905,57034.8994967025 46000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,57000.0
+							45947.66404375705,57998.629534754575
+							45318.0016399375,57731.35370161917 46000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,58333.333333333336
+							50783.7136697233,58078.689325833264
+							51268.0753550602,57412.0226591666
+							51268.0753550602,56587.9773408334
+							50783.7136697233,55921.310674166736
+							50000.0,55666.666666666664
+							49216.2863302767,55921.310674166736
+							48731.9246449398,56587.9773408334
+							48731.9246449398,57412.0226591666
+							49216.2863302767,58078.689325833264
+							50000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,57000.0
+							50669.130606358856,57743.14482547739
+							50034.8994967025,57999.390827019095 50000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,57000.0
+							50998.629534754575,57052.33595624295
+							50731.35370161917,57681.9983600625 50000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,57000.0
+							50743.14482547739,56330.869393641144
+							50999.390827019095,56965.1005032975 50000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,57000.0
+							50052.33595624295,56001.370465245425
+							50681.9983600625,56268.64629838083 50000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,57000.0
+							49330.869393641144,56256.85517452261
+							49965.1005032975,56000.609172980905 50000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,57000.0
+							49001.370465245425,56947.66404375705
+							49268.64629838083,56318.0016399375 50000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,57000.0
+							49256.85517452261,57669.130606358856
+							49000.609172980905,57034.8994967025 50000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,57000.0
+							49947.66404375705,57998.629534754575
+							49318.0016399375,57731.35370161917 50000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,64333.333333333336
+							46783.7136697233,64078.689325833264
+							47268.0753550602,63412.0226591666
+							47268.0753550602,62587.9773408334
+							46783.7136697233,61921.310674166736
+							46000.0,61666.666666666664
+							45216.2863302767,61921.310674166736
+							44731.9246449398,62587.9773408334
+							44731.9246449398,63412.0226591666
+							45216.2863302767,64078.689325833264
+							46000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,63000.0
+							46669.130606358856,63743.14482547739
+							46034.8994967025,63999.390827019095 46000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,63000.0
+							46998.629534754575,63052.33595624295
+							46731.35370161917,63681.9983600625 46000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,63000.0
+							46743.14482547739,62330.869393641144
+							46999.390827019095,62965.1005032975 46000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,63000.0
+							46052.33595624295,62001.370465245425
+							46681.9983600625,62268.64629838083 46000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,63000.0
+							45330.869393641144,62256.85517452261
+							45965.1005032975,62000.609172980905 46000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,63000.0
+							45001.370465245425,62947.66404375705
+							45268.64629838083,62318.0016399375 46000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,63000.0
+							45256.85517452261,63669.130606358856
+							45000.609172980905,63034.8994967025 46000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,63000.0
+							45947.66404375705,63998.629534754575
+							45318.0016399375,63731.35370161917 46000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,64333.333333333336
+							50783.7136697233,64078.689325833264
+							51268.0753550602,63412.0226591666
+							51268.0753550602,62587.9773408334
+							50783.7136697233,61921.310674166736
+							50000.0,61666.666666666664
+							49216.2863302767,61921.310674166736
+							48731.9246449398,62587.9773408334
+							48731.9246449398,63412.0226591666
+							49216.2863302767,64078.689325833264
+							50000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,63000.0
+							50669.130606358856,63743.14482547739
+							50034.8994967025,63999.390827019095 50000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,63000.0
+							50998.629534754575,63052.33595624295
+							50731.35370161917,63681.9983600625 50000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,63000.0
+							50743.14482547739,62330.869393641144
+							50999.390827019095,62965.1005032975 50000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,63000.0
+							50052.33595624295,62001.370465245425
+							50681.9983600625,62268.64629838083 50000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,63000.0
+							49330.869393641144,62256.85517452261
+							49965.1005032975,62000.609172980905 50000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,63000.0
+							49001.370465245425,62947.66404375705
+							49268.64629838083,62318.0016399375 50000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,63000.0
+							49256.85517452261,63669.130606358856
+							49000.609172980905,63034.8994967025 50000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,63000.0
+							49947.66404375705,63998.629534754575
+							49318.0016399375,63731.35370161917 50000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,58333.333333333336
+							54783.7136697233,58078.689325833264
+							55268.0753550602,57412.0226591666
+							55268.0753550602,56587.9773408334
+							54783.7136697233,55921.310674166736
+							54000.0,55666.666666666664
+							53216.2863302767,55921.310674166736
+							52731.9246449398,56587.9773408334
+							52731.9246449398,57412.0226591666
+							53216.2863302767,58078.689325833264
+							54000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,57000.0
+							54669.130606358856,57743.14482547739
+							54034.8994967025,57999.390827019095 54000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,57000.0
+							54998.629534754575,57052.33595624295
+							54731.35370161917,57681.9983600625 54000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,57000.0
+							54743.14482547739,56330.869393641144
+							54999.390827019095,56965.1005032975 54000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,57000.0
+							54052.33595624295,56001.370465245425
+							54681.9983600625,56268.64629838083 54000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,57000.0
+							53330.869393641144,56256.85517452261
+							53965.1005032975,56000.609172980905 54000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,57000.0
+							53001.370465245425,56947.66404375705
+							53268.64629838083,56318.0016399375 54000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,57000.0
+							53256.85517452261,57669.130606358856
+							53000.609172980905,57034.8994967025 54000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,57000.0
+							53947.66404375705,57998.629534754575
+							53318.0016399375,57731.35370161917 54000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,58333.333333333336
+							58783.7136697233,58078.689325833264
+							59268.0753550602,57412.0226591666
+							59268.0753550602,56587.9773408334
+							58783.7136697233,55921.310674166736
+							58000.0,55666.666666666664
+							57216.2863302767,55921.310674166736
+							56731.9246449398,56587.9773408334
+							56731.9246449398,57412.0226591666
+							57216.2863302767,58078.689325833264
+							58000.0,58333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,57000.0
+							58669.130606358856,57743.14482547739
+							58034.8994967025,57999.390827019095 58000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,57000.0
+							58998.629534754575,57052.33595624295
+							58731.35370161917,57681.9983600625 58000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,57000.0
+							58743.14482547739,56330.869393641144
+							58999.390827019095,56965.1005032975 58000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,57000.0
+							58052.33595624295,56001.370465245425
+							58681.9983600625,56268.64629838083 58000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,57000.0
+							57330.869393641144,56256.85517452261
+							57965.1005032975,56000.609172980905 58000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,57000.0
+							57001.370465245425,56947.66404375705
+							57268.64629838083,56318.0016399375 58000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,57000.0
+							57256.85517452261,57669.130606358856
+							57000.609172980905,57034.8994967025 58000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,57000.0
+							57947.66404375705,57998.629534754575
+							57318.0016399375,57731.35370161917 58000.0,57000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,64333.333333333336
+							54783.7136697233,64078.689325833264
+							55268.0753550602,63412.0226591666
+							55268.0753550602,62587.9773408334
+							54783.7136697233,61921.310674166736
+							54000.0,61666.666666666664
+							53216.2863302767,61921.310674166736
+							52731.9246449398,62587.9773408334
+							52731.9246449398,63412.0226591666
+							53216.2863302767,64078.689325833264
+							54000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,63000.0
+							54669.130606358856,63743.14482547739
+							54034.8994967025,63999.390827019095 54000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,63000.0
+							54998.629534754575,63052.33595624295
+							54731.35370161917,63681.9983600625 54000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,63000.0
+							54743.14482547739,62330.869393641144
+							54999.390827019095,62965.1005032975 54000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,63000.0
+							54052.33595624295,62001.370465245425
+							54681.9983600625,62268.64629838083 54000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,63000.0
+							53330.869393641144,62256.85517452261
+							53965.1005032975,62000.609172980905 54000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,63000.0
+							53001.370465245425,62947.66404375705
+							53268.64629838083,62318.0016399375 54000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,63000.0
+							53256.85517452261,63669.130606358856
+							53000.609172980905,63034.8994967025 54000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,63000.0
+							53947.66404375705,63998.629534754575
+							53318.0016399375,63731.35370161917 54000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,64333.333333333336
+							58783.7136697233,64078.689325833264
+							59268.0753550602,63412.0226591666
+							59268.0753550602,62587.9773408334
+							58783.7136697233,61921.310674166736
+							58000.0,61666.666666666664
+							57216.2863302767,61921.310674166736
+							56731.9246449398,62587.9773408334
+							56731.9246449398,63412.0226591666
+							57216.2863302767,64078.689325833264
+							58000.0,64333.333333333336 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,63000.0
+							58669.130606358856,63743.14482547739
+							58034.8994967025,63999.390827019095 58000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,63000.0
+							58998.629534754575,63052.33595624295
+							58731.35370161917,63681.9983600625 58000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,63000.0
+							58743.14482547739,62330.869393641144
+							58999.390827019095,62965.1005032975 58000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,63000.0
+							58052.33595624295,62001.370465245425
+							58681.9983600625,62268.64629838083 58000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,63000.0
+							57330.869393641144,62256.85517452261
+							57965.1005032975,62000.609172980905 58000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,63000.0
+							57001.370465245425,62947.66404375705
+							57268.64629838083,62318.0016399375 58000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,63000.0
+							57256.85517452261,63669.130606358856
+							57000.609172980905,63034.8994967025 58000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,63000.0
+							57947.66404375705,63998.629534754575
+							57318.0016399375,63731.35370161917 58000.0,63000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,70333.33333333333
+							22783.713669723296,70078.68932583326
+							23268.075355060206,69412.0226591666
+							23268.075355060206,68587.9773408334
+							22783.713669723296,67921.31067416674
+							22000.0,67666.66666666667
+							21216.286330276704,67921.31067416674
+							20731.924644939794,68587.9773408334
+							20731.924644939794,69412.0226591666
+							21216.286330276704,70078.68932583326
+							22000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,69000.0
+							22669.13060635886,69743.1448254774
+							22034.8994967025,69999.3908270191 22000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,69000.0
+							22998.629534754575,69052.33595624294
+							22731.35370161917,69681.9983600625 22000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,69000.0
+							22743.144825477393,68330.86939364114
+							22999.390827019095,68965.1005032975 22000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,69000.0
+							22052.335956242943,68001.37046524543
+							22681.9983600625,68268.64629838083 22000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,69000.0
+							21330.86939364114,68256.8551745226
+							21965.1005032975,68000.6091729809 22000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,69000.0
+							21001.370465245425,68947.66404375706
+							21268.64629838083,68318.0016399375 22000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,69000.0
+							21256.855174522607,69669.13060635886
+							21000.609172980905,69034.8994967025 22000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,69000.0
+							21947.664043757057,69998.62953475457
+							21318.0016399375,69731.35370161917 22000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,70333.33333333333
+							26783.713669723296,70078.68932583326
+							27268.075355060206,69412.0226591666
+							27268.075355060206,68587.9773408334
+							26783.713669723296,67921.31067416674
+							26000.0,67666.66666666667
+							25216.286330276704,67921.31067416674
+							24731.924644939794,68587.9773408334
+							24731.924644939794,69412.0226591666
+							25216.286330276704,70078.68932583326
+							26000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,69000.0
+							26669.13060635886,69743.1448254774
+							26034.8994967025,69999.3908270191 26000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,69000.0
+							26998.629534754575,69052.33595624294
+							26731.35370161917,69681.9983600625 26000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,69000.0
+							26743.144825477393,68330.86939364114
+							26999.390827019095,68965.1005032975 26000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,69000.0
+							26052.335956242943,68001.37046524543
+							26681.9983600625,68268.64629838083 26000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,69000.0
+							25330.86939364114,68256.8551745226
+							25965.1005032975,68000.6091729809 26000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,69000.0
+							25001.370465245425,68947.66404375706
+							25268.64629838083,68318.0016399375 26000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,69000.0
+							25256.855174522607,69669.13060635886
+							25000.609172980905,69034.8994967025 26000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,69000.0
+							25947.664043757057,69998.62953475457
+							25318.0016399375,69731.35370161917 26000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,76333.33333333333
+							22783.713669723296,76078.68932583326
+							23268.075355060206,75412.0226591666
+							23268.075355060206,74587.9773408334
+							22783.713669723296,73921.31067416674
+							22000.0,73666.66666666667
+							21216.286330276704,73921.31067416674
+							20731.924644939794,74587.9773408334
+							20731.924644939794,75412.0226591666
+							21216.286330276704,76078.68932583326
+							22000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,75000.0
+							22669.13060635886,75743.1448254774
+							22034.8994967025,75999.3908270191 22000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,75000.0
+							22998.629534754575,75052.33595624294
+							22731.35370161917,75681.9983600625 22000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,75000.0
+							22743.144825477393,74330.86939364114
+							22999.390827019095,74965.1005032975 22000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,75000.0
+							22052.335956242943,74001.37046524543
+							22681.9983600625,74268.64629838083 22000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,75000.0
+							21330.86939364114,74256.8551745226
+							21965.1005032975,74000.6091729809 22000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,75000.0
+							21001.370465245425,74947.66404375706
+							21268.64629838083,74318.0016399375 22000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,75000.0
+							21256.855174522607,75669.13060635886
+							21000.609172980905,75034.8994967025 22000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,75000.0
+							21947.664043757057,75998.62953475457
+							21318.0016399375,75731.35370161917 22000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,76333.33333333333
+							26783.713669723296,76078.68932583326
+							27268.075355060206,75412.0226591666
+							27268.075355060206,74587.9773408334
+							26783.713669723296,73921.31067416674
+							26000.0,73666.66666666667
+							25216.286330276704,73921.31067416674
+							24731.924644939794,74587.9773408334
+							24731.924644939794,75412.0226591666
+							25216.286330276704,76078.68932583326
+							26000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,75000.0
+							26669.13060635886,75743.1448254774
+							26034.8994967025,75999.3908270191 26000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,75000.0
+							26998.629534754575,75052.33595624294
+							26731.35370161917,75681.9983600625 26000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,75000.0
+							26743.144825477393,74330.86939364114
+							26999.390827019095,74965.1005032975 26000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,75000.0
+							26052.335956242943,74001.37046524543
+							26681.9983600625,74268.64629838083 26000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,75000.0
+							25330.86939364114,74256.8551745226
+							25965.1005032975,74000.6091729809 26000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,75000.0
+							25001.370465245425,74947.66404375706
+							25268.64629838083,74318.0016399375 26000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,75000.0
+							25256.855174522607,75669.13060635886
+							25000.609172980905,75034.8994967025 26000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,75000.0
+							25947.664043757057,75998.62953475457
+							25318.0016399375,75731.35370161917 26000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,70333.33333333333
+							30783.713669723296,70078.68932583326
+							31268.075355060206,69412.0226591666
+							31268.075355060206,68587.9773408334
+							30783.713669723296,67921.31067416674
+							30000.0,67666.66666666667
+							29216.286330276704,67921.31067416674
+							28731.924644939794,68587.9773408334
+							28731.924644939794,69412.0226591666
+							29216.286330276704,70078.68932583326
+							30000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,69000.0
+							30669.13060635886,69743.1448254774
+							30034.8994967025,69999.3908270191 30000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,69000.0
+							30998.629534754575,69052.33595624294
+							30731.35370161917,69681.9983600625 30000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,69000.0
+							30743.144825477393,68330.86939364114
+							30999.390827019095,68965.1005032975 30000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,69000.0
+							30052.335956242943,68001.37046524543
+							30681.9983600625,68268.64629838083 30000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,69000.0
+							29330.86939364114,68256.8551745226
+							29965.1005032975,68000.6091729809 30000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,69000.0
+							29001.370465245425,68947.66404375706
+							29268.64629838083,68318.0016399375 30000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,69000.0
+							29256.855174522607,69669.13060635886
+							29000.609172980905,69034.8994967025 30000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,69000.0
+							29947.664043757057,69998.62953475457
+							29318.0016399375,69731.35370161917 30000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,70333.33333333333
+							34783.7136697233,70078.68932583326
+							35268.0753550602,69412.0226591666
+							35268.0753550602,68587.9773408334
+							34783.7136697233,67921.31067416674
+							34000.0,67666.66666666667
+							33216.2863302767,67921.31067416674
+							32731.924644939794,68587.9773408334
+							32731.924644939794,69412.0226591666
+							33216.2863302767,70078.68932583326
+							34000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,69000.0
+							34669.130606358856,69743.1448254774
+							34034.8994967025,69999.3908270191 34000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,69000.0
+							34998.629534754575,69052.33595624294
+							34731.35370161917,69681.9983600625 34000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,69000.0
+							34743.14482547739,68330.86939364114
+							34999.390827019095,68965.1005032975 34000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,69000.0
+							34052.33595624295,68001.37046524543
+							34681.9983600625,68268.64629838083 34000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,69000.0
+							33330.869393641144,68256.8551745226
+							33965.1005032975,68000.6091729809 34000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,69000.0
+							33001.370465245425,68947.66404375706
+							33268.64629838083,68318.0016399375 34000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,69000.0
+							33256.85517452261,69669.13060635886
+							33000.609172980905,69034.8994967025 34000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,69000.0
+							33947.66404375705,69998.62953475457
+							33318.0016399375,69731.35370161917 34000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,76333.33333333333
+							30783.713669723296,76078.68932583326
+							31268.075355060206,75412.0226591666
+							31268.075355060206,74587.9773408334
+							30783.713669723296,73921.31067416674
+							30000.0,73666.66666666667
+							29216.286330276704,73921.31067416674
+							28731.924644939794,74587.9773408334
+							28731.924644939794,75412.0226591666
+							29216.286330276704,76078.68932583326
+							30000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,75000.0
+							30669.13060635886,75743.1448254774
+							30034.8994967025,75999.3908270191 30000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,75000.0
+							30998.629534754575,75052.33595624294
+							30731.35370161917,75681.9983600625 30000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,75000.0
+							30743.144825477393,74330.86939364114
+							30999.390827019095,74965.1005032975 30000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,75000.0
+							30052.335956242943,74001.37046524543
+							30681.9983600625,74268.64629838083 30000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,75000.0
+							29330.86939364114,74256.8551745226
+							29965.1005032975,74000.6091729809 30000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,75000.0
+							29001.370465245425,74947.66404375706
+							29268.64629838083,74318.0016399375 30000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,75000.0
+							29256.855174522607,75669.13060635886
+							29000.609172980905,75034.8994967025 30000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,75000.0
+							29947.664043757057,75998.62953475457
+							29318.0016399375,75731.35370161917 30000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,76333.33333333333
+							34783.7136697233,76078.68932583326
+							35268.0753550602,75412.0226591666
+							35268.0753550602,74587.9773408334
+							34783.7136697233,73921.31067416674
+							34000.0,73666.66666666667
+							33216.2863302767,73921.31067416674
+							32731.924644939794,74587.9773408334
+							32731.924644939794,75412.0226591666
+							33216.2863302767,76078.68932583326
+							34000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,75000.0
+							34669.130606358856,75743.1448254774
+							34034.8994967025,75999.3908270191 34000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,75000.0
+							34998.629534754575,75052.33595624294
+							34731.35370161917,75681.9983600625 34000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,75000.0
+							34743.14482547739,74330.86939364114
+							34999.390827019095,74965.1005032975 34000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,75000.0
+							34052.33595624295,74001.37046524543
+							34681.9983600625,74268.64629838083 34000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,75000.0
+							33330.869393641144,74256.8551745226
+							33965.1005032975,74000.6091729809 34000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,75000.0
+							33001.370465245425,74947.66404375706
+							33268.64629838083,74318.0016399375 34000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,75000.0
+							33256.85517452261,75669.13060635886
+							33000.609172980905,75034.8994967025 34000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,75000.0
+							33947.66404375705,75998.62953475457
+							33318.0016399375,75731.35370161917 34000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,70333.33333333333
+							38783.7136697233,70078.68932583326
+							39268.0753550602,69412.0226591666
+							39268.0753550602,68587.9773408334
+							38783.7136697233,67921.31067416674
+							38000.0,67666.66666666667
+							37216.2863302767,67921.31067416674
+							36731.9246449398,68587.9773408334
+							36731.9246449398,69412.0226591666
+							37216.2863302767,70078.68932583326
+							38000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,69000.0
+							38669.130606358856,69743.1448254774
+							38034.8994967025,69999.3908270191 38000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,69000.0
+							38998.629534754575,69052.33595624294
+							38731.35370161917,69681.9983600625 38000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,69000.0
+							38743.14482547739,68330.86939364114
+							38999.390827019095,68965.1005032975 38000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,69000.0
+							38052.33595624295,68001.37046524543
+							38681.9983600625,68268.64629838083 38000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,69000.0
+							37330.869393641144,68256.8551745226
+							37965.1005032975,68000.6091729809 38000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,69000.0
+							37001.370465245425,68947.66404375706
+							37268.64629838083,68318.0016399375 38000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,69000.0
+							37256.85517452261,69669.13060635886
+							37000.609172980905,69034.8994967025 38000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,69000.0
+							37947.66404375705,69998.62953475457
+							37318.0016399375,69731.35370161917 38000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,70333.33333333333
+							42783.7136697233,70078.68932583326
+							43268.0753550602,69412.0226591666
+							43268.0753550602,68587.9773408334
+							42783.7136697233,67921.31067416674
+							42000.0,67666.66666666667
+							41216.2863302767,67921.31067416674
+							40731.9246449398,68587.9773408334
+							40731.9246449398,69412.0226591666
+							41216.2863302767,70078.68932583326
+							42000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,69000.0
+							42669.130606358856,69743.1448254774
+							42034.8994967025,69999.3908270191 42000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,69000.0
+							42998.629534754575,69052.33595624294
+							42731.35370161917,69681.9983600625 42000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,69000.0
+							42743.14482547739,68330.86939364114
+							42999.390827019095,68965.1005032975 42000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,69000.0
+							42052.33595624295,68001.37046524543
+							42681.9983600625,68268.64629838083 42000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,69000.0
+							41330.869393641144,68256.8551745226
+							41965.1005032975,68000.6091729809 42000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,69000.0
+							41001.370465245425,68947.66404375706
+							41268.64629838083,68318.0016399375 42000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,69000.0
+							41256.85517452261,69669.13060635886
+							41000.609172980905,69034.8994967025 42000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,69000.0
+							41947.66404375705,69998.62953475457
+							41318.0016399375,69731.35370161917 42000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,76333.33333333333
+							38783.7136697233,76078.68932583326
+							39268.0753550602,75412.0226591666
+							39268.0753550602,74587.9773408334
+							38783.7136697233,73921.31067416674
+							38000.0,73666.66666666667
+							37216.2863302767,73921.31067416674
+							36731.9246449398,74587.9773408334
+							36731.9246449398,75412.0226591666
+							37216.2863302767,76078.68932583326
+							38000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,75000.0
+							38669.130606358856,75743.1448254774
+							38034.8994967025,75999.3908270191 38000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,75000.0
+							38998.629534754575,75052.33595624294
+							38731.35370161917,75681.9983600625 38000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,75000.0
+							38743.14482547739,74330.86939364114
+							38999.390827019095,74965.1005032975 38000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,75000.0
+							38052.33595624295,74001.37046524543
+							38681.9983600625,74268.64629838083 38000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,75000.0
+							37330.869393641144,74256.8551745226
+							37965.1005032975,74000.6091729809 38000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,75000.0
+							37001.370465245425,74947.66404375706
+							37268.64629838083,74318.0016399375 38000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,75000.0
+							37256.85517452261,75669.13060635886
+							37000.609172980905,75034.8994967025 38000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,75000.0
+							37947.66404375705,75998.62953475457
+							37318.0016399375,75731.35370161917 38000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,76333.33333333333
+							42783.7136697233,76078.68932583326
+							43268.0753550602,75412.0226591666
+							43268.0753550602,74587.9773408334
+							42783.7136697233,73921.31067416674
+							42000.0,73666.66666666667
+							41216.2863302767,73921.31067416674
+							40731.9246449398,74587.9773408334
+							40731.9246449398,75412.0226591666
+							41216.2863302767,76078.68932583326
+							42000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,75000.0
+							42669.130606358856,75743.1448254774
+							42034.8994967025,75999.3908270191 42000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,75000.0
+							42998.629534754575,75052.33595624294
+							42731.35370161917,75681.9983600625 42000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,75000.0
+							42743.14482547739,74330.86939364114
+							42999.390827019095,74965.1005032975 42000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,75000.0
+							42052.33595624295,74001.37046524543
+							42681.9983600625,74268.64629838083 42000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,75000.0
+							41330.869393641144,74256.8551745226
+							41965.1005032975,74000.6091729809 42000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,75000.0
+							41001.370465245425,74947.66404375706
+							41268.64629838083,74318.0016399375 42000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,75000.0
+							41256.85517452261,75669.13060635886
+							41000.609172980905,75034.8994967025 42000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,75000.0
+							41947.66404375705,75998.62953475457
+							41318.0016399375,75731.35370161917 42000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,70333.33333333333
+							46783.7136697233,70078.68932583326
+							47268.0753550602,69412.0226591666
+							47268.0753550602,68587.9773408334
+							46783.7136697233,67921.31067416674
+							46000.0,67666.66666666667
+							45216.2863302767,67921.31067416674
+							44731.9246449398,68587.9773408334
+							44731.9246449398,69412.0226591666
+							45216.2863302767,70078.68932583326
+							46000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,69000.0
+							46669.130606358856,69743.1448254774
+							46034.8994967025,69999.3908270191 46000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,69000.0
+							46998.629534754575,69052.33595624294
+							46731.35370161917,69681.9983600625 46000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,69000.0
+							46743.14482547739,68330.86939364114
+							46999.390827019095,68965.1005032975 46000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,69000.0
+							46052.33595624295,68001.37046524543
+							46681.9983600625,68268.64629838083 46000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,69000.0
+							45330.869393641144,68256.8551745226
+							45965.1005032975,68000.6091729809 46000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,69000.0
+							45001.370465245425,68947.66404375706
+							45268.64629838083,68318.0016399375 46000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,69000.0
+							45256.85517452261,69669.13060635886
+							45000.609172980905,69034.8994967025 46000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,69000.0
+							45947.66404375705,69998.62953475457
+							45318.0016399375,69731.35370161917 46000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,70333.33333333333
+							50783.7136697233,70078.68932583326
+							51268.0753550602,69412.0226591666
+							51268.0753550602,68587.9773408334
+							50783.7136697233,67921.31067416674
+							50000.0,67666.66666666667
+							49216.2863302767,67921.31067416674
+							48731.9246449398,68587.9773408334
+							48731.9246449398,69412.0226591666
+							49216.2863302767,70078.68932583326
+							50000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,69000.0
+							50669.130606358856,69743.1448254774
+							50034.8994967025,69999.3908270191 50000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,69000.0
+							50998.629534754575,69052.33595624294
+							50731.35370161917,69681.9983600625 50000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,69000.0
+							50743.14482547739,68330.86939364114
+							50999.390827019095,68965.1005032975 50000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,69000.0
+							50052.33595624295,68001.37046524543
+							50681.9983600625,68268.64629838083 50000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,69000.0
+							49330.869393641144,68256.8551745226
+							49965.1005032975,68000.6091729809 50000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,69000.0
+							49001.370465245425,68947.66404375706
+							49268.64629838083,68318.0016399375 50000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,69000.0
+							49256.85517452261,69669.13060635886
+							49000.609172980905,69034.8994967025 50000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,69000.0
+							49947.66404375705,69998.62953475457
+							49318.0016399375,69731.35370161917 50000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,76333.33333333333
+							46783.7136697233,76078.68932583326
+							47268.0753550602,75412.0226591666
+							47268.0753550602,74587.9773408334
+							46783.7136697233,73921.31067416674
+							46000.0,73666.66666666667
+							45216.2863302767,73921.31067416674
+							44731.9246449398,74587.9773408334
+							44731.9246449398,75412.0226591666
+							45216.2863302767,76078.68932583326
+							46000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,75000.0
+							46669.130606358856,75743.1448254774
+							46034.8994967025,75999.3908270191 46000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,75000.0
+							46998.629534754575,75052.33595624294
+							46731.35370161917,75681.9983600625 46000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,75000.0
+							46743.14482547739,74330.86939364114
+							46999.390827019095,74965.1005032975 46000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,75000.0
+							46052.33595624295,74001.37046524543
+							46681.9983600625,74268.64629838083 46000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,75000.0
+							45330.869393641144,74256.8551745226
+							45965.1005032975,74000.6091729809 46000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,75000.0
+							45001.370465245425,74947.66404375706
+							45268.64629838083,74318.0016399375 46000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,75000.0
+							45256.85517452261,75669.13060635886
+							45000.609172980905,75034.8994967025 46000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,75000.0
+							45947.66404375705,75998.62953475457
+							45318.0016399375,75731.35370161917 46000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,76333.33333333333
+							50783.7136697233,76078.68932583326
+							51268.0753550602,75412.0226591666
+							51268.0753550602,74587.9773408334
+							50783.7136697233,73921.31067416674
+							50000.0,73666.66666666667
+							49216.2863302767,73921.31067416674
+							48731.9246449398,74587.9773408334
+							48731.9246449398,75412.0226591666
+							49216.2863302767,76078.68932583326
+							50000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,75000.0
+							50669.130606358856,75743.1448254774
+							50034.8994967025,75999.3908270191 50000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,75000.0
+							50998.629534754575,75052.33595624294
+							50731.35370161917,75681.9983600625 50000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,75000.0
+							50743.14482547739,74330.86939364114
+							50999.390827019095,74965.1005032975 50000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,75000.0
+							50052.33595624295,74001.37046524543
+							50681.9983600625,74268.64629838083 50000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,75000.0
+							49330.869393641144,74256.8551745226
+							49965.1005032975,74000.6091729809 50000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,75000.0
+							49001.370465245425,74947.66404375706
+							49268.64629838083,74318.0016399375 50000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,75000.0
+							49256.85517452261,75669.13060635886
+							49000.609172980905,75034.8994967025 50000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,75000.0
+							49947.66404375705,75998.62953475457
+							49318.0016399375,75731.35370161917 50000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,70333.33333333333
+							54783.7136697233,70078.68932583326
+							55268.0753550602,69412.0226591666
+							55268.0753550602,68587.9773408334
+							54783.7136697233,67921.31067416674
+							54000.0,67666.66666666667
+							53216.2863302767,67921.31067416674
+							52731.9246449398,68587.9773408334
+							52731.9246449398,69412.0226591666
+							53216.2863302767,70078.68932583326
+							54000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,69000.0
+							54669.130606358856,69743.1448254774
+							54034.8994967025,69999.3908270191 54000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,69000.0
+							54998.629534754575,69052.33595624294
+							54731.35370161917,69681.9983600625 54000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,69000.0
+							54743.14482547739,68330.86939364114
+							54999.390827019095,68965.1005032975 54000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,69000.0
+							54052.33595624295,68001.37046524543
+							54681.9983600625,68268.64629838083 54000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,69000.0
+							53330.869393641144,68256.8551745226
+							53965.1005032975,68000.6091729809 54000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,69000.0
+							53001.370465245425,68947.66404375706
+							53268.64629838083,68318.0016399375 54000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,69000.0
+							53256.85517452261,69669.13060635886
+							53000.609172980905,69034.8994967025 54000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,69000.0
+							53947.66404375705,69998.62953475457
+							53318.0016399375,69731.35370161917 54000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,70333.33333333333
+							58783.7136697233,70078.68932583326
+							59268.0753550602,69412.0226591666
+							59268.0753550602,68587.9773408334
+							58783.7136697233,67921.31067416674
+							58000.0,67666.66666666667
+							57216.2863302767,67921.31067416674
+							56731.9246449398,68587.9773408334
+							56731.9246449398,69412.0226591666
+							57216.2863302767,70078.68932583326
+							58000.0,70333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,69000.0
+							58669.130606358856,69743.1448254774
+							58034.8994967025,69999.3908270191 58000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,69000.0
+							58998.629534754575,69052.33595624294
+							58731.35370161917,69681.9983600625 58000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,69000.0
+							58743.14482547739,68330.86939364114
+							58999.390827019095,68965.1005032975 58000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,69000.0
+							58052.33595624295,68001.37046524543
+							58681.9983600625,68268.64629838083 58000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,69000.0
+							57330.869393641144,68256.8551745226
+							57965.1005032975,68000.6091729809 58000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,69000.0
+							57001.370465245425,68947.66404375706
+							57268.64629838083,68318.0016399375 58000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,69000.0
+							57256.85517452261,69669.13060635886
+							57000.609172980905,69034.8994967025 58000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,69000.0
+							57947.66404375705,69998.62953475457
+							57318.0016399375,69731.35370161917 58000.0,69000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,76333.33333333333
+							54783.7136697233,76078.68932583326
+							55268.0753550602,75412.0226591666
+							55268.0753550602,74587.9773408334
+							54783.7136697233,73921.31067416674
+							54000.0,73666.66666666667
+							53216.2863302767,73921.31067416674
+							52731.9246449398,74587.9773408334
+							52731.9246449398,75412.0226591666
+							53216.2863302767,76078.68932583326
+							54000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,75000.0
+							54669.130606358856,75743.1448254774
+							54034.8994967025,75999.3908270191 54000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,75000.0
+							54998.629534754575,75052.33595624294
+							54731.35370161917,75681.9983600625 54000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,75000.0
+							54743.14482547739,74330.86939364114
+							54999.390827019095,74965.1005032975 54000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,75000.0
+							54052.33595624295,74001.37046524543
+							54681.9983600625,74268.64629838083 54000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,75000.0
+							53330.869393641144,74256.8551745226
+							53965.1005032975,74000.6091729809 54000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,75000.0
+							53001.370465245425,74947.66404375706
+							53268.64629838083,74318.0016399375 54000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,75000.0
+							53256.85517452261,75669.13060635886
+							53000.609172980905,75034.8994967025 54000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,75000.0
+							53947.66404375705,75998.62953475457
+							53318.0016399375,75731.35370161917 54000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,76333.33333333333
+							58783.7136697233,76078.68932583326
+							59268.0753550602,75412.0226591666
+							59268.0753550602,74587.9773408334
+							58783.7136697233,73921.31067416674
+							58000.0,73666.66666666667
+							57216.2863302767,73921.31067416674
+							56731.9246449398,74587.9773408334
+							56731.9246449398,75412.0226591666
+							57216.2863302767,76078.68932583326
+							58000.0,76333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,75000.0
+							58669.130606358856,75743.1448254774
+							58034.8994967025,75999.3908270191 58000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,75000.0
+							58998.629534754575,75052.33595624294
+							58731.35370161917,75681.9983600625 58000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,75000.0
+							58743.14482547739,74330.86939364114
+							58999.390827019095,74965.1005032975 58000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,75000.0
+							58052.33595624295,74001.37046524543
+							58681.9983600625,74268.64629838083 58000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,75000.0
+							57330.869393641144,74256.8551745226
+							57965.1005032975,74000.6091729809 58000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,75000.0
+							57001.370465245425,74947.66404375706
+							57268.64629838083,74318.0016399375 58000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,75000.0
+							57256.85517452261,75669.13060635886
+							57000.609172980905,75034.8994967025 58000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,75000.0
+							57947.66404375705,75998.62953475457
+							57318.0016399375,75731.35370161917 58000.0,75000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,82333.33333333333
+							22783.713669723296,82078.68932583326
+							23268.075355060206,81412.0226591666
+							23268.075355060206,80587.9773408334
+							22783.713669723296,79921.31067416674
+							22000.0,79666.66666666667
+							21216.286330276704,79921.31067416674
+							20731.924644939794,80587.9773408334
+							20731.924644939794,81412.0226591666
+							21216.286330276704,82078.68932583326
+							22000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,81000.0
+							22669.13060635886,81743.1448254774
+							22034.8994967025,81999.3908270191 22000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,81000.0
+							22998.629534754575,81052.33595624294
+							22731.35370161917,81681.9983600625 22000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,81000.0
+							22743.144825477393,80330.86939364114
+							22999.390827019095,80965.1005032975 22000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,81000.0
+							22052.335956242943,80001.37046524543
+							22681.9983600625,80268.64629838083 22000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,81000.0
+							21330.86939364114,80256.8551745226
+							21965.1005032975,80000.6091729809 22000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,81000.0
+							21001.370465245425,80947.66404375706
+							21268.64629838083,80318.0016399375 22000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,81000.0
+							21256.855174522607,81669.13060635886
+							21000.609172980905,81034.8994967025 22000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,81000.0
+							21947.664043757057,81998.62953475457
+							21318.0016399375,81731.35370161917 22000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,82333.33333333333
+							26783.713669723296,82078.68932583326
+							27268.075355060206,81412.0226591666
+							27268.075355060206,80587.9773408334
+							26783.713669723296,79921.31067416674
+							26000.0,79666.66666666667
+							25216.286330276704,79921.31067416674
+							24731.924644939794,80587.9773408334
+							24731.924644939794,81412.0226591666
+							25216.286330276704,82078.68932583326
+							26000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,81000.0
+							26669.13060635886,81743.1448254774
+							26034.8994967025,81999.3908270191 26000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,81000.0
+							26998.629534754575,81052.33595624294
+							26731.35370161917,81681.9983600625 26000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,81000.0
+							26743.144825477393,80330.86939364114
+							26999.390827019095,80965.1005032975 26000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,81000.0
+							26052.335956242943,80001.37046524543
+							26681.9983600625,80268.64629838083 26000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,81000.0
+							25330.86939364114,80256.8551745226
+							25965.1005032975,80000.6091729809 26000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,81000.0
+							25001.370465245425,80947.66404375706
+							25268.64629838083,80318.0016399375 26000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,81000.0
+							25256.855174522607,81669.13060635886
+							25000.609172980905,81034.8994967025 26000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,81000.0
+							25947.664043757057,81998.62953475457
+							25318.0016399375,81731.35370161917 26000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,88333.33333333333
+							22783.713669723296,88078.68932583326
+							23268.075355060206,87412.0226591666
+							23268.075355060206,86587.9773408334
+							22783.713669723296,85921.31067416674
+							22000.0,85666.66666666667
+							21216.286330276704,85921.31067416674
+							20731.924644939794,86587.9773408334
+							20731.924644939794,87412.0226591666
+							21216.286330276704,88078.68932583326
+							22000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,87000.0
+							22669.13060635886,87743.1448254774
+							22034.8994967025,87999.3908270191 22000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,87000.0
+							22998.629534754575,87052.33595624294
+							22731.35370161917,87681.9983600625 22000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,87000.0
+							22743.144825477393,86330.86939364114
+							22999.390827019095,86965.1005032975 22000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,87000.0
+							22052.335956242943,86001.37046524543
+							22681.9983600625,86268.64629838083 22000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,87000.0
+							21330.86939364114,86256.8551745226
+							21965.1005032975,86000.6091729809 22000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,87000.0
+							21001.370465245425,86947.66404375706
+							21268.64629838083,86318.0016399375 22000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,87000.0
+							21256.855174522607,87669.13060635886
+							21000.609172980905,87034.8994967025 22000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>22000.0,87000.0
+							21947.664043757057,87998.62953475457
+							21318.0016399375,87731.35370161917 22000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,88333.33333333333
+							26783.713669723296,88078.68932583326
+							27268.075355060206,87412.0226591666
+							27268.075355060206,86587.9773408334
+							26783.713669723296,85921.31067416674
+							26000.0,85666.66666666667
+							25216.286330276704,85921.31067416674
+							24731.924644939794,86587.9773408334
+							24731.924644939794,87412.0226591666
+							25216.286330276704,88078.68932583326
+							26000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,87000.0
+							26669.13060635886,87743.1448254774
+							26034.8994967025,87999.3908270191 26000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,87000.0
+							26998.629534754575,87052.33595624294
+							26731.35370161917,87681.9983600625 26000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,87000.0
+							26743.144825477393,86330.86939364114
+							26999.390827019095,86965.1005032975 26000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,87000.0
+							26052.335956242943,86001.37046524543
+							26681.9983600625,86268.64629838083 26000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,87000.0
+							25330.86939364114,86256.8551745226
+							25965.1005032975,86000.6091729809 26000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,87000.0
+							25001.370465245425,86947.66404375706
+							25268.64629838083,86318.0016399375 26000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,87000.0
+							25256.855174522607,87669.13060635886
+							25000.609172980905,87034.8994967025 26000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>26000.0,87000.0
+							25947.664043757057,87998.62953475457
+							25318.0016399375,87731.35370161917 26000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,82333.33333333333
+							30783.713669723296,82078.68932583326
+							31268.075355060206,81412.0226591666
+							31268.075355060206,80587.9773408334
+							30783.713669723296,79921.31067416674
+							30000.0,79666.66666666667
+							29216.286330276704,79921.31067416674
+							28731.924644939794,80587.9773408334
+							28731.924644939794,81412.0226591666
+							29216.286330276704,82078.68932583326
+							30000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,81000.0
+							30669.13060635886,81743.1448254774
+							30034.8994967025,81999.3908270191 30000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,81000.0
+							30998.629534754575,81052.33595624294
+							30731.35370161917,81681.9983600625 30000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,81000.0
+							30743.144825477393,80330.86939364114
+							30999.390827019095,80965.1005032975 30000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,81000.0
+							30052.335956242943,80001.37046524543
+							30681.9983600625,80268.64629838083 30000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,81000.0
+							29330.86939364114,80256.8551745226
+							29965.1005032975,80000.6091729809 30000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,81000.0
+							29001.370465245425,80947.66404375706
+							29268.64629838083,80318.0016399375 30000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,81000.0
+							29256.855174522607,81669.13060635886
+							29000.609172980905,81034.8994967025 30000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,81000.0
+							29947.664043757057,81998.62953475457
+							29318.0016399375,81731.35370161917 30000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,82333.33333333333
+							34783.7136697233,82078.68932583326
+							35268.0753550602,81412.0226591666
+							35268.0753550602,80587.9773408334
+							34783.7136697233,79921.31067416674
+							34000.0,79666.66666666667
+							33216.2863302767,79921.31067416674
+							32731.924644939794,80587.9773408334
+							32731.924644939794,81412.0226591666
+							33216.2863302767,82078.68932583326
+							34000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,81000.0
+							34669.130606358856,81743.1448254774
+							34034.8994967025,81999.3908270191 34000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,81000.0
+							34998.629534754575,81052.33595624294
+							34731.35370161917,81681.9983600625 34000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,81000.0
+							34743.14482547739,80330.86939364114
+							34999.390827019095,80965.1005032975 34000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,81000.0
+							34052.33595624295,80001.37046524543
+							34681.9983600625,80268.64629838083 34000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,81000.0
+							33330.869393641144,80256.8551745226
+							33965.1005032975,80000.6091729809 34000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,81000.0
+							33001.370465245425,80947.66404375706
+							33268.64629838083,80318.0016399375 34000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,81000.0
+							33256.85517452261,81669.13060635886
+							33000.609172980905,81034.8994967025 34000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,81000.0
+							33947.66404375705,81998.62953475457
+							33318.0016399375,81731.35370161917 34000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,88333.33333333333
+							30783.713669723296,88078.68932583326
+							31268.075355060206,87412.0226591666
+							31268.075355060206,86587.9773408334
+							30783.713669723296,85921.31067416674
+							30000.0,85666.66666666667
+							29216.286330276704,85921.31067416674
+							28731.924644939794,86587.9773408334
+							28731.924644939794,87412.0226591666
+							29216.286330276704,88078.68932583326
+							30000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,87000.0
+							30669.13060635886,87743.1448254774
+							30034.8994967025,87999.3908270191 30000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,87000.0
+							30998.629534754575,87052.33595624294
+							30731.35370161917,87681.9983600625 30000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,87000.0
+							30743.144825477393,86330.86939364114
+							30999.390827019095,86965.1005032975 30000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,87000.0
+							30052.335956242943,86001.37046524543
+							30681.9983600625,86268.64629838083 30000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,87000.0
+							29330.86939364114,86256.8551745226
+							29965.1005032975,86000.6091729809 30000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,87000.0
+							29001.370465245425,86947.66404375706
+							29268.64629838083,86318.0016399375 30000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,87000.0
+							29256.855174522607,87669.13060635886
+							29000.609172980905,87034.8994967025 30000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>30000.0,87000.0
+							29947.664043757057,87998.62953475457
+							29318.0016399375,87731.35370161917 30000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,88333.33333333333
+							34783.7136697233,88078.68932583326
+							35268.0753550602,87412.0226591666
+							35268.0753550602,86587.9773408334
+							34783.7136697233,85921.31067416674
+							34000.0,85666.66666666667
+							33216.2863302767,85921.31067416674
+							32731.924644939794,86587.9773408334
+							32731.924644939794,87412.0226591666
+							33216.2863302767,88078.68932583326
+							34000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,87000.0
+							34669.130606358856,87743.1448254774
+							34034.8994967025,87999.3908270191 34000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,87000.0
+							34998.629534754575,87052.33595624294
+							34731.35370161917,87681.9983600625 34000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,87000.0
+							34743.14482547739,86330.86939364114
+							34999.390827019095,86965.1005032975 34000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,87000.0
+							34052.33595624295,86001.37046524543
+							34681.9983600625,86268.64629838083 34000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,87000.0
+							33330.869393641144,86256.8551745226
+							33965.1005032975,86000.6091729809 34000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,87000.0
+							33001.370465245425,86947.66404375706
+							33268.64629838083,86318.0016399375 34000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,87000.0
+							33256.85517452261,87669.13060635886
+							33000.609172980905,87034.8994967025 34000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>34000.0,87000.0
+							33947.66404375705,87998.62953475457
+							33318.0016399375,87731.35370161917 34000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,82333.33333333333
+							38783.7136697233,82078.68932583326
+							39268.0753550602,81412.0226591666
+							39268.0753550602,80587.9773408334
+							38783.7136697233,79921.31067416674
+							38000.0,79666.66666666667
+							37216.2863302767,79921.31067416674
+							36731.9246449398,80587.9773408334
+							36731.9246449398,81412.0226591666
+							37216.2863302767,82078.68932583326
+							38000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,81000.0
+							38669.130606358856,81743.1448254774
+							38034.8994967025,81999.3908270191 38000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,81000.0
+							38998.629534754575,81052.33595624294
+							38731.35370161917,81681.9983600625 38000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,81000.0
+							38743.14482547739,80330.86939364114
+							38999.390827019095,80965.1005032975 38000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,81000.0
+							38052.33595624295,80001.37046524543
+							38681.9983600625,80268.64629838083 38000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,81000.0
+							37330.869393641144,80256.8551745226
+							37965.1005032975,80000.6091729809 38000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,81000.0
+							37001.370465245425,80947.66404375706
+							37268.64629838083,80318.0016399375 38000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,81000.0
+							37256.85517452261,81669.13060635886
+							37000.609172980905,81034.8994967025 38000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,81000.0
+							37947.66404375705,81998.62953475457
+							37318.0016399375,81731.35370161917 38000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,82333.33333333333
+							42783.7136697233,82078.68932583326
+							43268.0753550602,81412.0226591666
+							43268.0753550602,80587.9773408334
+							42783.7136697233,79921.31067416674
+							42000.0,79666.66666666667
+							41216.2863302767,79921.31067416674
+							40731.9246449398,80587.9773408334
+							40731.9246449398,81412.0226591666
+							41216.2863302767,82078.68932583326
+							42000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,81000.0
+							42669.130606358856,81743.1448254774
+							42034.8994967025,81999.3908270191 42000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,81000.0
+							42998.629534754575,81052.33595624294
+							42731.35370161917,81681.9983600625 42000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,81000.0
+							42743.14482547739,80330.86939364114
+							42999.390827019095,80965.1005032975 42000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,81000.0
+							42052.33595624295,80001.37046524543
+							42681.9983600625,80268.64629838083 42000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,81000.0
+							41330.869393641144,80256.8551745226
+							41965.1005032975,80000.6091729809 42000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,81000.0
+							41001.370465245425,80947.66404375706
+							41268.64629838083,80318.0016399375 42000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,81000.0
+							41256.85517452261,81669.13060635886
+							41000.609172980905,81034.8994967025 42000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,81000.0
+							41947.66404375705,81998.62953475457
+							41318.0016399375,81731.35370161917 42000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,88333.33333333333
+							38783.7136697233,88078.68932583326
+							39268.0753550602,87412.0226591666
+							39268.0753550602,86587.9773408334
+							38783.7136697233,85921.31067416674
+							38000.0,85666.66666666667
+							37216.2863302767,85921.31067416674
+							36731.9246449398,86587.9773408334
+							36731.9246449398,87412.0226591666
+							37216.2863302767,88078.68932583326
+							38000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,87000.0
+							38669.130606358856,87743.1448254774
+							38034.8994967025,87999.3908270191 38000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,87000.0
+							38998.629534754575,87052.33595624294
+							38731.35370161917,87681.9983600625 38000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,87000.0
+							38743.14482547739,86330.86939364114
+							38999.390827019095,86965.1005032975 38000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,87000.0
+							38052.33595624295,86001.37046524543
+							38681.9983600625,86268.64629838083 38000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,87000.0
+							37330.869393641144,86256.8551745226
+							37965.1005032975,86000.6091729809 38000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,87000.0
+							37001.370465245425,86947.66404375706
+							37268.64629838083,86318.0016399375 38000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,87000.0
+							37256.85517452261,87669.13060635886
+							37000.609172980905,87034.8994967025 38000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>38000.0,87000.0
+							37947.66404375705,87998.62953475457
+							37318.0016399375,87731.35370161917 38000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,88333.33333333333
+							42783.7136697233,88078.68932583326
+							43268.0753550602,87412.0226591666
+							43268.0753550602,86587.9773408334
+							42783.7136697233,85921.31067416674
+							42000.0,85666.66666666667
+							41216.2863302767,85921.31067416674
+							40731.9246449398,86587.9773408334
+							40731.9246449398,87412.0226591666
+							41216.2863302767,88078.68932583326
+							42000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,87000.0
+							42669.130606358856,87743.1448254774
+							42034.8994967025,87999.3908270191 42000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,87000.0
+							42998.629534754575,87052.33595624294
+							42731.35370161917,87681.9983600625 42000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,87000.0
+							42743.14482547739,86330.86939364114
+							42999.390827019095,86965.1005032975 42000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,87000.0
+							42052.33595624295,86001.37046524543
+							42681.9983600625,86268.64629838083 42000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,87000.0
+							41330.869393641144,86256.8551745226
+							41965.1005032975,86000.6091729809 42000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,87000.0
+							41001.370465245425,86947.66404375706
+							41268.64629838083,86318.0016399375 42000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,87000.0
+							41256.85517452261,87669.13060635886
+							41000.609172980905,87034.8994967025 42000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>42000.0,87000.0
+							41947.66404375705,87998.62953475457
+							41318.0016399375,87731.35370161917 42000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,82333.33333333333
+							46783.7136697233,82078.68932583326
+							47268.0753550602,81412.0226591666
+							47268.0753550602,80587.9773408334
+							46783.7136697233,79921.31067416674
+							46000.0,79666.66666666667
+							45216.2863302767,79921.31067416674
+							44731.9246449398,80587.9773408334
+							44731.9246449398,81412.0226591666
+							45216.2863302767,82078.68932583326
+							46000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,81000.0
+							46669.130606358856,81743.1448254774
+							46034.8994967025,81999.3908270191 46000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,81000.0
+							46998.629534754575,81052.33595624294
+							46731.35370161917,81681.9983600625 46000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,81000.0
+							46743.14482547739,80330.86939364114
+							46999.390827019095,80965.1005032975 46000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,81000.0
+							46052.33595624295,80001.37046524543
+							46681.9983600625,80268.64629838083 46000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,81000.0
+							45330.869393641144,80256.8551745226
+							45965.1005032975,80000.6091729809 46000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,81000.0
+							45001.370465245425,80947.66404375706
+							45268.64629838083,80318.0016399375 46000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,81000.0
+							45256.85517452261,81669.13060635886
+							45000.609172980905,81034.8994967025 46000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,81000.0
+							45947.66404375705,81998.62953475457
+							45318.0016399375,81731.35370161917 46000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,82333.33333333333
+							50783.7136697233,82078.68932583326
+							51268.0753550602,81412.0226591666
+							51268.0753550602,80587.9773408334
+							50783.7136697233,79921.31067416674
+							50000.0,79666.66666666667
+							49216.2863302767,79921.31067416674
+							48731.9246449398,80587.9773408334
+							48731.9246449398,81412.0226591666
+							49216.2863302767,82078.68932583326
+							50000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,81000.0
+							50669.130606358856,81743.1448254774
+							50034.8994967025,81999.3908270191 50000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,81000.0
+							50998.629534754575,81052.33595624294
+							50731.35370161917,81681.9983600625 50000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,81000.0
+							50743.14482547739,80330.86939364114
+							50999.390827019095,80965.1005032975 50000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,81000.0
+							50052.33595624295,80001.37046524543
+							50681.9983600625,80268.64629838083 50000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,81000.0
+							49330.869393641144,80256.8551745226
+							49965.1005032975,80000.6091729809 50000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,81000.0
+							49001.370465245425,80947.66404375706
+							49268.64629838083,80318.0016399375 50000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,81000.0
+							49256.85517452261,81669.13060635886
+							49000.609172980905,81034.8994967025 50000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,81000.0
+							49947.66404375705,81998.62953475457
+							49318.0016399375,81731.35370161917 50000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,88333.33333333333
+							46783.7136697233,88078.68932583326
+							47268.0753550602,87412.0226591666
+							47268.0753550602,86587.9773408334
+							46783.7136697233,85921.31067416674
+							46000.0,85666.66666666667
+							45216.2863302767,85921.31067416674
+							44731.9246449398,86587.9773408334
+							44731.9246449398,87412.0226591666
+							45216.2863302767,88078.68932583326
+							46000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,87000.0
+							46669.130606358856,87743.1448254774
+							46034.8994967025,87999.3908270191 46000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,87000.0
+							46998.629534754575,87052.33595624294
+							46731.35370161917,87681.9983600625 46000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,87000.0
+							46743.14482547739,86330.86939364114
+							46999.390827019095,86965.1005032975 46000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,87000.0
+							46052.33595624295,86001.37046524543
+							46681.9983600625,86268.64629838083 46000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,87000.0
+							45330.869393641144,86256.8551745226
+							45965.1005032975,86000.6091729809 46000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,87000.0
+							45001.370465245425,86947.66404375706
+							45268.64629838083,86318.0016399375 46000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,87000.0
+							45256.85517452261,87669.13060635886
+							45000.609172980905,87034.8994967025 46000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>46000.0,87000.0
+							45947.66404375705,87998.62953475457
+							45318.0016399375,87731.35370161917 46000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,88333.33333333333
+							50783.7136697233,88078.68932583326
+							51268.0753550602,87412.0226591666
+							51268.0753550602,86587.9773408334
+							50783.7136697233,85921.31067416674
+							50000.0,85666.66666666667
+							49216.2863302767,85921.31067416674
+							48731.9246449398,86587.9773408334
+							48731.9246449398,87412.0226591666
+							49216.2863302767,88078.68932583326
+							50000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,87000.0
+							50669.130606358856,87743.1448254774
+							50034.8994967025,87999.3908270191 50000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,87000.0
+							50998.629534754575,87052.33595624294
+							50731.35370161917,87681.9983600625 50000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,87000.0
+							50743.14482547739,86330.86939364114
+							50999.390827019095,86965.1005032975 50000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,87000.0
+							50052.33595624295,86001.37046524543
+							50681.9983600625,86268.64629838083 50000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,87000.0
+							49330.869393641144,86256.8551745226
+							49965.1005032975,86000.6091729809 50000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,87000.0
+							49001.370465245425,86947.66404375706
+							49268.64629838083,86318.0016399375 50000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,87000.0
+							49256.85517452261,87669.13060635886
+							49000.609172980905,87034.8994967025 50000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>50000.0,87000.0
+							49947.66404375705,87998.62953475457
+							49318.0016399375,87731.35370161917 50000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+	<MultiPolygon>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,82333.33333333333
+							54783.7136697233,82078.68932583326
+							55268.0753550602,81412.0226591666
+							55268.0753550602,80587.9773408334
+							54783.7136697233,79921.31067416674
+							54000.0,79666.66666666667
+							53216.2863302767,79921.31067416674
+							52731.9246449398,80587.9773408334
+							52731.9246449398,81412.0226591666
+							53216.2863302767,82078.68932583326
+							54000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,81000.0
+							54669.130606358856,81743.1448254774
+							54034.8994967025,81999.3908270191 54000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,81000.0
+							54998.629534754575,81052.33595624294
+							54731.35370161917,81681.9983600625 54000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,81000.0
+							54743.14482547739,80330.86939364114
+							54999.390827019095,80965.1005032975 54000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,81000.0
+							54052.33595624295,80001.37046524543
+							54681.9983600625,80268.64629838083 54000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,81000.0
+							53330.869393641144,80256.8551745226
+							53965.1005032975,80000.6091729809 54000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,81000.0
+							53001.370465245425,80947.66404375706
+							53268.64629838083,80318.0016399375 54000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,81000.0
+							53256.85517452261,81669.13060635886
+							53000.609172980905,81034.8994967025 54000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,81000.0
+							53947.66404375705,81998.62953475457
+							53318.0016399375,81731.35370161917 54000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,82333.33333333333
+							58783.7136697233,82078.68932583326
+							59268.0753550602,81412.0226591666
+							59268.0753550602,80587.9773408334
+							58783.7136697233,79921.31067416674
+							58000.0,79666.66666666667
+							57216.2863302767,79921.31067416674
+							56731.9246449398,80587.9773408334
+							56731.9246449398,81412.0226591666
+							57216.2863302767,82078.68932583326
+							58000.0,82333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,81000.0
+							58669.130606358856,81743.1448254774
+							58034.8994967025,81999.3908270191 58000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,81000.0
+							58998.629534754575,81052.33595624294
+							58731.35370161917,81681.9983600625 58000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,81000.0
+							58743.14482547739,80330.86939364114
+							58999.390827019095,80965.1005032975 58000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,81000.0
+							58052.33595624295,80001.37046524543
+							58681.9983600625,80268.64629838083 58000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,81000.0
+							57330.869393641144,80256.8551745226
+							57965.1005032975,80000.6091729809 58000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,81000.0
+							57001.370465245425,80947.66404375706
+							57268.64629838083,80318.0016399375 58000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,81000.0
+							57256.85517452261,81669.13060635886
+							57000.609172980905,81034.8994967025 58000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,81000.0
+							57947.66404375705,81998.62953475457
+							57318.0016399375,81731.35370161917 58000.0,81000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,88333.33333333333
+							54783.7136697233,88078.68932583326
+							55268.0753550602,87412.0226591666
+							55268.0753550602,86587.9773408334
+							54783.7136697233,85921.31067416674
+							54000.0,85666.66666666667
+							53216.2863302767,85921.31067416674
+							52731.9246449398,86587.9773408334
+							52731.9246449398,87412.0226591666
+							53216.2863302767,88078.68932583326
+							54000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,87000.0
+							54669.130606358856,87743.1448254774
+							54034.8994967025,87999.3908270191 54000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,87000.0
+							54998.629534754575,87052.33595624294
+							54731.35370161917,87681.9983600625 54000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,87000.0
+							54743.14482547739,86330.86939364114
+							54999.390827019095,86965.1005032975 54000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,87000.0
+							54052.33595624295,86001.37046524543
+							54681.9983600625,86268.64629838083 54000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,87000.0
+							53330.869393641144,86256.8551745226
+							53965.1005032975,86000.6091729809 54000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,87000.0
+							53001.370465245425,86947.66404375706
+							53268.64629838083,86318.0016399375 54000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,87000.0
+							53256.85517452261,87669.13060635886
+							53000.609172980905,87034.8994967025 54000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>54000.0,87000.0
+							53947.66404375705,87998.62953475457
+							53318.0016399375,87731.35370161917 54000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+		<polygonMember>
+			<Polygon>
+				<outerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,88333.33333333333
+							58783.7136697233,88078.68932583326
+							59268.0753550602,87412.0226591666
+							59268.0753550602,86587.9773408334
+							58783.7136697233,85921.31067416674
+							58000.0,85666.66666666667
+							57216.2863302767,85921.31067416674
+							56731.9246449398,86587.9773408334
+							56731.9246449398,87412.0226591666
+							57216.2863302767,88078.68932583326
+							58000.0,88333.33333333333 </coordinates>
+					</LinearRing>
+				</outerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,87000.0
+							58669.130606358856,87743.1448254774
+							58034.8994967025,87999.3908270191 58000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,87000.0
+							58998.629534754575,87052.33595624294
+							58731.35370161917,87681.9983600625 58000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,87000.0
+							58743.14482547739,86330.86939364114
+							58999.390827019095,86965.1005032975 58000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,87000.0
+							58052.33595624295,86001.37046524543
+							58681.9983600625,86268.64629838083 58000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,87000.0
+							57330.869393641144,86256.8551745226
+							57965.1005032975,86000.6091729809 58000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,87000.0
+							57001.370465245425,86947.66404375706
+							57268.64629838083,86318.0016399375 58000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,87000.0
+							57256.85517452261,87669.13060635886
+							57000.609172980905,87034.8994967025 58000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+				<innerBoundaryIs>
+					<LinearRing>
+						<coordinates>58000.0,87000.0
+							57947.66404375705,87998.62953475457
+							57318.0016399375,87731.35370161917 58000.0,87000.0
+							</coordinates>
+					</LinearRing>
+				</innerBoundaryIs>
+			</Polygon>
+		</polygonMember>
+	</MultiPolygon>
+	
+</MultiGeometry>
diff --git a/jtsio/test/data/points.xml b/jtsio/test/data/points.xml
new file mode 100644
index 0000000..9e67590
--- /dev/null
+++ b/jtsio/test/data/points.xml
@@ -0,0 +1,105 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<MultiGeometry>
+	
+	<Point>
+		<coordinates>24000.0,36000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>32000.0,36000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>40000.0,36000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>48000.0,36000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>56000.0,36000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>24000.0,48000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>32000.0,48000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>40000.0,48000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>48000.0,48000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>56000.0,48000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>24000.0,60000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>32000.0,60000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>40000.0,60000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>48000.0,60000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>56000.0,60000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>24000.0,72000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>32000.0,72000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>40000.0,72000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>48000.0,72000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>56000.0,72000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>24000.0,84000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>32000.0,84000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>40000.0,84000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>48000.0,84000.0 </coordinates>
+	</Point>
+	
+	<Point>
+		<coordinates>56000.0,84000.0 </coordinates>
+	</Point>
+	
+</MultiGeometry>
diff --git a/jtsio/test/data/polygons.xml b/jtsio/test/data/polygons.xml
new file mode 100644
index 0000000..21e5c49
--- /dev/null
+++ b/jtsio/test/data/polygons.xml
@@ -0,0 +1,2047 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<MultiGeometry>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,38666.666666666664
+					25567.427339446596,38157.37865166653
+					26536.150710120408,36824.04531833319
+					26536.15071012041,35175.95468166681
+					25567.427339446596,33842.62134833347
+					24000.0,33333.333333333336
+					22432.572660553404,33842.62134833347
+					21463.849289879592,35175.95468166681
+					21463.84928987959,36824.04531833319
+					22432.572660553404,38157.37865166653
+					24000.0,38666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,36000.0
+					25338.261212717716,37486.289650954786
+					24069.798993405002,37998.78165403819 24000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,36000.0
+					25997.25906950915,36104.67191248589
+					25462.707403238343,37363.996720125 24000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,36000.0
+					25486.28965095479,34661.73878728229
+					25998.78165403819,35930.201006595 24000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,36000.0
+					24104.67191248589,34002.74093049085
+					25363.996720124997,34537.29259676166 24000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,36000.0
+					22661.738787282284,34513.710349045214
+					23930.201006594998,34001.21834596181 24000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,36000.0
+					22002.74093049085,35895.32808751411
+					22537.292596761657,34636.003279875 24000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,36000.0
+					22513.710349045214,37338.26121271772
+					22001.21834596181,36069.798993405 24000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,36000.0
+					23895.328087514114,37997.25906950915
+					22636.003279875003,37462.70740323834 24000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,38666.666666666664
+					33567.42733944659,38157.37865166653
+					34536.15071012041,36824.04531833319
+					34536.15071012041,35175.95468166681
+					33567.42733944659,33842.62134833347
+					32000.0,33333.333333333336
+					30432.572660553404,33842.62134833347
+					29463.849289879592,35175.95468166681
+					29463.84928987959,36824.04531833319
+					30432.572660553404,38157.37865166653
+					32000.0,38666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,36000.0
+					33338.26121271772,37486.289650954786
+					32069.798993405002,37998.78165403819 32000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,36000.0
+					33997.25906950915,36104.67191248589
+					33462.70740323834,37363.996720125 32000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,36000.0
+					33486.289650954786,34661.73878728229
+					33998.78165403819,35930.201006595 32000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,36000.0
+					32104.67191248589,34002.74093049085
+					33363.996720125,34537.29259676166 32000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,36000.0
+					30661.738787282284,34513.710349045214
+					31930.201006594998,34001.21834596181 32000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,36000.0
+					30002.74093049085,35895.32808751411
+					30537.292596761657,34636.003279875 32000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,36000.0
+					30513.710349045214,37338.26121271772
+					30001.21834596181,36069.798993405 32000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,36000.0
+					31895.328087514114,37997.25906950915
+					30636.003279875003,37462.70740323834 32000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,38666.666666666664
+					41567.42733944659,38157.37865166653
+					42536.15071012041,36824.04531833319
+					42536.15071012041,35175.95468166681
+					41567.42733944659,33842.62134833347
+					40000.0,33333.333333333336
+					38432.57266055341,33842.62134833347
+					37463.84928987959,35175.95468166681
+					37463.84928987959,36824.04531833319
+					38432.57266055341,38157.37865166653
+					40000.0,38666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,36000.0
+					41338.26121271772,37486.289650954786
+					40069.798993405,37998.78165403819 40000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,36000.0
+					41997.25906950915,36104.67191248589
+					41462.70740323834,37363.996720125 40000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,36000.0
+					41486.289650954786,34661.73878728229
+					41998.78165403819,35930.201006595 40000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,36000.0
+					40104.67191248589,34002.74093049085
+					41363.996720125,34537.29259676166 40000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,36000.0
+					38661.73878728228,34513.710349045214
+					39930.201006595,34001.21834596181 40000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,36000.0
+					38002.74093049085,35895.32808751411
+					38537.29259676166,34636.003279875 40000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,36000.0
+					38513.710349045214,37338.26121271772
+					38001.21834596181,36069.798993405 40000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,36000.0
+					39895.32808751411,37997.25906950915
+					38636.003279875,37462.70740323834 40000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,38666.666666666664
+					49567.42733944659,38157.37865166653
+					50536.15071012041,36824.04531833319
+					50536.15071012041,35175.95468166681
+					49567.42733944659,33842.62134833347
+					48000.0,33333.333333333336
+					46432.57266055341,33842.62134833347
+					45463.84928987959,35175.95468166681
+					45463.84928987959,36824.04531833319
+					46432.57266055341,38157.37865166653
+					48000.0,38666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,36000.0
+					49338.26121271772,37486.289650954786
+					48069.798993405,37998.78165403819 48000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,36000.0
+					49997.25906950915,36104.67191248589
+					49462.70740323834,37363.996720125 48000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,36000.0
+					49486.289650954786,34661.73878728229
+					49998.78165403819,35930.201006595 48000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,36000.0
+					48104.67191248589,34002.74093049085
+					49363.996720125,34537.29259676166 48000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,36000.0
+					46661.73878728228,34513.710349045214
+					47930.201006595,34001.21834596181 48000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,36000.0
+					46002.74093049085,35895.32808751411
+					46537.29259676166,34636.003279875 48000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,36000.0
+					46513.710349045214,37338.26121271772
+					46001.21834596181,36069.798993405 48000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,36000.0
+					47895.32808751411,37997.25906950915
+					46636.003279875,37462.70740323834 48000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,38666.666666666664
+					57567.42733944659,38157.37865166653
+					58536.15071012041,36824.04531833319
+					58536.15071012041,35175.95468166681
+					57567.42733944659,33842.62134833347
+					56000.0,33333.333333333336
+					54432.57266055341,33842.62134833347
+					53463.84928987959,35175.95468166681
+					53463.84928987959,36824.04531833319
+					54432.57266055341,38157.37865166653
+					56000.0,38666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,36000.0
+					57338.26121271772,37486.289650954786
+					56069.798993405,37998.78165403819 56000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,36000.0
+					57997.25906950915,36104.67191248589
+					57462.70740323834,37363.996720125 56000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,36000.0
+					57486.289650954786,34661.73878728229
+					57998.78165403819,35930.201006595 56000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,36000.0
+					56104.67191248589,34002.74093049085
+					57363.996720125,34537.29259676166 56000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,36000.0
+					54661.73878728228,34513.710349045214
+					55930.201006595,34001.21834596181 56000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,36000.0
+					54002.74093049085,35895.32808751411
+					54537.29259676166,34636.003279875 56000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,36000.0
+					54513.710349045214,37338.26121271772
+					54001.21834596181,36069.798993405 56000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,36000.0
+					55895.32808751411,37997.25906950915
+					54636.003279875,37462.70740323834 56000.0,36000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,50666.666666666664
+					25567.427339446596,50157.37865166653
+					26536.150710120408,48824.04531833319
+					26536.15071012041,47175.95468166681
+					25567.427339446596,45842.62134833347
+					24000.0,45333.333333333336
+					22432.572660553404,45842.62134833347
+					21463.849289879592,47175.95468166681
+					21463.84928987959,48824.04531833319
+					22432.572660553404,50157.37865166653
+					24000.0,50666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,48000.0
+					25338.261212717716,49486.289650954786
+					24069.798993405002,49998.78165403819 24000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,48000.0
+					25997.25906950915,48104.67191248589
+					25462.707403238343,49363.996720125 24000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,48000.0
+					25486.28965095479,46661.73878728229
+					25998.78165403819,47930.201006595 24000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,48000.0
+					24104.67191248589,46002.74093049085
+					25363.996720124997,46537.29259676166 24000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,48000.0
+					22661.738787282284,46513.710349045214
+					23930.201006594998,46001.21834596181 24000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,48000.0
+					22002.74093049085,47895.32808751411
+					22537.292596761657,46636.003279875 24000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,48000.0
+					22513.710349045214,49338.26121271772
+					22001.21834596181,48069.798993405 24000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,48000.0
+					23895.328087514114,49997.25906950915
+					22636.003279875003,49462.70740323834 24000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,50666.666666666664
+					33567.42733944659,50157.37865166653
+					34536.15071012041,48824.04531833319
+					34536.15071012041,47175.95468166681
+					33567.42733944659,45842.62134833347
+					32000.0,45333.333333333336
+					30432.572660553404,45842.62134833347
+					29463.849289879592,47175.95468166681
+					29463.84928987959,48824.04531833319
+					30432.572660553404,50157.37865166653
+					32000.0,50666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,48000.0
+					33338.26121271772,49486.289650954786
+					32069.798993405002,49998.78165403819 32000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,48000.0
+					33997.25906950915,48104.67191248589
+					33462.70740323834,49363.996720125 32000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,48000.0
+					33486.289650954786,46661.73878728229
+					33998.78165403819,47930.201006595 32000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,48000.0
+					32104.67191248589,46002.74093049085
+					33363.996720125,46537.29259676166 32000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,48000.0
+					30661.738787282284,46513.710349045214
+					31930.201006594998,46001.21834596181 32000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,48000.0
+					30002.74093049085,47895.32808751411
+					30537.292596761657,46636.003279875 32000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,48000.0
+					30513.710349045214,49338.26121271772
+					30001.21834596181,48069.798993405 32000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,48000.0
+					31895.328087514114,49997.25906950915
+					30636.003279875003,49462.70740323834 32000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,50666.666666666664
+					41567.42733944659,50157.37865166653
+					42536.15071012041,48824.04531833319
+					42536.15071012041,47175.95468166681
+					41567.42733944659,45842.62134833347
+					40000.0,45333.333333333336
+					38432.57266055341,45842.62134833347
+					37463.84928987959,47175.95468166681
+					37463.84928987959,48824.04531833319
+					38432.57266055341,50157.37865166653
+					40000.0,50666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,48000.0
+					41338.26121271772,49486.289650954786
+					40069.798993405,49998.78165403819 40000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,48000.0
+					41997.25906950915,48104.67191248589
+					41462.70740323834,49363.996720125 40000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,48000.0
+					41486.289650954786,46661.73878728229
+					41998.78165403819,47930.201006595 40000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,48000.0
+					40104.67191248589,46002.74093049085
+					41363.996720125,46537.29259676166 40000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,48000.0
+					38661.73878728228,46513.710349045214
+					39930.201006595,46001.21834596181 40000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,48000.0
+					38002.74093049085,47895.32808751411
+					38537.29259676166,46636.003279875 40000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,48000.0
+					38513.710349045214,49338.26121271772
+					38001.21834596181,48069.798993405 40000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,48000.0
+					39895.32808751411,49997.25906950915
+					38636.003279875,49462.70740323834 40000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,50666.666666666664
+					49567.42733944659,50157.37865166653
+					50536.15071012041,48824.04531833319
+					50536.15071012041,47175.95468166681
+					49567.42733944659,45842.62134833347
+					48000.0,45333.333333333336
+					46432.57266055341,45842.62134833347
+					45463.84928987959,47175.95468166681
+					45463.84928987959,48824.04531833319
+					46432.57266055341,50157.37865166653
+					48000.0,50666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,48000.0
+					49338.26121271772,49486.289650954786
+					48069.798993405,49998.78165403819 48000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,48000.0
+					49997.25906950915,48104.67191248589
+					49462.70740323834,49363.996720125 48000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,48000.0
+					49486.289650954786,46661.73878728229
+					49998.78165403819,47930.201006595 48000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,48000.0
+					48104.67191248589,46002.74093049085
+					49363.996720125,46537.29259676166 48000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,48000.0
+					46661.73878728228,46513.710349045214
+					47930.201006595,46001.21834596181 48000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,48000.0
+					46002.74093049085,47895.32808751411
+					46537.29259676166,46636.003279875 48000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,48000.0
+					46513.710349045214,49338.26121271772
+					46001.21834596181,48069.798993405 48000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,48000.0
+					47895.32808751411,49997.25906950915
+					46636.003279875,49462.70740323834 48000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,50666.666666666664
+					57567.42733944659,50157.37865166653
+					58536.15071012041,48824.04531833319
+					58536.15071012041,47175.95468166681
+					57567.42733944659,45842.62134833347
+					56000.0,45333.333333333336
+					54432.57266055341,45842.62134833347
+					53463.84928987959,47175.95468166681
+					53463.84928987959,48824.04531833319
+					54432.57266055341,50157.37865166653
+					56000.0,50666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,48000.0
+					57338.26121271772,49486.289650954786
+					56069.798993405,49998.78165403819 56000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,48000.0
+					57997.25906950915,48104.67191248589
+					57462.70740323834,49363.996720125 56000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,48000.0
+					57486.289650954786,46661.73878728229
+					57998.78165403819,47930.201006595 56000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,48000.0
+					56104.67191248589,46002.74093049085
+					57363.996720125,46537.29259676166 56000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,48000.0
+					54661.73878728228,46513.710349045214
+					55930.201006595,46001.21834596181 56000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,48000.0
+					54002.74093049085,47895.32808751411
+					54537.29259676166,46636.003279875 56000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,48000.0
+					54513.710349045214,49338.26121271772
+					54001.21834596181,48069.798993405 56000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,48000.0
+					55895.32808751411,49997.25906950915
+					54636.003279875,49462.70740323834 56000.0,48000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,62666.666666666664
+					25567.427339446596,62157.37865166653
+					26536.150710120408,60824.04531833319
+					26536.15071012041,59175.95468166681
+					25567.427339446596,57842.62134833347
+					24000.0,57333.333333333336
+					22432.572660553404,57842.62134833347
+					21463.849289879592,59175.95468166681
+					21463.84928987959,60824.04531833319
+					22432.572660553404,62157.37865166653
+					24000.0,62666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,60000.0
+					25338.261212717716,61486.289650954786
+					24069.798993405002,61998.78165403819 24000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,60000.0
+					25997.25906950915,60104.67191248589
+					25462.707403238343,61363.996720125 24000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,60000.0
+					25486.28965095479,58661.73878728229
+					25998.78165403819,59930.201006595 24000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,60000.0
+					24104.67191248589,58002.74093049085
+					25363.996720124997,58537.29259676166 24000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,60000.0
+					22661.738787282284,58513.710349045214
+					23930.201006594998,58001.21834596181 24000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,60000.0
+					22002.74093049085,59895.32808751411
+					22537.292596761657,58636.003279875 24000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,60000.0
+					22513.710349045214,61338.26121271772
+					22001.21834596181,60069.798993405 24000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,60000.0
+					23895.328087514114,61997.25906950915
+					22636.003279875003,61462.70740323834 24000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,62666.666666666664
+					33567.42733944659,62157.37865166653
+					34536.15071012041,60824.04531833319
+					34536.15071012041,59175.95468166681
+					33567.42733944659,57842.62134833347
+					32000.0,57333.333333333336
+					30432.572660553404,57842.62134833347
+					29463.849289879592,59175.95468166681
+					29463.84928987959,60824.04531833319
+					30432.572660553404,62157.37865166653
+					32000.0,62666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,60000.0
+					33338.26121271772,61486.289650954786
+					32069.798993405002,61998.78165403819 32000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,60000.0
+					33997.25906950915,60104.67191248589
+					33462.70740323834,61363.996720125 32000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,60000.0
+					33486.289650954786,58661.73878728229
+					33998.78165403819,59930.201006595 32000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,60000.0
+					32104.67191248589,58002.74093049085
+					33363.996720125,58537.29259676166 32000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,60000.0
+					30661.738787282284,58513.710349045214
+					31930.201006594998,58001.21834596181 32000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,60000.0
+					30002.74093049085,59895.32808751411
+					30537.292596761657,58636.003279875 32000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,60000.0
+					30513.710349045214,61338.26121271772
+					30001.21834596181,60069.798993405 32000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,60000.0
+					31895.328087514114,61997.25906950915
+					30636.003279875003,61462.70740323834 32000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,62666.666666666664
+					41567.42733944659,62157.37865166653
+					42536.15071012041,60824.04531833319
+					42536.15071012041,59175.95468166681
+					41567.42733944659,57842.62134833347
+					40000.0,57333.333333333336
+					38432.57266055341,57842.62134833347
+					37463.84928987959,59175.95468166681
+					37463.84928987959,60824.04531833319
+					38432.57266055341,62157.37865166653
+					40000.0,62666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,60000.0
+					41338.26121271772,61486.289650954786
+					40069.798993405,61998.78165403819 40000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,60000.0
+					41997.25906950915,60104.67191248589
+					41462.70740323834,61363.996720125 40000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,60000.0
+					41486.289650954786,58661.73878728229
+					41998.78165403819,59930.201006595 40000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,60000.0
+					40104.67191248589,58002.74093049085
+					41363.996720125,58537.29259676166 40000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,60000.0
+					38661.73878728228,58513.710349045214
+					39930.201006595,58001.21834596181 40000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,60000.0
+					38002.74093049085,59895.32808751411
+					38537.29259676166,58636.003279875 40000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,60000.0
+					38513.710349045214,61338.26121271772
+					38001.21834596181,60069.798993405 40000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,60000.0
+					39895.32808751411,61997.25906950915
+					38636.003279875,61462.70740323834 40000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,62666.666666666664
+					49567.42733944659,62157.37865166653
+					50536.15071012041,60824.04531833319
+					50536.15071012041,59175.95468166681
+					49567.42733944659,57842.62134833347
+					48000.0,57333.333333333336
+					46432.57266055341,57842.62134833347
+					45463.84928987959,59175.95468166681
+					45463.84928987959,60824.04531833319
+					46432.57266055341,62157.37865166653
+					48000.0,62666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,60000.0
+					49338.26121271772,61486.289650954786
+					48069.798993405,61998.78165403819 48000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,60000.0
+					49997.25906950915,60104.67191248589
+					49462.70740323834,61363.996720125 48000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,60000.0
+					49486.289650954786,58661.73878728229
+					49998.78165403819,59930.201006595 48000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,60000.0
+					48104.67191248589,58002.74093049085
+					49363.996720125,58537.29259676166 48000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,60000.0
+					46661.73878728228,58513.710349045214
+					47930.201006595,58001.21834596181 48000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,60000.0
+					46002.74093049085,59895.32808751411
+					46537.29259676166,58636.003279875 48000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,60000.0
+					46513.710349045214,61338.26121271772
+					46001.21834596181,60069.798993405 48000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,60000.0
+					47895.32808751411,61997.25906950915
+					46636.003279875,61462.70740323834 48000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,62666.666666666664
+					57567.42733944659,62157.37865166653
+					58536.15071012041,60824.04531833319
+					58536.15071012041,59175.95468166681
+					57567.42733944659,57842.62134833347
+					56000.0,57333.333333333336
+					54432.57266055341,57842.62134833347
+					53463.84928987959,59175.95468166681
+					53463.84928987959,60824.04531833319
+					54432.57266055341,62157.37865166653
+					56000.0,62666.666666666664 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,60000.0
+					57338.26121271772,61486.289650954786
+					56069.798993405,61998.78165403819 56000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,60000.0
+					57997.25906950915,60104.67191248589
+					57462.70740323834,61363.996720125 56000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,60000.0
+					57486.289650954786,58661.73878728229
+					57998.78165403819,59930.201006595 56000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,60000.0
+					56104.67191248589,58002.74093049085
+					57363.996720125,58537.29259676166 56000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,60000.0
+					54661.73878728228,58513.710349045214
+					55930.201006595,58001.21834596181 56000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,60000.0
+					54002.74093049085,59895.32808751411
+					54537.29259676166,58636.003279875 56000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,60000.0
+					54513.710349045214,61338.26121271772
+					54001.21834596181,60069.798993405 56000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,60000.0
+					55895.32808751411,61997.25906950915
+					54636.003279875,61462.70740323834 56000.0,60000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,74666.66666666667
+					25567.427339446596,74157.37865166653
+					26536.150710120408,72824.0453183332
+					26536.15071012041,71175.9546816668
+					25567.427339446596,69842.62134833347
+					24000.0,69333.33333333333
+					22432.572660553404,69842.62134833347
+					21463.849289879592,71175.9546816668
+					21463.84928987959,72824.0453183332
+					22432.572660553404,74157.37865166653
+					24000.0,74666.66666666667 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,72000.0
+					25338.261212717716,73486.28965095479
+					24069.798993405002,73998.78165403819 24000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,72000.0
+					25997.25906950915,72104.6719124859
+					25462.707403238343,73363.996720125 24000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,72000.0
+					25486.28965095479,70661.73878728229
+					25998.78165403819,71930.201006595 24000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,72000.0
+					24104.67191248589,70002.74093049085
+					25363.996720124997,70537.29259676166 24000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,72000.0
+					22661.738787282284,70513.71034904521
+					23930.201006594998,70001.21834596181 24000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,72000.0
+					22002.74093049085,71895.3280875141
+					22537.292596761657,70636.003279875 24000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,72000.0
+					22513.710349045214,73338.26121271771
+					22001.21834596181,72069.798993405 24000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,72000.0
+					23895.328087514114,73997.25906950915
+					22636.003279875003,73462.70740323834 24000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,74666.66666666667
+					33567.42733944659,74157.37865166653
+					34536.15071012041,72824.0453183332
+					34536.15071012041,71175.9546816668
+					33567.42733944659,69842.62134833347 32000.0,69333.33333333333
+					30432.572660553404,69842.62134833347
+					29463.849289879592,71175.9546816668
+					29463.84928987959,72824.0453183332
+					30432.572660553404,74157.37865166653
+					32000.0,74666.66666666667 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,72000.0
+					33338.26121271772,73486.28965095479
+					32069.798993405002,73998.78165403819 32000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,72000.0
+					33997.25906950915,72104.6719124859
+					33462.70740323834,73363.996720125 32000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,72000.0
+					33486.289650954786,70661.73878728229
+					33998.78165403819,71930.201006595 32000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,72000.0
+					32104.67191248589,70002.74093049085
+					33363.996720125,70537.29259676166 32000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,72000.0
+					30661.738787282284,70513.71034904521
+					31930.201006594998,70001.21834596181 32000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,72000.0
+					30002.74093049085,71895.3280875141
+					30537.292596761657,70636.003279875 32000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,72000.0
+					30513.710349045214,73338.26121271771
+					30001.21834596181,72069.798993405 32000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,72000.0
+					31895.328087514114,73997.25906950915
+					30636.003279875003,73462.70740323834 32000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,74666.66666666667
+					41567.42733944659,74157.37865166653
+					42536.15071012041,72824.0453183332
+					42536.15071012041,71175.9546816668
+					41567.42733944659,69842.62134833347 40000.0,69333.33333333333
+					38432.57266055341,69842.62134833347
+					37463.84928987959,71175.9546816668
+					37463.84928987959,72824.0453183332
+					38432.57266055341,74157.37865166653 40000.0,74666.66666666667
+					</coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,72000.0
+					41338.26121271772,73486.28965095479
+					40069.798993405,73998.78165403819 40000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,72000.0
+					41997.25906950915,72104.6719124859
+					41462.70740323834,73363.996720125 40000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,72000.0
+					41486.289650954786,70661.73878728229
+					41998.78165403819,71930.201006595 40000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,72000.0
+					40104.67191248589,70002.74093049085
+					41363.996720125,70537.29259676166 40000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,72000.0
+					38661.73878728228,70513.71034904521
+					39930.201006595,70001.21834596181 40000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,72000.0
+					38002.74093049085,71895.3280875141
+					38537.29259676166,70636.003279875 40000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,72000.0
+					38513.710349045214,73338.26121271771
+					38001.21834596181,72069.798993405 40000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,72000.0
+					39895.32808751411,73997.25906950915
+					38636.003279875,73462.70740323834 40000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,74666.66666666667
+					49567.42733944659,74157.37865166653
+					50536.15071012041,72824.0453183332
+					50536.15071012041,71175.9546816668
+					49567.42733944659,69842.62134833347 48000.0,69333.33333333333
+					46432.57266055341,69842.62134833347
+					45463.84928987959,71175.9546816668
+					45463.84928987959,72824.0453183332
+					46432.57266055341,74157.37865166653 48000.0,74666.66666666667
+					</coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,72000.0
+					49338.26121271772,73486.28965095479
+					48069.798993405,73998.78165403819 48000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,72000.0
+					49997.25906950915,72104.6719124859
+					49462.70740323834,73363.996720125 48000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,72000.0
+					49486.289650954786,70661.73878728229
+					49998.78165403819,71930.201006595 48000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,72000.0
+					48104.67191248589,70002.74093049085
+					49363.996720125,70537.29259676166 48000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,72000.0
+					46661.73878728228,70513.71034904521
+					47930.201006595,70001.21834596181 48000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,72000.0
+					46002.74093049085,71895.3280875141
+					46537.29259676166,70636.003279875 48000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,72000.0
+					46513.710349045214,73338.26121271771
+					46001.21834596181,72069.798993405 48000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,72000.0
+					47895.32808751411,73997.25906950915
+					46636.003279875,73462.70740323834 48000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,74666.66666666667
+					57567.42733944659,74157.37865166653
+					58536.15071012041,72824.0453183332
+					58536.15071012041,71175.9546816668
+					57567.42733944659,69842.62134833347 56000.0,69333.33333333333
+					54432.57266055341,69842.62134833347
+					53463.84928987959,71175.9546816668
+					53463.84928987959,72824.0453183332
+					54432.57266055341,74157.37865166653 56000.0,74666.66666666667
+					</coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,72000.0
+					57338.26121271772,73486.28965095479
+					56069.798993405,73998.78165403819 56000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,72000.0
+					57997.25906950915,72104.6719124859
+					57462.70740323834,73363.996720125 56000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,72000.0
+					57486.289650954786,70661.73878728229
+					57998.78165403819,71930.201006595 56000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,72000.0
+					56104.67191248589,70002.74093049085
+					57363.996720125,70537.29259676166 56000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,72000.0
+					54661.73878728228,70513.71034904521
+					55930.201006595,70001.21834596181 56000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,72000.0
+					54002.74093049085,71895.3280875141
+					54537.29259676166,70636.003279875 56000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,72000.0
+					54513.710349045214,73338.26121271771
+					54001.21834596181,72069.798993405 56000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,72000.0
+					55895.32808751411,73997.25906950915
+					54636.003279875,73462.70740323834 56000.0,72000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,86666.66666666667
+					25567.427339446596,86157.37865166653
+					26536.150710120408,84824.0453183332
+					26536.15071012041,83175.9546816668
+					25567.427339446596,81842.62134833347
+					24000.0,81333.33333333333
+					22432.572660553404,81842.62134833347
+					21463.849289879592,83175.9546816668
+					21463.84928987959,84824.0453183332
+					22432.572660553404,86157.37865166653
+					24000.0,86666.66666666667 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,84000.0
+					25338.261212717716,85486.28965095479
+					24069.798993405002,85998.78165403819 24000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,84000.0
+					25997.25906950915,84104.6719124859
+					25462.707403238343,85363.996720125 24000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,84000.0
+					25486.28965095479,82661.73878728229
+					25998.78165403819,83930.201006595 24000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,84000.0
+					24104.67191248589,82002.74093049085
+					25363.996720124997,82537.29259676166 24000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,84000.0
+					22661.738787282284,82513.71034904521
+					23930.201006594998,82001.21834596181 24000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,84000.0
+					22002.74093049085,83895.3280875141
+					22537.292596761657,82636.003279875 24000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,84000.0
+					22513.710349045214,85338.26121271771
+					22001.21834596181,84069.798993405 24000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>24000.0,84000.0
+					23895.328087514114,85997.25906950915
+					22636.003279875003,85462.70740323834 24000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,86666.66666666667
+					33567.42733944659,86157.37865166653
+					34536.15071012041,84824.0453183332
+					34536.15071012041,83175.9546816668
+					33567.42733944659,81842.62134833347 32000.0,81333.33333333333
+					30432.572660553404,81842.62134833347
+					29463.849289879592,83175.9546816668
+					29463.84928987959,84824.0453183332
+					30432.572660553404,86157.37865166653
+					32000.0,86666.66666666667 </coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,84000.0
+					33338.26121271772,85486.28965095479
+					32069.798993405002,85998.78165403819 32000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,84000.0
+					33997.25906950915,84104.6719124859
+					33462.70740323834,85363.996720125 32000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,84000.0
+					33486.289650954786,82661.73878728229
+					33998.78165403819,83930.201006595 32000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,84000.0
+					32104.67191248589,82002.74093049085
+					33363.996720125,82537.29259676166 32000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,84000.0
+					30661.738787282284,82513.71034904521
+					31930.201006594998,82001.21834596181 32000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,84000.0
+					30002.74093049085,83895.3280875141
+					30537.292596761657,82636.003279875 32000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,84000.0
+					30513.710349045214,85338.26121271771
+					30001.21834596181,84069.798993405 32000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>32000.0,84000.0
+					31895.328087514114,85997.25906950915
+					30636.003279875003,85462.70740323834 32000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,86666.66666666667
+					41567.42733944659,86157.37865166653
+					42536.15071012041,84824.0453183332
+					42536.15071012041,83175.9546816668
+					41567.42733944659,81842.62134833347 40000.0,81333.33333333333
+					38432.57266055341,81842.62134833347
+					37463.84928987959,83175.9546816668
+					37463.84928987959,84824.0453183332
+					38432.57266055341,86157.37865166653 40000.0,86666.66666666667
+					</coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,84000.0
+					41338.26121271772,85486.28965095479
+					40069.798993405,85998.78165403819 40000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,84000.0
+					41997.25906950915,84104.6719124859
+					41462.70740323834,85363.996720125 40000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,84000.0
+					41486.289650954786,82661.73878728229
+					41998.78165403819,83930.201006595 40000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,84000.0
+					40104.67191248589,82002.74093049085
+					41363.996720125,82537.29259676166 40000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,84000.0
+					38661.73878728228,82513.71034904521
+					39930.201006595,82001.21834596181 40000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,84000.0
+					38002.74093049085,83895.3280875141
+					38537.29259676166,82636.003279875 40000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,84000.0
+					38513.710349045214,85338.26121271771
+					38001.21834596181,84069.798993405 40000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>40000.0,84000.0
+					39895.32808751411,85997.25906950915
+					38636.003279875,85462.70740323834 40000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,86666.66666666667
+					49567.42733944659,86157.37865166653
+					50536.15071012041,84824.0453183332
+					50536.15071012041,83175.9546816668
+					49567.42733944659,81842.62134833347 48000.0,81333.33333333333
+					46432.57266055341,81842.62134833347
+					45463.84928987959,83175.9546816668
+					45463.84928987959,84824.0453183332
+					46432.57266055341,86157.37865166653 48000.0,86666.66666666667
+					</coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,84000.0
+					49338.26121271772,85486.28965095479
+					48069.798993405,85998.78165403819 48000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,84000.0
+					49997.25906950915,84104.6719124859
+					49462.70740323834,85363.996720125 48000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,84000.0
+					49486.289650954786,82661.73878728229
+					49998.78165403819,83930.201006595 48000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,84000.0
+					48104.67191248589,82002.74093049085
+					49363.996720125,82537.29259676166 48000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,84000.0
+					46661.73878728228,82513.71034904521
+					47930.201006595,82001.21834596181 48000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,84000.0
+					46002.74093049085,83895.3280875141
+					46537.29259676166,82636.003279875 48000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,84000.0
+					46513.710349045214,85338.26121271771
+					46001.21834596181,84069.798993405 48000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>48000.0,84000.0
+					47895.32808751411,85997.25906950915
+					46636.003279875,85462.70740323834 48000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+	<Polygon>
+		<outerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,86666.66666666667
+					57567.42733944659,86157.37865166653
+					58536.15071012041,84824.0453183332
+					58536.15071012041,83175.9546816668
+					57567.42733944659,81842.62134833347 56000.0,81333.33333333333
+					54432.57266055341,81842.62134833347
+					53463.84928987959,83175.9546816668
+					53463.84928987959,84824.0453183332
+					54432.57266055341,86157.37865166653 56000.0,86666.66666666667
+					</coordinates>
+			</LinearRing>
+		</outerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,84000.0
+					57338.26121271772,85486.28965095479
+					56069.798993405,85998.78165403819 56000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,84000.0
+					57997.25906950915,84104.6719124859
+					57462.70740323834,85363.996720125 56000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,84000.0
+					57486.289650954786,82661.73878728229
+					57998.78165403819,83930.201006595 56000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,84000.0
+					56104.67191248589,82002.74093049085
+					57363.996720125,82537.29259676166 56000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,84000.0
+					54661.73878728228,82513.71034904521
+					55930.201006595,82001.21834596181 56000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,84000.0
+					54002.74093049085,83895.3280875141
+					54537.29259676166,82636.003279875 56000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,84000.0
+					54513.710349045214,85338.26121271771
+					54001.21834596181,84069.798993405 56000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+		<innerBoundaryIs>
+			<LinearRing>
+				<coordinates>56000.0,84000.0
+					55895.32808751411,85997.25906950915
+					54636.003279875,85462.70740323834 56000.0,84000.0
+					</coordinates>
+			</LinearRing>
+		</innerBoundaryIs>
+	</Polygon>
+	
+</MultiGeometry>
\ No newline at end of file
diff --git a/jtsio/test/readme b/jtsio/test/readme
new file mode 100644
index 0000000..a5aeeba
--- /dev/null
+++ b/jtsio/test/readme
@@ -0,0 +1 @@
+Set of tests and testing utilities which require the same jar set as the src directory, with the exception of the junit jar.
\ No newline at end of file
diff --git a/src/.classpath b/src/.classpath
new file mode 100644
index 0000000..b67e920
--- /dev/null
+++ b/src/.classpath
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="com/vividsolutions/jtsplugin/|srcex/|srcex/" path="" kind="src"/>
+	<classpathentry path="org.eclipse.jdt.launching.JRE_CONTAINER" kind="con"/>
+	<classpathentry path="C:/data/martin/proj/jts/lib/xerces.jar" kind="lib"/>
+	<classpathentry path="C:/data/martin/proj/jts/lib/Acme.jar" kind="lib"/>
+	<classpathentry path="C:/data/martin/proj/jts/lib/jdom.jar" kind="lib"/>
+	<classpathentry path="C:/data/martin/proj/jts/lib/junit.jar" kind="lib"/>
+	<classpathentry path="srcex" kind="src"/>
+	<classpathentry path="C:/data/martin/proj/jts/libex/jump-core-1.2.jar" kind="lib"/>
+	<classpathentry path="classes" kind="output"/>
+</classpath>
diff --git a/src/.project b/src/.project
new file mode 100644
index 0000000..dac9af6
--- /dev/null
+++ b/src/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>JTS</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+	<linkedResources>
+		<link>
+			<name>srcex</name>
+			<type>2</type>
+			<location>C:/data/martin/proj/jts/srcex</location>
+		</link>
+		<link>
+			<name>classes</name>
+			<type>2</type>
+			<location>C:/data/martin/proj/jts/classes</location>
+		</link>
+	</linkedResources>
+</projectDescription>
diff --git a/src/Doxyfile b/src/Doxyfile
deleted file mode 100644
index 56fb112..0000000
--- a/src/Doxyfile
+++ /dev/null
@@ -1,200 +0,0 @@
-# Doxyfile 1.3-rc1
-
-#---------------------------------------------------------------------------
-# General configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME           = JTS
-PROJECT_NUMBER         = 
-OUTPUT_DIRECTORY       = c:\public\doxygen\jts
-OUTPUT_LANGUAGE        = English
-EXTRACT_ALL            = YES
-EXTRACT_PRIVATE        = YES
-EXTRACT_STATIC         = YES
-EXTRACT_LOCAL_CLASSES  = YES
-HIDE_UNDOC_MEMBERS     = NO
-HIDE_UNDOC_CLASSES     = NO
-HIDE_FRIEND_COMPOUNDS  = NO
-HIDE_IN_BODY_DOCS      = NO
-BRIEF_MEMBER_DESC      = YES
-REPEAT_BRIEF           = YES
-ALWAYS_DETAILED_SEC    = NO
-INLINE_INHERITED_MEMB  = NO
-FULL_PATH_NAMES        = YES
-STRIP_FROM_PATH        = 
-INTERNAL_DOCS          = NO
-CASE_SENSE_NAMES       = YES
-SHORT_NAMES            = NO
-HIDE_SCOPE_NAMES       = NO
-VERBATIM_HEADERS       = YES
-SHOW_INCLUDE_FILES     = YES
-JAVADOC_AUTOBRIEF      = NO
-MULTILINE_CPP_IS_BRIEF = NO
-DETAILS_AT_TOP         = NO
-INHERIT_DOCS           = YES
-INLINE_INFO            = YES
-SORT_MEMBER_DOCS       = YES
-DISTRIBUTE_GROUP_DOC   = NO
-TAB_SIZE               = 8
-GENERATE_TODOLIST      = YES
-GENERATE_TESTLIST      = YES
-GENERATE_BUGLIST       = YES
-GENERATE_DEPRECATEDLIST= YES
-ALIASES                = 
-ENABLED_SECTIONS       = 
-MAX_INITIALIZER_LINES  = 30
-OPTIMIZE_OUTPUT_FOR_C  = NO
-OPTIMIZE_OUTPUT_JAVA   = YES
-SHOW_USED_FILES        = YES
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-QUIET                  = NO
-WARNINGS               = YES
-WARN_IF_UNDOCUMENTED   = YES
-WARN_FORMAT            = "$file:$line: $text"
-WARN_LOGFILE           = 
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT                  = U:/jaquino/CVS/jts/src/
-FILE_PATTERNS          = 
-RECURSIVE              = YES
-EXCLUDE                = 
-EXCLUDE_SYMLINKS       = NO
-EXCLUDE_PATTERNS       = 
-EXAMPLE_PATH           = 
-EXAMPLE_PATTERNS       = 
-EXAMPLE_RECURSIVE      = NO
-IMAGE_PATH             = 
-INPUT_FILTER           = 
-FILTER_SOURCE_FILES    = NO
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER         = YES
-INLINE_SOURCES         = YES
-STRIP_CODE_COMMENTS    = YES
-REFERENCED_BY_RELATION = YES
-REFERENCES_RELATION    = YES
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX     = YES
-COLS_IN_ALPHA_INDEX    = 5
-IGNORE_PREFIX          = 
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-GENERATE_HTML          = YES
-HTML_OUTPUT            = html
-HTML_FILE_EXTENSION    = .html
-HTML_HEADER            = 
-HTML_FOOTER            = 
-HTML_STYLESHEET        = 
-HTML_ALIGN_MEMBERS     = YES
-GENERATE_HTMLHELP      = NO
-CHM_FILE               = 
-HHC_LOCATION           = 
-GENERATE_CHI           = NO
-BINARY_TOC             = NO
-TOC_EXPAND             = NO
-DISABLE_INDEX          = NO
-ENUM_VALUES_PER_LINE   = 4
-GENERATE_TREEVIEW      = NO
-TREEVIEW_WIDTH         = 250
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-GENERATE_LATEX         = NO
-LATEX_OUTPUT           = latex
-LATEX_CMD_NAME         = latex
-MAKEINDEX_CMD_NAME     = makeindex
-COMPACT_LATEX          = NO
-PAPER_TYPE             = a4wide
-EXTRA_PACKAGES         = 
-LATEX_HEADER           = 
-PDF_HYPERLINKS         = NO
-USE_PDFLATEX           = NO
-LATEX_BATCHMODE        = NO
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-GENERATE_RTF           = NO
-RTF_OUTPUT             = rtf
-COMPACT_RTF            = NO
-RTF_HYPERLINKS         = NO
-RTF_STYLESHEET_FILE    = 
-RTF_EXTENSIONS_FILE    = 
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-GENERATE_MAN           = NO
-MAN_OUTPUT             = man
-MAN_EXTENSION          = .3
-MAN_LINKS              = NO
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-GENERATE_XML           = NO
-XML_SCHEMA             = 
-XML_DTD                = 
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-GENERATE_AUTOGEN_DEF   = NO
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-GENERATE_PERLMOD       = NO
-PERLMOD_LATEX          = NO
-PERLMOD_PRETTY         = YES
-PERLMOD_MAKEVAR_PREFIX = 
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
-#---------------------------------------------------------------------------
-ENABLE_PREPROCESSING   = YES
-MACRO_EXPANSION        = NO
-EXPAND_ONLY_PREDEF     = NO
-SEARCH_INCLUDES        = YES
-INCLUDE_PATH           = 
-INCLUDE_FILE_PATTERNS  = 
-PREDEFINED             = 
-EXPAND_AS_DEFINED      = 
-SKIP_FUNCTION_MACROS   = YES
-#---------------------------------------------------------------------------
-# Configuration::addtions related to external references   
-#---------------------------------------------------------------------------
-TAGFILES               = 
-GENERATE_TAGFILE       = 
-ALLEXTERNALS           = NO
-EXTERNAL_GROUPS        = YES
-PERL_PATH              = /usr/bin/perl
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
-#---------------------------------------------------------------------------
-CLASS_DIAGRAMS         = YES
-HIDE_UNDOC_RELATIONS   = YES
-HAVE_DOT               = YES
-CLASS_GRAPH            = YES
-COLLABORATION_GRAPH    = YES
-TEMPLATE_RELATIONS     = YES
-INCLUDE_GRAPH          = YES
-INCLUDED_BY_GRAPH      = YES
-GRAPHICAL_HIERARCHY    = YES
-DOT_IMAGE_FORMAT       = png
-DOT_PATH               = h:/utilities
-DOTFILE_DIRS           = 
-MAX_DOT_GRAPH_WIDTH    = 1024
-MAX_DOT_GRAPH_HEIGHT   = 1024
-GENERATE_LEGEND        = YES
-DOT_CLEANUP            = YES
-#---------------------------------------------------------------------------
-# Configuration::addtions related to the search engine   
-#---------------------------------------------------------------------------
-SEARCHENGINE           = NO
-CGI_NAME               = search.cgi
-CGI_URL                = 
-DOC_URL                = 
-DOC_ABSPATH            = 
-BIN_ABSPATH            = /usr/local/bin/
-EXT_DOC_PATHS          = 
diff --git a/src/com/vividsolutions/jts/JTSVersion.java b/src/com/vividsolutions/jts/JTSVersion.java
index 62e0235..647b239 100644
--- a/src/com/vividsolutions/jts/JTSVersion.java
+++ b/src/com/vividsolutions/jts/JTSVersion.java
@@ -24,7 +24,7 @@ public class JTSVersion {
   /**
    * The minor version number.
    */
-  public static final int MINOR = 7;
+  public static final int MINOR = 11;
 
   /**
    * The patch version number.
@@ -34,7 +34,7 @@ public class JTSVersion {
   /**
    * An optional string providing further release info (such as "alpha 1");
    */
-  private static final String releaseInfo = "";
+  private static final String releaseInfo = "alpha";
 
   /**
    * Prints the current JTS version to stdout.
diff --git a/src/com/vividsolutions/jts/algorithm/Angle.java b/src/com/vividsolutions/jts/algorithm/Angle.java
new file mode 100644
index 0000000..fd4d9f8
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/Angle.java
@@ -0,0 +1,307 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.algorithm;
+
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.algorithm.CGAlgorithms;
+
+/**
+ * Utility functions for working with angles.
+ * Unless otherwise noted, methods in this class express angles in radians.
+ */
+public class Angle
+{
+  public static final double PI_TIMES_2 = 2.0 * Math.PI;
+  public static final double PI_OVER_2 = Math.PI / 2.0;
+  public static final double PI_OVER_4 = Math.PI / 4.0;
+
+  /** Constant representing counterclockwise orientation */
+  public static final int COUNTERCLOCKWISE = CGAlgorithms.COUNTERCLOCKWISE;
+
+  /** Constant representing clockwise orientation */
+  public static final int CLOCKWISE = CGAlgorithms.CLOCKWISE;
+
+  /** Constant representing no orientation */
+  public static final int NONE = CGAlgorithms.COLLINEAR;
+
+  /**
+   * Converts from radians to degrees.
+   * @param radians an angle in radians
+   * @return the angle in degrees
+   */
+  public static double toDegrees(double radians) {
+      return (radians * 180) / (Math.PI);
+  }
+
+  /**
+   * Converts from degrees to radians.
+   *
+   * @param angleDegrees an angle in degrees
+   * @return the angle in radians
+   */
+  public static double toRadians(double angleDegrees) {
+      return (angleDegrees * Math.PI) / 180.0;
+  }
+
+
+  /**
+   * Returns the angle of the vector from p0 to p1,
+   * relative to the positive X-axis.
+   * The angle is normalized to be in the range [ -Pi, Pi ].
+   *
+   * @return the normalized angle (in radians) that p0-p1 makes with the positive x-axis.
+   */
+  public static double angle(Coordinate p0, Coordinate p1) {
+      double dx = p1.x - p0.x;
+      double dy = p1.y - p0.y;
+      return Math.atan2(dy, dx);
+  }
+
+  /**
+   * Returns the angle that the vector from (0,0) to p,
+   * relative to the positive X-axis.
+   * The angle is normalized to be in the range ( -Pi, Pi ].
+   *
+   * @return the normalized angle (in radians) that p makes with the positive x-axis.
+   */
+  public static double angle(Coordinate p) {
+      return Math.atan2(p.y, p.x);
+  }
+
+
+  /**
+   * Tests whether the angle between p0-p1-p2 is acute.
+   * An angle is acute if it is less than 90 degrees.
+   * <p>
+   * Note: this implementation is not precise (determistic) for angles very close to 90 degrees.
+   *
+   * @param p0 an endpoint of the angle
+   * @param p1 the base of the angle
+   * @param p2 the other endpoint of the angle
+   */
+  public static boolean isAcute(Coordinate p0, Coordinate p1, Coordinate p2)
+  {
+    // relies on fact that A dot B is positive iff A ang B is acute
+    double dx0 = p0.x - p1.x;
+    double dy0 = p0.y - p1.y;
+    double dx1 = p2.x - p1.x;
+    double dy1 = p2.y - p1.y;
+    double dotprod = dx0 * dx1 + dy0 * dy1;
+    return dotprod > 0;
+  }
+
+  /**
+   * Tests whether the angle between p0-p1-p2 is obtuse.
+   * An angle is obtuse if it is greater than 90 degrees.
+   * <p>
+   * Note: this implementation is not precise (determistic) for angles very close to 90 degrees.
+   *
+   * @param p0 an endpoint of the angle
+   * @param p1 the base of the angle
+   * @param p2 the other endpoint of the angle
+   */
+  public static boolean isObtuse(Coordinate p0, Coordinate p1, Coordinate p2)
+  {
+    // relies on fact that A dot B is negative iff A ang B is obtuse
+    double dx0 = p0.x - p1.x;
+    double dy0 = p0.y - p1.y;
+    double dx1 = p2.x - p1.x;
+    double dy1 = p2.y - p1.y;
+    double dotprod = dx0 * dx1 + dy0 * dy1;
+    return dotprod < 0;
+  }
+
+  /**
+   * Returns the unoriented smallest angle between two vectors.
+   * The computed angle will be in the range [0, Pi).
+   *
+   * @param tip1 the tip of one vector
+   * @param tail the tail of each vector
+   * @param tip2 the tip of the other vector
+   * @return the angle between tail-tip1 and tail-tip2
+   */
+  public static double angleBetween(Coordinate tip1, Coordinate tail,
+			Coordinate tip2) {
+		double a1 = angle(tail, tip1);
+		double a2 = angle(tail, tip2);
+
+		return diff(a1, a2);
+  }
+
+  /**
+   * Returns the oriented smallest angle between two vectors.
+   * The computed angle will be in the range (-Pi, Pi].
+   * A positive result corresponds to a counterclockwise rotation
+   * from v1 to v2;
+   * a negative result corresponds to a clockwise rotation.
+   *
+   * @param tip1 the tip of v1
+   * @param tail the tail of each vector
+   * @param tip2 the tip of v2
+   * @return the angle between v1 and v2, relative to v1
+   */
+  public static double angleBetweenOriented(Coordinate tip1, Coordinate tail,
+			Coordinate tip2) 
+  {
+		double a1 = angle(tail, tip1);
+		double a2 = angle(tail, tip2);
+		double angDel = a2 - a1;
+		
+		// normalize, maintaining orientation
+		if (angDel <= -Math.PI)
+			return angDel + PI_TIMES_2;
+		if (angDel > Math.PI)
+			return angDel - PI_TIMES_2;
+		return angDel;
+  }
+
+  /**
+	 * Computes the interior angle between two segments of a ring. The ring is
+	 * assumed to be oriented in a clockwise direction. The computed angle will be
+	 * in the range [0, 2Pi]
+	 * 
+	 * @param p0
+	 *          a point of the ring
+	 * @param p1
+	 *          the next point of the ring
+	 * @param p2
+	 *          the next point of the ring
+	 * @return the interior angle based at <code>p1</code>
+	 */
+  public static double interiorAngle(Coordinate p0, Coordinate p1, Coordinate p2)
+  {
+    double anglePrev = Angle.angle(p1, p0);
+    double angleNext = Angle.angle(p1, p2);
+    return Math.abs(angleNext - anglePrev);
+  }
+
+  /**
+   * Returns whether an angle must turn clockwise or counterclockwise
+   * to overlap another angle.
+   *
+   * @param ang1 an angle (in radians)
+   * @param ang2 an angle (in radians)
+   * @return whether a1 must turn CLOCKWISE, COUNTERCLOCKWISE or NONE to
+   * overlap a2.
+   */
+  public static int getTurn(double ang1, double ang2) {
+      double crossproduct = Math.sin(ang2 - ang1);
+
+      if (crossproduct > 0) {
+          return COUNTERCLOCKWISE;
+      }
+      if (crossproduct < 0) {
+          return CLOCKWISE;
+      }
+      return NONE;
+  }
+
+  /**
+   * Computes the normalized value of an angle, which is the
+   * equivalent angle in the range ( -Pi, Pi ].
+   *
+   * @param angle the angle to normalize
+   * @return an equivalent angle in the range (-Pi, Pi]
+   */
+  public static double normalize(double angle)
+  {
+    while (angle > Math.PI)
+      angle -= PI_TIMES_2;
+    while (angle <= -Math.PI)
+      angle += PI_TIMES_2;
+    return angle;
+  }
+
+  /**
+   * Computes the normalized positive value of an angle, which is the
+   * equivalent angle in the range [ 0, 2*Pi ).
+   * E.g.:
+   * <ul>
+   * <li>normalizePositive(0.0) = 0.0
+   * <li>normalizePositive(-PI) = PI
+   * <li>normalizePositive(-2PI) = 0.0
+   * <li>normalizePositive(-3PI) = PI
+   * <li>normalizePositive(-4PI) = 0
+   * <li>normalizePositive(PI) = PI
+   * <li>normalizePositive(2PI) = 0.0
+   * <li>normalizePositive(3PI) = PI
+   * <li>normalizePositive(4PI) = 0.0
+   * </ul>
+   *
+   * @param angle the angle to normalize, in radians
+   * @return an equivalent positive angle
+   */
+  public static double normalizePositive(double angle)
+  {
+  	if (angle < 0.0) {
+  		while (angle < 0.0)
+  			angle += PI_TIMES_2;
+  		// in case round-off error bumps the value over 
+  		if (angle >= PI_TIMES_2)
+  			angle = 0.0;
+  	}
+  	else {
+  		while (angle >= PI_TIMES_2)
+  			angle -= PI_TIMES_2;
+  		// in case round-off error bumps the value under 
+  		if (angle < 0.0)
+  			angle = 0.0;
+  	}
+    return angle;
+  }
+
+  /**
+   * Computes the unoriented smallest difference between two angles.
+   * The angles are assumed to be normalized to the range [-Pi, Pi].
+   * The result will be in the range [0, Pi].
+   *
+   * @param ang1 the angle of one vector (in [-Pi, Pi] )
+   * @param ang2 the angle of the other vector (in range [-Pi, Pi] )
+   * @return the angle (in radians) between the two vectors (in range [0, Pi] )
+   */
+  public static double diff(double ang1, double ang2) {
+    double delAngle;
+
+    if (ang1 < ang2) {
+      delAngle = ang2 - ang1;
+    } else {
+      delAngle = ang1 - ang2;
+    }
+
+    if (delAngle > Math.PI) {
+      delAngle = (2 * Math.PI) - delAngle;
+    }
+
+    return delAngle;
+  }
+}
diff --git a/src/com/vividsolutions/jts/algorithm/BoundaryNodeRule.java b/src/com/vividsolutions/jts/algorithm/BoundaryNodeRule.java
new file mode 100644
index 0000000..8bfb950
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/BoundaryNodeRule.java
@@ -0,0 +1,191 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.algorithm;
+
+/**
+ * An interface for rules which determine whether node points
+ * which are in boundaries of {@link Lineal} geometry components
+ * are in the boundary of the parent geometry collection.
+ * The SFS specifies a single kind of boundary node rule,
+ * the {@link Mod2BoundaryNodeRule} rule.
+ * However, other kinds of Boundary Node Rules are appropriate
+ * in specific situations (for instance, linear network topology
+ * usually follows the {@link EndPointBoundaryNodeRule}.)
+ * Some JTS operations allow the BoundaryNodeRule to be specified,
+ * and respect this rule when computing the results of the operation.
+ *
+ * @author Martin Davis
+ * @version 1.7
+ *
+ * @see RelateOp
+ * @see IsSimpleOp
+ * @see PointLocator
+ */
+public interface BoundaryNodeRule
+{
+
+	/**
+	 * Tests whether a point that lies in <tt>boundaryCount</tt>
+	 * geometry component boundaries is considered to form part of the boundary
+	 * of the parent geometry.
+	 * 
+	 * @param boundaryCount the number of component boundaries that this point occurs in
+	 * @return true if points in this number of boundaries lie in the parent boundary
+	 */
+  boolean isInBoundary(int boundaryCount);
+
+  /**
+   * The Mod-2 Boundary Node Rule (which is the rule specified in the OGC SFS).
+   * @see Mod2BoundaryNodeRule
+   */
+  public static final BoundaryNodeRule MOD2_BOUNDARY_RULE = new Mod2BoundaryNodeRule();
+
+  /**
+   * The Endpoint Boundary Node Rule.
+   * @see EndPointBoundaryNodeRule
+   */
+  public static final BoundaryNodeRule ENDPOINT_BOUNDARY_RULE = new EndPointBoundaryNodeRule();
+
+  /**
+   * The MultiValent Endpoint Boundary Node Rule.
+   * @see MultiValentEndPointBoundaryNodeRule
+   */
+  public static final BoundaryNodeRule MULTIVALENT_ENDPOINT_BOUNDARY_RULE = new MultiValentEndPointBoundaryNodeRule();
+
+  /**
+   * The Monovalent Endpoint Boundary Node Rule.
+   * @see MonoValentEndPointBoundaryNodeRule
+   */
+  public static final BoundaryNodeRule MONOVALENT_ENDPOINT_BOUNDARY_RULE = new MonoValentEndPointBoundaryNodeRule();
+
+  /**
+   * The Boundary Node Rule specified by the OGC Simple Features Specification,
+   * which is the same as the Mod-2 rule.
+   * @see Mod2BoundaryNodeRule
+   */
+  public static final BoundaryNodeRule OGC_SFS_BOUNDARY_RULE = MOD2_BOUNDARY_RULE;
+
+  /**
+   * A {@link BoundaryNodeRule} specifies that points are in the
+   * boundary of a lineal geometry iff
+   * the point lies on the boundary of an odd number
+   * of components.
+   * Under this rule {@link LinearRing}s and closed
+   * {@link LineString}s have an empty boundary.
+   * <p>
+   * This is the rule specified by the <i>OGC SFS</i>,
+   * and is the default rule used in JTS.
+   *
+   * @author Martin Davis
+   * @version 1.7
+   */
+  public static class Mod2BoundaryNodeRule
+      implements BoundaryNodeRule
+  {
+    public boolean isInBoundary(int boundaryCount)
+    {
+      // the "Mod-2 Rule"
+      return boundaryCount % 2 == 1;
+    }
+  }
+
+  /**
+   * A {@link BoundaryNodeRule} which specifies that any points which are endpoints
+   * of lineal components are in the boundary of the
+   * parent geometry.
+   * This corresponds to the "intuitive" topological definition
+   * of boundary.
+   * Under this rule {@link LinearRing}s have a non-empty boundary
+   * (the common endpoint of the underlying LineString).
+   * <p>
+   * This rule is useful when dealing with linear networks.
+   * For example, it can be used to check
+   * whether linear networks are correctly noded.
+   * The usual network topology constraint is that linear segments may touch only at endpoints.
+   * In the case of a segment touching a closed segment (ring) at one point,
+   * the Mod2 rule cannot distinguish between the permitted case of touching at the
+   * node point and the invalid case of touching at some other interior (non-node) point.
+   * The EndPoint rule does distinguish between these cases,
+   * so is more appropriate for use.
+   *
+   * @author Martin Davis
+   * @version 1.7
+   */
+  public static class EndPointBoundaryNodeRule
+      implements BoundaryNodeRule
+  {
+    public boolean isInBoundary(int boundaryCount)
+    {
+      return boundaryCount > 0;
+    }
+  }
+
+  /**
+   * A {@link BoundaryNodeRule} which determines that only
+   * endpoints with valency greater than 1 are on the boundary.
+   * This corresponds to the boundary of a {@link MultiLineString}
+   * being all the "attached" endpoints, but not
+   * the "unattached" ones.
+   *
+   * @author Martin Davis
+   * @version 1.7
+   */
+  public static class MultiValentEndPointBoundaryNodeRule
+      implements BoundaryNodeRule
+  {
+    public boolean isInBoundary(int boundaryCount)
+    {
+      return boundaryCount > 1;
+    }
+  }
+
+  /**
+   * A {@link BoundaryNodeRule} which determines that only
+   * endpoints with valency of exactly 1 are on the boundary.
+   * This corresponds to the boundary of a {@link MultiLineString}
+   * being all the "unattached" endpoints.
+   *
+   * @author Martin Davis
+   * @version 1.7
+   */
+  public static class MonoValentEndPointBoundaryNodeRule
+      implements BoundaryNodeRule
+  {
+    public boolean isInBoundary(int boundaryCount)
+    {
+      return boundaryCount == 1;
+    }
+  }
+
+
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/algorithm/CGAlgorithms.java b/src/com/vividsolutions/jts/algorithm/CGAlgorithms.java
index 064de74..6029ac3 100644
--- a/src/com/vividsolutions/jts/algorithm/CGAlgorithms.java
+++ b/src/com/vividsolutions/jts/algorithm/CGAlgorithms.java
@@ -34,6 +34,7 @@ package com.vividsolutions.jts.algorithm;
 
 import com.vividsolutions.jts.geom.Coordinate;
 import com.vividsolutions.jts.geom.CoordinateSequence;
+import com.vividsolutions.jts.geom.Location;
 
 /**
  * Specifies and implements various fundamental Computational Geometric algorithms.
@@ -88,64 +89,47 @@ public class CGAlgorithms
   }
 
   /**
-   * Test whether a point lies inside a ring.
+   * Tests whether a point lies inside or on a ring.
    * The ring may be oriented in either direction.
-   * If the point lies on the ring boundary the result of this method is unspecified.
+   * A point lying exactly on the ring boundary is considered to be inside the ring.
    * <p>
-   * This algorithm does not attempt to first check the point against the envelope
+   * This method does <i>not</i> first check the point against the envelope
    * of the ring.
    *
    * @param p point to check for ring inclusion
-   * @param ring assumed to have first point identical to last point
-   * @return <code>true</code> if p is inside ring
+   * @param ring an array of coordinates representing the ring (which must have first point identical to last point)
+   * @return true if p is inside ring
+   * 
+   * @see locatePointInRing
    */
   public static boolean isPointInRing(Coordinate p, Coordinate[] ring) {
-    /*
-     *  For each segment l = (i-1, i), see if it crosses ray from test point in positive x direction.
-     */
-    int crossings = 0;  // number of segment/ray crossings
-    for (int i = 1; i < ring.length; i++) {
-      int i1 = i - 1;
-      Coordinate p1 = ring[i];
-      Coordinate p2 = ring[i1];
-
-      if (((p1.y > p.y) && (p2.y <= p.y)) ||
-          ((p2.y > p.y) && (p1.y <= p.y))) {
-        double x1 = p1.x - p.x;
-        double y1 = p1.y - p.y;
-        double x2 = p2.x - p.x;
-        double y2 = p2.y - p.y;
-        /*
-        *  segment straddles x axis, so compute intersection with x-axis.
-         */
-        double xInt = RobustDeterminant.signOfDet2x2(x1, y1, x2, y2) / (y2 - y1);
-        //xsave = xInt;
-        /*
-        *  crosses ray if strictly positive intersection.
-         */
-        if (xInt > 0.0) {
-          crossings++;
-        }
-      }
-    }
-    /*
-     *  p is inside if number of crossings is odd.
-     */
-    if ((crossings % 2) == 1) {
-      return true;
-    }
-    else {
-      return false;
-    }
+  	return locatePointInRing(p, ring) != Location.EXTERIOR;
   }
+  
 
   /**
-   * Test whether a point lies on the line segments defined by a
+   * Determines whether a point lies in the interior, on the boundary, or in the exterior
+   * of a ring.
+   * The ring may be oriented in either direction.
+   * <p>
+   * This method does <i>not</i> first check the point against the envelope
+   * of the ring.
+   *
+   * @param p point to check for ring inclusion
+   * @param ring an array of coordinates representing the ring (which must have first point identical to last point)
+   * @return the {@link Location} of p relative to the ring
+   */
+  public static int locatePointInRing(Coordinate p, Coordinate[] ring) 
+  {
+    return RayCrossingCounter.locatePointInRing(p, ring);
+  }
+  
+  /**
+   * Tests whether a point lies on the line segments defined by a
    * list of coordinates.
    *
-   * @return true true if
-   * the point is a vertex of the line or lies in the interior of a line
-   * segment in the linestring
+   * @return true if the point is a vertex of the line 
+   * or lies in the interior of a line segment in the linestring
    */
   public static boolean isOnLine(Coordinate p, Coordinate[] pt) {
     LineIntersector lineIntersector = new RobustLineIntersector();
@@ -161,44 +145,50 @@ public class CGAlgorithms
   }
 
   /**
-   * Computes whether a ring defined by an array of {@link Coordinate} is
+   * Computes whether a ring defined by an array of {@link Coordinate}s is
    * oriented counter-clockwise.
    * <ul>
    * <li>The list of points is assumed to have the first and last points equal.
    * <li>This will handle coordinate lists which contain repeated points.
-   * <li>If the ring is invalid, the answer returned may not be correct.
    * </ul>
+   * This algorithm is <b>only</b> guaranteed to work with valid rings.
+   * If the ring is invalid (e.g. self-crosses or touches),
+   * the computed result may not be correct.
    *
-   * @param ring an array of coordinates forming a ring
-   * @return <code>true</code> if the ring is oriented counter-clockwise.
+   * @param ring an array of Coordinates forming a ring
+   * @return true if the ring is oriented counter-clockwise.
+   * @throws IllegalArgumentException if there are too few points to determine orientation (< 3)
    */
   public static boolean isCCW(Coordinate[] ring) {
     // # of points without closing endpoint
     int nPts = ring.length - 1;
-
+    // sanity check
+    if (nPts < 3)
+    	throw new IllegalArgumentException("Ring has fewer than 3 points, so orientation cannot be determined");
+    
     // find highest point
-    Coordinate hip = ring[0];
-    int hii = 0;
+    Coordinate hiPt = ring[0];
+    int hiIndex = 0;
     for (int i = 1; i <= nPts; i++) {
       Coordinate p = ring[i];
-      if (p.y > hip.y) {
-        hip = p;
-        hii = i;
+      if (p.y > hiPt.y) {
+        hiPt = p;
+        hiIndex = i;
       }
     }
 
     // find distinct point before highest point
-    int iPrev = hii;
+    int iPrev = hiIndex;
     do {
       iPrev = iPrev - 1;
       if (iPrev < 0) iPrev = nPts;
-    } while (ring[iPrev].equals(hip) && iPrev != hii);
+    } while (ring[iPrev].equals2D(hiPt) && iPrev != hiIndex);
 
     // find distinct point after highest point
-    int iNext = hii;
+    int iNext = hiIndex;
     do {
       iNext = (iNext + 1) % nPts;
-    } while (ring[iNext].equals(hip) && iNext != hii);
+    } while (ring[iNext].equals2D(hiPt) && iNext != hiIndex);
 
     Coordinate prev = ring[iPrev];
     Coordinate next = ring[iNext];
@@ -209,12 +199,10 @@ public class CGAlgorithms
      * (including the case where the input array has fewer than 4 elements),
      * or it contains coincident line segments.
      */
-    if (prev.equals(hip) || next.equals(hip) || prev.equals(next))
+    if (prev.equals2D(hiPt) || next.equals2D(hiPt) || prev.equals2D(next))
       return false;
-    // MD - don't bother throwing exception, since this isn't a complete check for ring validity
-//  throw new IllegalArgumentException("Invalid ring (contains repeated line segments)");
 
-    int disc = computeOrientation(prev, hip, next);
+    int disc = computeOrientation(prev, hiPt, next);
 
     /**
      *  If disc is exactly 0, lines are collinear.  There are two possible cases:
@@ -302,6 +290,7 @@ public class CGAlgorithms
       Math.abs(s) *
       Math.sqrt(((B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y)));
   }
+  
   /**
    * Computes the perpendicular distance from a point p
    * to the (infinite) line containing the points AB
@@ -332,6 +321,29 @@ public class CGAlgorithms
   }
 
   /**
+   * Computes the distance from a point to a sequence
+   * of line segments.
+   * 
+   * @param p a point
+   * @param line a sequence of contiguous line segments defined by their vertices
+   * @return the minimum distance between the point and the line segments
+   */
+	public static double distancePointLine(Coordinate p, Coordinate[] line)
+	{
+		if (line.length == 0) 
+			throw new IllegalArgumentException("Line array must contain at least one vertex");
+		// this handles the case of length = 1
+		double minDistance = p.distance(line[0]);
+		for (int i = 0; i < line.length - 1; i++) {
+			double dist = CGAlgorithms.distancePointLine(p, line[i], line[i+1]);
+			if (dist < minDistance) {
+				minDistance = dist;
+			}
+		}
+		return minDistance;
+	}
+	
+  /**
    * Computes the distance from a line segment AB to a line segment CD
    *
    * Note: NON-ROBUST!
@@ -399,8 +411,13 @@ limiting conditions:
   }
 
   /**
-   * Returns the signed area for a ring.  The area is positive if
-   * the ring is oriented CW.
+   * Computes the signed area for a ring.      
+   * The signed area is positive if
+   * the ring is oriented CW, negative if the ring is oriented CCW,
+   * and zero if the ring is degenerate or flat. 
+   * 
+   * @param ring the coordinates forming the ring
+   * @return the signed area of the ring
    */
   public static double signedArea(Coordinate[] ring)
   {
@@ -417,18 +434,66 @@ limiting conditions:
   }
 
   /**
+   * Computes the signed area for a ring.      
+   * The signed area is positive if
+   * the ring is oriented CW, negative if the ring is oriented CCW,
+   * and zero if the ring is degenerate or flat. 
+   * 
+   * @param ring the coordinates forming the ring
+   * @return the signed area of the ring
+   */
+  public static double signedArea(CoordinateSequence ring)
+  {
+    int n = ring.size();
+    if (n < 3) return 0.0;
+         double sum = 0.0;
+    Coordinate p = new Coordinate();
+    ring.getCoordinate(0, p);
+    double bx = p.x;
+    double by = p.y;
+         for (int i = 1; i < n; i++) {
+      ring.getCoordinate(i, p);
+      double cx = p.x;
+      double cy = p.y;
+      sum += (bx + cx) * (cy - by);
+             bx = cx;
+      by = cy;
+    }
+    return -sum  / 2.0;
+  } 
+  
+  /**
    * Computes the length of a linestring specified by a sequence of points.
    *
    * @param pts the points specifying the linestring
    * @return the length of the linestring
    */
-  public static double length(CoordinateSequence pts) {
-      if (pts.size() < 1) return 0.0;
-      double sum = 0.0;
-      for (int i = 1; i < pts.size(); i++) {
-        sum += pts.getCoordinate(i).distance(pts.getCoordinate(i - 1));
-      }
-      return sum;
+  public static double length(CoordinateSequence pts) 
+  {
+    // optimized for processing CoordinateSequences
+    int n = pts.size();
+    if (n <= 1) return 0.0;
+    
+    double len = 0.0;
+    
+    Coordinate p = new Coordinate();
+    pts.getCoordinate(0, p);
+    double x0 = p.x;
+    double y0 = p.y;
+    
+    for (int i = 1; i < n; i++) {
+      pts.getCoordinate(i, p);
+      double x1 = p.x;
+      double y1 = p.y;
+      double dx = x1 - x0;
+      double dy = y1 - y0;
+
+      len += Math.sqrt(dx * dx + dy * dy);
+      
+      x0 = x1;
+      y0 = y1;
+    }
+    return len;
   }
 
 }
diff --git a/src/com/vividsolutions/jts/algorithm/CentralEndpointIntersector.java b/src/com/vividsolutions/jts/algorithm/CentralEndpointIntersector.java
new file mode 100644
index 0000000..0f94363
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/CentralEndpointIntersector.java
@@ -0,0 +1,125 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.algorithm;
+
+import com.vividsolutions.jts.geom.Coordinate;
+
+
+/**
+ * Computes an approximate intersection of two line segments
+ * by taking the most central of the endpoints of the segments.
+ * This is effective in cases where the segments are nearly parallel
+ * and should intersect at an endpoint.
+ * It is also a reasonable strategy for cases where the 
+ * endpoint of one segment lies on or almost on the interior of another one.
+ * Taking the most central endpoint ensures that the computed intersection
+ * point lies in the envelope of the segments.
+ * Also, by always returning one of the input points, this should result 
+ * in reducing segment fragmentation.
+ * Intended to be used as a last resort for 
+ * computing ill-conditioned intersection situations which 
+ * cause other methods to fail.
+ *
+ * @author Martin Davis
+ * @version 1.8
+ */
+public class CentralEndpointIntersector 
+{
+	public static Coordinate getIntersection(Coordinate p00, Coordinate p01,
+			Coordinate p10, Coordinate p11)
+	{
+		CentralEndpointIntersector intor = new CentralEndpointIntersector(p00, p01, p10, p11);
+		return intor.getIntersection();
+	}
+	
+	private Coordinate[] pts;
+	private Coordinate intPt = null;
+
+	public CentralEndpointIntersector(Coordinate p00, Coordinate p01,
+			Coordinate p10, Coordinate p11) 
+	{
+		pts = new Coordinate[] { p00, p01, p10, p11 };
+		compute();
+	}
+
+	private void compute() 
+	{
+		Coordinate centroid = average(pts);
+		intPt = findNearestPoint(centroid, pts);
+	}
+
+	public Coordinate getIntersection() {
+		return intPt;
+	}
+
+	private static Coordinate average(Coordinate[] pts)
+	{
+		Coordinate avg = new Coordinate();
+		int n = pts.length;
+		for (int i = 0; i < pts.length; i++) {
+			avg.x += pts[i].x;
+			avg.y += pts[i].y;
+		}
+		if (n > 0) {
+			avg.x /= n;
+			avg.y /= n;
+		}
+		return avg;
+	}
+	
+  /**
+   * Determines a point closest to the given point.
+   * 
+   * @param p the point to compare against
+   * @param p1 a potential result point
+   * @param p2 a potential result point
+   * @param q1 a potential result point
+   * @param q2 a potential result point
+   * @return the point closest to the input point p
+   */
+  private Coordinate findNearestPoint(Coordinate p, Coordinate[] pts)
+  {
+  	double minDist = Double.MAX_VALUE;
+  	Coordinate result = null;
+  	for (int i = 0; i < pts.length; i++) {
+  		double dist = p.distance(pts[i]);
+  		if (dist < minDist) {
+  			minDist = dist;
+  			result = pts[i];
+  		}
+  	}
+  	return result;
+  }
+  
+
+}
diff --git a/src/com/vividsolutions/jts/algorithm/CentroidArea.java b/src/com/vividsolutions/jts/algorithm/CentroidArea.java
index bccf7b2..b0168c4 100644
--- a/src/com/vividsolutions/jts/algorithm/CentroidArea.java
+++ b/src/com/vividsolutions/jts/algorithm/CentroidArea.java
@@ -44,16 +44,22 @@ import com.vividsolutions.jts.geom.*;
  * The algorithm has been extended to handle holes and multi-polygons.
  * See <code>http://www.faqs.org/faqs/graphics/algorithms-faq/</code>
  * for further details of the basic approach.
+ * The code has also be extended to handle degenerate (zero-area) polygons.
+ * In this case, the centroid of the line segments in the polygon 
+ * will be returned.
  *
  * @version 1.7
  */
 public class CentroidArea
 {
-
   private Coordinate basePt = null;// the point all triangles are based at
   private Coordinate triangleCent3 = new Coordinate();// temporary variable to hold centroid of triangle
   private double  areasum2 = 0;        /* Partial area sum */
   private Coordinate cg3 = new Coordinate(); // partial centroid sum
+  
+  // data for linear centroid computation, if needed
+  private Coordinate centSum = new Coordinate();
+  private double totalLength = 0.0;
 
   public CentroidArea()
   {
@@ -96,8 +102,15 @@ public class CentroidArea
   public Coordinate getCentroid()
   {
     Coordinate cent = new Coordinate();
-    cent.x = cg3.x / 3 / areasum2;
-    cent.y = cg3.y / 3 / areasum2;
+    if (Math.abs(areasum2) > 0.0) {
+    	cent.x = cg3.x / 3 / areasum2;
+    	cent.y = cg3.y / 3 / areasum2;
+    }
+    else {
+    	// if polygon was degenerate, compute linear centroid instead
+      cent.x = centSum.x / totalLength;
+      cent.y = centSum.y / totalLength;   	
+    }
     return cent;
   }
 
@@ -106,6 +119,7 @@ public class CentroidArea
     if (this.basePt == null)
       this.basePt = basePt;
   }
+  
   private void add(Polygon poly)
   {
     addShell(poly.getExteriorRing().getCoordinates());
@@ -116,11 +130,11 @@ public class CentroidArea
 
   private void addShell(Coordinate[] pts)
   {
-
     boolean isPositiveArea = ! CGAlgorithms.isCCW(pts);
     for (int i = 0; i < pts.length - 1; i++) {
       addTriangle(basePt, pts[i], pts[i+1], isPositiveArea);
     }
+    addLinearSegments(pts);
   }
   private void addHole(Coordinate[] pts)
   {
@@ -128,6 +142,7 @@ public class CentroidArea
     for (int i = 0; i < pts.length - 1; i++) {
       addTriangle(basePt, pts[i], pts[i+1], isPositiveArea);
     }
+    addLinearSegments(pts);
   }
   private void addTriangle(Coordinate p0, Coordinate p1, Coordinate p2, boolean isPositiveArea)
   {
@@ -161,5 +176,26 @@ public class CentroidArea
         (p3.x - p1.x) * (p2.y - p1.y);
   }
 
+  /**
+   * Adds the linear segments defined by an array of coordinates
+   * to the linear centroid accumulators.
+   * This is done in case the polygon(s) have zero-area, 
+   * in which case the linear centroid is computed instead.
+   * 
+   * @param pts an array of {@link Coordinate}s
+   */
+  private void addLinearSegments(Coordinate[] pts)
+  {
+    for (int i = 0; i < pts.length - 1; i++) {
+      double segmentLen = pts[i].distance(pts[i + 1]);
+      totalLength += segmentLen;
+
+      double midx = (pts[i].x + pts[i + 1].x) / 2;
+      centSum.x += segmentLen * midx;
+      double midy = (pts[i].y + pts[i + 1].y) / 2;
+      centSum.y += segmentLen * midy;
+    }
+  }
+
 
 }
diff --git a/src/com/vividsolutions/jts/algorithm/CentroidLine.java b/src/com/vividsolutions/jts/algorithm/CentroidLine.java
index dc7587f..99d388c 100644
--- a/src/com/vividsolutions/jts/algorithm/CentroidLine.java
+++ b/src/com/vividsolutions/jts/algorithm/CentroidLine.java
@@ -53,8 +53,9 @@ public class CentroidLine
   }
 
   /**
-   * Adds the linestring(s) defined by a Geometry to the centroid total.
-   * If the geometry is not linear it does not contribute to the centroid
+   * Adds the linear components of by a Geometry to the centroid total.
+   * If the geometry has no linear components it does not contribute to the centroid,
+   * 
    * @param geom the geometry to add
    */
   public void add(Geometry geom)
@@ -62,6 +63,14 @@ public class CentroidLine
     if (geom instanceof LineString) {
       add(geom.getCoordinates());
     }
+    else if (geom instanceof Polygon) {
+    	Polygon poly = (Polygon) geom;
+    	// add linear components of a polygon
+      add(poly.getExteriorRing().getCoordinates());
+      for (int i = 0; i < poly.getNumInteriorRing(); i++) {
+        add(poly.getInteriorRingN(i).getCoordinates());
+      }
+		}
     else if (geom instanceof GeometryCollection) {
       GeometryCollection gc = (GeometryCollection) geom;
       for (int i = 0; i < gc.getNumGeometries(); i++) {
diff --git a/src/com/vividsolutions/jts/algorithm/HCoordinate.java b/src/com/vividsolutions/jts/algorithm/HCoordinate.java
index 0a3cfbd..d6d2ae9 100644
--- a/src/com/vividsolutions/jts/algorithm/HCoordinate.java
+++ b/src/com/vividsolutions/jts/algorithm/HCoordinate.java
@@ -60,13 +60,43 @@ public class HCoordinate
       Coordinate q1, Coordinate q2)
       throws NotRepresentableException
   {
-    HCoordinate l1 = new HCoordinate(new HCoordinate(p1), new HCoordinate(p2));
-    HCoordinate l2 = new HCoordinate(new HCoordinate(q1), new HCoordinate(q2));
+  	// unrolled computation
+    double px = p1.y - p2.y;
+    double py = p2.x - p1.x;
+    double pw = p1.x * p2.y - p2.x * p1.y;
+    
+    double qx = q1.y - q2.y;
+    double qy = q2.x - q1.x;
+    double qw = q1.x * q2.y - q2.x * q1.y;
+    
+    double x = py * qw - qy * pw;
+    double y = qx * pw - px * qw;
+    double w = px * qy - qx * py;
+    
+    double xInt = x/w;
+    double yInt = y/w;
+    
+    if ((Double.isNaN(xInt)) || (Double.isInfinite(xInt)
+    		|| Double.isNaN(yInt)) || (Double.isInfinite(yInt))) {
+      throw new NotRepresentableException();
+    }
+    
+    return new Coordinate(xInt, yInt);
+  }
+
+  /*
+  public static Coordinate OLDintersection(
+      Coordinate p1, Coordinate p2,
+      Coordinate q1, Coordinate q2)
+      throws NotRepresentableException
+  {
+    HCoordinate l1 = new HCoordinate(p1, p2);
+    HCoordinate l2 = new HCoordinate(q1, q2);
     HCoordinate intHCoord = new HCoordinate(l1, l2);
     Coordinate intPt = intHCoord.getCoordinate();
     return intPt;
   }
-
+  */
 
   public double x,y,w;
 
@@ -94,12 +124,45 @@ public class HCoordinate
     w = 1.0;
   }
 
-  public HCoordinate(HCoordinate p1, HCoordinate p2) {
+  public HCoordinate(HCoordinate p1, HCoordinate p2) 
+  {
     x = p1.y * p2.w - p2.y * p1.w;
     y = p2.x * p1.w - p1.x * p2.w;
     w = p1.x * p2.y - p2.x * p1.y;
   }
 
+  /**
+   * Constructs a homogeneous coordinate which is the intersection of the lines
+   * define by the homogenous coordinates represented by two
+   * {@link Coordinate}s.
+   * 
+   * @param p1
+   * @param p2
+   */
+  public HCoordinate(Coordinate p1, Coordinate p2) 
+  {
+  	// optimization when it is known that w = 1
+    x = p1.y - p2.y;
+    y = p2.x - p1.x;
+    w = p1.x * p2.y - p2.x * p1.y;
+  }
+  
+  public HCoordinate(Coordinate p1, Coordinate p2, Coordinate q1, Coordinate q2) 
+  {
+  	// unrolled computation
+    double px = p1.y - p2.y;
+    double py = p2.x - p1.x;
+    double pw = p1.x * p2.y - p2.x * p1.y;
+    
+    double qx = q1.y - q2.y;
+    double qy = q2.x - q1.x;
+    double qw = q1.x * q2.y - q2.x * q1.y;
+    
+    x = py * qw - qy * pw;
+    y = qx * pw - px * qw;
+    w = px * qy - qx * py;
+  }
+  
   public double getX() throws NotRepresentableException {
     double a = x/w;
     if ((Double.isNaN(a)) || (Double.isInfinite(a))) {
diff --git a/src/com/vividsolutions/jts/algorithm/InteriorPointArea.java b/src/com/vividsolutions/jts/algorithm/InteriorPointArea.java
index e531ef2..531c028 100644
--- a/src/com/vividsolutions/jts/algorithm/InteriorPointArea.java
+++ b/src/com/vividsolutions/jts/algorithm/InteriorPointArea.java
@@ -77,8 +77,9 @@ public class InteriorPointArea {
 
   /**
    * Tests the interior vertices (if any)
-   * defined by a linear Geometry for the best inside point.
-   * If a Geometry is not of dimension 1 it is not tested.
+   * defined by an areal Geometry for the best inside point.
+   * If a component Geometry is not of dimension 2 it is not tested.
+   * 
    * @param geom the geometry to add
    */
   private void add(Geometry geom)
diff --git a/src/com/vividsolutions/jts/algorithm/LineIntersector.java b/src/com/vividsolutions/jts/algorithm/LineIntersector.java
index 89dbeee..abafe3e 100644
--- a/src/com/vividsolutions/jts/algorithm/LineIntersector.java
+++ b/src/com/vividsolutions/jts/algorithm/LineIntersector.java
@@ -53,11 +53,29 @@ import com.vividsolutions.jts.io.WKTWriter;
  *
  * @version 1.7
  */
-public abstract class LineIntersector {
-
+public abstract class LineIntersector 
+{
+/**
+ * These are deprecated, due to ambiguous naming
+ */
   public final static int DONT_INTERSECT = 0;
   public final static int DO_INTERSECT = 1;
   public final static int COLLINEAR = 2;
+  
+  /**
+   * Indicates that line segments do not intersect
+   */
+  public final static int NO_INTERSECTION = 0;
+  
+  /**
+   * Indicates that line segments intersect in a single point
+   */
+  public final static int POINT_INTERSECTION = 1;
+  
+  /**
+   * Indicates that line segments intersect in a line segment
+   */
+  public final static int COLLINEAR_INTERSECTION = 2;
 
   /**
    * Computes the "edge distance" of an intersection point p along a segment.
@@ -186,7 +204,7 @@ public abstract class LineIntersector {
         Coordinate p1, Coordinate p2);
 
   protected boolean isCollinear() {
-    return result == COLLINEAR;
+    return result == COLLINEAR_INTERSECTION;
   }
 
   /**
@@ -245,7 +263,7 @@ public abstract class LineIntersector {
    * @return true if the input geometries intersect
    */
   public boolean hasIntersection() {
-    return result != DONT_INTERSECT;
+    return result != NO_INTERSECTION;
   }
 
   /**
diff --git a/src/com/vividsolutions/jts/algorithm/MCPointInRing.java b/src/com/vividsolutions/jts/algorithm/MCPointInRing.java
index 06a9a10..53064be 100644
--- a/src/com/vividsolutions/jts/algorithm/MCPointInRing.java
+++ b/src/com/vividsolutions/jts/algorithm/MCPointInRing.java
@@ -34,10 +34,11 @@
 package com.vividsolutions.jts.algorithm;
 
 import java.util.*;
+
+import com.vividsolutions.jts.algorithm.locate.IndexedPointInAreaLocator;
 import com.vividsolutions.jts.geom.*;
 import com.vividsolutions.jts.index.chain.*;
 import com.vividsolutions.jts.index.bintree.*;
-import com.vividsolutions.jts.index.bintree.Interval;
 
 /**
  * Implements {@link PointInRing}
@@ -45,6 +46,8 @@ import com.vividsolutions.jts.index.bintree.Interval;
  * increase performance.
  *
  * @version 1.7
+ * 
+ * @see IndexedPointInAreaLocator for more general functionality
  */
 public class MCPointInRing   implements PointInRing {
 
diff --git a/src/com/vividsolutions/jts/algorithm/MinimumBoundingCircle.java b/src/com/vividsolutions/jts/algorithm/MinimumBoundingCircle.java
new file mode 100644
index 0000000..24eed22
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/MinimumBoundingCircle.java
@@ -0,0 +1,277 @@
+package com.vividsolutions.jts.algorithm;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.util.*;
+
+/**
+ * Computes the Minimum Bounding Circle (MBC)
+ * for the points in a {@link Geometry}.
+ * The MBC is the smallest circle which contains
+ * all the input points 
+ * (this is sometimes known as the Smallest Enclosing Circle).
+ * This is equivalent to computing the Maximum Diameter 
+ * of the input point set.
+ * <p>
+ * The geometric circle can be specified in two equivalent ways,
+ * both of which are provide as output by this class:
+ * <ul>
+ * <li>As a centre point and a radius
+ * <li>By the set of points defining the circle.
+ * Depending on the number of points in the input
+ * and their relative positions, this
+ * will be specified by anywhere from 0 to 3 points. 
+ * 0 or 1 points indicate an empty or trivial input point arrangment.
+ * 2 or 3 points define a circle which contains 
+ * all the input points.
+ * </ul>
+ * The class also provides a Geometry which approximates the
+ * shape of the MBC (although as an approximation 
+ * it is <b>not</b> guaranteed to <tt>cover</tt> all the input points.)
+ * 
+ * @author Martin Davis
+ *
+ */
+public class MinimumBoundingCircle 
+{
+	/*
+   * The algorithm used is based on the one by Jon Rokne in 
+   * the article "An Easy Bounding Circle" in <i>Graphic Gems II</i>.
+	 */
+	
+	private Geometry input;
+	private Coordinate[] extremalPts = null;
+	private Coordinate centre = null;
+	private double radius = 0.0;
+	
+	/**
+	 * Creates a new object for computing the minimum bounding circle for the
+	 * point set defined by the vertices of the given geometry.
+	 * 
+	 * @param geom the geometry to use to obtain the point set 
+	 */
+	public MinimumBoundingCircle(Geometry geom)
+	{
+		this.input = geom;
+	}
+	
+	/**
+	 * Gets a geometry which represents the Minimum Bounding Circle.
+	 * If the input is degenerate (empty or a single unique point),
+	 * this method will return an empty geometry or a single Point geometry.
+	 * Otherwise, a Polygon will be returned which approximates the 
+	 * Minimum Bounding Circle. 
+	 * (Note that because the computed polygon is only an approximation, 
+	 * it may not precisely contain all the input points.)
+	 * 
+	 * @return a Geometry representing the Minimum Bounding Circle.
+	 */
+	public Geometry getCircle()
+	{
+		//TODO: ensure the output circle contains the extermal points.
+		//TODO: or maybe even ensure that the returned geometry contains ALL the input points?
+		
+		compute();
+		if (centre == null)
+			return input.getFactory().createPolygon(null, null);
+		Point centrePoint = input.getFactory().createPoint(centre);
+		if (radius == 0.0)
+			return centrePoint;
+		return centrePoint.buffer(radius);
+	}
+	
+	/**
+	 * Gets the extremal points which define the computed Minimum Bounding Circle.
+	 * There may be zero, one, two or three of these points,
+	 * depending on the number of points in the input
+	 * and the geometry of those points.
+	 * 
+	 * @return the points defining the Minimum Bounding Circle
+	 */
+	public Coordinate[] getExtremalPoints() 
+	{
+		compute();
+		return extremalPts;
+	}
+	
+	/**
+	 * Gets the centre point of the computed Minimum Bounding Circle.
+	 * 
+	 * @return the centre point of the Minimum Bounding Circle
+	 * @return null if the input is empty
+	 */
+	public Coordinate getCentre() 
+	{
+		compute();
+		return centre;
+	}
+	
+	/**
+	 * Gets the radius of the computed Minimum Bounding Circle.
+	 * 
+	 * @return the radius of the Minimum Bounding Circle
+	 */
+	public double getRadius() 
+	{
+		compute();
+		return radius;
+	}
+	
+	private void computeCentre() 
+	{
+		switch (extremalPts.length) {
+		case 0:
+			centre = null;
+			break;
+		case 1:
+			centre = extremalPts[0];
+			break;
+		case 2:
+			centre = new Coordinate(
+					(extremalPts[0].x + extremalPts[1].x) / 2.0,
+					(extremalPts[0].y + extremalPts[1].y) / 2.0
+					);
+			break;
+		case 3:
+			centre = Triangle.circumcentre(extremalPts[0], extremalPts[1], extremalPts[2]);
+			break;
+		}
+	}
+	
+	private void compute()
+	{		
+		if (extremalPts != null) return;
+
+		computeCirclePoints();
+		computeCentre();
+		if (centre != null)
+			radius = centre.distance(extremalPts[0]);
+	}
+	
+	private void computeCirclePoints()
+	{
+		// handle degenerate cases
+		if (input.isEmpty()) {
+			extremalPts = new Coordinate[0];
+			return;
+		}
+		if (input.getNumPoints() == 1) {
+			Coordinate[] pts = input.getCoordinates();
+			extremalPts = new Coordinate[] { new Coordinate(pts[0]) };
+			return;
+		}
+		
+		Geometry convexHull = input.convexHull();
+		
+		/**
+		 * Computing the convex hull also have the effect of eliminating duplicate points
+		 */
+		
+		// check for degenerate or trivial cases
+		Coordinate[] hullPts = convexHull.getCoordinates();
+		
+		// strip duplicate final point, if any
+		Coordinate[] pts = hullPts;
+		if (hullPts[0].equals2D(hullPts[hullPts.length - 1])) {
+			pts = new Coordinate[hullPts.length - 1];
+			CoordinateArrays.copyDeep(hullPts, 0, pts, 0, hullPts.length - 1);
+		}
+		
+		if (pts.length <= 3) {
+			extremalPts = CoordinateArrays.copyDeep(pts);
+			return;
+		}
+		
+		// find a point P with minimum Y ordinate
+		Coordinate P = lowestPoint(pts);
+		
+		// find a point Q such that the angle that PQ makes with the x-axis is minimal
+		Coordinate Q = pointWitMinAngleWithX(pts, P);
+		
+		/**
+		 * Iterate over the remaining points to find 
+		 * a pair or triplet of points which determine the minimal circle.
+		 * By the design of the algorithm, 
+		 * at most <tt>pts.length</tt> iterations are required to terminate 
+		 * with a correct result.
+		 */ 
+		for (int i = 0; i < pts.length; i++) {
+			Coordinate R = pointWithMinAngleWithSegment(pts, P, Q);
+			
+			// if PRQ is obtuse, then MBC is determined by P and Q
+			if (Angle.isObtuse(P, R, Q)) {
+				extremalPts = new Coordinate[] { new Coordinate(P), new Coordinate(Q) };
+				return;
+			}
+			// if RPQ is obtuse, update baseline and iterate
+			if (Angle.isObtuse(R, P, Q)) {
+				P = R;
+				continue;
+			}
+			// if RQP is obtuse, update baseline and iterate
+			if (Angle.isObtuse(R, Q, P)) {
+				Q = R;
+				continue;
+			}
+			// otherwise all angles are acute, and the MBC is determined by the triangle PQR
+			extremalPts = new Coordinate[] { new Coordinate(P), new Coordinate(Q), new Coordinate(R) };
+			return;
+		}
+		Assert.shouldNeverReachHere("Logic failure in Minimum Bounding Circle algorithm"); 
+	}
+	
+	private static Coordinate lowestPoint(Coordinate[] pts)
+	{
+		Coordinate min = pts[0];
+		for (int i = 1; i < pts.length; i++) {
+			if (pts[i].y < min.y)
+				min = pts[i];
+		}
+		return min;
+	}
+	
+	private static Coordinate pointWitMinAngleWithX(Coordinate[] pts, Coordinate P)
+	{
+		double minSin = Double.MAX_VALUE;
+		Coordinate minAngPt = null;
+		for (int i = 0; i < pts.length; i++) {
+			
+			Coordinate p = pts[i];
+			if (p == P) continue;
+			
+			/**
+			 * The sin of the angle is a simpler proxy for the angle itself
+			 */
+			double dx = p.x - P.x;
+			double dy = p.y - P.y;
+			if (dy < 0) dy = -dy;
+			double len = Math.sqrt(dx * dx + dy * dy);
+			double sin = dy / len;
+			
+			if (sin < minSin) {
+				minSin = sin;
+				minAngPt = p;
+			}
+		}
+		return minAngPt;
+	}
+	
+	private static Coordinate pointWithMinAngleWithSegment(Coordinate[] pts, Coordinate P, Coordinate Q)
+	{
+		double minAng = Double.MAX_VALUE;
+		Coordinate minAngPt = null;
+		for (int i = 0; i < pts.length; i++) {
+			
+			Coordinate p = pts[i];
+			if (p == P) continue;
+			if (p == Q) continue;
+			
+			double ang = Angle.angleBetween(P, p, Q);
+			if (ang < minAng) {
+				minAng = ang;
+				minAngPt = p;
+			}
+		}
+		return minAngPt;
+		
+	}
+}
diff --git a/src/com/vividsolutions/jts/algorithm/MinimumDiameter.java b/src/com/vividsolutions/jts/algorithm/MinimumDiameter.java
index fa2a281..ad9443d 100644
--- a/src/com/vividsolutions/jts/algorithm/MinimumDiameter.java
+++ b/src/com/vividsolutions/jts/algorithm/MinimumDiameter.java
@@ -48,6 +48,13 @@ import com.vividsolutions.jts.geom.*;
  * The first step in the algorithm is computing the convex hull of the Geometry.
  * If the input Geometry is known to be convex, a hint can be supplied to
  * avoid this computation.
+ * <p>
+ * This class can also be used to compute a line segment representing 
+ * the minimum diameter, the supporting line segment of the minimum diameter,
+ * and a minimum rectangle enclosing the input geometry.
+ * This rectangle will
+ * have width equal to the minimum diameter, and have one side
+ * parallel to the supporting segment.
  *
  * @see ConvexHull
  *
@@ -58,13 +65,14 @@ public class MinimumDiameter
   private final Geometry inputGeom;
   private final boolean isConvex;
 
+  private Coordinate[] convexHullPts = null;
   private LineSegment minBaseSeg = new LineSegment();
   private Coordinate minWidthPt = null;
   private int minPtIndex;
   private double minWidth = 0.0;
 
   /**
-   * Compute a minimum diameter for a giver {@link Geometry}.
+   * Compute a minimum diameter for a given {@link Geometry}.
    *
    * @param geom a Geometry
    */
@@ -153,35 +161,34 @@ public class MinimumDiameter
     }
   }
 
-  private void computeWidthConvex(Geometry geom)
+  private void computeWidthConvex(Geometry convexGeom)
   {
 //System.out.println("Input = " + geom);
-    Coordinate[] pts = null;
-    if (geom instanceof Polygon)
-      pts = ((Polygon) geom).getExteriorRing().getCoordinates();
+    if (convexGeom instanceof Polygon)
+      convexHullPts = ((Polygon) convexGeom).getExteriorRing().getCoordinates();
     else
-      pts = geom.getCoordinates();
+      convexHullPts = convexGeom.getCoordinates();
 
     // special cases for lines or points or degenerate rings
-    if (pts.length == 0) {
+    if (convexHullPts.length == 0) {
       minWidth = 0.0;
       minWidthPt = null;
       minBaseSeg = null;
     }
-    else if (pts.length == 1) {
+    else if (convexHullPts.length == 1) {
       minWidth = 0.0;
-      minWidthPt = pts[0];
-      minBaseSeg.p0 = pts[0];
-      minBaseSeg.p1 = pts[0];
+      minWidthPt = convexHullPts[0];
+      minBaseSeg.p0 = convexHullPts[0];
+      minBaseSeg.p1 = convexHullPts[0];
     }
-    else if (pts.length == 2 || pts.length == 3) {
+    else if (convexHullPts.length == 2 || convexHullPts.length == 3) {
       minWidth = 0.0;
-      minWidthPt = pts[0];
-      minBaseSeg.p0 = pts[0];
-      minBaseSeg.p1 = pts[1];
+      minWidthPt = convexHullPts[0];
+      minBaseSeg.p0 = convexHullPts[0];
+      minBaseSeg.p1 = convexHullPts[1];
     }
     else
-      computeConvexRingMinDiameter(pts);
+      computeConvexRingMinDiameter(convexHullPts);
   }
 
   /**
@@ -193,7 +200,6 @@ public class MinimumDiameter
    */
   private void computeConvexRingMinDiameter(Coordinate[] pts)
   {
-    //if (
     // for each segment in the ring
     minWidth = Double.MAX_VALUE;
     int currMaxIndex = 1;
@@ -238,4 +244,97 @@ public class MinimumDiameter
     if (index >= pts.length) index = 0;
     return index;
   }
+  
+  /**
+   * Gets the minimum rectangular {@link Polygon} which encloses the input geometry.
+   * The rectangle has width equal to the minimum diameter, 
+   * and a longer length.
+   * If the convex hull of the input is degenerate (a line or point)
+   * a {@link LineString} or {@link Point} is returned.
+   * <p>
+   * The minimum rectangle can be used as an extremely generalized representation
+   * for the given geometry.
+   * 
+   * @return the minimum rectangle enclosing the input (or a line or point if degenerate)
+   */
+  public Geometry getMinimumRectangle()
+  {
+    computeMinimumDiameter();
+  
+    // check if minimum rectangle is degenerate (a point or line segment)
+    if (minWidth == 0.0) {
+      if (minBaseSeg.p0.equals2D(minBaseSeg.p1)) {
+        return inputGeom.getFactory().createPoint(minBaseSeg.p0);
+      }
+      return minBaseSeg.toGeometry(inputGeom.getFactory());
+    }
+    
+    // deltas for the base segment of the minimum diameter
+    double dx = minBaseSeg.p1.x - minBaseSeg.p0.x;
+    double dy = minBaseSeg.p1.y - minBaseSeg.p0.y;
+    
+    /*
+    double c0 = computeC(dx, dy, minBaseSeg.p0);
+    double c1 = computeC(dx, dy, minBaseSeg.p1);
+    */
+    
+    double minPara = Double.MAX_VALUE;
+    double maxPara = -Double.MAX_VALUE;
+    double minPerp = Double.MAX_VALUE;
+    double maxPerp = -Double.MAX_VALUE;
+    
+    // compute maxima and minima of lines parallel and perpendicular to base segment
+    for (int i = 0; i < convexHullPts.length; i++) {
+      
+      double paraC = computeC(dx, dy, convexHullPts[i]);
+      if (paraC > maxPara) maxPara = paraC;
+      if (paraC < minPara) minPara = paraC;
+      
+      double perpC = computeC(-dy, dx, convexHullPts[i]);
+      if (perpC > maxPerp) maxPerp = perpC;
+      if (perpC < minPerp) minPerp = perpC;
+    }
+    
+    // compute lines along edges of minimum rectangle
+    LineSegment maxPerpLine = computeSegmentForLine(-dx, -dy, maxPerp);
+    LineSegment minPerpLine = computeSegmentForLine(-dx, -dy, minPerp);
+    LineSegment maxParaLine = computeSegmentForLine(-dy, dx, maxPara);
+    LineSegment minParaLine = computeSegmentForLine(-dy, dx, minPara);
+    
+    // compute vertices of rectangle (where the para/perp max & min lines intersect)
+    Coordinate p0 = maxParaLine.lineIntersection(maxPerpLine);
+    Coordinate p1 = minParaLine.lineIntersection(maxPerpLine);
+    Coordinate p2 = minParaLine.lineIntersection(minPerpLine);
+    Coordinate p3 = maxParaLine.lineIntersection(minPerpLine);
+    
+    LinearRing shell = inputGeom.getFactory().createLinearRing(
+        new Coordinate[] { p0, p1, p2, p3, p0 });
+    return inputGeom.getFactory().createPolygon(shell, null);
+
+  }
+  
+  private static double computeC(double a, double b, Coordinate p)
+  {
+    return a * p.y - b * p.x;
+  }
+  
+  private static LineSegment computeSegmentForLine(double a, double b, double c)
+  {
+    Coordinate p0;
+    Coordinate p1;
+    /*
+    * Line eqn is ax + by = c
+    * Slope is a/b.
+    * If slope is steep, use y values as the inputs
+    */
+    if (Math.abs(b) > Math.abs(a)) {
+      p0 = new Coordinate(0.0, c/b);
+      p1 = new Coordinate(1.0, c/b - a/b);
+    }
+    else {
+      p0 = new Coordinate(c/a, 0.0);
+      p1 = new Coordinate(c/a - b/a, 1.0);
+    }
+    return new LineSegment(p0, p1);
+  }
 }
diff --git a/src/com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.java b/src/com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.java
index 2ed54ba..35ba295 100644
--- a/src/com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.java
+++ b/src/com/vividsolutions/jts/algorithm/NonRobustCGAlgorithms.java
@@ -33,7 +33,6 @@
 package com.vividsolutions.jts.algorithm;
 
 import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.CoordinateSequence;
 
 /**
  * Non-robust versions of various fundamental Computational Geometric algorithms,
diff --git a/src/com/vividsolutions/jts/algorithm/NonRobustLineIntersector.java b/src/com/vividsolutions/jts/algorithm/NonRobustLineIntersector.java
index 406952e..c050f47 100644
--- a/src/com/vividsolutions/jts/algorithm/NonRobustLineIntersector.java
+++ b/src/com/vividsolutions/jts/algorithm/NonRobustLineIntersector.java
@@ -40,7 +40,7 @@ import com.vividsolutions.jts.algorithm.LineIntersector;
  */
 
 import com.vividsolutions.jts.geom.*;
-import com.vividsolutions.jts.util.Debug;
+//import com.vividsolutions.jts.util.Debug;
 
 /**
  * A non-robust version of {@LineIntersector}.
@@ -96,7 +96,7 @@ public class NonRobustLineIntersector
 
     // if r != 0 the point does not lie on the line
     if (r != 0) {
-      result = DONT_INTERSECT;
+      result = NO_INTERSECTION;
       return;
     }
 
@@ -104,7 +104,7 @@ public class NonRobustLineIntersector
 
     double dist = rParameter(p1, p2, p);
     if (dist < 0.0 || dist > 1.0) {
-      result = DONT_INTERSECT;
+      result = NO_INTERSECTION;
       return;
     }
 
@@ -112,7 +112,7 @@ public class NonRobustLineIntersector
     if (p.equals(p1) || p.equals(p2)) {
       isProper = false;
     }
-    result = DO_INTERSECT;
+    result = POINT_INTERSECTION;
   }
 
   protected int computeIntersect(
@@ -167,7 +167,7 @@ public class NonRobustLineIntersector
     if (r3 != 0 &&
         r4 != 0 &&
         isSameSignAndNonZero(r3, r4)) {
-      return DONT_INTERSECT;
+      return NO_INTERSECTION;
     }
 
     /*
@@ -191,7 +191,7 @@ public class NonRobustLineIntersector
     if (r1 != 0 &&
         r2 != 0 &&
         isSameSignAndNonZero(r1, r2)) {
-      return DONT_INTERSECT;
+      return NO_INTERSECTION;
     }
 
     /**
@@ -225,7 +225,7 @@ public class NonRobustLineIntersector
     if (precisionModel != null) {
       precisionModel.makePrecise(pa);
     }
-    return DO_INTERSECT;
+    return POINT_INTERSECTION;
   }
 
 
@@ -271,17 +271,17 @@ public class NonRobustLineIntersector
     }
     // check for no intersection
     if (t3 > r2 || t4 < r1) {
-      return DONT_INTERSECT;
+      return NO_INTERSECTION;
     }
 
     // check for single point intersection
     if (q4 == p1) {
       pa.setCoordinate(p1);
-      return DO_INTERSECT;
+      return POINT_INTERSECTION;
     }
     if (q3 == p2) {
       pa.setCoordinate(p2);
-      return DO_INTERSECT;
+      return POINT_INTERSECTION;
     }
 
     // intersection MUST be a segment - compute endpoints
@@ -293,7 +293,7 @@ public class NonRobustLineIntersector
     if (t4 < r2) {
       pb.setCoordinate(q4);
     }
-    return COLLINEAR;
+    return COLLINEAR_INTERSECTION;
   }
 
   /**
diff --git a/src/com/vividsolutions/jts/algorithm/PointInRing.java b/src/com/vividsolutions/jts/algorithm/PointInRing.java
index 7950ecd..bc6ce52 100644
--- a/src/com/vividsolutions/jts/algorithm/PointInRing.java
+++ b/src/com/vividsolutions/jts/algorithm/PointInRing.java
@@ -40,6 +40,8 @@ import com.vividsolutions.jts.geom.Coordinate;
  * a ring.
  *
  * @version 1.7
+ * 
+ * @see PointOnGeometryLocator for more general functionality
  */
 public interface PointInRing {
 
diff --git a/src/com/vividsolutions/jts/algorithm/PointLocator.java b/src/com/vividsolutions/jts/algorithm/PointLocator.java
index 812f6fd..c9014cd 100644
--- a/src/com/vividsolutions/jts/algorithm/PointLocator.java
+++ b/src/com/vividsolutions/jts/algorithm/PointLocator.java
@@ -1,6 +1,3 @@
-
-
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -37,26 +34,42 @@ package com.vividsolutions.jts.algorithm;
 
 import java.util.Iterator;
 import com.vividsolutions.jts.geom.*;
-import com.vividsolutions.jts.geomgraph.GeometryGraph;
 
 /**
- * Computes the topological relationship ({@link Location})
+ * Computes the topological ({@link Location})
  * of a single point to a {@link Geometry}.
- * The algorithm obeys the SFS Boundary Determination Rule to determine
- * whether the point lies on the boundary or not.
+ * A {@link BoundaryNodeRule} may be specified 
+ * to control the evaluation of whether the point lies on the boundary or not
+ * The default rule is to use the the <i>SFS Boundary Determination Rule</i>
  * <p>
+ * Notes:
+ * <ul>
+ * <li>{@link LinearRing}s do not enclose any area - points inside the ring are still in the EXTERIOR of the ring.
+ * </ul>
  * Instances of this class are not reentrant.
  *
  * @version 1.7
  */
 public class PointLocator
 {
+  // default is to use OGC SFS rule
+  private BoundaryNodeRule boundaryRule = 
+  	//BoundaryNodeRule.ENDPOINT_BOUNDARY_RULE; 
+  	BoundaryNodeRule.OGC_SFS_BOUNDARY_RULE;
+
   private boolean isIn;         // true if the point lies in or on any Geometry element
   private int numBoundaries;    // the number of sub-elements whose boundaries the point lies in
 
   public PointLocator() {
   }
 
+  public PointLocator(BoundaryNodeRule boundaryRule)
+  {
+    if (boundaryRule == null)
+      throw new IllegalArgumentException("Rule must be non-null");
+    this.boundaryRule = boundaryRule;
+  }
+
   /**
    * Convenience method to test a point for intersection with
    * a Geometry
@@ -83,9 +96,6 @@ public class PointLocator
   {
     if (geom.isEmpty()) return Location.EXTERIOR;
 
-    if (geom instanceof LinearRing) {
-      return locate(p, (LinearRing) geom);
-    }
     if (geom instanceof LineString) {
       return locate(p, (LineString) geom);
     }
@@ -96,15 +106,18 @@ public class PointLocator
     isIn = false;
     numBoundaries = 0;
     computeLocation(p, geom);
-    if (GeometryGraph.isInBoundary(numBoundaries)) return Location.BOUNDARY;
-    if (numBoundaries > 0 || isIn) return Location.INTERIOR;
+    if (boundaryRule.isInBoundary(numBoundaries))
+      return Location.BOUNDARY;
+    if (numBoundaries > 0 || isIn)
+      return Location.INTERIOR;
+
     return Location.EXTERIOR;
   }
 
   private void computeLocation(Coordinate p, Geometry geom)
   {
-    if (geom instanceof LinearRing) {
-      updateLocationInfo(locate(p, (LinearRing) geom));
+    if (geom instanceof Point) {
+      updateLocationInfo(locate(p, (Point) geom));
     }
     if (geom instanceof LineString) {
       updateLocationInfo(locate(p, (LineString) geom));
@@ -142,8 +155,21 @@ public class PointLocator
     if (loc == Location.BOUNDARY) numBoundaries++;
   }
 
+  private int locate(Coordinate p, Point pt)
+  {
+  	// no point in doing envelope test, since equality test is just as fast
+  	
+    Coordinate ptCoord = pt.getCoordinate();
+    if (ptCoord.equals2D(p))
+      return Location.INTERIOR;
+    return Location.EXTERIOR;
+  }
+
   private int locate(Coordinate p, LineString l)
   {
+  	// bounding-box check
+  	if (! l.getEnvelopeInternal().intersects(p)) return Location.EXTERIOR;
+  	
     Coordinate[] pt = l.getCoordinates();
     if (! l.isClosed()) {
       if (p.equals(pt[0])
@@ -156,32 +182,33 @@ public class PointLocator
     return Location.EXTERIOR;
   }
 
-  private int locate(Coordinate p, LinearRing ring)
+  private int locateInPolygonRing(Coordinate p, LinearRing ring)
   {
-    // can this test be folded into isPointInRing ?
-    if (CGAlgorithms.isOnLine(p, ring.getCoordinates())) {
-      return Location.BOUNDARY;
-    }
-    if (CGAlgorithms.isPointInRing(p, ring.getCoordinates()))
-      return Location.INTERIOR;
-    return Location.EXTERIOR;
+  	// bounding-box check
+  	if (! ring.getEnvelopeInternal().intersects(p)) return Location.EXTERIOR;
+
+  	return CGAlgorithms.locatePointInRing(p, ring.getCoordinates());
   }
 
   private int locate(Coordinate p, Polygon poly)
   {
     if (poly.isEmpty()) return Location.EXTERIOR;
+
     LinearRing shell = (LinearRing) poly.getExteriorRing();
 
-    int shellLoc = locate(p, shell);
+    int shellLoc = locateInPolygonRing(p, shell);
     if (shellLoc == Location.EXTERIOR) return Location.EXTERIOR;
     if (shellLoc == Location.BOUNDARY) return Location.BOUNDARY;
     // now test if the point lies in or on the holes
     for (int i = 0; i < poly.getNumInteriorRing(); i++) {
       LinearRing hole = (LinearRing) poly.getInteriorRingN(i);
-      int holeLoc = locate(p, hole);
+      int holeLoc = locateInPolygonRing(p, hole);
       if (holeLoc == Location.INTERIOR) return Location.EXTERIOR;
       if (holeLoc == Location.BOUNDARY) return Location.BOUNDARY;
     }
     return Location.INTERIOR;
   }
+
+
+
 }
diff --git a/src/com/vividsolutions/jts/algorithm/RayCrossingCounter.java b/src/com/vividsolutions/jts/algorithm/RayCrossingCounter.java
new file mode 100644
index 0000000..e795ac8
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/RayCrossingCounter.java
@@ -0,0 +1,225 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.algorithm;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Counts the number of segments crossed by a horizontal ray extending to the right
+ * from a given point, in an incremental fashion.
+ * This can be used to determine whether a point lies in a {@link Polygonal} geometry.
+ * The class determines the situation where the point lies exactly on a segment.
+ * When being used for Point-In-Polygon determination, this case allows short-circuiting
+ * the evaluation.
+ * <p>
+ * This class handles polygonal geometries with any number of shells and holes.
+ * The orientation of the shell and hole rings is unimportant.
+ * In order to compute a correct location for a given polygonal geometry, 
+ * it is essential that <b>all</b> segments are counted which
+ * <ul>
+ * <li>touch the ray 
+ * <li>lie in in any ring which may contain the point
+ * </ul>
+ * The only exception is when the point-on-segment situation is detected, in which
+ * case no further processing is required.
+ * The implication of the above rule is that segments 
+ * which can be a priori determined to <i>not</i> touch the ray
+ * (i.e. by a test of their bounding box or Y-extent) 
+ * do not need to be counted.  This allows for optimization by indexing.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class RayCrossingCounter 
+{
+	/**
+	 * Determines the {@link Location} of a point in a ring.
+	 * This method is an exemplar of how to use this class.
+	 * 
+	 * @param p the point to test
+	 * @param ring an array of Coordinates forming a ring 
+	 * @return the location of the point in the ring
+	 */
+	public static int locatePointInRing(Coordinate p, Coordinate[] ring) 
+	{
+		RayCrossingCounter counter = new RayCrossingCounter(p);
+	
+    for (int i = 1; i < ring.length; i++) {
+      Coordinate p1 = ring[i];
+      Coordinate p2 = ring[i-1];
+      counter.countSegment(p1, p2);
+      if (counter.isOnSegment())
+      	return counter.getLocation();
+    }
+    return counter.getLocation();
+	}
+	
+	private Coordinate p;
+	private int crossingCount = 0;
+	// true if the test point lies on an input segment
+	private boolean isPointOnSegment = false;
+	
+	public RayCrossingCounter(Coordinate p)
+	{
+		this.p = p;
+	}
+	
+	/**
+	 * Counts a segment
+	 * 
+	 * @param p1 an endpoint of the segment
+	 * @param p2 another endpoint of the segment
+	 */
+	public void countSegment(Coordinate p1, Coordinate p2) {
+		/**
+		 * For each segment, check if it crosses 
+		 * a horizontal ray running from the test point in the positive x direction.
+		 */
+		
+		// check if the segment is strictly to the left of the test point
+		if (p1.x < p.x && p2.x < p.x)
+			return;
+		
+		// check if the point is equal to the current ring vertex
+		if (p.x == p2.x && p.y == p2.y) {
+			isPointOnSegment = true;
+			return;
+		}
+		/**
+		 * For horizontal segments, check if the point is on the segment.
+		 * Otherwise, horizontal segments are not counted.
+		 */
+		if (p1.y == p.y && p2.y == p.y) {
+			double minx = p1.x;
+			double maxx = p2.x;
+			if (minx > maxx) {
+				minx = p2.x;
+				maxx = p1.x;
+			}
+			if (p.x >= minx && p.x <= maxx) {
+				isPointOnSegment = true;
+			}
+			return;
+		}
+		/**
+		 * Evaluate all non-horizontal segments which cross a horizontal ray to the
+		 * right of the test pt. To avoid double-counting shared vertices, we use the
+		 * convention that
+		 * <ul>
+		 * <li>an upward edge includes its starting endpoint, and excludes its
+		 * final endpoint
+		 * <li>a downward edge excludes its starting endpoint, and includes its
+		 * final endpoint
+		 * </ul>
+		 */
+		if (((p1.y > p.y) && (p2.y <= p.y)) 
+				|| ((p2.y > p.y) && (p1.y <= p.y))) {
+			// translate the segment so that the test point lies on the origin
+			double x1 = p1.x - p.x;
+			double y1 = p1.y - p.y;
+			double x2 = p2.x - p.x;
+			double y2 = p2.y - p.y;
+
+			/**
+			 * The translated segment straddles the x-axis. Compute the sign of the
+			 * ordinate of intersection with the x-axis. (y2 != y1, so denominator
+			 * will never be 0.0)
+			 */
+			// double xIntSign = RobustDeterminant.signOfDet2x2(x1, y1, x2, y2) / (y2
+			// - y1);
+			// MD - faster & more robust computation?
+			double xIntSign = RobustDeterminant.signOfDet2x2(x1, y1, x2, y2);
+			if (xIntSign == 0.0) {
+				isPointOnSegment = true;
+				return;
+			}
+			if (y2 < y1)
+				xIntSign = -xIntSign;
+			// xsave = xInt;
+
+			// The segment crosses the ray if the sign is strictly positive.
+			if (xIntSign > 0.0) {
+				crossingCount++;
+			}
+		}
+	}
+	
+/**
+ * Reports whether the point lies exactly on one of the supplied segments.
+ * This method may be called at any time as segments are processed.
+ * If the result of this method is <tt>true</tt>, 
+ * no further segments need be supplied, since the result
+ * will never change again.
+ * 
+ * @return true if the point lies exactly on a segment
+ */
+	public boolean isOnSegment() { return isPointOnSegment; }
+	
+	/**
+	 * Gets the {@link Location} of the point relative to 
+	 * the ring, polygon
+	 * or multipolygon from which the processed segments were provided.
+	 * <p>
+	 * This method only determines the correct location 
+	 * if <b>all</b> relevant segments must have been processed. 
+	 * 
+	 * @return the Location of the point
+	 */
+	public int getLocation() 
+	{
+		if (isPointOnSegment)
+			return Location.BOUNDARY;
+		
+    // The point is in the interior of the ring if the number of X-crossings is
+		// odd.
+    if ((crossingCount % 2) == 1) {
+      return Location.INTERIOR;
+    }
+    return Location.EXTERIOR;
+	}
+    
+	/**
+	 * Tests whether the point lies in or on 
+	 * the ring, polygon
+	 * or multipolygon from which the processed segments were provided.
+	 * <p>
+	 * This method only determines the correct location 
+	 * if <b>all</b> relevant segments must have been processed. 
+	 * 
+	 * @return true if the point lies in or on the supplied polygon
+	 */
+	public boolean isPointInPolygon()
+	{
+		return getLocation() != Location.EXTERIOR;
+	}
+}
diff --git a/src/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.java b/src/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.java
index 04db936..401b758 100644
--- a/src/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.java
+++ b/src/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.java
@@ -34,14 +34,13 @@
  */
 package com.vividsolutions.jts.algorithm;
 
-import com.vividsolutions.jts.geom.*;
 
 /**
  * Stub version of RobustCGAlgorithms for backwards compatibility.
  * Will be deprecated in next release - use CGAlgorithms instead.
  *
  * @version 1.7
- *
+ * @deprecated use CGAlgorithms instead
  */
 public class RobustCGAlgorithms extends CGAlgorithms {
 
diff --git a/src/com/vividsolutions/jts/algorithm/RobustDeterminant.java b/src/com/vividsolutions/jts/algorithm/RobustDeterminant.java
index 15376ce..1169bab 100644
--- a/src/com/vividsolutions/jts/algorithm/RobustDeterminant.java
+++ b/src/com/vividsolutions/jts/algorithm/RobustDeterminant.java
@@ -65,6 +65,14 @@ public class RobustDeterminant {
 
   //public static int callCount = 0; // debugging only
 
+  /**
+   * Computes the sign of the determinant of the 2x2 matrix
+   * with the given entries, in a robust way.
+   * 
+   * @return -1 if the determinant is negative,
+   * @return  1 if the determinant is positive,
+   * @return  0 if the determinant is 0.
+   */
   public static int signOfDet2x2(double x1, double y1, double x2, double y2) {
     // returns -1 if the determinant is negative,
     // returns  1 if the determinant is positive,
@@ -235,6 +243,8 @@ public class RobustDeterminant {
      */
     while (true) {
       count = count + 1;
+      // MD - UNSAFE HACK for testing only!
+//      k = (int) (x2 / x1);
       k = Math.floor(x2 / x1);
       x2 = x2 - k * x1;
       y2 = y2 - k * y1;
@@ -282,6 +292,8 @@ public class RobustDeterminant {
       /*
        *  exchange 1 and 2 role.
        */
+      // MD - UNSAFE HACK for testing only!
+//      k = (int) (x1 / x2);
       k = Math.floor(x1 / x2);
       x1 = x1 - k * x2;
       y1 = y1 - k * y2;
diff --git a/src/com/vividsolutions/jts/algorithm/RobustLineIntersector.java b/src/com/vividsolutions/jts/algorithm/RobustLineIntersector.java
index f275835..84dfdd2 100644
--- a/src/com/vividsolutions/jts/algorithm/RobustLineIntersector.java
+++ b/src/com/vividsolutions/jts/algorithm/RobustLineIntersector.java
@@ -64,21 +64,21 @@ public class RobustLineIntersector
         if (p.equals(p1) || p.equals(p2)) {
           isProper = false;
         }
-        result = DO_INTERSECT;
+        result = POINT_INTERSECTION;
         return;
       }
     }
-    result = DONT_INTERSECT;
+    result = NO_INTERSECTION;
   }
 
-  public int computeIntersect(
+  protected int computeIntersect(
                 Coordinate p1, Coordinate p2,
                 Coordinate q1, Coordinate q2  ) {
     isProper = false;
 
     // first try a fast test to see if the envelopes of the lines intersect
     if (! Envelope.intersects(p1, p2, q1, q2))
-      return DONT_INTERSECT;
+      return NO_INTERSECTION;
 
     // for each endpoint, compute which side of the other segment it lies
     // if both endpoints lie on the same side of the other segment,
@@ -87,14 +87,14 @@ public class RobustLineIntersector
     int Pq2 = CGAlgorithms.orientationIndex(p1, p2, q2);
 
     if ((Pq1>0 && Pq2>0) || (Pq1<0 && Pq2<0)) {
-      return DONT_INTERSECT;
+      return NO_INTERSECTION;
     }
 
     int Qp1 = CGAlgorithms.orientationIndex(q1, q2, p1);
     int Qp2 = CGAlgorithms.orientationIndex(q1, q2, p2);
 
     if ((Qp1>0 && Qp2>0) || (Qp1<0 && Qp2<0)) {
-        return DONT_INTERSECT;
+        return NO_INTERSECTION;
     }
 
     boolean collinear = Pq1 == 0
@@ -104,6 +104,12 @@ public class RobustLineIntersector
     if (collinear) {
       return computeCollinearIntersection(p1, p2, q1, q2);
     }
+    
+    /**
+     * At this point we know that there is a single intersection point
+     * (since the lines are not collinear).
+     */
+    
     /**
      *  Check if the intersection is an endpoint. If it is, copy the endpoint as
      *  the intersection point. Copying the point rather than computing it
@@ -114,16 +120,45 @@ public class RobustLineIntersector
      */
     if (Pq1 == 0 || Pq2 == 0 || Qp1 == 0 || Qp2 == 0) {
       isProper = false;
-      if (Pq1 == 0) {
+      
+      /**
+       * Check for two equal endpoints.  
+       * This is done explicitly rather than by the orientation tests
+       * below in order to improve robustness.
+       * 
+       * [An example where the orientation tests fail to be consistent is
+       * the following (where the true intersection is at the shared endpoint
+       * POINT (19.850257749638203 46.29709338043669)
+       * 
+       * LINESTRING ( 19.850257749638203 46.29709338043669, 20.31970698357233 46.76654261437082 ) 
+       * and 
+       * LINESTRING ( -48.51001596420236 -22.063180333403878, 19.850257749638203 46.29709338043669 )
+       * 
+       * which used to produce the INCORRECT result: (20.31970698357233, 46.76654261437082, NaN)
+       * 
+       */
+      if (p1.equals2D(q1) 
+      		|| p1.equals2D(q2)) {
+      	intPt[0] = p1;
+      }
+      else if (p2.equals2D(q1) 
+      		|| p2.equals2D(q2)) {
+      	intPt[0] = p2;
+      }
+      
+      /**
+       * Now check to see if any endpoint lies on the interior of the other segment.
+       */
+      else if (Pq1 == 0) {
         intPt[0] = new Coordinate(q1);
       }
-      if (Pq2 == 0) {
+      else if (Pq2 == 0) {
         intPt[0] = new Coordinate(q2);
       }
-      if (Qp1 == 0) {
+      else if (Qp1 == 0) {
         intPt[0] = new Coordinate(p1);
       }
-      if (Qp2 == 0) {
+      else if (Qp2 == 0) {
         intPt[0] = new Coordinate(p2);
       }
     }
@@ -131,18 +166,8 @@ public class RobustLineIntersector
       isProper = true;
       intPt[0] = intersection(p1, p2, q1, q2);
     }
-    return DO_INTERSECT;
-  }
-
-/*
-  private boolean intersectsEnvelope(Coordinate p1, Coordinate p2, Coordinate q) {
-    if (((q.x >= Math.min(p1.x, p2.x)) && (q.x <= Math.max(p1.x, p2.x))) &&
-        ((q.y >= Math.min(p1.y, p2.y)) && (q.y <= Math.max(p1.y, p2.y)))) {
-      return true;
-    }
-    return false;
+    return POINT_INTERSECTION;
   }
-*/
 
   private int computeCollinearIntersection(Coordinate p1, Coordinate p2,
       Coordinate q1, Coordinate q2) {
@@ -154,34 +179,34 @@ public class RobustLineIntersector
     if (p1q1p2 && p1q2p2) {
       intPt[0] = q1;
       intPt[1] = q2;
-      return COLLINEAR;
+      return COLLINEAR_INTERSECTION;
     }
     if (q1p1q2 && q1p2q2) {
       intPt[0] = p1;
       intPt[1] = p2;
-      return COLLINEAR;
+      return COLLINEAR_INTERSECTION;
     }
     if (p1q1p2 && q1p1q2) {
       intPt[0] = q1;
       intPt[1] = p1;
-      return q1.equals(p1) && !p1q2p2 && !q1p2q2 ? DO_INTERSECT : COLLINEAR;
+      return q1.equals(p1) && !p1q2p2 && !q1p2q2 ? POINT_INTERSECTION : COLLINEAR_INTERSECTION;
     }
     if (p1q1p2 && q1p2q2) {
       intPt[0] = q1;
       intPt[1] = p2;
-      return q1.equals(p2) && !p1q2p2 && !q1p1q2 ? DO_INTERSECT : COLLINEAR;
+      return q1.equals(p2) && !p1q2p2 && !q1p1q2 ? POINT_INTERSECTION : COLLINEAR_INTERSECTION;
     }
     if (p1q2p2 && q1p1q2) {
       intPt[0] = q2;
       intPt[1] = p1;
-      return q2.equals(p1) && !p1q1p2 && !q1p2q2 ? DO_INTERSECT : COLLINEAR;
+      return q2.equals(p1) && !p1q1p2 && !q1p2q2 ? POINT_INTERSECTION : COLLINEAR_INTERSECTION;
     }
     if (p1q2p2 && q1p2q2) {
       intPt[0] = q2;
       intPt[1] = p2;
-      return q2.equals(p2) && !p1q1p2 && !q1p1q2 ? DO_INTERSECT : COLLINEAR;
+      return q2.equals(p2) && !p1q1p2 && !q1p1q2 ? POINT_INTERSECTION : COLLINEAR_INTERSECTION;
     }
-    return DONT_INTERSECT;
+    return NO_INTERSECTION;
   }
 
   /**
@@ -195,50 +220,31 @@ public class RobustLineIntersector
   private Coordinate intersection(
     Coordinate p1, Coordinate p2, Coordinate q1, Coordinate q2)
   {
-    Coordinate n1 = new Coordinate(p1);
-    Coordinate n2 = new Coordinate(p2);
-    Coordinate n3 = new Coordinate(q1);
-    Coordinate n4 = new Coordinate(q2);
-    Coordinate normPt = new Coordinate();
-    normalizeToEnvCentre(n1, n2, n3, n4, normPt);
-
-    Coordinate intPt = null;
-    try {
-      intPt = HCoordinate.intersection(n1, n2, n3, n4);
-    }
-    catch (NotRepresentableException e) {
-      Assert.shouldNeverReachHere("Coordinate for intersection is not calculable");
-    }
-
-    intPt.x += normPt.x;
-    intPt.y += normPt.y;
+    Coordinate intPt = intersectionWithNormalization(p1, p2, q1, q2);
+  	// testing only
+//    Coordinate intPt = safeHCoordinateIntersection(p1, p2, q1, q2);
 
     /**
-     *
+     * Due to rounding it can happen that the computed intersection is
+     * outside the envelopes of the input segments.  Clearly this
+     * is inconsistent. 
+     * This code checks this condition and forces a more reasonable answer
+     * 
      * MD - May 4 2005 - This is still a problem.  Here is a failure case:
      *
      * LINESTRING (2089426.5233462777 1180182.3877339689, 2085646.6891757075 1195618.7333999649)
      * LINESTRING (1889281.8148903656 1997547.0560044837, 2259977.3672235999 483675.17050843034)
      * int point = (2097408.2633752143,1144595.8008114607)
+     * 
+     * MD - Dec 14 2006 - This does not seem to be a failure case any longer
      */
     if (! isInSegmentEnvelopes(intPt)) {
-      System.out.println("Intersection outside segment envelopes: " + intPt);
+//      System.out.println("Intersection outside segment envelopes: " + intPt);
+//      System.out.println("Segments: " + this);
+      // compute a safer result
+      intPt = CentralEndpointIntersector.getIntersection(p1, p2, q1, q2);
+//      System.out.println("Snapped to " + intPt);
     }
-    /*
-     // disabled until a better solution is found
-    if (! isInSegmentEnvelopes(intPt)) {
-      System.out.println("first value outside segment envelopes: " + intPt);
-
-      IteratedBisectionIntersector ibi = new IteratedBisectionIntersector(p1, p2, q1, q2);
-      intPt = ibi.getIntersection();
-    }
-    if (! isInSegmentEnvelopes(intPt)) {
-      System.out.println("ERROR - outside segment envelopes: " + intPt);
-
-      IteratedBisectionIntersector ibi = new IteratedBisectionIntersector(p1, p2, q1, q2);
-      Coordinate testPt = ibi.getIntersection();
-    }
-    */
 
     if (precisionModel != null) {
       precisionModel.makePrecise(intPt);
@@ -247,6 +253,51 @@ public class RobustLineIntersector
     return intPt;
   }
 
+  private Coordinate intersectionWithNormalization(
+    Coordinate p1, Coordinate p2, Coordinate q1, Coordinate q2)
+    {
+      Coordinate n1 = new Coordinate(p1);
+      Coordinate n2 = new Coordinate(p2);
+      Coordinate n3 = new Coordinate(q1);
+      Coordinate n4 = new Coordinate(q2);
+      Coordinate normPt = new Coordinate();
+      normalizeToEnvCentre(n1, n2, n3, n4, normPt);
+
+      Coordinate intPt = safeHCoordinateIntersection(n1, n2, n3, n4);
+
+      intPt.x += normPt.x;
+      intPt.y += normPt.y;
+      
+      return intPt;
+  }
+  
+  /**
+   * Computes a segment intersection using homogeneous coordinates.
+   * Round-off error can cause the raw computation to fail, 
+   * (usually due to the segments being approximately parallel).
+   * If this happens, a reasonable approximation is computed instead.
+   * 
+   * @param p1 a segment endpoint
+   * @param p2 a segment endpoint
+   * @param q1 a segment endpoint
+   * @param q2 a segment endpoint
+   * @return the computed intersection point
+   */
+  private Coordinate safeHCoordinateIntersection(Coordinate p1, Coordinate p2, Coordinate q1, Coordinate q2)
+  {
+    Coordinate intPt = null;
+    try {
+      intPt = HCoordinate.intersection(p1, p2, q1, q2);
+    }
+    catch (NotRepresentableException e) {
+//    	System.out.println("Not calculable: " + this);
+      // compute an approximate result
+      intPt = CentralEndpointIntersector.getIntersection(p1, p2, q1, q2);
+ //     System.out.println("Snapped to " + intPt);
+    }
+    return intPt;
+  }
+
   /**
    * Normalize the supplied coordinates so that
    * their minimum ordinate values lie at the origin.
diff --git a/src/com/vividsolutions/jts/algorithm/SIRtreePointInRing.java b/src/com/vividsolutions/jts/algorithm/SIRtreePointInRing.java
deleted file mode 100644
index 2796936..0000000
--- a/src/com/vividsolutions/jts/algorithm/SIRtreePointInRing.java
+++ /dev/null
@@ -1,127 +0,0 @@
-
-/*
- * The JTS Topology Suite is a collection of Java classes that
- * implement the fundamental operations required to validate a given
- * geo-spatial data set to a known topological specification.
- *
- * Copyright (C) 2001 Vivid Solutions
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * For more information, contact:
- *
- *     Vivid Solutions
- *     Suite #1A
- *     2328 Government Street
- *     Victoria BC  V8T 5G5
- *     Canada
- *
- *     (250)385-6040
- *     www.vividsolutions.com
- */
-package com.vividsolutions.jts.algorithm;
-
-import java.util.*;
-import com.vividsolutions.jts.geom.*;
-import com.vividsolutions.jts.index.strtree.*;
-
-/**
- * Implements {@link PointInRing}
- * using a {@link SIRtree} index to
- * increase performance.
- *
- * @version 1.7
- */
-public class SIRtreePointInRing implements PointInRing {
-
-  private LinearRing ring;
-  private SIRtree sirTree;
-  private int crossings = 0;  // number of segment/ray crossings
-
-  public SIRtreePointInRing(LinearRing ring)
-  {
-    this.ring = ring;
-    buildIndex();
-  }
-
-  private void buildIndex()
-  {
-    Envelope env = ring.getEnvelopeInternal();
-    sirTree = new SIRtree();
-
-    Coordinate[] pts = ring.getCoordinates();
-    for (int i = 1; i < pts.length; i++) {
-      if (pts[i-1].equals(pts[i])) { continue; } //Optimization suggested by MD. [Jon Aquino]
-      LineSegment seg = new LineSegment(pts[i - 1], pts[i]);
-      sirTree.insert(seg.p0.y, seg.p1.y, seg);
-    }
-  }
-
-  public boolean isInside(Coordinate pt)
-  {
-    crossings = 0;
-
-    // test all segments intersected by vertical ray at pt
-
-    List segs = sirTree.query(pt.y);
-//System.out.println("query size = " + segs.size());
-
-    for (Iterator i = segs.iterator(); i.hasNext(); ) {
-      LineSegment seg = (LineSegment) i.next();
-      testLineSegment(pt, seg);
-    }
-
-    /*
-     *  p is inside if number of crossings is odd.
-     */
-    if ((crossings % 2) == 1) {
-      return true;
-    }
-    return false;
-  }
-
-  private void testLineSegment(Coordinate p, LineSegment seg) {
-    double xInt;  // x intersection of segment with ray
-    double x1;    // translated coordinates
-    double y1;
-    double x2;
-    double y2;
-
-    /*
-     *  Test if segment crosses ray from test point in positive x direction.
-     */
-    Coordinate p1 = seg.p0;
-    Coordinate p2 = seg.p1;
-    x1 = p1.x - p.x;
-    y1 = p1.y - p.y;
-    x2 = p2.x - p.x;
-    y2 = p2.y - p.y;
-
-    if (((y1 > 0) && (y2 <= 0)) ||
-        ((y2 > 0) && (y1 <= 0))) {
-        /*
-         *  segment straddles x axis, so compute intersection.
-         */
-      xInt = RobustDeterminant.signOfDet2x2(x1, y1, x2, y2) / (y2 - y1);
-        //xsave = xInt;
-        /*
-         *  crosses ray if strictly positive intersection.
-         */
-      if (0.0 < xInt) {
-        crossings++;
-      }
-    }
-  }
-}
diff --git a/src/com/vividsolutions/jts/algorithm/VectorMath.java b/src/com/vividsolutions/jts/algorithm/VectorMath.java
new file mode 100644
index 0000000..595e45d
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/VectorMath.java
@@ -0,0 +1,86 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.algorithm;
+
+import com.vividsolutions.jts.geom.Coordinate;
+
+/**
+ * Functions for performing vector mathematics.
+ * 
+ * @author Martin Davis
+ * @version 1.0
+ */
+
+public class VectorMath 
+{
+    /**
+     * Computes the normal vector to the triangle p0-p1-p2. In order to compute the normal each
+     * triangle coordinate must have a Z value. If this is not the case, the returned Coordinate
+     * will have NaN values. The returned vector has unit length.
+     * 
+     * @param p0
+     * @param p1
+     * @param p2
+     * @return
+     */
+    public static Coordinate normalToTriangle(Coordinate p0, Coordinate p1, Coordinate p2) {
+        Coordinate v1 = new Coordinate(p1.x - p0.x, p1.y - p0.y, p1.z - p0.z);
+        Coordinate v2 = new Coordinate(p2.x - p0.x, p2.y - p0.y, p2.z - p0.z);
+        Coordinate cp = crossProduct(v1, v2);
+        normalize(cp);
+        return cp;
+    }
+
+    public static void normalize(Coordinate v) {
+        double absVal = Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
+        v.x /= absVal;
+        v.y /= absVal;
+        v.z /= absVal;
+    }
+
+    public static Coordinate crossProduct(Coordinate v1, Coordinate v2) {
+        double x = det(v1.y, v1.z, v2.y, v2.z);
+        double y = -det(v1.x, v1.z, v2.x, v2.z);
+        double z = det(v1.x, v1.y, v2.x, v2.y);
+        return new Coordinate(x, y, z);
+    }
+
+    public static double dotProduct(Coordinate v1, Coordinate v2) {
+        return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z;
+    }
+
+    public static double det(double a1, double a2, double b1, double b2) {
+        return (a1 * b2) - (a2 * b1);
+    }
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/algorithm/distance/DiscreteHausdorffDistance.java b/src/com/vividsolutions/jts/algorithm/distance/DiscreteHausdorffDistance.java
new file mode 100644
index 0000000..ac67894
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/distance/DiscreteHausdorffDistance.java
@@ -0,0 +1,226 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.algorithm.distance;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * An algorithm for computing a distance metric
+ * which is an approximation to the Hausdorff Distance
+ * based on a discretization of the input {@link Geometry}.
+ * The algorithm computes the Hausdorff distance restricted to discrete points
+ * for one of the geometries.
+ * The points can be either the vertices of the geometries (the default), 
+ * or the geometries with line segments densified by a given fraction.
+ * Also determines two points of the Geometries which are separated by the computed distance.
+* <p>
+ * This algorithm is an approximation to the standard Hausdorff distance.
+ * Specifically, 
+ * <pre>
+ *    for all geometries a, b:    DHD(a, b) <= HD(a, b)
+ * </pre>
+ * The approximation can be made as close as needed by densifying the input geometries.  
+ * In the limit, this value will approach the true Hausdorff distance:
+ * <pre>
+ *    DHD(A, B, densifyFactor) -> HD(A, B) as densifyFactor -> 0.0
+ * </pre>
+ * The default approximation is exact or close enough for a large subset of useful cases.
+ * Examples of these are:
+ * <ul>
+ * <li>computing distance between Linestrings that are roughly parallel to each other,
+ * and roughly equal in length.  This occurs in matching linear networks.
+ * <li>Testing similarity of geometries.
+ * </ul>
+ * An example where the default approximation is not close is:
+ * <pre>
+ *   A = LINESTRING (0 0, 100 0, 10 100, 10 100)
+ *   B = LINESTRING (0 100, 0 10, 80 10)
+ *   
+ *   DHD(A, B) = 22.360679774997898
+ *   HD(A, B) ~= 47.8
+ * </pre>
+ */
+public class DiscreteHausdorffDistance
+{
+  public static double distance(Geometry g0, Geometry g1)
+  {
+    DiscreteHausdorffDistance dist = new DiscreteHausdorffDistance(g0, g1);
+    return dist.distance();
+  }
+
+  public static double distance(Geometry g0, Geometry g1, double densifyFrac)
+  {
+    DiscreteHausdorffDistance dist = new DiscreteHausdorffDistance(g0, g1);
+    dist.setDensifyFraction(densifyFrac);
+    return dist.distance();
+  }
+
+  private Geometry g0;
+  private Geometry g1;
+  private PointPairDistance ptDist = new PointPairDistance();
+  
+  /**
+   * Value of 0.0 indicates that no densification should take place
+   */
+  private double densifyFrac = 0.0;
+
+  public DiscreteHausdorffDistance(Geometry g0, Geometry g1)
+  {
+    this.g0 = g0;
+    this.g1 = g1;
+  }
+
+  /**
+   * Sets the fraction by which to densify each segment.
+   * Each segment will be (virtually) split into a number of equal-length
+   * subsegments, whose fraction of the total length is closest
+   * to the given fraction.
+   * 
+   * @param densifyPercent
+   */
+  public void setDensifyFraction(double densifyFrac)
+  {
+    if (densifyFrac > 1.0 
+        || densifyFrac <= 0.0)
+      throw new IllegalArgumentException("Fraction is not in range (0.0 - 1.0]");
+        
+    this.densifyFrac = densifyFrac;
+  }
+  
+  public double distance() 
+  { 
+    compute(g0, g1);
+    return ptDist.getDistance(); 
+  }
+
+  public double orientedDistance() 
+  { 
+    computeOrientedDistance(g0, g1, ptDist);
+    return ptDist.getDistance(); 
+  }
+
+  public Coordinate[] getCoordinates() { return ptDist.getCoordinates(); }
+
+  private void compute(Geometry g0, Geometry g1)
+  {
+    computeOrientedDistance(g0, g1, ptDist);
+    computeOrientedDistance(g1, g0, ptDist);
+  }
+
+  private void computeOrientedDistance(Geometry discreteGeom, Geometry geom, PointPairDistance ptDist)
+  {
+    MaxPointDistanceFilter distFilter = new MaxPointDistanceFilter(geom);
+    discreteGeom.apply(distFilter);
+    ptDist.setMaximum(distFilter.getMaxPointDistance());
+    
+    if (densifyFrac > 0) {
+      MaxDensifiedByFractionDistanceFilter fracFilter = new MaxDensifiedByFractionDistanceFilter(geom, densifyFrac);
+      discreteGeom.apply(fracFilter);
+      ptDist.setMaximum(fracFilter.getMaxPointDistance());
+      
+    }
+  }
+
+  public static class MaxPointDistanceFilter
+      implements CoordinateFilter
+  {
+    private PointPairDistance maxPtDist = new PointPairDistance();
+    private PointPairDistance minPtDist = new PointPairDistance();
+    private DistanceToPoint euclideanDist = new DistanceToPoint();
+    private Geometry geom;
+
+    public MaxPointDistanceFilter(Geometry geom)
+    {
+      this.geom = geom;
+    }
+
+    public void filter(Coordinate pt)
+    {
+      minPtDist.initialize();
+      DistanceToPoint.computeDistance(geom, pt, minPtDist);
+      maxPtDist.setMaximum(minPtDist);
+    }
+
+    public PointPairDistance getMaxPointDistance() { return maxPtDist; }
+  }
+  
+  public static class MaxDensifiedByFractionDistanceFilter 
+  implements CoordinateSequenceFilter 
+  {
+  private PointPairDistance maxPtDist = new PointPairDistance();
+  private PointPairDistance minPtDist = new PointPairDistance();
+  private Geometry geom;
+  private int numSubSegs = 0;
+
+  public MaxDensifiedByFractionDistanceFilter(Geometry geom, double fraction) {
+    this.geom = geom;
+    numSubSegs = (int) Math.rint(1.0/fraction);
+  }
+
+  public void filter(CoordinateSequence seq, int index) 
+  {
+    /**
+     * This logic also handles skipping Point geometries
+     */
+    if (index == 0)
+      return;
+    
+    Coordinate p0 = seq.getCoordinate(index - 1);
+    Coordinate p1 = seq.getCoordinate(index);
+    
+    double delx = (p1.x - p0.x)/numSubSegs;
+    double dely = (p1.y - p0.y)/numSubSegs;
+
+    for (int i = 0; i < numSubSegs; i++) {
+      double x = p0.x + i*delx;
+      double y = p0.y + i*dely;
+      Coordinate pt = new Coordinate(x, y);
+      minPtDist.initialize();
+      DistanceToPoint.computeDistance(geom, pt, minPtDist);
+      maxPtDist.setMaximum(minPtDist);  
+    }
+    
+    
+  }
+
+  public boolean isGeometryChanged() { return false; }
+  
+  public boolean isDone() { return false; }
+  
+  public PointPairDistance getMaxPointDistance() {
+    return maxPtDist;
+  }
+}
+
+}
diff --git a/src/com/vividsolutions/jts/algorithm/distance/DistanceToPoint.java b/src/com/vividsolutions/jts/algorithm/distance/DistanceToPoint.java
new file mode 100644
index 0000000..8162e20
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/distance/DistanceToPoint.java
@@ -0,0 +1,92 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.algorithm.distance;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Computes the Euclidean distance (L2 metric) from a Point to a Geometry.
+ * Also computes two points which are separated by the distance.
+ */
+public class DistanceToPoint {
+
+  // used for point-line distance calculation
+  private static LineSegment tempSegment = new LineSegment();
+
+  public DistanceToPoint() {
+  }
+
+  public static void computeDistance(Geometry geom, Coordinate pt, PointPairDistance ptDist)
+  {
+    if (geom instanceof LineString) {
+      computeDistance((LineString) geom, pt, ptDist);
+    }
+    else if (geom instanceof Polygon) {
+      computeDistance((Polygon) geom, pt, ptDist);
+    }
+    else if (geom instanceof GeometryCollection) {
+      GeometryCollection gc = (GeometryCollection) geom;
+      for (int i = 0; i < gc.getNumGeometries(); i++) {
+        Geometry g = gc.getGeometryN(i);
+        computeDistance(g, pt, ptDist);
+      }
+    }
+    else { // assume geom is Point
+      ptDist.setMinimum(geom.getCoordinate(), pt);
+    }
+  }
+  public static void computeDistance(LineString line, Coordinate pt, PointPairDistance ptDist)
+  {
+    Coordinate[] coords = line.getCoordinates();
+    for (int i = 0; i < coords.length - 1; i++) {
+      tempSegment.setCoordinates(coords[i], coords[i + 1]);
+      // this is somewhat inefficient - could do better
+      Coordinate closestPt = tempSegment.closestPoint(pt);
+      ptDist.setMinimum(closestPt, pt);
+    }
+  }
+
+  public static void computeDistance(LineSegment segment, Coordinate pt, PointPairDistance ptDist)
+  {
+    Coordinate closestPt = segment.closestPoint(pt);
+    ptDist.setMinimum(closestPt, pt);
+  }
+
+  public static void computeDistance(Polygon poly, Coordinate pt, PointPairDistance ptDist)
+  {
+    computeDistance(poly.getExteriorRing(), pt, ptDist);
+    for (int i = 0; i < poly.getNumInteriorRing(); i++) {
+      computeDistance(poly.getInteriorRingN(i), pt, ptDist);
+    }
+  }
+}
diff --git a/src/com/vividsolutions/jts/algorithm/distance/PointPairDistance.java b/src/com/vividsolutions/jts/algorithm/distance/PointPairDistance.java
new file mode 100644
index 0000000..8f6b365
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/distance/PointPairDistance.java
@@ -0,0 +1,120 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.algorithm.distance;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.io.WKTWriter;
+
+/**
+ * Contains a pair of points and the distance between them.
+ * Provides methods to update with a new point pair with
+ * either maximum or minimum distance.
+ */
+public class PointPairDistance {
+
+  private Coordinate[] pt = { new Coordinate(), new Coordinate() };
+  private double distance = Double.NaN;
+  private boolean isNull = true;
+
+  public PointPairDistance()
+  {
+  }
+
+  public void initialize() { isNull = true; }
+
+  public void initialize(Coordinate p0, Coordinate p1)
+  {
+    pt[0].setCoordinate(p0);
+    pt[1].setCoordinate(p1);
+    distance = p0.distance(p1);
+    isNull = false;
+  }
+
+  /**
+   * Initializes the points, avoiding recomputing the distance.
+   * @param p0
+   * @param p1
+   * @param distance the distance between p0 and p1
+   */
+  private void initialize(Coordinate p0, Coordinate p1, double distance)
+  {
+    pt[0].setCoordinate(p0);
+    pt[1].setCoordinate(p1);
+    this.distance = distance;
+    isNull = false;
+  }
+
+  public double getDistance() { return distance; }
+
+  public Coordinate[] getCoordinates() { return pt; }
+
+  public Coordinate getCoordinate(int i) { return pt[i]; }
+
+  public void setMaximum(PointPairDistance ptDist)
+  {
+    setMaximum(ptDist.pt[0], ptDist.pt[1]);
+  }
+
+  public void setMaximum(Coordinate p0, Coordinate p1)
+  {
+    if (isNull) {
+      initialize(p0, p1);
+      return;
+    }
+    double dist = p0.distance(p1);
+    if (dist > distance)
+      initialize(p0, p1, dist);
+  }
+
+  public void setMinimum(PointPairDistance ptDist)
+  {
+    setMinimum(ptDist.pt[0], ptDist.pt[1]);
+  }
+
+  public void setMinimum(Coordinate p0, Coordinate p1)
+  {
+    if (isNull) {
+      initialize(p0, p1);
+      return;
+    }
+    double dist = p0.distance(p1);
+    if (dist < distance)
+      initialize(p0, p1, dist);
+  }
+  
+  public String toString()
+  {
+  	return WKTWriter.toLineString(pt[0], pt[1]);
+  }
+}
diff --git a/src/com/vividsolutions/jts/algorithm/distance/package.html b/src/com/vividsolutions/jts/algorithm/distance/package.html
new file mode 100644
index 0000000..ee42f08
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/distance/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Classes to compute distance metrics between geonetries.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/algorithm/locate/IndexedPointInAreaLocator.java b/src/com/vividsolutions/jts/algorithm/locate/IndexedPointInAreaLocator.java
new file mode 100644
index 0000000..8600f62
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/locate/IndexedPointInAreaLocator.java
@@ -0,0 +1,157 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.algorithm.locate;
+
+import java.util.*;
+
+import com.vividsolutions.jts.algorithm.RayCrossingCounter;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.util.*;
+import com.vividsolutions.jts.index.*;
+import com.vividsolutions.jts.index.intervalrtree.*;
+
+/**
+ * Determines the {@link Location} of {@link Coordinate}s relative to
+ * a {@link Polygonal} geometry, using indexing for efficiency.
+ * This algorithm is suitable for use in cases where
+ * many points will be tested against a given area.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class IndexedPointInAreaLocator 
+  implements PointOnGeometryLocator
+{
+  private IntervalIndexedGeometry index;
+  
+  /**
+   * Creates a new locator for a given {@link Geometry}
+   * @param g the Geometry to locate in
+   */
+  public IndexedPointInAreaLocator(Geometry g)
+  {
+    if (! (g instanceof Polygonal))
+      throw new IllegalArgumentException("Argument must be Polygonal");
+    buildIndex(g);
+  }
+  
+  private void buildIndex(Geometry g)
+  {
+    index = new IntervalIndexedGeometry(g);
+  }
+    
+  /**
+   * Determines the {@link Location} of a point in an areal {@link Geometry}.
+   * 
+   * @param p the point to test
+   * @return the location of the point in the geometry  
+   */
+  public int locate(Coordinate p)
+  {
+    RayCrossingCounter rcc = new RayCrossingCounter(p);
+    
+    SegmentVisitor visitor = new SegmentVisitor(rcc);
+    index.query(p.y, p.y, visitor);
+  
+    /*
+     // MD - slightly slower alternative
+    List segs = index.query(p.y, p.y);
+    countSegs(rcc, segs);
+    */
+    
+    return rcc.getLocation();
+  }
+  
+  private static class SegmentVisitor
+    implements ItemVisitor
+  {
+    private RayCrossingCounter counter;
+    
+    public SegmentVisitor(RayCrossingCounter counter)
+    {
+      this.counter = counter;
+    }
+    
+    public void visitItem(Object item)
+    {
+      LineSegment seg = (LineSegment) item;
+      counter.countSegment(seg.getCoordinate(0), seg.getCoordinate(1));
+    }
+  }
+  
+  private static class IntervalIndexedGeometry
+  {
+    private SortedPackedIntervalRTree index= new SortedPackedIntervalRTree();
+
+    public IntervalIndexedGeometry(Geometry geom)
+    {
+      init(geom);
+    }
+    
+    private void init(Geometry geom)
+    {
+      List lines = LinearComponentExtracter.getLines(geom);
+      for (Iterator i = lines.iterator(); i.hasNext(); ) {
+        LineString line = (LineString) i.next();
+        Coordinate[] pts = line.getCoordinates();
+        addLine(pts);
+      }
+    }
+    
+    private void addLine(Coordinate[] pts)
+    {
+      for (int i = 1; i < pts.length; i++) {
+        LineSegment seg = new LineSegment(pts[i-1], pts[i]);
+        double min = Math.min(seg.p0.y, seg.p1.y);
+        double max = Math.max(seg.p0.y, seg.p1.y);
+        index.insert(min, max, seg);
+      }
+    }
+    
+    public List query(double min, double max)
+    {
+      ArrayListVisitor visitor = new ArrayListVisitor();
+      index.query(min, max, visitor);
+      return visitor.getItems();
+    }
+    
+    public void query(double min, double max, ItemVisitor visitor)
+    {
+      index.query(min, max, visitor);
+    }
+  }
+
+}
+
+
+
diff --git a/src/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.java b/src/com/vividsolutions/jts/algorithm/locate/PointOnGeometryLocator.java
similarity index 72%
copy from src/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.java
copy to src/com/vividsolutions/jts/algorithm/locate/PointOnGeometryLocator.java
index 04db936..ff841c0 100644
--- a/src/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.java
+++ b/src/com/vividsolutions/jts/algorithm/locate/PointOnGeometryLocator.java
@@ -1,5 +1,3 @@
-
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -32,17 +30,23 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.algorithm;
+package com.vividsolutions.jts.algorithm.locate;
 
 import com.vividsolutions.jts.geom.*;
 
 /**
- * Stub version of RobustCGAlgorithms for backwards compatibility.
- * Will be deprecated in next release - use CGAlgorithms instead.
- *
- * @version 1.7
- *
+ * An interface for classes which determine the {@link Location} of
+ * points in a {@link Geometry}.
+ * 
+ * @author Martin Davis
  */
-public class RobustCGAlgorithms extends CGAlgorithms {
-
+public interface PointOnGeometryLocator 
+{
+  /**
+   * Determines the {@link Location} of a point in the {@link Geometry}.
+   * 
+   * @param p the point to test
+   * @return the location of the point in the geometry  
+   */
+	int locate(Coordinate p);
 }
diff --git a/src/com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.java b/src/com/vividsolutions/jts/algorithm/locate/SimplePointInAreaLocator.java
similarity index 61%
rename from src/com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.java
rename to src/com/vividsolutions/jts/algorithm/locate/SimplePointInAreaLocator.java
index baf67fe..602ad3d 100644
--- a/src/com/vividsolutions/jts/algorithm/SimplePointInAreaLocator.java
+++ b/src/com/vividsolutions/jts/algorithm/locate/SimplePointInAreaLocator.java
@@ -1,6 +1,3 @@
-
-
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -33,26 +30,36 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.algorithm;
+package com.vividsolutions.jts.algorithm.locate;
 
 import java.util.Iterator;
+
+import com.vividsolutions.jts.algorithm.CGAlgorithms;
 import com.vividsolutions.jts.geom.*;
 
 /**
- * Computes whether a point
- * lies in the interior of an area {@link Geometry}.
+ * Computes the location of points
+ * relative to a {@link Polygonal} {@link Geometry},
+ * using a simple O(n) algorithm.
+ * This algorithm is suitable for use in cases where
+ * only one or a few points will be tested against a given area.
+ * <p>
  * The algorithm used is only guaranteed to return correct results
  * for points which are <b>not</b> on the boundary of the Geometry.
  *
  * @version 1.7
  */
 public class SimplePointInAreaLocator
+	implements PointOnGeometryLocator
 {
 
   /**
-   * locate is the main location function.  It handles both single-element
-   * and multi-element Geometries.  The algorithm for multi-element Geometries
-   * is more complex, since it has to take into account the boundaryDetermination rule
+   * Determines the {@link Location} of a point in an areal {@link Geometry}.
+   * Currently this will never return a value of BOUNDARY.  
+   * 
+   * @param p the point to test
+   * @param geom the areal geometry to test
+   * @return the Location of the point in the geometry  
    */
   public static int locate(Coordinate p, Geometry geom)
   {
@@ -84,14 +91,39 @@ public class SimplePointInAreaLocator
   {
     if (poly.isEmpty()) return false;
     LinearRing shell = (LinearRing) poly.getExteriorRing();
-    if (! CGAlgorithms.isPointInRing(p, shell.getCoordinates())) return false;
+    if (! isPointInRing(p, shell)) return false;
     // now test if the point lies in or on the holes
     for (int i = 0; i < poly.getNumInteriorRing(); i++) {
       LinearRing hole = (LinearRing) poly.getInteriorRingN(i);
-      if (CGAlgorithms.isPointInRing(p, hole.getCoordinates())) return false;
+      if (isPointInRing(p, hole)) return false;
     }
     return true;
   }
 
+  /**
+   * Determines whether a point lies in a LinearRing,
+   * using the ring envelope to short-circuit if possible.
+   * 
+   * @param p the point to test
+   * @param ring a linear ring
+   * @return true if the point lies inside the ring
+   */
+  private static boolean isPointInRing(Coordinate p, LinearRing ring)
+  {
+  	// short-circuit if point is not in ring envelope
+  	if (! ring.getEnvelopeInternal().intersects(p))
+  		return false;
+  	return CGAlgorithms.isPointInRing(p, ring.getCoordinates());
+  }
+
+	private Geometry geom;
+
+	public SimplePointInAreaLocator(Geometry geom) {
+		this.geom = geom;
+	}
+
+	public int locate(Coordinate p) {
+		return SimplePointInAreaLocator.locate(p, geom);
+	}
 
 }
diff --git a/src/com/vividsolutions/jts/algorithm/locate/package.html b/src/com/vividsolutions/jts/algorithm/locate/package.html
new file mode 100644
index 0000000..2b4bebe
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/locate/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Classes to determine the topological location of points in geometries.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/algorithm/match/AreaSimilarityMeasure.java b/src/com/vividsolutions/jts/algorithm/match/AreaSimilarityMeasure.java
new file mode 100644
index 0000000..381cb07
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/match/AreaSimilarityMeasure.java
@@ -0,0 +1,40 @@
+package com.vividsolutions.jts.algorithm.match;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.algorithm.distance.*;
+
+/**
+ * Measures the degree of similarity between two {@link Geometry}s
+ * using the area of intersection between the geometries.
+ * The measure is normalized to lie in the range [0, 1].
+ * Higher measures indicate a great degree of similarity.
+ * <p>
+ * NOTE: Currently experimental and incomplete.
+ * 
+ * @author mbdavis
+ *
+ */
+public class AreaSimilarityMeasure 
+	implements SimilarityMeasure
+{
+	/*
+	public static double measure(Geometry a, Geometry b)
+	{
+		AreaSimilarityMeasure gv = new AreaSimilarityMeasure(a, b);
+		return gv.measure();
+	}
+	*/
+	
+	public AreaSimilarityMeasure()
+	{
+	}
+	
+	public double measure(Geometry g1, Geometry g2)
+	{		
+		double areaInt = g1.intersection(g2).getArea();
+		double areaUnion = g1.union(g2).getArea();
+		return areaInt / areaUnion;
+	}
+	
+	
+}
diff --git a/src/com/vividsolutions/jts/algorithm/match/HausdorffSimilarityMeasure.java b/src/com/vividsolutions/jts/algorithm/match/HausdorffSimilarityMeasure.java
new file mode 100644
index 0000000..238404a
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/match/HausdorffSimilarityMeasure.java
@@ -0,0 +1,62 @@
+package com.vividsolutions.jts.algorithm.match;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.algorithm.distance.*;
+
+/**
+ * Measures the degree of similarity between two {@link Geometry}s
+ * using the Hausdorff distance metric.
+ * The measure is normalized to lie in the range [0, 1].
+ * Higher measures indicate a great degree of similarity.
+ * <p>
+ * The measure is computed by computing the Hausdorff distance
+ * between the input geometries, and then normalizing
+ * this by dividing it by the diagonal distance across 
+ * the envelope of the combined geometries.
+ * 
+ * @author mbdavis
+ *
+ */
+public class HausdorffSimilarityMeasure 
+	implements SimilarityMeasure
+{
+	/*
+	public static double measure(Geometry a, Geometry b)
+	{
+		HausdorffSimilarityMeasure gv = new HausdorffSimilarityMeasure(a, b);
+		return gv.measure();
+	}
+	*/
+	
+	public HausdorffSimilarityMeasure()
+	{
+	}
+	
+	/*
+	 * Densify a small amount to increase accuracy of Hausdorff distance
+	 */
+	private static final double DENSIFY_FRACTION = 0.25;
+	
+	public double measure(Geometry g1, Geometry g2)
+	{		
+		double distance = DiscreteHausdorffDistance.distance(g1, g2, DENSIFY_FRACTION);
+		
+		Envelope env = new Envelope(g1.getEnvelopeInternal());
+		env.expandToInclude(g2.getEnvelopeInternal());
+		double envSize = diagonalSize(env);
+		// normalize so that more similarity produces a measure closer to 1
+		double measure = 1 - distance / envSize;
+		
+		//System.out.println("Hausdorff distance = " + distance + ", measure = " + measure);
+		return measure;
+	}
+	
+	public static double diagonalSize(Envelope env)
+	{
+		if (env.isNull()) return 0.0;
+		
+		double width = env.getWidth(); 
+		double hgt = env.getHeight();
+		return Math.sqrt(width * width + hgt * hgt);
+	}
+}
diff --git a/src/com/vividsolutions/jts/algorithm/match/SimilarityMeasure.java b/src/com/vividsolutions/jts/algorithm/match/SimilarityMeasure.java
new file mode 100644
index 0000000..bbdddb8
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/match/SimilarityMeasure.java
@@ -0,0 +1,22 @@
+package com.vividsolutions.jts.algorithm.match;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * An interface for classes which measures the degree of similarity between two {@link Geometry}s.
+ * The computed measure lies in the range [0, 1].
+ * Higher measures indicate a great degree of similarity.
+ * A measure of 1.0 indicates that the input geometries are identical
+ * A measure of 0.0 indicates that the geometries
+ * have essentially no similarity.
+ * The precise definition of "identical" and "no similarity" may depend on the 
+ * exact algorithm being used.
+ * 
+ * @author mbdavis
+ *
+ */
+public interface SimilarityMeasure
+{
+	
+	double measure(Geometry g1, Geometry g2);
+}
diff --git a/src/com/vividsolutions/jts/algorithm/match/SimilarityMeasureCombiner.java b/src/com/vividsolutions/jts/algorithm/match/SimilarityMeasureCombiner.java
new file mode 100644
index 0000000..cb88f6d
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/match/SimilarityMeasureCombiner.java
@@ -0,0 +1,16 @@
+package com.vividsolutions.jts.algorithm.match;
+
+/**
+ * Provides methods to mathematically combine {@link SimilarityMeasure} values.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class SimilarityMeasureCombiner 
+{
+	public static double combine(double measure1, double measure2)
+	{
+		return Math.min(measure1, measure2);
+	}
+
+}
diff --git a/src/com/vividsolutions/jts/algorithm/match/package.html b/src/com/vividsolutions/jts/algorithm/match/package.html
new file mode 100644
index 0000000..48a5102
--- /dev/null
+++ b/src/com/vividsolutions/jts/algorithm/match/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Classes to compute matching metrics between geometries.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/awt/FontGlyphReader.java b/src/com/vividsolutions/jts/awt/FontGlyphReader.java
new file mode 100644
index 0000000..b169373
--- /dev/null
+++ b/src/com/vividsolutions/jts/awt/FontGlyphReader.java
@@ -0,0 +1,85 @@
+package com.vividsolutions.jts.awt;
+
+import java.util.*;
+import java.awt.Font;
+import java.awt.font.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Provides methods to read {@link Font} glyphs for strings 
+ * into {@link Polygonal} geometry.
+ * <p>
+ * It is suggested to use larger point sizes to render fonts glyphs,
+ * to reduce the effects of scale-dependent hints.
+ * The resulting geometry are in the base coordinate system 
+ * of the font.  
+ * The geometry can be further transformed as necessary using
+ * {@link AffineTransformation}s.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class FontGlyphReader 
+{
+	public static final String FONT_SERIF = "Serif";
+	public static final String FONT_SANSERIF = "SanSerif";
+	public static final String FONT_MONOSPACED = "Monospaced";
+	
+  // a flatness factor empirically determined to provide good results
+  private static final double FLATNESS_FACTOR = 400;
+  
+  /**
+   * Converts text rendered in the given font and pointsize to a {@link Geometry}
+   * using a standard flatness factor.
+   *  
+   * @param text the text to render
+   * @param fontName the name of the font
+   * @param pointSize the pointSize to render at
+   * @param geomFact the geometryFactory to use to create the result
+   * @return a polygonal geometry representing the rendered text
+   */
+  public static Geometry read(String text, String fontName, int pointSize, GeometryFactory geomFact)
+  {
+    return read(text, new Font(fontName, Font.PLAIN, pointSize), geomFact);
+  }
+  
+  /**
+   * Converts text rendered in the given {@link Font} to a {@link Geometry}
+   * using a standard flatness factor.
+   * 
+   * @param text the text to render
+   * @param font  the font to render with
+   * @param geomFact the geometryFactory to use to create the result
+   * @return a polygonal geometry representing the rendered text
+   */
+  public static Geometry read(String text, Font font, GeometryFactory geomFact)
+  {
+    double flatness = font.getSize() / FLATNESS_FACTOR;
+    return read(text, font, flatness, geomFact);
+  }
+  
+  /**
+   * Converts text rendered in the given {@link Font} to a {@link Geometry}
+   * 
+   * @param text the text to render
+   * @param font  the font to render with
+   * @param flatness the flatness to use
+   * @param geomFact the geometryFactory to use to create the result
+   * @return a polygonal geometry representing the rendered text
+   */
+  public static Geometry read(String text, Font font, double flatness, GeometryFactory geomFact)
+  {
+    char[] chs = text.toCharArray();
+    FontRenderContext fontContext = new FontRenderContext(null, false, true);
+    GlyphVector gv = font.createGlyphVector(fontContext, chs);
+    List polys = new ArrayList();
+    for (int i = 0; i < gv.getNumGlyphs(); i++) {
+      Geometry geom = ShapeReader.read(gv.getGlyphOutline(i), flatness, geomFact);
+      for (int j = 0; j < geom.getNumGeometries(); j++) {
+        polys.add(geom.getGeometryN(j));
+      }
+    }
+    return geomFact.buildGeometry(polys);
+  }
+      
+}
diff --git a/src/com/vividsolutions/jts/awt/GeometryCollectionShape.java b/src/com/vividsolutions/jts/awt/GeometryCollectionShape.java
new file mode 100644
index 0000000..f6faa23
--- /dev/null
+++ b/src/com/vividsolutions/jts/awt/GeometryCollectionShape.java
@@ -0,0 +1,128 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.awt;
+
+import java.awt.Rectangle;
+import java.awt.Shape;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.PathIterator;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+/**
+ * A {@link Shape} which contains a heterogeneous collection of other shapes
+ * representing JTS {@link Geometry}s.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class GeometryCollectionShape implements Shape {
+    private ArrayList shapes = new ArrayList();
+
+    public GeometryCollectionShape() {
+    }
+
+    public void add(Shape shape) {
+        shapes.add(shape);
+    }
+
+    public Rectangle getBounds() {
+        /**@todo Implement this java.awt.Shape method*/
+        throw new java.lang.UnsupportedOperationException(
+            "Method getBounds() not yet implemented.");
+    }
+
+    public Rectangle2D getBounds2D() {
+        Rectangle2D rectangle = null;
+
+        for (Iterator i = shapes.iterator(); i.hasNext();) {
+            Shape shape = (Shape) i.next();
+
+            if (rectangle == null) {
+                rectangle = shape.getBounds2D();
+            } else {
+                rectangle.add(shape.getBounds2D());
+            }
+        }
+
+        return rectangle;
+    }
+
+    public boolean contains(double x, double y) {
+        /**@todo Implement this java.awt.Shape method*/
+        throw new java.lang.UnsupportedOperationException(
+            "Method contains() not yet implemented.");
+    }
+
+    public boolean contains(Point2D p) {
+        /**@todo Implement this java.awt.Shape method*/
+        throw new java.lang.UnsupportedOperationException(
+            "Method contains() not yet implemented.");
+    }
+
+    public boolean intersects(double x, double y, double w, double h) {
+        /**@todo Implement this java.awt.Shape method*/
+        throw new java.lang.UnsupportedOperationException(
+            "Method intersects() not yet implemented.");
+    }
+
+    public boolean intersects(Rectangle2D r) {
+        /**@todo Implement this java.awt.Shape method*/
+        throw new java.lang.UnsupportedOperationException(
+            "Method intersects() not yet implemented.");
+    }
+
+    public boolean contains(double x, double y, double w, double h) {
+        /**@todo Implement this java.awt.Shape method*/
+        throw new java.lang.UnsupportedOperationException(
+            "Method contains() not yet implemented.");
+    }
+
+    public boolean contains(Rectangle2D r) {
+        /**@todo Implement this java.awt.Shape method*/
+        throw new java.lang.UnsupportedOperationException(
+            "Method contains() not yet implemented.");
+    }
+
+    public PathIterator getPathIterator(AffineTransform at) {
+        return new ShapeCollectionPathIterator(shapes, at);
+    }
+
+    public PathIterator getPathIterator(AffineTransform at, double flatness) {
+        // since Geomtery are linear, can simply delegate to the simple method
+        return getPathIterator(at);
+    }
+}
diff --git a/src/com/vividsolutions/jts/algorithm/PointInRing.java b/src/com/vividsolutions/jts/awt/IdentityPointTransformation.java
similarity index 77%
copy from src/com/vividsolutions/jts/algorithm/PointInRing.java
copy to src/com/vividsolutions/jts/awt/IdentityPointTransformation.java
index 7950ecd..c3dfabb 100644
--- a/src/com/vividsolutions/jts/algorithm/PointInRing.java
+++ b/src/com/vividsolutions/jts/awt/IdentityPointTransformation.java
@@ -1,4 +1,3 @@
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -31,17 +30,22 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.algorithm;
+package com.vividsolutions.jts.awt;
 
+import java.awt.geom.Point2D;
 import com.vividsolutions.jts.geom.Coordinate;
 
 /**
- * An interface for classes which test whether a {@link Coordinate} lies inside
- * a ring.
+ * Copies point ordinates with no transformation.
+ * 
+ * @author Martin Davis
  *
- * @version 1.7
  */
-public interface PointInRing {
-
-  boolean isInside(Coordinate pt);
-}
+public class IdentityPointTransformation
+implements PointTransformation
+{
+	public void transform(Coordinate model, Point2D view)
+	{
+		view.setLocation(model.x, model.y);
+	}
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/algorithm/PointInRing.java b/src/com/vividsolutions/jts/awt/PointShapeFactory.java
similarity index 66%
copy from src/com/vividsolutions/jts/algorithm/PointInRing.java
copy to src/com/vividsolutions/jts/awt/PointShapeFactory.java
index 7950ecd..23e5823 100644
--- a/src/com/vividsolutions/jts/algorithm/PointInRing.java
+++ b/src/com/vividsolutions/jts/awt/PointShapeFactory.java
@@ -1,4 +1,3 @@
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -31,17 +30,26 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.algorithm;
+package com.vividsolutions.jts.awt;
 
-import com.vividsolutions.jts.geom.Coordinate;
+import java.awt.Shape;
+import java.awt.geom.Point2D;
 
 /**
- * An interface for classes which test whether a {@link Coordinate} lies inside
- * a ring.
+ * An interface for classes which create {@link Shape}s to represent point geometries.
+ * Java2D does not provide an actual point shape, so some other shape 
+ * must be used to render points (e.g. such as a Rectangle or Ellipse).
+ * 
+ * @author Martin Davis
  *
- * @version 1.7
  */
-public interface PointInRing {
-
-  boolean isInside(Coordinate pt);
+public interface PointShapeFactory 
+{
+	/**
+	 * Creates a shape representing a point.
+	 * 
+	 * @param point the location of the point
+	 * @return a shape
+	 */
+	Shape createPoint(Point2D point);
 }
diff --git a/src/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.java b/src/com/vividsolutions/jts/awt/PointTransformation.java
similarity index 64%
copy from src/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.java
copy to src/com/vividsolutions/jts/awt/PointTransformation.java
index 04db936..f742fdf 100644
--- a/src/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.java
+++ b/src/com/vividsolutions/jts/awt/PointTransformation.java
@@ -1,5 +1,3 @@
-
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -32,17 +30,25 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.algorithm;
+package com.vividsolutions.jts.awt;
 
+import java.awt.geom.Point2D;
 import com.vividsolutions.jts.geom.*;
 
 /**
- * Stub version of RobustCGAlgorithms for backwards compatibility.
- * Will be deprecated in next release - use CGAlgorithms instead.
- *
- * @version 1.7
- *
+ * Transforms a geometry {@link Coordinate} into a Java2D {@link Point},
+ * possibly with a mathematical transformation of the ordinate values.
+ * Transformation from a model coordinate system to a view coordinate system 
+ * can be efficiently performed by supplying an appropriate transformation.
+ * 
+ * @author Martin Davis
  */
-public class RobustCGAlgorithms extends CGAlgorithms {
-
-}
+public interface PointTransformation {
+	/**
+	 * Transforms a {@link Coordinate} into a Java2D {@link Point}.
+	 * 
+	 * @param src the source Coordinate 
+	 * @param dest the destination Point
+	 */
+  public void transform(Coordinate src, Point2D dest);
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/awt/PolygonShape.java b/src/com/vividsolutions/jts/awt/PolygonShape.java
new file mode 100644
index 0000000..7145793
--- /dev/null
+++ b/src/com/vividsolutions/jts/awt/PolygonShape.java
@@ -0,0 +1,142 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.awt;
+
+import java.awt.Rectangle;
+import java.awt.Shape;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.PathIterator;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import com.vividsolutions.jts.geom.Coordinate;
+
+/**
+ * A Shape which represents a polygon which may contain holes.
+ * Provided because the standard AWT Polygon class does not support holes.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class PolygonShape implements Shape {
+    private java.awt.Polygon shell;
+    private ArrayList holes = new ArrayList();
+
+    /**
+     * Creates a new polygon shape.
+     * 
+     * @param shellVertices the vertices of the shell 
+     * @param holeVerticesCollection a collection of Coordinate[] for each hole
+     */
+    public PolygonShape(Coordinate[] shellVertices,
+        Collection holeVerticesCollection) {
+        shell = toPolygon(shellVertices);
+
+        for (Iterator i = holeVerticesCollection.iterator(); i.hasNext();) {
+            Coordinate[] holeVertices = (Coordinate[]) i.next();
+            holes.add(toPolygon(holeVertices));
+        }
+    }
+
+    private java.awt.Polygon toPolygon(Coordinate[] coordinates) {
+        java.awt.Polygon polygon = new java.awt.Polygon();
+
+        for (int i = 0; i < coordinates.length; i++) {
+            polygon.addPoint((int) coordinates[i].x, (int) coordinates[i].y);
+        }
+
+        return polygon;
+    }
+
+    public Rectangle getBounds() {
+        /**@todo Implement this java.awt.Shape method*/
+        throw new java.lang.UnsupportedOperationException(
+            "Method getBounds() not yet implemented.");
+    }
+
+    public Rectangle2D getBounds2D() {
+        return shell.getBounds2D();
+    }
+
+    public boolean contains(double x, double y) {
+        /**@todo Implement this java.awt.Shape method*/
+        throw new java.lang.UnsupportedOperationException(
+            "Method contains() not yet implemented.");
+    }
+
+    public boolean contains(Point2D p) {
+        /**@todo Implement this java.awt.Shape method*/
+        throw new java.lang.UnsupportedOperationException(
+            "Method contains() not yet implemented.");
+    }
+
+    public boolean intersects(double x, double y, double w, double h) {
+        /**@todo Implement this java.awt.Shape method*/
+        throw new java.lang.UnsupportedOperationException(
+            "Method intersects() not yet implemented.");
+    }
+
+    public boolean intersects(Rectangle2D r) {
+        /**@todo Implement this java.awt.Shape method*/
+        throw new java.lang.UnsupportedOperationException(
+            "Method intersects() not yet implemented.");
+    }
+
+    public boolean contains(double x, double y, double w, double h) {
+        /**@todo Implement this java.awt.Shape method*/
+        throw new java.lang.UnsupportedOperationException(
+            "Method contains() not yet implemented.");
+    }
+
+    public boolean contains(Rectangle2D r) {
+        /**@todo Implement this java.awt.Shape method*/
+        throw new java.lang.UnsupportedOperationException(
+            "Method contains() not yet implemented.");
+    }
+
+    public PathIterator getPathIterator(AffineTransform at) {
+        ArrayList rings = new ArrayList();
+        rings.add(shell);
+        rings.addAll(holes);
+
+        return new ShapeCollectionPathIterator(rings, at);
+    }
+
+    public PathIterator getPathIterator(AffineTransform at, double flatness) {
+      // since Geomtery are linear, can simply delegate to the simple method
+    	return getPathIterator(at);
+    }
+}
diff --git a/src/com/vividsolutions/jts/awt/ShapeCollectionPathIterator.java b/src/com/vividsolutions/jts/awt/ShapeCollectionPathIterator.java
new file mode 100644
index 0000000..67b5bdf
--- /dev/null
+++ b/src/com/vividsolutions/jts/awt/ShapeCollectionPathIterator.java
@@ -0,0 +1,121 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.awt;
+
+import java.awt.Shape;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.PathIterator;
+import java.util.Collection;
+import java.util.Iterator;
+
+/**
+ * A {@link PathIterator} which provides paths for a collection of {@link Shape}s. 
+ * 
+ * @author Martin Davis
+ */
+public class ShapeCollectionPathIterator implements PathIterator {
+    private Iterator shapeIterator;
+    
+    // initialize with a no-op iterator
+    private PathIterator currentPathIterator = new PathIterator() {
+            public int getWindingRule() {
+                throw new UnsupportedOperationException();
+            }
+
+            public boolean isDone() {
+                return true;
+            }
+
+            public void next() {
+            }
+
+            public int currentSegment(float[] coords) {
+                throw new UnsupportedOperationException();
+            }
+
+            public int currentSegment(double[] coords) {
+                throw new UnsupportedOperationException();
+            }
+        };
+
+    private AffineTransform affineTransform;
+    private boolean done = false;
+
+    /**
+     * Creates a new path iterator for a collection of {@link Shape}s.
+     * 
+     * @param shapes the Shapes in the collection
+     * @param affineTransform a optional transformation to be applied to the coordinates in the path (may be null)
+     */
+    public ShapeCollectionPathIterator(Collection shapes,
+        AffineTransform affineTransform) {
+        shapeIterator = shapes.iterator();
+        this.affineTransform = affineTransform;
+        next();
+    }
+
+    public int getWindingRule() {
+    	/**
+       * WIND_NON_ZERO is more accurate than WIND_EVEN_ODD, and can be comparable
+       * in speed. (See http://www.geometryalgorithms.com/Archive/algorithm_0103/algorithm_0103.htm#Winding%20Number)
+       * However, WIND_NON_ZERO requires that the
+       * shell and holes be oriented in a certain way.
+       * So use WIND_EVEN_ODD. 
+     	 */
+      return PathIterator.WIND_EVEN_ODD;
+    }
+
+    public boolean isDone() {
+        return done;
+    }
+
+    public void next() {
+        currentPathIterator.next();
+
+        if (currentPathIterator.isDone() && !shapeIterator.hasNext()) {
+            done = true;
+            return;
+        }
+        if (currentPathIterator.isDone()) {
+            currentPathIterator = ((Shape) shapeIterator.next()).getPathIterator(affineTransform);
+        }
+    }
+
+    public int currentSegment(float[] coords) {
+        return currentPathIterator.currentSegment(coords);
+    }
+
+    public int currentSegment(double[] coords) {
+        return currentPathIterator.currentSegment(coords);
+    }
+}
diff --git a/src/com/vividsolutions/jts/awt/ShapeReader.java b/src/com/vividsolutions/jts/awt/ShapeReader.java
new file mode 100644
index 0000000..359793b
--- /dev/null
+++ b/src/com/vividsolutions/jts/awt/ShapeReader.java
@@ -0,0 +1,160 @@
+package com.vividsolutions.jts.awt;
+
+import java.awt.Shape;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.PathIterator;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Converts a Java2D {@link Shape} 
+ * or the more general {@link PathIterator} into a {@link Geometry}.
+ * <p>
+ * The coordinate system for Java2D is typically screen coordinates, 
+ * which has the Y axis inverted
+ * relative to the usual JTS coordinate system.
+ * This is rectified during conversion. 
+ * <p>
+ * PathIterators to be converted are expected to be linear or flat.
+ * That is, they should contain only <tt>SEG_MOVETO</tt>, <tt>SEG_LINETO</tt>, and <tt>SEG_CLOSE</tt> segment types.
+ * Any other segment types will cause an exception.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class ShapeReader 
+{
+  private static AffineTransform INVERT_Y = AffineTransform.getScaleInstance(1, -1);
+
+  /**
+   * Converts a flat path to a {@link Geometry}.
+   * 
+   * @param pathIt the path to convert
+   * @param geomFact the GeometryFactory to use
+   * @return a Geometry representing the path
+   */
+  public static Geometry read(PathIterator pathIt, GeometryFactory geomFact)
+  {
+    ShapeReader pc = new ShapeReader(geomFact);
+    return pc.read(pathIt);
+  }
+  
+  /**
+   * Converts a Shape to a Geometry, flattening it first.
+   * 
+   * @param shp the Java2D shape
+   * @param flatness the flatness parameter to use
+   * @param geomFact the GeometryFactory to use
+   * @return a Geometry representing the shape
+   */
+  public static Geometry read(Shape shp, double flatness, GeometryFactory geomFact)
+  {
+    PathIterator pathIt = shp.getPathIterator(INVERT_Y, flatness);
+    return ShapeReader.read(pathIt, geomFact);
+  }
+
+  private GeometryFactory geometryFactory;
+  
+  public ShapeReader(GeometryFactory geometryFactory) {
+    this.geometryFactory = geometryFactory;
+  }
+
+  /**
+   * Converts a flat path to a {@link Geometry}.
+   * 
+   * @param pathIt the path to convert
+   * @return a Geometry representing the path
+   */
+  public Geometry read(PathIterator pathIt)
+  {
+    List pathPtSeq = toCoordinates(pathIt);
+    
+    List polys = new ArrayList();
+    int seqIndex = 0;
+    while (seqIndex < pathPtSeq.size()) {
+      // assume next seq is shell 
+      // TODO: test this
+      Coordinate[] pts = (Coordinate[]) pathPtSeq.get(seqIndex);
+      LinearRing shell = geometryFactory.createLinearRing(pts);
+      seqIndex++;
+      
+      List holes = new ArrayList();
+      // add holes as long as rings are CCW
+      while (seqIndex < pathPtSeq.size() && isHole((Coordinate[]) pathPtSeq.get(seqIndex))) {
+        Coordinate[] holePts = (Coordinate[]) pathPtSeq.get(seqIndex);
+        LinearRing hole = geometryFactory.createLinearRing(holePts);
+        holes.add(hole);
+        seqIndex++;
+      }
+      LinearRing[] holeArray = GeometryFactory.toLinearRingArray(holes);
+      polys.add(geometryFactory.createPolygon(shell, holeArray));
+    }
+    return geometryFactory.buildGeometry(polys);
+  }
+  
+  private boolean isHole(Coordinate[] pts)
+  {
+    return CGAlgorithms.isCCW(pts);
+  }
+  
+  /**
+   * Extracts the points of the paths in a flat {@link PathIterator} into
+   * a list of Coordinate arrays.
+   * 
+   * @param pathIt a path iterator
+   * @return a List of Coordinate arrays
+   * @throws IllegalArgumentException if a non-linear segment type is encountered
+   */
+  public static List toCoordinates(PathIterator pathIt)
+  {
+    List coordArrays = new ArrayList();
+    while (! pathIt.isDone()) {
+      Coordinate[] pts = nextCoordinateArray(pathIt);
+      if (pts == null)
+        break;
+      coordArrays.add(pts);
+    }
+    return coordArrays;
+  }
+  
+  private static Coordinate[] nextCoordinateArray(PathIterator pathIt)
+  {
+    double[] pathPt = new double[6];
+    CoordinateList coordList = null;
+    boolean isDone = false;
+    while (! pathIt.isDone()) {
+      int segType = pathIt.currentSegment(pathPt);
+      switch (segType) {
+      case PathIterator.SEG_MOVETO:
+        if (coordList != null) {
+          // don't advance pathIt, to retain start of next path if any
+          isDone = true;
+        }
+        else {
+          coordList = new CoordinateList();
+          coordList.add(new Coordinate(pathPt[0], pathPt[1]));
+          pathIt.next();
+        }
+        break;
+      case PathIterator.SEG_LINETO:
+        coordList.add(new Coordinate(pathPt[0], pathPt[1]));
+        pathIt.next();
+        break;
+      case PathIterator.SEG_CLOSE:  
+        coordList.closeRing();
+        pathIt.next();
+        isDone = true;   
+        break;
+      default:
+      	throw new IllegalArgumentException("unhandled (non-linear) segment type encountered");
+      }
+      if (isDone) 
+        break;
+    }
+    return coordList.toCoordinateArray();
+  }
+
+}
diff --git a/src/com/vividsolutions/jts/awt/ShapeWriter.java b/src/com/vividsolutions/jts/awt/ShapeWriter.java
new file mode 100644
index 0000000..6e93394
--- /dev/null
+++ b/src/com/vividsolutions/jts/awt/ShapeWriter.java
@@ -0,0 +1,203 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.awt;
+
+import java.awt.Shape;
+import java.awt.geom.GeneralPath;
+import java.awt.geom.Point2D;
+import java.util.ArrayList;
+
+import com.vividsolutions.jts.geom.*;
+
+
+/**
+ * Writes {@link Geometry}s into Java2D {@link Shape} objects
+ */
+public class ShapeWriter 
+{
+	/**
+	 * The point transformation used by default.
+	 */
+	public static final PointTransformation DEFAULT_POINT_TRANSFORMATION = new IdentityPointTransformation();
+	
+	/**
+	 * The point shape factory used by default.
+	 */
+	public static final PointShapeFactory DEFAULT_POINT_FACTORY = new SqarePointShapeFactory(3.0);
+	
+	private PointTransformation pointTransformer = DEFAULT_POINT_TRANSFORMATION;
+	private PointShapeFactory pointFactory = DEFAULT_POINT_FACTORY;
+
+	/**
+	 * Creates a new ShapeWriter with a specified point transformation
+	 * and point shape factory.
+	 * 
+	 * @param pointTransformer a transformation from model to view space to use 
+	 * @param pointFactory the PointShapeFactory to use
+	 */
+	public ShapeWriter(PointTransformation pointTransformer, PointShapeFactory pointFactory) 
+	{
+		if (pointTransformer != null)
+			this.pointTransformer = pointTransformer;
+		if (pointFactory != null)
+			this.pointFactory = pointFactory;
+	}
+
+	/**
+	 * Creates a new ShapeWriter with a specified point transformation
+	 * and the default point shape factory.
+	 * 
+	 * @param pointTransformer a transformation from model to view space to use 
+	 */
+	public ShapeWriter(PointTransformation pointTransformer) 
+	{
+		this(pointTransformer, null);
+	}
+
+	/**
+	 * Creates a new ShapeWriter with the default (identity) point transformation.
+	 *
+	 */
+	public ShapeWriter() {
+	}
+
+	/**
+	 * Creates a {@link Shape} representing a {@link Geometry}, 
+	 * according to the specified PointTransformation
+	 * and PointShapeFactory (if relevant).
+	 * <p>
+	 * Note that Shapes do not
+	 * preserve information about which elements in heterogeneous collections
+	 * are 1D and which are 2D.
+	 * For example, a GeometryCollection containing a ring and a
+	 * disk will render as two disks if Graphics.fill is used, 
+	 * or as two rings if Graphics.draw is used.
+	 * To avoid this issue use separate shapes for the components.
+	 * 
+	 * @param geometry the geometry to convert
+	 * @return a Shape representing the geometry
+	 */
+	public Shape toShape(Geometry geometry)
+	{
+		if (geometry.isEmpty()) return new GeneralPath();
+		if (geometry instanceof Polygon) return toShape((Polygon) geometry);
+		if (geometry instanceof LineString) 			return toShape((LineString) geometry);
+		if (geometry instanceof MultiLineString) 	return toShape((MultiLineString) geometry);
+		if (geometry instanceof Point) 			return toShape((Point) geometry);
+		if (geometry instanceof GeometryCollection) return toShape((GeometryCollection) geometry);
+
+		throw new IllegalArgumentException(
+			"Unrecognized Geometry class: " + geometry.getClass());
+	}
+
+	private Shape toShape(Polygon p) 
+	{
+		ArrayList holeVertexCollection = new ArrayList();
+
+		for (int j = 0; j < p.getNumInteriorRing(); j++) {
+			holeVertexCollection.add(
+				toViewCoordinates(p.getInteriorRingN(j).getCoordinates()));
+		}
+
+		return new PolygonShape(
+			toViewCoordinates(p.getExteriorRing().getCoordinates()),
+			holeVertexCollection);
+	}
+
+	private Coordinate[] toViewCoordinates(Coordinate[] modelCoordinates)
+	{
+		Coordinate[] viewCoordinates = new Coordinate[modelCoordinates.length];
+
+		for (int i = 0; i < modelCoordinates.length; i++) {
+			Point2D point2D = toPoint(modelCoordinates[i]);
+			viewCoordinates[i] = new Coordinate(point2D.getX(), point2D.getY());
+		}
+
+		return viewCoordinates;
+	}
+
+	private Shape toShape(GeometryCollection gc)
+	{
+		GeometryCollectionShape shape = new GeometryCollectionShape();
+
+		for (int i = 0; i < gc.getNumGeometries(); i++) {
+			Geometry g = (Geometry) gc.getGeometryN(i);
+			shape.add(toShape(g));
+		}
+
+		return shape;
+	}
+
+	private GeneralPath toShape(MultiLineString mls)
+	{
+		GeneralPath path = new GeneralPath();
+
+		for (int i = 0; i < mls.getNumGeometries(); i++) {
+			LineString lineString = (LineString) mls.getGeometryN(i);
+			path.append(toShape(lineString), false);
+		}
+		return path;
+	}
+
+	private GeneralPath toShape(LineString lineString)
+	{
+		GeneralPath shape = new GeneralPath();
+		Point2D viewPoint = toPoint(lineString.getCoordinateN(0));
+		shape.moveTo((float) viewPoint.getX(), (float) viewPoint.getY());
+
+		for (int i = 1; i < lineString.getNumPoints(); i++) {
+			viewPoint = toPoint(lineString.getCoordinateN(i));
+			shape.lineTo((float) viewPoint.getX(), (float) viewPoint.getY());
+		}
+		return shape;
+	}
+
+	private Shape toShape(Point point)
+  {
+		Point2D viewPoint = toPoint(point.getCoordinate());
+		return pointFactory.createPoint(viewPoint);
+	}
+
+  private Point2D toPoint(Coordinate model)
+    {
+    Point2D view = new Point2D.Double();
+    pointTransformer.transform(model, view);
+    /**
+     * Do the rounding now instead of relying on Java 2D rounding.
+     * Java2D seems to do rounding differently for drawing and filling, resulting in the draw
+     * being a pixel off from the fill sometimes.
+     */
+    view.setLocation(Math.round(view.getX()), Math.round(view.getY()));
+    return view;
+  }
+}
diff --git a/src/com/vividsolutions/jts/awt/SqarePointShapeFactory.java b/src/com/vividsolutions/jts/awt/SqarePointShapeFactory.java
new file mode 100644
index 0000000..9271421
--- /dev/null
+++ b/src/com/vividsolutions/jts/awt/SqarePointShapeFactory.java
@@ -0,0 +1,93 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.awt;
+
+import java.awt.Shape;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+
+/**
+ * A factory for generating square shapes to represent points.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class SqarePointShapeFactory 
+implements PointShapeFactory
+{
+	/**
+	 * The default length of the square's side.
+	 */
+	public static double DEFAULT_SIZE = 3.0;
+	
+	private double squareSize = DEFAULT_SIZE;
+	
+	/**
+	 * Creates a new factory for squares with default size.
+	 *
+	 */
+	public SqarePointShapeFactory()
+	{
+	}
+	
+	/**
+	 * Creates a factory for squares of given size.
+	 * 
+	 * @param squareSize the length of the side of the square
+	 */
+	public SqarePointShapeFactory(double squareSize)
+	{
+		this.squareSize = squareSize;
+	}
+	
+	/**
+	 * Creates a shape representing a point.
+	 * 
+	 * @param point the location of the point
+	 * @return a shape
+	 */
+	public Shape createPoint(Point2D point)
+	{
+		Rectangle2D.Double pointMarker =
+			new Rectangle2D.Double(
+				0.0,
+				0.0,
+				squareSize,
+				squareSize);
+		pointMarker.x = (double) (point.getX() - (squareSize / 2));
+		pointMarker.y = (double) (point.getY() - (squareSize / 2));
+
+		return pointMarker;
+
+	}
+}
diff --git a/src/com/vividsolutions/jts/awt/package.html b/src/com/vividsolutions/jts/awt/package.html
new file mode 100644
index 0000000..c944a17
--- /dev/null
+++ b/src/com/vividsolutions/jts/awt/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Classes to perform conversions from Java2D shape objects.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/densify/Densifier.java b/src/com/vividsolutions/jts/densify/Densifier.java
new file mode 100644
index 0000000..89e3f8d
--- /dev/null
+++ b/src/com/vividsolutions/jts/densify/Densifier.java
@@ -0,0 +1,178 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.densify;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.util.GeometryTransformer;
+
+/**
+ * Densifies a geometry by inserting extra vertices along the line segments
+ * in the geometry. The densified geometry contains no line segment which
+ * is longer than the given distance tolerance.
+ * Densified polygonal geometries are guaranteed to be topologically correct.
+ * The coordinates created during densification respect the input geometry's
+ * {@link PrecisionModel}.
+ * <p>
+ * <b>Note:</b> At some future point this class will
+ * offer a variety of densification strategies.
+ * 
+ * @author Martin Davis
+ */
+public class Densifier {
+	/**
+	 * Densifies a geometry using a given distance tolerance,
+   * and respecting the input geometry's {@link PrecisionModel}.
+	 * 
+	 * @param geom the geometry to densify
+	 * @param distanceTolerance the distance tolerance to densify
+	 * @return the densified geometry
+	 */
+	public static Geometry densify(Geometry geom, double distanceTolerance) {
+		Densifier densifier = new Densifier(geom);
+		densifier.setDistanceTolerance(distanceTolerance);
+		return densifier.getResultGeometry();
+	}
+
+	/**
+	 * Densifies a coordinate sequence.
+	 * 
+	 * @param pts
+	 * @param distanceTolerance
+	 * @return the densified coordinate sequence
+	 */
+	private static Coordinate[] densifyPoints(Coordinate[] pts,
+			double distanceTolerance, PrecisionModel precModel) {
+		LineSegment seg = new LineSegment();
+		CoordinateList coordList = new CoordinateList();
+		for (int i = 0; i < pts.length - 1; i++) {
+			seg.p0 = pts[i];
+			seg.p1 = pts[i + 1];
+			coordList.add(seg.p0, false);
+			double len = seg.getLength();
+			int densifiedSegCount = (int) (len / distanceTolerance) + 1;
+			if (densifiedSegCount > 1) {
+				double densifiedSegLen = len / densifiedSegCount;
+				for (int j = 1; j < densifiedSegCount; j++) {
+					double segFract = (j * densifiedSegLen) / len;
+					Coordinate p = seg.pointAlong(segFract);
+          precModel.makePrecise(p);
+					coordList.add(p, false);
+				}
+			}
+		}
+		coordList.add(pts[pts.length - 1], false);
+		return coordList.toCoordinateArray();
+	}
+
+	private Geometry inputGeom;
+
+	private double distanceTolerance;
+
+	/**
+	 * Creates a new densifier instance.
+	 * 
+	 * @param inputGeom
+	 */
+	public Densifier(Geometry inputGeom) {
+		this.inputGeom = inputGeom;
+	}
+
+	/**
+	 * Sets the distance tolerance for the densification. All line segments
+	 * in the densified geometry will be no longer than the distance tolereance.
+	 * simplified geometry will be within this distance of the original geometry.
+	 * The distance tolerance must be positive.
+	 * 
+	 * @param distanceTolerance
+	 *          the densification tolerance to use
+	 */
+	public void setDistanceTolerance(double distanceTolerance) {
+		if (distanceTolerance <= 0.0)
+			throw new IllegalArgumentException("Tolerance must be positive");
+		this.distanceTolerance = distanceTolerance;
+	}
+
+	/**
+	 * Gets the densified geometry.
+	 * 
+	 * @return the densified geometry
+	 */
+	public Geometry getResultGeometry() {
+		return (new DensifyTransformer()).transform(inputGeom);
+	}
+
+	class DensifyTransformer extends GeometryTransformer {
+		protected CoordinateSequence transformCoordinates(
+				CoordinateSequence coords, Geometry parent) {
+			Coordinate[] inputPts = coords.toCoordinateArray();
+			Coordinate[] newPts = Densifier
+					.densifyPoints(inputPts, distanceTolerance, parent.getPrecisionModel());
+			// prevent creation of invalid linestrings
+			if (parent instanceof LineString && newPts.length == 1) {
+				newPts = new Coordinate[0];
+			}
+			return factory.getCoordinateSequenceFactory().create(newPts);
+		}
+
+		protected Geometry transformPolygon(Polygon geom, Geometry parent) {
+			Geometry roughGeom = super.transformPolygon(geom, parent);
+			// don't try and correct if the parent is going to do this
+			if (parent instanceof MultiPolygon) {
+				return roughGeom;
+			}
+			return createValidArea(roughGeom);
+		}
+
+		protected Geometry transformMultiPolygon(MultiPolygon geom, Geometry parent) {
+			Geometry roughGeom = super.transformMultiPolygon(geom, parent);
+			return createValidArea(roughGeom);
+		}
+
+		/**
+		 * Creates a valid area geometry from one that possibly has bad topology
+		 * (i.e. self-intersections). Since buffer can handle invalid topology, but
+		 * always returns valid geometry, constructing a 0-width buffer "corrects"
+		 * the topology. Note this only works for area geometries, since buffer
+		 * always returns areas. This also may return empty geometries, if the input
+		 * has no actual area.
+		 * 
+		 * @param roughAreaGeom
+		 *          an area geometry possibly containing self-intersections
+		 * @return a valid area geometry
+		 */
+		private Geometry createValidArea(Geometry roughAreaGeom) {
+			return roughAreaGeom.buffer(0.0);
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/densify/package.html b/src/com/vividsolutions/jts/densify/package.html
new file mode 100644
index 0000000..00e3ead
--- /dev/null
+++ b/src/com/vividsolutions/jts/densify/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Classes to perform densification on geometries.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/geom/Coordinate.java b/src/com/vividsolutions/jts/geom/Coordinate.java
index 89016fa..a0d76e8 100644
--- a/src/com/vividsolutions/jts/geom/Coordinate.java
+++ b/src/com/vividsolutions/jts/geom/Coordinate.java
@@ -40,22 +40,30 @@ import com.vividsolutions.jts.util.Assert;
 /**
  * A lightweight class used to store coordinates
  * on the 2-dimensional Cartesian plane.
- *  It is distinct from <code>Point</code>, which is a subclass of <code>Geometry</code>
- *  . Unlike objects of type <code>Point</code> (which contain additional
- *  information such as an envelope, a precision model, and spatial reference
- *  system information), a <code>Coordinate</code> only contains ordinate values
- *  and accessor methods. <P>
+ * It is distinct from {@link Point}, which is a subclass of {@link Geometry}. 
+ * Unlike objects of type {@link Point} (which contain additional
+ * information such as an envelope, a precision model, and spatial reference
+ * system information), a <code>Coordinate</code> only contains ordinate values
+ * and accessor methods. <P>
  *
- *  <code>Coordinate</code>s are two-dimensional points, with an additional
- *  z-ordinate. JTS does not support any operations on the z-ordinate except
- *  the basic accessor functions. Constructed coordinates will have a
- *  z-ordinate of <code>NaN</code>.  The standard comparison functions will ignore
- *  the z-ordinate.
+ * <code>Coordinate</code>s are two-dimensional points, with an additional Z-ordinate. 
+ * JTS does not support any operations on the Z-ordinate except the basic accessor functions. 
+ * If an Z-ordinate value is not specified or not defined, 
+ * constructed coordinates have a Z-ordinate of <code>NaN</code>
+ * (which is also the value of <code>NULL_ORDINATE</code>).  
+ * The standard comparison functions ignore the Z-ordinate.
  *
  *@version 1.7
  */
 public class Coordinate implements Comparable, Cloneable, Serializable {
   private static final long serialVersionUID = 6683108902428366910L;
+  
+  /**
+   * The value used to indicate a null or missing ordinate value.
+   * In particular, used for the value of ordinates for dimensions 
+   * greater than the defined dimension of a coordinate.
+   */
+  public static final double NULL_ORDINATE = Double.NaN;
   /**
    *  The x-coordinate.
    */
@@ -106,14 +114,13 @@ public class Coordinate implements Comparable, Cloneable, Serializable {
    *@param  y  the y-value
    */
   public Coordinate(double x, double y) {
-    this(x, y, Double.NaN);
+    this(x, y, NULL_ORDINATE);
   }
 
 
 
   /**
-   *  Sets this <code>Coordinate</code>s (x,y,z) values to that of <code>other</code>
-   *  .
+   *  Sets this <code>Coordinate</code>s (x,y,z) values to that of <code>other</code>.
    *
    *@param  other  the <code>Coordinate</code> to copy
    */
@@ -224,6 +231,13 @@ public class Coordinate implements Comparable, Cloneable, Serializable {
     }
   }
 
+  /**
+   * Computes the 2-dimensional Euclidean distance to another location.
+   * The Z-ordinate is ignored.
+   * 
+   * @param p a point
+   * @return the 2-dimensional Euclidean distance between the locations
+   */
   public double distance(Coordinate p) {
     double dx = x - p.x;
     double dy = y - p.y;
@@ -231,6 +245,11 @@ public class Coordinate implements Comparable, Cloneable, Serializable {
     return Math.sqrt(dx * dx + dy * dy);
   }
 
+  /**
+   * Gets a hashcode for this coordinate.
+   * 
+   * @return a hashcode for this coordinate
+   */
   public int hashCode() {
     //Algorithm from Effective Java by Joshua Bloch [Jon Aquino]
     int result = 17;
@@ -240,8 +259,10 @@ public class Coordinate implements Comparable, Cloneable, Serializable {
   }
 
   /**
-   * Returns a hash code for a double value, using the algorithm from
+   * Computes a hash code for a double value, using the algorithm from
    * Joshua Bloch's book <i>Effective Java"</i>
+   * 
+   * @return a hashcode for the double value
    */
   public static int hashCode(double x) {
     long f = Double.doubleToLongBits(x);
diff --git a/src/com/vividsolutions/jts/geom/CoordinateArrays.java b/src/com/vividsolutions/jts/geom/CoordinateArrays.java
index 8315c11..6be8afe 100644
--- a/src/com/vividsolutions/jts/geom/CoordinateArrays.java
+++ b/src/com/vividsolutions/jts/geom/CoordinateArrays.java
@@ -46,6 +46,21 @@ public class CoordinateArrays {
   private final static Coordinate[] coordArrayType = new Coordinate[0];
 
   /**
+   * Tests whether an array of {@link Coordinate}s forms a ring,
+   * by checking length and closure. 
+   * Self-intersection is not checked.
+   * 
+   * @param pts an array of Coordinates
+   * @return true if the coordinate form a ring.
+   */
+  public static boolean isRing(Coordinate[] pts)
+  {
+    if (pts.length < 4) return false;
+    if (! pts[0].equals2D(pts[pts.length -1])) return false;
+    return true;
+  }
+    
+  /**
    * Finds a point in a list of points which is not contained in another list of points
    * @param testPts the {@link Coordinate}s to test
    * @param pts an array of {@link Coordinate}s to test the input points against
@@ -56,7 +71,7 @@ public class CoordinateArrays {
   {
     for (int i = 0; i < testPts.length; i++) {
       Coordinate testPt = testPts[i];
-      if (CoordinateArrays.indexOf(testPt, pts) >= 0)
+      if (CoordinateArrays.indexOf(testPt, pts) < 0)
           return testPt;
     }
     return null;
@@ -218,6 +233,24 @@ public class CoordinateArrays {
   }
 
   /**
+   * Creates a deep copy of a given section of a source {@link Coordinate) array
+   * into a destination Coordinate array.
+   * The destination array must be an appropriate size to receive
+   * the copied coordinates.
+   *
+   * @param src an array of Coordinates
+   * @param srcStart the index to start copying from
+   * @param dest the 
+   * @param destStart the destination index to start copying to
+   * @param length the number of items to copy
+   */
+  public static void copyDeep(Coordinate[] src, int srcStart, Coordinate[] dest, int destStart, int length) {
+    for (int i = 0; i < length; i++) {
+      dest[destStart + i] = new Coordinate(src[srcStart + i]);
+    }
+  }
+
+  /**
    * Converts the given Collection of Coordinates into a Coordinate array.
    */
   public static Coordinate[] toCoordinateArray(Collection coordList)
diff --git a/src/com/vividsolutions/jts/geom/CoordinateList.java b/src/com/vividsolutions/jts/geom/CoordinateList.java
index fa32d90..8aea63e 100644
--- a/src/com/vividsolutions/jts/geom/CoordinateList.java
+++ b/src/com/vividsolutions/jts/geom/CoordinateList.java
@@ -60,12 +60,15 @@ public class CoordinateList
   }
 
   /**
-   * The basic constructor for a CoordinateArray allows repeated points
-   * (i.e produces a CoordinateList with exactly the same set of points)
+   * Constructs a new list from an array of Coordinates, allowing repeated points.
+   * (I.e. this constructor produces a {@link CoordinateList} with exactly the same set of points
+   * as the input array.)
+   * 
    * @param coord the initial coordinates
    */
   public CoordinateList(Coordinate[] coord)
   {
+  	ensureCapacity(coord.length);
     add(coord, true);
   }
 
@@ -78,13 +81,34 @@ public class CoordinateList
    */
   public CoordinateList(Coordinate[] coord, boolean allowRepeated)
   {
+  	ensureCapacity(coord.length);
     add(coord, allowRepeated);
   }
 
   public Coordinate getCoordinate(int i) { return (Coordinate) get(i); }
 
 
-  /** Add an array of coordinates
+  /** 
+   * Adds a section of an array of coordinates to the list.
+   * @param coord The coordinates
+   * @param allowRepeated if set to false, repeated coordinates are collapsed
+   * @param start the index to start from
+   * @param end the index to add up to but not including
+   * @return true (as by general collection contract)
+   */
+  public boolean add(Coordinate[] coord, boolean allowRepeated, int start, int end)
+  {
+    int inc = 1;
+    if (start > end) inc = -1;
+    
+    for (int i = start; i != end; i += inc) {
+      add(coord[i], allowRepeated);
+    }
+    return true;
+  }
+
+  /** 
+   * Adds an array of coordinates to the list.
    * @param coord The coordinates
    * @param allowRepeated if set to false, repeated coordinates are collapsed
    * @param direction if false, the array is added in reverse order
@@ -106,7 +130,8 @@ public class CoordinateList
   }
 
 
-  /** Add an array of coordinates
+  /** 
+   * Adds an array of coordinates to the list.
    * @param coord The coordinates
    * @param allowRepeated if set to false, repeated coordinates are collapsed
    * @return true (as by general collection contract)
@@ -117,7 +142,8 @@ public class CoordinateList
     return true;
   }
 
-  /** Add a coordinate
+  /** 
+   * Adds a coordinate to the list.
    * @param obj The coordinate to add
    * @param allowRepeated if set to false, repeated coordinates are collapsed
    * @return true (as by general collection contract)
@@ -128,7 +154,9 @@ public class CoordinateList
     return true;
   }
 
-  /** Add a coordinate
+  /**
+   * Adds a coordinate to the end of the list.
+   * 
    * @param coord The coordinates
    * @param allowRepeated if set to false, repeated coordinates are collapsed
    */
@@ -144,6 +172,32 @@ public class CoordinateList
     super.add(coord);
   }
 
+  /**
+   * Inserts the specified coordinate at the specified position in this list.
+   * 
+   * @param i the position at which to insert
+   * @param coord the coordinate to insert
+   * @param allowRepeated if set to false, repeated coordinates are collapsed
+   */
+  public void add(int i, Coordinate coord, boolean allowRepeated)
+  {
+    // don't add duplicate coordinates
+    if (! allowRepeated) {
+      int size = size();
+      if (size > 0) {
+        if (i > 0) {
+          Coordinate prev = (Coordinate) get(i - 1);
+          if (prev.equals2D(coord)) return;
+        }
+        if (i < size) {
+          Coordinate next = (Coordinate) get(i);
+          if (next.equals2D(coord)) return;
+        }
+      }
+    }
+    super.add(i, coord);
+  }
+
   /** Add an array of coordinates
    * @param coll The coordinates
    * @param allowRepeated if set to false, repeated coordinates are collapsed
@@ -165,7 +219,7 @@ public class CoordinateList
   public void closeRing()
   {
     if (size() > 0)
-      add(get(0), false);
+      add(new Coordinate((Coordinate) get(0)), false);
   }
 
   /** Returns the Coordinates in this collection.
diff --git a/src/com/vividsolutions/jts/geom/CoordinateSequenceComparator.java b/src/com/vividsolutions/jts/geom/CoordinateSequenceComparator.java
index 10b7627..de2985a 100644
--- a/src/com/vividsolutions/jts/geom/CoordinateSequenceComparator.java
+++ b/src/com/vividsolutions/jts/geom/CoordinateSequenceComparator.java
@@ -83,7 +83,7 @@ public class CoordinateSequenceComparator
     if (dim2 < minDim)
       minDim = dim2;
     boolean dimLimited = false;
-    if (dimensionLimit < minDim) {
+    if (dimensionLimit <= minDim) {
       minDim = dimensionLimit;
       dimLimited = true;
     }
diff --git a/src/com/vividsolutions/jts/geom/CoordinateSequenceFilter.java b/src/com/vividsolutions/jts/geom/CoordinateSequenceFilter.java
new file mode 100644
index 0000000..cb3443e
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/CoordinateSequenceFilter.java
@@ -0,0 +1,89 @@
+
+
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.geom;
+
+
+/**
+ *  Interface for classes which provide operations that
+ *  can be applied to the coordinates in a {@link CoordinateSequence}. 
+ *  A CoordinateSequence filter can either record information about each coordinate or
+ *  change the coordinate in some way. CoordinateSequence filters can be
+ *  used to implement such things as coordinate transformations, centroid and
+ *  envelope computation, and many other functions.
+ *  For maximum efficiency, the execution of filters can be short-circuited.
+ *  {@link Geometry} classes support the concept of applying a
+ *  <code>CoordinateSequenceFilter</code> to each 
+ *  {@link CoordinateSequence}s they contain. 
+ *  <p>
+ *  <code>CoordinateSequenceFilter</code> is
+ *  an example of the Gang-of-Four Visitor pattern. 
+ *
+ *@see Geometry#apply(CoordinateSequenceFilter)
+ *@author Martin Davis
+ *@version 1.7
+ */
+public interface CoordinateSequenceFilter 
+{
+  /**
+   * Performs an operation on a coordinate in a {@link CoordinateSequence}.
+   *
+   *@param seq  the <code>CoordinateSequence</code> to which the filter is applied
+   *@param i the index of the coordinate to apply the filter to
+   */
+  void filter(CoordinateSequence seq, int i);
+  
+  /**
+   * Reports whether the application of this filter can be terminated.
+   * Once this method returns <tt>false</tt>, it should 
+   * continue to return <tt>false</tt> on every subsequent call.
+   * 
+   * @return true if the application of this filter can be terminated.
+   */
+  boolean isDone();
+  
+  /**
+   * Reports whether the execution of this filter
+   * has modified the coordinates of the geometry.
+   * If so, {@link Geometry#geometryChanged} will be executed
+   * after this filter has finished being executed.
+   * <p>
+   * Most filters can simply return a constant value reflecting
+   * whether they are able to change the coordinates.
+   * 
+   * @return true if this filter has changed the coordinates of the geometry
+   */
+  boolean isGeometryChanged();
+}
+
diff --git a/src/com/vividsolutions/jts/geom/CoordinateSequences.java b/src/com/vividsolutions/jts/geom/CoordinateSequences.java
index 92d6e99..7417184 100644
--- a/src/com/vividsolutions/jts/geom/CoordinateSequences.java
+++ b/src/com/vividsolutions/jts/geom/CoordinateSequences.java
@@ -69,5 +69,37 @@ public class CoordinateSequences {
       seq.setOrdinate(j, dim, tmp);
     }
   }
+  
+  /**
+   * Copies a section of a {@link CoordinateSequence} to another {@link CoordinateSequence}.
+   * The sequences must have the same dimension.
+   *
+   * @param src
+   * @param srcPos
+   * @param dest
+   * @param destPos
+   * @param length
+   */
+  public static void copy(CoordinateSequence src, int srcPos, CoordinateSequence dest, int destPos, int length)
+  {
+  	for (int i = 0; i < length; i++) {
+  		copyCoord(src, srcPos + i, dest, destPos + i);
+  	}
+  }
 
+  /**
+   * Copies a coordinate of a {@link CoordinateSequence} to another {@link CoordinateSequence}.
+   * The sequences must have the same dimension.
+   * 
+   * @param src
+   * @param srcPos
+   * @param dest
+   * @param destPos
+   */
+  public static void copyCoord(CoordinateSequence src, int srcPos, CoordinateSequence dest, int destPos)
+  {
+		for (int dim = 0; dim < src.getDimension(); dim++) {
+			dest.setOrdinate(destPos, dim, src.getOrdinate(srcPos, dim));
+		}
+  }
 }
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/geom/DefaultCoordinateSequence.java b/src/com/vividsolutions/jts/geom/DefaultCoordinateSequence.java
index ff026a3..292d186 100644
--- a/src/com/vividsolutions/jts/geom/DefaultCoordinateSequence.java
+++ b/src/com/vividsolutions/jts/geom/DefaultCoordinateSequence.java
@@ -154,9 +154,9 @@ class DefaultCoordinateSequence
   public void setOrdinate(int index, int ordinateIndex, double value)
   {
     switch (ordinateIndex) {
-      case CoordinateSequence.X:  coordinates[index].x = value;
-      case CoordinateSequence.Y:  coordinates[index].y = value;
-      case CoordinateSequence.Z:  coordinates[index].z = value;
+      case CoordinateSequence.X:  coordinates[index].x = value; break;
+      case CoordinateSequence.Y:  coordinates[index].y = value; break;
+      case CoordinateSequence.Z:  coordinates[index].z = value; break;
     }
   }
   /**
diff --git a/src/com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.java b/src/com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.java
index b8c718a..46eb786 100644
--- a/src/com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.java
+++ b/src/com/vividsolutions/jts/geom/DefaultCoordinateSequenceFactory.java
@@ -51,10 +51,8 @@ public class DefaultCoordinateSequenceFactory
   public DefaultCoordinateSequenceFactory() {
   }
 
-  /**
-   * @see http://www.javaworld.com/javaworld/javatips/jw-javatip122.html
-   */
   private Object readResolve() {
+  	// see http://www.javaworld.com/javaworld/javatips/jw-javatip122.html
     return DefaultCoordinateSequenceFactory.instance();
   }
 
diff --git a/src/com/vividsolutions/jts/geom/Dimension.java b/src/com/vividsolutions/jts/geom/Dimension.java
index 8d3a0eb..5e60451 100644
--- a/src/com/vividsolutions/jts/geom/Dimension.java
+++ b/src/com/vividsolutions/jts/geom/Dimension.java
@@ -35,9 +35,10 @@
 package com.vividsolutions.jts.geom;
 
 /**
- * Constants representing the dimensions of a point, a curve and a surface.
- * Also, constants representing the dimensions of the empty geometry and
- * non-empty geometries, and a wildcard dimension meaning "any dimension".
+ * Provides constants representing the dimensions of a point, a curve and a surface.
+ * Also provides constants representing the dimensions of the empty geometry and
+ * non-empty geometries, and the wildcard constant {@link #DONTCARE} meaning "any dimension".
+ * These constants are used as the entries in {@link IntersectionMatrix}s.
  * 
  * @version 1.7
  */
@@ -108,7 +109,7 @@ public class Dimension {
    *@param  dimensionSymbol  a character for use in the string representation of
    *      an <code>IntersectionMatrix</code>. Possible values are <code>{T, F, * , 0, 1, 2}</code>
    *      .
-   *@return                  a number that can be stored in the <code>IntersectionMatrix</code>
+   *@return a number that can be stored in the <code>IntersectionMatrix</code>
    *      . Possible values are <code>{TRUE, FALSE, DONTCARE, 0, 1, 2}</code>.
    */
   public static int toDimensionValue(char dimensionSymbol) {
diff --git a/src/com/vividsolutions/jts/geom/Envelope.java b/src/com/vividsolutions/jts/geom/Envelope.java
index aa08135..fb31e5f 100644
--- a/src/com/vividsolutions/jts/geom/Envelope.java
+++ b/src/com/vividsolutions/jts/geom/Envelope.java
@@ -163,7 +163,7 @@ public class Envelope
    */
   public Envelope(Coordinate p1, Coordinate p2)
   {
-    init(p1, p2);
+    init(p1.x, p2.x, p1.y, p2.y);
   }
 
   /**
@@ -173,7 +173,7 @@ public class Envelope
    */
   public Envelope(Coordinate p)
   {
-    init(p);
+    init(p.x, p.x, p.y, p.y);
   }
 
   /**
@@ -345,10 +345,22 @@ public class Envelope
   }
 
   /**
-   *  Enlarges the boundary of the <code>Envelope</code> so that it contains
-   *  (x,y). Does nothing if (x,y) is already on or within the boundaries.
+   * Gets the area of this envelope.
+   * 
+   * @return the area of the envelope
+   * @return 0.0 if the envelope is null
+   */
+  public double getArea()
+  {
+    return getWidth() * getHeight();
+  }
+  
+  /**
+   *  Enlarges this <code>Envelope</code> so that it contains
+   *  the given {@link Coordinate}. 
+   *  Has no effect if the point is already on or within the envelope.
    *
-   *@param  x  the value to lower the minimum x to or to raise the maximum x to
+   *@param  p  the Coordinate to expand to include
    *@param  y  the value to lower the minimum y to or to raise the maximum y to
    */
   public void expandToInclude(Coordinate p)
@@ -390,8 +402,9 @@ public class Envelope
   }
 
   /**
-   *  Enlarges the boundary of the <code>Envelope</code> so that it contains
-   *  (x,y). Does nothing if (x,y) is already on or within the boundaries.
+   *  Enlarges this <code>Envelope</code> so that it contains
+   *  the given point. 
+   *  Has no effect if the point is already on or within the envelope.
    *
    *@param  x  the value to lower the minimum x to or to raise the maximum x to
    *@param  y  the value to lower the minimum y to or to raise the maximum y to
@@ -420,11 +433,12 @@ public class Envelope
   }
 
   /**
-   *  Enlarges the boundary of the <code>Envelope</code> so that it contains
-   *  <code>other</code>. Does nothing if <code>other</code> is wholly on or
-   *  within the boundaries.
+   *  Enlarges this <code>Envelope</code> so that it contains
+   *  the <code>other</code> Envelope. 
+   *  Has no effect if <code>other</code> is wholly on or
+   *  within the envelope.
    *
-   *@param  other  the <code>Envelope</code> to merge with
+   *@param  other  the <code>Envelope</code> to expand to include
    */
   public void expandToInclude(Envelope other) {
     if (other.isNull()) {
@@ -498,34 +512,6 @@ public class Envelope
   }
 
 
-  /**
-   *  Returns <code>true</code> if the given point lies in or on the envelope.
-   *
-   *@param  p  the point which this <code>Envelope</code> is
-   *      being checked for containing
-   *@return    <code>true</code> if the point lies in the interior or
-   *      on the boundary of this <code>Envelope</code>.
-   */
-  public boolean contains(Coordinate p) {
-    return contains(p.x, p.y);
-  }
-
-  /**
-   *  Returns <code>true</code> if the given point lies in or on the envelope.
-   *
-   *@param  x  the x-coordinate of the point which this <code>Envelope</code> is
-   *      being checked for containing
-   *@param  y  the y-coordinate of the point which this <code>Envelope</code> is
-   *      being checked for containing
-   *@return    <code>true</code> if <code>(x, y)</code> lies in the interior or
-   *      on the boundary of this <code>Envelope</code>.
-   */
-  public boolean contains(double x, double y) {
-    return x >= minx &&
-        x <= maxx &&
-        y >= miny &&
-        y <= maxy;
-  }
 
   /**
    *  Check if the region defined by <code>other</code>
@@ -576,6 +562,7 @@ public class Envelope
    *@return        <code>true</code> if the point overlaps this <code>Envelope</code>
    */
   public boolean intersects(double x, double y) {
+  	if (isNull()) return false;
     return ! (x > maxx ||
         x < minx ||
         y > maxy ||
@@ -589,15 +576,95 @@ public class Envelope
   }
 
   /**
-   *  Returns <code>true</code> if the <code>Envelope other</code>
-   *  lies wholely inside this <code>Envelope</code> (inclusive of the boundary).
+   * Tests if the <code>Envelope other</code>
+   * lies wholely inside this <code>Envelope</code> (inclusive of the boundary).
+   * <p>
+   * Note that this is <b>not</b> the same definition as the SFS <tt>contains</tt>,
+   * which would exclude the envelope boundary.
    *
-   *@param  other  the <code>Envelope</code> which this <code>Envelope</code> is
-   *        being checked for containing
-   *@return        <code>true</code> if <code>other</code>
-   *              is contained in this <code>Envelope</code>
+   *@param  other the <code>Envelope</code> to check
+   *@return true if <code>other</code> is contained in this <code>Envelope</code>
+   *
+   *@see covers(Envelope)
    */
   public boolean contains(Envelope other) {
+  	return covers(other);
+  }
+
+  /**
+   * Tests if the given point lies in or on the envelope.
+   * <p>
+   * Note that this is <b>not</b> the same definition as the SFS <tt>contains</tt>,
+   * which would exclude the envelope boundary.
+   *
+   *@param  p  the point which this <code>Envelope</code> is
+   *      being checked for containing
+   *@return    <code>true</code> if the point lies in the interior or
+   *      on the boundary of this <code>Envelope</code>.
+   *      
+   *@see covers(Coordinate)
+   */
+  public boolean contains(Coordinate p) {
+    return covers(p);
+  }
+
+  /**
+   * Tests if the given point lies in or on the envelope.
+   * <p>
+   * Note that this is <b>not</b> the same definition as the SFS <tt>contains</tt>,
+   * which would exclude the envelope boundary.
+   *
+   *@param  x  the x-coordinate of the point which this <code>Envelope</code> is
+   *      being checked for containing
+   *@param  y  the y-coordinate of the point which this <code>Envelope</code> is
+   *      being checked for containing
+   *@return    <code>true</code> if <code>(x, y)</code> lies in the interior or
+   *      on the boundary of this <code>Envelope</code>.
+   *      
+   *@see covers(double, double)
+   */
+  public boolean contains(double x, double y) {
+  	return covers(x, y);
+  }
+
+  /**
+   * Tests if the given point lies in or on the envelope.
+   *
+   *@param  x  the x-coordinate of the point which this <code>Envelope</code> is
+   *      being checked for containing
+   *@param  y  the y-coordinate of the point which this <code>Envelope</code> is
+   *      being checked for containing
+   *@return    <code>true</code> if <code>(x, y)</code> lies in the interior or
+   *      on the boundary of this <code>Envelope</code>.
+   */
+  public boolean covers(double x, double y) {
+  	if (isNull()) return false;
+    return x >= minx &&
+        x <= maxx &&
+        y >= miny &&
+        y <= maxy;
+  }
+
+  /**
+   * Tests if the given point lies in or on the envelope.
+   *
+   *@param  p  the point which this <code>Envelope</code> is
+   *      being checked for containing
+   *@return    <code>true</code> if the point lies in the interior or
+   *      on the boundary of this <code>Envelope</code>.
+   */
+  public boolean covers(Coordinate p) {
+    return covers(p.x, p.y);
+  }
+
+  /**
+   * Tests if the <code>Envelope other</code>
+   * lies wholely inside this <code>Envelope</code> (inclusive of the boundary).
+   *
+   *@param  other the <code>Envelope</code> to check
+   *@return true if this <code>Envelope</code> covers the <code>other</code> 
+   */
+  public boolean covers(Envelope other) {
     if (isNull() || other.isNull()) { return false; }
     return other.getMinX() >= minx &&
         other.getMaxX() <= maxx &&
diff --git a/src/com/vividsolutions/jts/geom/Geometry.java b/src/com/vividsolutions/jts/geom/Geometry.java
index 42266ed..36eb327 100644
--- a/src/com/vividsolutions/jts/geom/Geometry.java
+++ b/src/com/vividsolutions/jts/geom/Geometry.java
@@ -33,19 +33,23 @@
 package com.vividsolutions.jts.geom;
 
 import java.io.Serializable;
-import java.util.Collection;
-import java.util.Iterator;
+import java.util.*;
 
 import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.geom.util.*;
 import com.vividsolutions.jts.io.WKTWriter;
+import com.vividsolutions.jts.operation.*;
 import com.vividsolutions.jts.operation.buffer.BufferOp;
 import com.vividsolutions.jts.operation.distance.DistanceOp;
 import com.vividsolutions.jts.operation.overlay.OverlayOp;
+import com.vividsolutions.jts.operation.union.UnaryUnionOp;
+import com.vividsolutions.jts.operation.overlay.snap.SnapIfNeededOverlayOp;
 import com.vividsolutions.jts.operation.predicate.RectangleIntersects;
 import com.vividsolutions.jts.operation.predicate.RectangleContains;
 import com.vividsolutions.jts.operation.relate.RelateOp;
 import com.vividsolutions.jts.operation.valid.IsValidOp;
 import com.vividsolutions.jts.util.Assert;
+
 /**
  * The base class for all geometric objects.
  * <P>
@@ -128,39 +132,25 @@ import com.vividsolutions.jts.util.Assert;
 public abstract class Geometry
     implements Cloneable, Comparable, Serializable
 {
-    private static final long serialVersionUID = 8763622679187376702L;
-
-  /**
-   *  The bounding box of this <code>Geometry</code>.
-   */
-  protected Envelope envelope;
-
-  private final static Class[] sortedClasses = new Class[] {
-      Point.class,
-      MultiPoint.class,
-      LineString.class,
-      LinearRing.class,
-      MultiLineString.class,
-      Polygon.class,
-      MultiPolygon.class,
-      GeometryCollection.class
-      };
-
+  private static final long serialVersionUID = 8763622679187376702L;
+    
+  private static Class[] sortedClasses;  
+  
   private final static GeometryComponentFilter geometryChangedFilter = new GeometryComponentFilter() {
     public void filter(Geometry geom) {
       geom.geometryChangedAction();
     }
   };
 
-  public Geometry(GeometryFactory factory) {
-    this.factory = factory;
-    this.SRID = factory.getSRID();
-  }
-
-  private GeometryFactory factory;
+  /**
+   *  The bounding box of this <code>Geometry</code>.
+   */
+  protected Envelope envelope;
 
-  // MD - no longer used.  Remove in next version
-  //private static final GeometryFactory INTERNAL_GEOMETRY_FACTORY = new GeometryFactory();
+  /**
+   * The {@link GeometryFactory} used to create this Geometry
+   */
+  protected final GeometryFactory factory;
 
   /**
    *  The ID of the Spatial Reference System used by this <code>Geometry</code>
@@ -168,15 +158,28 @@ public abstract class Geometry
   protected int SRID;
 
   /**
+   * An object reference which can be used to carry ancillary data defined
+   * by the client.
+   */
+  private Object userData = null;
+
+  /**
+   * Creates a new <tt>Geometry</tt> via the specified GeometryFactory.
+   *
+   * @param factory
+   */
+  public Geometry(GeometryFactory factory) {
+    this.factory = factory;
+    this.SRID = factory.getSRID();
+  }
+
+  /**
    *  Returns the name of this object's <code>com.vivid.jts.geom</code>
    *  interface.
    *
    *@return    the name of this <code>Geometry</code>s most specific <code>com.vividsolutions.jts.geom</code>
    *      interface
    */
-  //I wonder if we need this method, now that we have renamed the classes to
-  //what their old interfaces were named. Now we can perhaps simply use
-  //getClass().getName(). Who calls this method anyway? [Jon Aquino]
   public abstract String getGeometryType();
 
   /**
@@ -212,8 +215,6 @@ public abstract class Geometry
     return false;
   }
 
-
-
   /**
    *  Returns the ID of the Spatial Reference System used by the <code>Geometry</code>.
    *  <P>
@@ -233,13 +234,19 @@ public abstract class Geometry
   }
     /**
    *  Sets the ID of the Spatial Reference System used by the <code>Geometry</code>.
+   *  <p>
+   *  <b>NOTE:</b> This method should only be used for exceptional circumstances or 
+   *  for backwards compatibility.  Normally the SRID should be set on the 
+   *  {@link GeometryFactory} used to create the geometry.
+   *  SRIDs set using this method will <i>not</i> be propagated to 
+   *  geometries returned by constructive methods.
+   *  
+   *  @see GeometryFactory
    */
   public void setSRID(int SRID) {
     this.SRID = SRID;
   }
 
-  private Object userData = null;
-
   /**
    * Gets the factory which contains the context in which this geometry was created.
    *
@@ -306,19 +313,34 @@ public abstract class Geometry
   }
 
   /**
-   *  Returns a vertex of this <code>Geometry</code>.
+   *  Returns a vertex of this <code>Geometry</code>
+   *  (usually, but not necessarily, the first one).
+   *  The returned coordinate should not be assumed
+   *  to be an actual Coordinate object used in
+   *  the internal representation.
    *
    *@return    a {@link Coordinate} which is a vertex of this <code>Geometry</code>.
-   *          Returns <code>null</code> if this Geometry is empty
+   *@return null if this Geometry is empty
    */
   public abstract Coordinate getCoordinate();
-  /**
-   *  Returns this <code>Geometry</code> s vertices. If you modify the coordinates
-   *  in this array, be sure to call #geometryChanged afterwards.
-   *  The <code>Geometry</code>s contained by composite <code>Geometry</code>s
-   *  must be Geometry's; that is, they must implement <code>getCoordinates</code>.
+  
+  /**
+   *  Returns an array containing the values of all the vertices for 
+   *  this geometry.
+   *  If the geometry is a composite, the array will contain all the vertices
+   *  for the components, in the order in which the components occur in the geometry.
+   *  <p>
+   *  In general, the array cannot be assumed to be the actual internal 
+   *  storage for the vertices.  Thus modifying the array
+   *  may not modify the geometry itself. 
+   *  Use the {@link CoordinateSequence#setOrdinate} method
+   *  (possibly on the components) to modify the underlying data.
+   *  If the coordinates are modified, 
+   *  {@link #geometryChanged} must be called afterwards.
    *
    *@return    the vertices of this <code>Geometry</code>
+   *@see geometryChanged
+   *@see CoordinateSequence#setOrdinate
    */
   public abstract Coordinate[] getCoordinates();
 
@@ -354,7 +376,12 @@ public abstract class Geometry
    *      self-tangency, self-intersection or other anomalous points
    * @see #isValid
    */
-  public abstract boolean isSimple();
+  public boolean isSimple()
+  {
+    checkNotGeometryCollection(this);
+    IsSimpleOp op = new IsSimpleOp(this);
+    return op.isSimple();
+  }
 
   /**
    *  Tests the validity of this <code>Geometry</code>.
@@ -383,7 +410,10 @@ public abstract class Geometry
    *  Returns the minimum distance between this <code>Geometry</code>
    *  and the <code>Geometry</code> g
    *
-   *@param  g  the <code>Geometry</code> from which to compute the distance
+   * @param  g  the <code>Geometry</code> from which to compute the distance
+   * @return the distance between the geometries
+   * @return 0 if either input geometry is empty
+   * @throws IllegalArgumentException if g is null
    */
   public double distance(Geometry g)
   {
@@ -403,11 +433,13 @@ public abstract class Geometry
     double envDist = getEnvelopeInternal().distance(geom.getEnvelopeInternal());
     if (envDist > distance)
       return false;
-    // NOTE: this could be implemented more efficiently
+    return DistanceOp.isWithinDistance(this, geom, distance);
+    /*
     double geomDist = this.distance(geom);
     if (geomDist > distance)
       return false;
     return true;
+    */
   }
 
   public boolean isRectangle()
@@ -504,17 +536,29 @@ public abstract class Geometry
   }
 
   /**
-   *  Returns the dimension of this <code>Geometry</code>.
+   * Returns the dimension of this geometry.
+   * The dimension of a geometry is is the topological 
+   * dimension of its embedding in the 2-D Euclidean plane.
+   * In the JTS spatial model, dimension values are in the set {0,1,2}.
+   * <p>
+   * Note that this is a different concept to the dimension of 
+   * the vertex {@link Coordinate}s.  
+   * The geometry dimension can never be greater than the coordinate dimension.
+   * For example, a 0-dimensional geometry (e.g. a Point) 
+   * may have a coordinate dimension of 3 (X,Y,Z). 
    *
-   *@return    the dimension of the class implementing this interface, whether
-   *      or not this object is the empty geometry
+   *@return the topological dimension of this geometry.
    */
   public abstract int getDimension();
+
   /**
-   *  Returns the boundary, or the empty geometry if this <code>Geometry</code>
-   *  is empty. For a discussion of this function, see the OpenGIS Simple
-   *  Features Specification. As stated in SFS Section 2.1.13.1, "the boundary
-   *  of a Geometry is a set of Geometries of the next lower dimension."
+   * Returns the boundary, or an empty geometry of appropriate dimension
+   * if this <code>Geometry</code>  is empty.
+   * (In the case of zero-dimensional geometries, '
+   * an empty GeometryCollection is returned.)
+   * For a discussion of this function, see the OpenGIS Simple
+   * Features Specification. As stated in SFS Section 2.1.13.1, "the boundary
+   * of a Geometry is a set of Geometries of the next lower dimension."
    *
    *@return    the closure of the combinatorial boundary of this <code>Geometry</code>
    */
@@ -559,9 +603,10 @@ public abstract class Geometry
   }
 
   /**
-   * Notifies this Geometry that its Coordinates have been changed by an external
-   * party (using a CoordinateFilter, for example). The Geometry will flush
-   * and/or update any information it has cached (such as its {@link Envelope} ).
+   * Notifies this geometry that its coordinates have been changed by an external
+   * party (for example, via a {@link CoordinateFilter}). 
+   * When this method is called the geometry will flush
+   * and/or update any derived information it has cached (such as its {@link Envelope} ).
    */
   public void geometryChanged() {
     apply(geometryChangedFilter);
@@ -578,13 +623,14 @@ public abstract class Geometry
   }
 
   /**
-   * Returns <code>true</code> if this geometry is disjoint to the specified geometry.
+   * Tests whether this geometry is disjoint from the specified geometry.
    * <p>
    * The <code>disjoint</code> predicate has the following equivalent definitions:
    * <ul>
    * <li>The two geometries have no point in common
-   * <li>The DE-9IM Intersection Matrix for the two geometries is FF*FF****
-   * <li>! <code>g.intersects(this)</code>
+   * <li>The DE-9IM Intersection Matrix for the two geometries matches 
+   * <code>[FF*FF****]</code>
+   * <li><code>! g.intersects(this)</code>
    * (<code>disjoint</code> is the inverse of <code>intersects</code>)
    * </ul>
    *
@@ -599,14 +645,14 @@ public abstract class Geometry
   }
 
   /**
-   * Returns <code>true</code> if this geometry touches the
+   * Tests whether this geometry touches the
    * specified geometry.
    * <p>
    * The <code>touches</code> predicate has the following equivalent definitions:
    * <ul>
    * <li>The geometries have at least one point in common, but their interiors do not intersect.
-   * <li>The DE-9IM Intersection Matrix for the two geometries is
-   *   FT*******, F**T***** or F***T****
+   * <li>The DE-9IM Intersection Matrix for the two geometries matches
+   *   <code>[FT*******]</code> or <code>[F**T*****]</code> or <code>[F***T****]</code>
    * </ul>
    * If both geometries have dimension 0, this predicate returns <code>false</code>
    *
@@ -622,12 +668,17 @@ public abstract class Geometry
   }
 
   /**
-   * Returns <code>true</code> if this geometry intersects the specified geometry.
+   * Tests whether this geometry intersects the specified geometry.
    * <p>
    * The <code>intersects</code> predicate has the following equivalent definitions:
    * <ul>
    * <li>The two geometries have at least one point in common
-   * <li>! <code>g.disjoint(this)</code>
+   * <li>The DE-9IM Intersection Matrix for the two geometries matches
+   *    <code>[T********]</code>
+   * or <code>[*T*******]</code>
+   * or <code>[***T*****]</code>
+   * or <code>[****T****]</code>
+   * <li><code>! g.disjoint(this)</code>
    * (<code>intersects</code> is the inverse of <code>disjoint</code>)
    * </ul>
    *
@@ -670,24 +721,24 @@ public abstract class Geometry
   }
 
   /**
-   * Returns <code>true</code> if this geometry crosses the
+   * Tests whether this geometry crosses the
    * specified geometry.
    * <p>
    * The <code>crosses</code> predicate has the following equivalent definitions:
    * <ul>
    * <li>The geometries have some but not all interior points in common.
-   * <li>The DE-9IM Intersection Matrix for the two geometries is
+   * <li>The DE-9IM Intersection Matrix for the two geometries matches
    *   <ul>
-   *    <li>T*T****** (for P/L, P/A, and L/A situations)
-   *    <li>T*****T** (for L/P, L/A, and A/L situations)
-   *    <li>0******** (for L/L situations)
+   *    <li><code>[T*T******]</code> (for P/L, P/A, and L/A situations)
+   *    <li><code>[T*****T**]</code> (for L/P, A/P, and A/L situations)
+   *    <li><code>[0********]</code> (for L/L situations)
    *   </ul>
    * </ul>
    * For any other combination of dimensions this predicate returns <code>false</code>.
    * <p>
    * The SFS defined this predicate only for P/L, P/A, L/L, and L/A situations.
-   * JTS extends the definition to apply to L/P, A/P and A/L situations as well.
-   * This makes the relation symmetric.
+   * JTS extends the definition to apply to L/P, A/P and A/L situations as well,
+   * in order to make the relation symmetric.
    *
    *@param  g  the <code>Geometry</code> with which to compare this <code>Geometry</code>
    *@return        <code>true</code> if the two <code>Geometry</code>s cross.
@@ -700,21 +751,22 @@ public abstract class Geometry
   }
 
   /**
-   * Returns <code>true</code> if this geometry is within the
+   * Tests whether this geometry is within the
    * specified geometry.
    * <p>
    * The <code>within</code> predicate has the following equivalent definitions:
    * <ul>
    * <li>Every point of this geometry is a point of the other geometry,
    * and the interiors of the two geometries have at least one point in common.
-   * <li>The DE-9IM Intersection Matrix for the two geometries is T*F**F***
+   * <li>The DE-9IM Intersection Matrix for the two geometries matches 
+   * <code>[T*F**F***]</code>
    * <li><code>g.contains(this)</code>
-   * (<code>within</code> is the inverse of <code>contains</code>)
+   * (<code>within</code> is the converse of <code>contains</code>)
    * </ul>
    * An implication of the definition is that
-   * "The boundary of a Polygon is not within the Polygon".
-   * In other words, if a geometry G is a subset of
-   * the points in the boundary of a polygon P, <code>G.within(P) = false</code>
+   * "The boundary of a Geometry is not within the Geometry".
+   * In other words, if a geometry A is a subset of
+   * the points in the boundary of a geomtry B, <code>A.within(B) = false</code>
    *
    *@param  g  the <code>Geometry</code> with which to compare this <code>Geometry</code>
    *@return        <code>true</code> if this <code>Geometry</code> is within
@@ -727,20 +779,21 @@ public abstract class Geometry
   }
 
   /**
-   * Returns <code>true</code> if this geometry contains the
+   * Tests whether this geometry contains the
    * specified geometry.
    * <p>
    * The <code>contains</code> predicate has the following equivalent definitions:
    * <ul>
    * <li>Every point of the other geometry is a point of this geometry,
    * and the interiors of the two geometries have at least one point in common.
-   * <li>The DE-9IM Intersection Matrix for the two geometries is <code>T*****FF*</code>
+   * <li>The DE-9IM Intersection Matrix for the two geometries matches 
+   * <code>[T*****FF*]</code>
    * <li><code>g.within(this)</code>
-   * (<code>contains</code> is the inverse of <code>within</code>)
+   * (<code>contains</code> is the converse of <code>within</code>)
    * </ul>
-   * An implication of the definition is that "Polygons do not
-   * contain their boundary".  In other words, if a geometry G is a subset of
-   * the points in the boundary of a polygon P, <code>P.contains(G) = false</code>
+   * An implication of the definition is that "Geometries do not
+   * contain their boundary".  In other words, if a geometry A is a subset of
+   * the points in the boundary of a geometry B, <code>B.contains(A) = false</code>
    *
    *@param  g  the <code>Geometry</code> with which to compare this <code>Geometry</code>
    *@return        <code>true</code> if this <code>Geometry</code> contains <code>g</code>
@@ -760,18 +813,19 @@ public abstract class Geometry
   }
 
   /**
-   * Returns <code>true</code> if this geometry overlaps the
+   * Tests whether this geometry overlaps the
    * specified geometry.
    * <p>
    * The <code>overlaps</code> predicate has the following equivalent definitions:
    * <ul>
-   * <li>The geometries have some but not all points in common,
+   * <li>The geometries have at least one point each not shared by the other
+   * (or equivalently neither covers the other),
    * they have the same dimension,
    * and the intersection of the interiors of the two geometries has
    * the same dimension as the geometries themselves.
-   * <li>The DE-9IM Intersection Matrix for the two geometries is
-   *   <code>T*T***T**</code> (for two points or two surfaces)
-   *   or <code>1*T***T**</code> (for two curves)
+   * <li>The DE-9IM Intersection Matrix for the two geometries matches
+   *   <code>[T*T***T**]</code> (for two points or two surfaces)
+   *   or <code>[1*T***T**]</code> (for two curves)
    * </ul>
    * If the geometries are of different dimension this predicate returns <code>false</code>.
    *
@@ -786,22 +840,24 @@ public abstract class Geometry
   }
 
   /**
-   * Returns <code>true</code> if this geometry covers the
+   * Tests whether this geometry covers the
    * specified geometry.
    * <p>
    * The <code>covers</code> predicate has the following equivalent definitions:
    * <ul>
    * <li>Every point of the other geometry is a point of this geometry.
-   * <li>The DE-9IM Intersection Matrix for the two geometries is
-   *    <code>T*****FF*</code>
-   * or <code>*T****FF*</code>
-   * or <code>***T**FF*</code>
-   * or <code>****T*FF*</code>
+   * <li>The DE-9IM Intersection Matrix for the two geometries matches
+   *    <code>[T*****FF*]</code>
+   * or <code>[*T****FF*]</code>
+   * or <code>[***T**FF*]</code>
+   * or <code>[****T*FF*]</code>
    * <li><code>g.coveredBy(this)</code>
-   * (<code>covers</code> is the inverse of <code>coverdBy</code>)
+   * (<code>covers</code> is the converse of <code>coveredBy</code>)
    * </ul>
-   * Note the difference between <code>covers</code> and <code>contains</code>
-   * - <code>covers</code> is a more inclusive relation.
+   * If either geometry is empty, the value of this predicate is <tt>false</tt>.
+   * <p>
+   * This predicate is similar to {@link #contains},
+   * but is more inclusive (i.e. returns <tt>true</tt> for more cases).
    * In particular, unlike <code>contains</code> it does not distinguish between
    * points in the boundary and in the interior of geometries.
    * For most situations, <code>covers</code> should be used in preference to <code>contains</code>.
@@ -816,32 +872,35 @@ public abstract class Geometry
    */
   public boolean covers(Geometry g) {
     // short-circuit test
-    if (! getEnvelopeInternal().contains(g.getEnvelopeInternal()))
+    if (! getEnvelopeInternal().covers(g.getEnvelopeInternal()))
       return false;
     // optimization for rectangle arguments
     if (isRectangle()) {
-      return getEnvelopeInternal().contains(g.getEnvelopeInternal());
+    	// since we have already tested that the test envelope is covered
+      return true;
     }
     return relate(g).isCovers();
   }
 
   /**
-   * Returns <code>true</code> if this geometry is covered by the
+   * Tests whether this geometry is covered by the
    * specified geometry.
    * <p>
    * The <code>coveredBy</code> predicate has the following equivalent definitions:
    * <ul>
    * <li>Every point of this geometry is a point of the other geometry.
-   * <li>The DE-9IM Intersection Matrix for the two geometries is
-   *    <code>T*F**F***</code>
-   * or <code>*TF**F***</code>
-   * or <code>**FT*F***</code>
-   * or <code>**F*TF***</code>
+   * <li>The DE-9IM Intersection Matrix for the two geometries matches
+   *    <code>[T*F**F***]</code>
+   * or <code>[*TF**F***]</code>
+   * or <code>[**FT*F***]</code>
+   * or <code>[**F*TF***]</code>
    * <li><code>g.covers(this)</code>
-   * (<code>coveredBy</code> is the inverse of <code>covers</code>)
+   * (<code>coveredBy</code> is the converse of <code>covers</code>)
    * </ul>
-   * Note the difference between <code>coveredBy</code> and <code>within</code>
-   * - <code>coveredBy</code> is a more inclusive relation
+   * If either geometry is empty, the value of this predicate is <tt>false</tt>.
+   * <p>
+   * This predicate is similar to {@link #within},
+   * but is more inclusive (i.e. returns <tt>true</tt> for more cases).
    *
    *@param  g  the <code>Geometry</code> with which to compare this <code>Geometry</code>
    *@return        <code>true</code> if this <code>Geometry</code> is covered by <code>g</code>
@@ -854,7 +913,7 @@ public abstract class Geometry
   }
 
   /**
-   *  Returns <code>true</code> if the elements in the DE-9IM
+   * Tests whether the elements in the DE-9IM
    * {@link IntersectionMatrix} for the two <code>Geometry</code>s match the elements in <code>intersectionPattern</code>.
    * The pattern is a 9-character string, with symbols drawn from the following set:
    *  <UL>
@@ -894,7 +953,7 @@ public abstract class Geometry
   }
 
   /**
-   * Returns <code>true</code> if this geometry is equal to the
+   * Tests whether this geometry is equal to the
    * specified geometry.
    * <p>
    * The <code>equals</code> predicate has the following equivalent definitions:
@@ -903,6 +962,8 @@ public abstract class Geometry
    * and no point of either geometry lies in the exterior of the other geometry.
    * <li>The DE-9IM Intersection Matrix for the two geometries is T*F**FFF*
    * </ul>
+   * <b>Note</b> that this method computes topologically equality, not structural or
+   * vertex-wise equality.
    *
    *@param  other  the <code>Geometry</code> with which to compare this <code>Geometry</code>
    *@return        <code>true</code> if the two <code>Geometry</code>s are equal
@@ -914,8 +975,6 @@ public abstract class Geometry
     return relate(g).isEquals(getDimension(), g.getDimension());
   }
 
-  //<<PERHAPS:DESIGN>> Override Object#equals [Jon Aquino]
-
   public String toString() {
     return toText();
   }
@@ -933,40 +992,64 @@ public abstract class Geometry
   }
 
   /**
-   * Computes a buffer area around this geometry having the given
-   * width.
-   * The buffer of a Geometry is the Minkowski sum or difference
-   * of the geometry with a disc of radius <code>abs(distance)</code>.
-   * The buffer is constructed using 8 segments per quadrant to represent curves.
-   * The end cap style is <tt>CAP_ROUND</tt>.
-   *
-   *@param  distance  the width of the buffer (may be positive, negative or 0)
-   *@return an area geometry representing the buffer region
-   *
-   * @see #buffer(double, int)
-   * @see #buffer(double, int, int)
-   */
-  public Geometry buffer(double distance) {
-    return BufferOp.bufferOp(this, distance);
-  }
-
-  /**
-   * Computes a buffer area around this geometry having the given
-   * width and with a specified accuracy of approximation for circular arcs.
-   * <p>
-   * Buffer area boundaries can contain circular arcs.
-   * To represent these arcs using linear geometry they must be approximated with line segments.
-   * The <code>quadrantSegments</code> argument allows controlling the
-   * accuracy of the approximation
-   * by specifying the number of line segments used to represent a quadrant of a circle
-   *
-   *@param  distance  the width of the buffer (may be positive, negative or 0)
-   *@param quadrantSegments the number of line segments used to represent a quadrant of a circle
-   *@return an area geometry representing the buffer region
-   *
-   * @see #buffer(double)
-   * @see #buffer(double, int, int)
-   */
+	 * Computes a buffer area around this geometry having the given width. The
+	 * buffer of a Geometry is the Minkowski sum or difference of the geometry
+	 * with a disc of radius <code>abs(distance)</code>.
+	 * <p> 
+	 * Mathematically-exact buffer area boundaries can contain circular arcs. 
+	 * To represent these arcs using linear geometry they must be approximated with line segments.
+	 * The buffer geometry is constructed using 8 segments per quadrant to approximate 
+	 * the circular arcs.
+	 * The end cap style is <tt>CAP_ROUND</tt>.
+	 * <p>
+	 * The buffer operation always returns a polygonal result. The negative or
+	 * zero-distance buffer of lines and points is always an empty {@link Polygon}.
+	 * This is also the result for the buffers of degenerate (zero-area) polygons.
+	 * 
+	 * @param distance
+	 *          the width of the buffer (may be positive, negative or 0)
+	 * @return a polygonal geometry representing the buffer region (which may be
+	 *         empty)
+	 * 
+	 * @throws TopologyException
+	 *           if a robustness error occurs
+	 * 
+	 * @see #buffer(double, int)
+	 * @see #buffer(double, int, int)
+	 */
+	public Geometry buffer(double distance) {
+		return BufferOp.bufferOp(this, distance);
+	}
+
+  /**
+	 * Computes a buffer area around this geometry having the given width and with
+	 * a specified accuracy of approximation for circular arcs.
+	 * <p>
+	 * Mathematically-exact buffer area boundaries can contain circular arcs. 
+	 * To represent these arcs
+	 * using linear geometry they must be approximated with line segments. The
+	 * <code>quadrantSegments</code> argument allows controlling the accuracy of
+	 * the approximation by specifying the number of line segments used to
+	 * represent a quadrant of a circle
+	 * <p>
+	 * The buffer operation always returns a polygonal result. The negative or
+	 * zero-distance buffer of lines and points is always an empty {@link Polygon}.
+	 * This is also the result for the buffers of degenerate (zero-area) polygons.
+	 * 
+	 * @param distance
+	 *          the width of the buffer (may be positive, negative or 0)
+	 * @param quadrantSegments
+	 *          the number of line segments used to represent a quadrant of a
+	 *          circle
+	 * @return a polygonal geometry representing the buffer region (which may be
+	 *         empty)
+	 * 
+	 * @throws TopologyException
+	 *           if a robustness error occurs
+	 * 
+	 * @see #buffer(double)
+	 * @see #buffer(double, int, int)
+	 */
   public Geometry buffer(double distance, int quadrantSegments) {
     return BufferOp.bufferOp(this, distance, quadrantSegments);
   }
@@ -976,7 +1059,7 @@ public abstract class Geometry
    * width and with a specified accuracy of approximation for circular arcs,
    * and using a specified end cap style.
    * <p>
-   * Buffer area boundaries can contain circular arcs.
+   * Mathematically-exact buffer area boundaries can contain circular arcs.
    * To represent these arcs using linear geometry they must be approximated with line segments.
    * The <code>quadrantSegments</code> argument allows controlling the
    * accuracy of the approximation
@@ -989,11 +1072,17 @@ public abstract class Geometry
    * <li><tt>BufferOp.CAP_BUTT</tt> - a straight line perpendicular to the end segment
    * <li><tt>BufferOp.CAP_SQUARE</tt> - a half-square
    * </ul>
+	 * <p>
+	 * The buffer operation always returns a polygonal result. The negative or
+	 * zero-distance buffer of lines and points is always an empty {@link Polygon}.
+	 * This is also the result for the buffers of degenerate (zero-area) polygons.
    *
    *@param  distance  the width of the buffer (may be positive, negative or 0)
    *@param quadrantSegments the number of line segments used to represent a quadrant of a circle
    *@param endCapStyle the end cap style to use
-   *@return an area geometry representing the buffer region
+   *@return a polygonal geometry representing the buffer region (which may be empty)
+   *
+   * @throws TopologyException if a robustness error occurs
    *
    * @see #buffer(double)
    * @see #buffer(double, int)
@@ -1038,18 +1127,52 @@ public abstract class Geometry
   }
 
   /**
-   *  Computes a <code>Geometry</code> representing the points shared by this
-   *  <code>Geometry</code> and <code>other</code>.
+   * Computes a new geometry which has all component coordinate sequences
+   * in reverse order (opposite orientation) to this one.
+   * 
+   * @return a reversed geometry
+   */
+  public abstract Geometry reverse();
+  
+  /**
+   * Computes a <code>Geometry</code> representing the points shared by this
+   * <code>Geometry</code> and <code>other</code>.
+   * {@link GeometryCollection}s support intersection with 
+   * homogeneous collection types, with the semantics that
+   * the result is a {@link GeometryCollection} of the
+   * intersection of each element of the target with the argument. 
    *
-   * @param  other  the <code>Geometry</code> with which to compute the
-   *      intersection
-   * @return        the points common to the two <code>Geometry</code>s
+   * @param  other the <code>Geometry</code> with which to compute the intersection
+   * @return the points common to the two <code>Geometry</code>s
    * @throws TopologyException if a robustness error occurs
+   * @throws IllegalArgumentException if the argument is a non-empty GeometryCollection
    */
-  public Geometry intersection(Geometry other) {
+  public Geometry intersection(Geometry other)
+  {
+  	/**
+  	 * TODO: MD - add optimization for P-A case using Point-In-Polygon
+  	 */
+    // special case: if one input is empty ==> empty
+    if (this.isEmpty()) return this.getFactory().createGeometryCollection(null);
+    if (other.isEmpty()) return this.getFactory().createGeometryCollection(null);
+
+    // compute for GCs
+    if (isGeometryCollection(this)) {
+      final Geometry g2 = other;
+      return GeometryCollectionMapper.map(
+          (GeometryCollection) this,
+          new GeometryCollectionMapper.MapOp() {
+        public Geometry map(Geometry g) {
+          return g.intersection(g2);
+        }
+      });
+    }
+//    if (isGeometryCollection(other))
+//      return other.intersection(this);
+    
     checkNotGeometryCollection(this);
     checkNotGeometryCollection(other);
-    return OverlayOp.overlayOp(this, other, OverlayOp.INTERSECTION);
+    return SnapIfNeededOverlayOp.overlayOp(this, other, OverlayOp.INTERSECTION);
   }
 
   /**
@@ -1060,11 +1183,19 @@ public abstract class Geometry
    *@return        a set combining the points of this <code>Geometry</code> and
    *      the points of <code>other</code>
    * @throws TopologyException if a robustness error occurs
+   * @throws IllegalArgumentException if either input is a non-empty GeometryCollection
    */
-  public Geometry union(Geometry other) {
+  public Geometry union(Geometry other)
+  {
+    // special case: if either input is empty ==> other input
+    if (this.isEmpty()) return (Geometry) other.clone();
+    if (other.isEmpty()) return (Geometry) clone();
+
+    // TODO: optimize if envelopes of geometries do not intersect
+    
     checkNotGeometryCollection(this);
     checkNotGeometryCollection(other);
-    return OverlayOp.overlayOp(this, other, OverlayOp.UNION);
+    return SnapIfNeededOverlayOp.overlayOp(this, other, OverlayOp.UNION);
   }
 
   /**
@@ -1077,11 +1208,20 @@ public abstract class Geometry
    *@return        the point set difference of this <code>Geometry</code> with
    *      <code>other</code>
    * @throws TopologyException if a robustness error occurs
+   * @throws IllegalArgumentException if either input is a non-empty GeometryCollection
    */
-  public Geometry difference(Geometry other) {
+  public Geometry difference(Geometry other)
+  {
+    // mod to handle empty cases better - return type of input
+    //if (this.isEmpty() || other.isEmpty()) return (Geometry) clone();
+    
+    // special case: if A.isEmpty ==> empty; if B.isEmpty ==> A
+    if (this.isEmpty()) return this.getFactory().createGeometryCollection(null);
+    if (other.isEmpty()) return (Geometry) clone();
+
     checkNotGeometryCollection(this);
     checkNotGeometryCollection(other);
-    return OverlayOp.overlayOp(this, other, OverlayOp.DIFFERENCE);
+    return SnapIfNeededOverlayOp.overlayOp(this, other, OverlayOp.DIFFERENCE);
   }
 
   /**
@@ -1095,13 +1235,40 @@ public abstract class Geometry
    *@return        the point set symmetric difference of this <code>Geometry</code>
    *      with <code>other</code>
    * @throws TopologyException if a robustness error occurs
+   * @throws IllegalArgumentException if either input is a non-empty GeometryCollection
    */
-  public Geometry symDifference(Geometry other) {
+  public Geometry symDifference(Geometry other)
+  {
+    // special case: if either input is empty ==> other input
+    if (this.isEmpty()) return (Geometry) other.clone();
+    if (other.isEmpty()) return (Geometry) clone();
+
     checkNotGeometryCollection(this);
     checkNotGeometryCollection(other);
-    return OverlayOp.overlayOp(this, other, OverlayOp.SYMDIFFERENCE);
+    return SnapIfNeededOverlayOp.overlayOp(this, other, OverlayOp.SYMDIFFERENCE);
   }
 
+	/**
+	 * Computes the union of all the elements of this geometry. Heterogeneous
+	 * {@link GeometryCollection}s are fully supported.
+	 * <p>
+	 * The result obeys the following contract:
+	 * <ul>
+	 * <li>Unioning a set of {@link LineString}s has the effect of fully noding
+	 * and dissolving the linework.
+	 * <li>Unioning a set of {@link Polygon}s will always 
+	 * return a {@link Polygonal} geometry (unlike {link #union(Geometry)},
+	 * which may return geometrys of lower dimension if a topology collapse occurred.
+	 * </ul>
+	 * 
+	 * @return
+	 * 
+	 * @see UnaryUnionOp
+	 */
+	public Geometry union() {
+		return UnaryUnionOp.union(this);
+	}
+  
   /**
    * Returns true if the two <code>Geometry</code>s are exactly equal,
    * up to a specified distance tolerance.
@@ -1147,12 +1314,13 @@ public abstract class Geometry
 
   /**
    *  Performs an operation with or on this <code>Geometry</code>'s
-   *  coordinates. If you are using this method to modify the geometry, be sure
-   *  to call #geometryChanged() afterwards. Note that you cannot use this
-   *  method to
+   *  coordinates. 
+   *  If this method modifies any coordinate values,
+   *  {@link #geometryChanged} must be called to update the geometry state. 
+   *  Note that you cannot use this method to
    *  modify this Geometry if its underlying CoordinateSequence's #get method
    *  returns a copy of the Coordinate, rather than the actual Coordinate stored
-   *  (if it even stores Coordinates at all).
+   *  (if it even stores Coordinate objects at all).
    *
    *@param  filter  the filter to apply to this <code>Geometry</code>'s
    *      coordinates
@@ -1160,6 +1328,16 @@ public abstract class Geometry
   public abstract void apply(CoordinateFilter filter);
 
   /**
+   *  Performs an operation on the coordinates in this <code>Geometry</code>'s
+   *  {@link CoordinateSequence}s. 
+   *  If the filter reports that a coordinate value has been changed, 
+   *  {@link #geometryChanged} will be called automatically.
+   *
+   *@param  filter  the filter to apply
+   */
+  public abstract void apply(CoordinateSequenceFilter filter);
+
+  /**
    *  Performs an operation with or on this <code>Geometry</code> and its
    *  subelement <code>Geometry</code>s (if any).
    *  Only GeometryCollections and subclasses
@@ -1180,6 +1358,14 @@ public abstract class Geometry
    */
   public abstract void apply(GeometryComponentFilter filter);
 
+  /**
+   * Creates and returns a full copy of this {@link Geometry} object
+   * (including all coordinates contained by it).
+   * Subclasses are responsible for overriding this method and copying
+   * their internal data.  Overrides should call this method first.
+   *
+   * @return a clone of this instance
+   */
   public Object clone() {
     try {
       Geometry clone = (Geometry) super.clone();
@@ -1326,6 +1512,10 @@ public abstract class Geometry
     }
   }
 
+  protected boolean isGeometryCollection(Geometry g)
+  {
+    return g.getClass().equals(com.vividsolutions.jts.geom.GeometryCollection.class);
+  }
 
   /**
    *  Returns the minimum and maximum x and y values in this <code>Geometry</code>
@@ -1404,15 +1594,30 @@ public abstract class Geometry
   }
 
   private int getClassSortIndex() {
-    for (int i = 0; i < sortedClasses.length; i++) {
-      if (sortedClasses[i].isInstance(this)) {
-        return i;
-      }
-    }
-    Assert.shouldNeverReachHere("Class not supported: " + this.getClass());
-    return -1;
+		if (sortedClasses == null)
+			initSortedClasses();
+
+		for (int i = 0; i < sortedClasses.length; i++) {
+			if (sortedClasses[i].isInstance(this))
+				return i;
+		}
+		Assert.shouldNeverReachHere("Class not supported: " + this.getClass());
+		return -1;
+	}
+
+  private static void initSortedClasses()
+  {
+		sortedClasses = new Class[] { 
+					Point.class, 
+					MultiPoint.class,
+					LineString.class, 
+					LinearRing.class, 
+					MultiLineString.class,
+					Polygon.class, 
+					MultiPolygon.class, 
+					GeometryCollection.class };
   }
-
+  
   private Point createPointFromInternalCoord(Coordinate coord, Geometry exemplar)
   {
     exemplar.getPrecisionModel().makePrecise(coord);
diff --git a/src/com/vividsolutions/jts/geom/GeometryCollection.java b/src/com/vividsolutions/jts/geom/GeometryCollection.java
index 22eba42..16dc3b5 100644
--- a/src/com/vividsolutions/jts/geom/GeometryCollection.java
+++ b/src/com/vividsolutions/jts/geom/GeometryCollection.java
@@ -148,12 +148,6 @@ public class GeometryCollection extends Geometry {
     return "GeometryCollection";
   }
 
-  public boolean isSimple() {
-    checkNotGeometryCollection(this);
-    Assert.shouldNeverReachHere();
-    return false;
-  }
-
   public Geometry getBoundary() {
     checkNotGeometryCollection(this);
     Assert.shouldNeverReachHere();
@@ -163,7 +157,7 @@ public class GeometryCollection extends Geometry {
   /**
    *  Returns the area of this <code>GeometryCollection</code>
    *
-   *@return the area of the polygon
+   * @return the area of the polygon
    */
   public double getArea()
   {
@@ -200,9 +194,22 @@ public class GeometryCollection extends Geometry {
   }
 
   public void apply(CoordinateFilter filter) {
+	    for (int i = 0; i < geometries.length; i++) {
+	      geometries[i].apply(filter);
+	    }
+	  }
+
+  public void apply(CoordinateSequenceFilter filter) {
+    if (geometries.length == 0)
+      return;
     for (int i = 0; i < geometries.length; i++) {
       geometries[i].apply(filter);
+      if (filter.isDone()) {
+        break;
+      }
     }
+    if (filter.isGeometryChanged())
+      geometryChanged();
   }
 
   public void apply(GeometryFilter filter) {
@@ -219,6 +226,12 @@ public class GeometryCollection extends Geometry {
     }
   }
 
+  /**
+   * Creates and returns a full copy of this {@link GeometryCollection} object.
+   * (including all coordinates contained by it).
+   *
+   * @return a clone of this instance
+   */
   public Object clone() {
     GeometryCollection gc = (GeometryCollection) super.clone();
     gc.geometries = new Geometry[geometries.length];
@@ -267,5 +280,22 @@ public class GeometryCollection extends Geometry {
     return 0;
 
   }
+  
+  /**
+   * Creates a {@link GeometryCollection} with
+   * every component reversed.
+   * The order of the components in the collection are not reversed.
+   *
+   * @return a {@link GeometryCollection} in the reverse order
+   */
+  public Geometry reverse()
+  {
+    int n = geometries.length;
+    Geometry[] revGeoms = new Geometry[n];
+    for (int i = 0; i < geometries.length; i++) {
+      revGeoms[i] = geometries[i].reverse();
+    }
+    return getFactory().createGeometryCollection(revGeoms);
+  }
 }
 
diff --git a/src/com/vividsolutions/jts/geom/GeometryCollectionIterator.java b/src/com/vividsolutions/jts/geom/GeometryCollectionIterator.java
index 8690198..c95d402 100644
--- a/src/com/vividsolutions/jts/geom/GeometryCollectionIterator.java
+++ b/src/com/vividsolutions/jts/geom/GeometryCollectionIterator.java
@@ -39,7 +39,7 @@ import java.util.NoSuchElementException;
 
 /**
  *  Iterates over all {@link Geometry}s in a {@link GeometryCollection}.
- *  . Implements a pre-order depth-first traversal of the <code>GeometryCollection</code>
+ *  Implements a pre-order depth-first traversal of the <code>GeometryCollection</code>
  *  (which may be nested). The original <code>GeometryCollection</code> is
  *  returned as well (as the first object), as are all sub-collections. It is
  *  simple to ignore the <code>GeometryCollection</code> objects if they are not
diff --git a/src/com/vividsolutions/jts/geom/GeometryComponentFilter.java b/src/com/vividsolutions/jts/geom/GeometryComponentFilter.java
index 9f9814a..22ab127 100644
--- a/src/com/vividsolutions/jts/geom/GeometryComponentFilter.java
+++ b/src/com/vividsolutions/jts/geom/GeometryComponentFilter.java
@@ -40,8 +40,13 @@ package com.vividsolutions.jts.geom;
  *  a <code>GeometryComponentFilter</code>
  *  filter to the <code>Geometry</code>.
  *  The filter is applied to every component of the <code>Geometry</code>
- *  which is itself a <code>Geometry</code>.
- * (For instance, all the LinearRings in Polygons are visited.)
+ *  which is itself a <code>Geometry</code>
+ *  and which does not itself contain any components.
+ * (For instance, all the LinearRings in Polygons are visited,
+ * but in a MultiPolygon the Polygons themselves are not visited.)
+ * Thus the only classes of Geometry which must be 
+ * handled as arguments to {@link #filter}
+ * are {@link LineString}s, {@link LinearRing}s and {@link Point}s.
  *  <p>
  *  A <code>GeometryComponentFilter</code> filter can either
  *  record information about the <code>Geometry</code>
diff --git a/src/com/vividsolutions/jts/geom/GeometryFactory.java b/src/com/vividsolutions/jts/geom/GeometryFactory.java
index 403962e..284b8cf 100644
--- a/src/com/vividsolutions/jts/geom/GeometryFactory.java
+++ b/src/com/vividsolutions/jts/geom/GeometryFactory.java
@@ -43,6 +43,11 @@ import com.vividsolutions.jts.util.Assert;
 /**
  * Supplies a set of utility methods for building Geometry objects from lists
  * of Coordinates.
+ * <p>
+ * Note that the factory constructor methods do <b>not</b> change the input coordinates in any way.
+ * In particular, they are not rounded to the supplied <tt>PrecisionModel</tt>.
+ * It is assumed that input Coordinates meet the given precision.
+ *
  *
  * @version 1.7
  */
@@ -207,36 +212,51 @@ public class GeometryFactory
   }
 
   /**
-   *  If the <code>Envelope</code> is a null <code>Envelope</code>, returns an
-   *  empty <code>Point</code>. If the <code>Envelope</code> is a point, returns
-   *  a non-empty <code>Point</code>. If the <code>Envelope</code> is a
-   *  rectangle, returns a <code>Polygon</code> whose points are (minx, miny),
-   *  (maxx, miny), (maxx, maxy), (minx, maxy), (minx, miny).
-   *
-   *@param  envelope        the <code>Envelope</code> to convert to a <code>Geometry</code>
-   *@param  precisionModel  the specification of the grid of allowable points
-   *      for the new <code>Geometry</code>
-   *@param  SRID            the ID of the Spatial Reference System used by the
-   *      <code>Envelope</code>
-   *@return                 an empty <code>Point</code> (for null <code>Envelope</code>
-   *      s), a <code>Point</code> (when min x = max x and min y = max y) or a
+   * Creates a {@link Geometry} with the same extent as the given envelope.
+   * The Geometry returned is guaranteed to be valid.  
+   * To provide this behaviour, the following cases occur:
+   * <p>
+   * If the <code>Envelope</code> is:
+   * <ul>
+   * <li>null : returns an empty {@link Point}
+   * <li>a point : returns a non-empty {@link Point}
+   * <li>a line : returns a two-point {@link LineString}
+   * <li>a rectangle : returns a {@link Polygon}> whose points are (minx, miny),
+   *  (minx, maxy), (maxx, maxy), (maxx, miny), (minx, miny).
+   * </ul>
+   * 
+   *@param  envelope the <code>Envelope</code> to convert
+   *@return an empty <code>Point</code> (for null <code>Envelope</code>s), 
+   *	a <code>Point</code> (when min x = max x and min y = max y) or a
    *      <code>Polygon</code> (in all other cases)
-   *@throws  <code>         TopologyException</code> if <code>coordinates</code>
-   *      is not a closed linestring, that is, if the first and last coordinates
-   *      are not equal
    */
-  public Geometry toGeometry(Envelope envelope) {
+  public Geometry toGeometry(Envelope envelope) 
+  {
+  	// null envelope - return empty point geometry
     if (envelope.isNull()) {
       return createPoint((CoordinateSequence)null);
     }
+    
+    // point?
     if (envelope.getMinX() == envelope.getMaxX() && envelope.getMinY() == envelope.getMaxY()) {
       return createPoint(new Coordinate(envelope.getMinX(), envelope.getMinY()));
     }
+    
+    // vertical or horizontal line?
+    if (envelope.getMinX() == envelope.getMaxX()
+    		|| envelope.getMinY() == envelope.getMaxY()) {
+    	return createLineString(new Coordinate[]{
+          new Coordinate(envelope.getMinX(), envelope.getMinY()),
+          new Coordinate(envelope.getMaxX(), envelope.getMaxY())
+          });
+    }
+
+    // create a CW ring for the polygon 
     return createPolygon(createLinearRing(new Coordinate[]{
         new Coordinate(envelope.getMinX(), envelope.getMinY()),
-        new Coordinate(envelope.getMaxX(), envelope.getMinY()),
-        new Coordinate(envelope.getMaxX(), envelope.getMaxY()),
         new Coordinate(envelope.getMinX(), envelope.getMaxY()),
+        new Coordinate(envelope.getMaxX(), envelope.getMaxY()),
+        new Coordinate(envelope.getMaxX(), envelope.getMinY()),
         new Coordinate(envelope.getMinX(), envelope.getMinY())
         }), null);
   }
@@ -320,22 +340,23 @@ public class GeometryFactory
   }
 
   /**
-   * Creates a MultiPoint using the given Points; a null or empty array will
-   * create an empty MultiPoint.
-   * @param coordinates an array without null elements, or an empty array, or null
+   * Creates a MultiPoint using the given Points.
+   * A null or empty array will create an empty MultiPoint.
+   *
+   * @param coordinates an array (without null elements), or an empty array, or <code>null</code>
+   * @return a MultiPoint object
    */
   public MultiPoint createMultiPoint(Point[] point) {
   	return new MultiPoint(point, this);
   }
 
   /**
-   * Creates a MultiPoint using the given Coordinates; a null or empty array
-   * will create an empty MultiPoint.
+   * Creates a {@link MultiPoint} using the given {@link Coordinate}s.
+   * A null or empty array will create an empty MultiPoint.
    *
-   * @param coordinates
-   *            an array without null elements, or an empty array, or null
+   * @param coordinates an array (without null elements), or an empty array, or <code>null</code>
+   * @return a MultiPoint object
    */
-
   public MultiPoint createMultiPoint(Coordinate[] coordinates) {
       return createMultiPoint(coordinates != null
                               ? getCoordinateSequenceFactory().create(coordinates)
@@ -343,9 +364,11 @@ public class GeometryFactory
   }
 
   /**
-   * Creates a MultiPoint using the given CoordinateSequence; a null or empty CoordinateSequence will
-   * create an empty MultiPoint.
-   * @param coordinates a CoordinateSequence possibly empty, or null
+   * Creates a MultiPoint using the given CoordinateSequence.
+   * A a null or empty CoordinateSequence will create an empty MultiPoint.
+   *
+   * @param coordinates a CoordinateSequence (possibly empty), or <code>null</code>
+   * @return a MultiPoint object
    */
   public MultiPoint createMultiPoint(CoordinateSequence coordinates) {
     if (coordinates == null) {
@@ -358,8 +381,6 @@ public class GeometryFactory
     return createMultiPoint(points);
   }
 
-
-
   /**
    * Constructs a <code>Polygon</code> with the given exterior boundary and
    * interior boundaries.
@@ -405,8 +426,13 @@ public class GeometryFactory
    *      .
    */
   public Geometry buildGeometry(Collection geomList) {
+  	
+  	/**
+  	 * Determine some facts about the geometries in the list
+  	 */
     Class geomClass = null;
     boolean isHeterogeneous = false;
+    boolean hasGeometryCollection = false;
     for (Iterator i = geomList.iterator(); i.hasNext(); ) {
       Geometry geom = (Geometry) i.next();
       Class partClass = geom.getClass();
@@ -416,12 +442,18 @@ public class GeometryFactory
       if (partClass != geomClass) {
         isHeterogeneous = true;
       }
+      if (geom instanceof GeometryCollection)
+        hasGeometryCollection = true;
     }
+    
+    /**
+     * Now construct an appropriate geometry to return
+     */
     // for the empty geometry, return an empty GeometryCollection
     if (geomClass == null) {
       return createGeometryCollection(null);
     }
-    if (isHeterogeneous) {
+    if (isHeterogeneous || hasGeometryCollection) {
       return createGeometryCollection(toGeometryArray(geomList));
     }
     // at this point we know the collection is hetereogenous.
@@ -439,7 +471,7 @@ public class GeometryFactory
       else if (geom0 instanceof Point) {
         return createMultiPoint(toPointArray(geomList));
       }
-      Assert.shouldNeverReachHere();
+      Assert.shouldNeverReachHere("Unhandled class: " + geom0.getClass().getName());
     }
     return geom0;
   }
diff --git a/src/com/vividsolutions/jts/geom/IntersectionMatrix.java b/src/com/vividsolutions/jts/geom/IntersectionMatrix.java
index fab2213..20a1e40 100644
--- a/src/com/vividsolutions/jts/geom/IntersectionMatrix.java
+++ b/src/com/vividsolutions/jts/geom/IntersectionMatrix.java
@@ -35,9 +35,11 @@
 package com.vividsolutions.jts.geom;
 
 /**
- *  A Dimensionally Extended Nine-Intersection Model (DE-9IM) matrix. This class
- *  can used to represent both computed DE-9IM's (like 212FF1FF2) as well as
- *  patterns for matching them (like T*T******). <P>
+ * Models a Dimensionally Extended Nine-Intersection Model (DE-9IM) matrix. 
+ * This class is used to represent intersection matrices (such as "212FF1FF2")
+ * capturing the topological relationship between two {@link Geometry}s. 
+ * It can also be represent patterns (such as "T*T******")for matching 
+ * existing matrices.
  *
  *  Methods are provided to:
  *  <UL>
@@ -50,7 +52,13 @@ package com.vividsolutions.jts.geom;
  *
  *  For a description of the DE-9IM, see the <A
  *  HREF="http://www.opengis.org/techno/specs.htm">OpenGIS Simple Features
- *  Specification for SQL</A> .
+ *  Specification for SQL</A>.
+ *  
+ * The entries of the matrix are defined by the constants in the {@link Dimension} class.
+ * The indices of the matrix represent the topological locations 
+ * that occur in a geometry (Interior, Boundary, Exterior).  
+ * These are provided as constants in the {@link Location} class.
+ *  
  *
  *@version 1.7
  */
@@ -265,8 +273,12 @@ public class IntersectionMatrix implements Cloneable {
   }
 
   /**
-   *  Returns the value of one of this <code>IntersectionMatrix</code>s
-   *  elements.
+   *  Returns the value of one of this matrix
+   *  entries.
+   *  The value of the provided index is one of the 
+   *  values from the {@link Location} class.  
+   *  The value returned is a constant 
+   *  from the {@link Dimension} class.
    *
    *@param  row     the row of this <code>IntersectionMatrix</code>, indicating
    *      the interior, boundary or exterior of the first <code>Geometry</code>
@@ -300,7 +312,7 @@ public class IntersectionMatrix implements Cloneable {
    *      this <code>IntersectionMatrix</code> intersect
    */
   public boolean isIntersects() {
-    return !isDisjoint();
+    return ! isDisjoint();
   }
 
   /**
@@ -332,7 +344,7 @@ public class IntersectionMatrix implements Cloneable {
   }
 
   /**
-   * Returns <code>true</code> if this geometry crosses the
+   * Tests whether this geometry crosses the
    * specified geometry.
    * <p>
    * The <code>crosses</code> predicate has the following equivalent definitions:
@@ -376,7 +388,7 @@ public class IntersectionMatrix implements Cloneable {
   }
 
   /**
-   *  Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+   *  Tests whether this <code>IntersectionMatrix</code> is
    *  T*F**F***.
    *
    *@return    <code>true</code> if the first <code>Geometry</code> is within
@@ -389,7 +401,7 @@ public class IntersectionMatrix implements Cloneable {
   }
 
   /**
-   *  Returns <code>true</code> if this <code>IntersectionMatrix</code> is
+   *  Tests whether this <code>IntersectionMatrix</code> is
    *  T*****FF*.
    *
    *@return    <code>true</code> if the first <code>Geometry</code> contains the
@@ -430,8 +442,8 @@ public class IntersectionMatrix implements Cloneable {
    * or <code>**FT*F***</code>
    * or <code>**F*TF***</code>
    *
-   *@return    <code>true</code> if the first <code>Geometry</code> covers the
-   *      second
+   *@return    <code>true</code> if the first <code>Geometry</code>
+   * is covered by the second
    */
   public boolean isCoveredBy() {
     boolean hasPointInCommon =
@@ -472,13 +484,12 @@ public class IntersectionMatrix implements Cloneable {
    *  <UL>
    *    <LI> T*T***T** (for two points or two surfaces)
    *    <LI> 1*T***T** (for two curves)
-   *  </UL>
-   *  .
+   *  </UL>.
    *
    *@param  dimensionOfGeometryA  the dimension of the first <code>Geometry</code>
    *@param  dimensionOfGeometryB  the dimension of the second <code>Geometry</code>
-   *@return                       <code>true</code> if the two <code>Geometry</code>
-   *      s related by this <code>IntersectionMatrix</code> overlap. For this
+   *@return                       <code>true</code> if the two <code>Geometry</code>s
+   *      related by this <code>IntersectionMatrix</code> overlap. For this
    *      function to return <code>true</code>, the <code>Geometry</code>s must
    *      be two points, two curves or two surfaces.
    */
diff --git a/src/com/vividsolutions/jts/geom/LineSegment.java b/src/com/vividsolutions/jts/geom/LineSegment.java
index 8f9c0bf..4257b48 100644
--- a/src/com/vividsolutions/jts/geom/LineSegment.java
+++ b/src/com/vividsolutions/jts/geom/LineSegment.java
@@ -63,6 +63,10 @@ public class LineSegment
     this.p1 = p1;
   }
 
+  public LineSegment(double x0, double y0, double x1, double y1) {
+    this(new Coordinate(x0, y0), new Coordinate(x1, y1));
+  }
+
   public LineSegment(LineSegment ls) {
     this(ls.p0, ls.p1);
   }
@@ -145,6 +149,24 @@ public class LineSegment
     // points lie on opposite sides ==> indeterminate orientation
     return 0;
   }
+  
+  /**
+   * Determines the orientation index of a {@link Coordinate} relative to this segment.
+   * The orientation index is as defined in {@link CGAlgorithms#computeOrientation}.
+   *
+   * @param seg the LineSegment to compare
+   *
+   * @return 1 if <code>p</code> is to the left of this segment
+   * @return -1 if <code>p</code> is to the right of this segment
+   * @return 0 if <code>p</code> is collinear with this segment
+   * 
+   * @see CGAlgorithms#computeOrientation(Coordinate, Coordinate, Coordinate)
+   */
+  public int orientationIndex(Coordinate p)
+  {
+    return CGAlgorithms.orientationIndex(p0, p1, p);
+  }
+  
   /**
    * Reverses the direction of the line segment.
    */
@@ -180,6 +202,17 @@ public class LineSegment
   }
 
   /**
+   * Computes the midpoint of the segment
+   *
+   * @return the midpoint of the segment
+   */
+  public Coordinate midPoint()
+  {
+    return new Coordinate( (p0.x + p1.x) / 2,
+                           (p0.y + p1.y) / 2);
+  }
+
+  /**
    * Computes the distance between this line segment and another segment.
    *
    * @return the distance to the other segment
@@ -215,6 +248,8 @@ public class LineSegment
    * fraction along the line defined by this segment.
    * A fraction of <code>0.0</code> returns the start point of the segment;
    * a fraction of <code>1.0</code> returns the end point of the segment.
+   * If the fraction is < 0.0 or > 1.0 the point returned 
+   * will lie before the start or beyond the end of the segment. 
    *
    * @param segmentLengthFraction the fraction of the segment length along the line
    * @return the point at that distance
@@ -228,11 +263,60 @@ public class LineSegment
   }
 
   /**
+   * Computes the {@link Coordinate} that lies a given
+   * fraction along the line defined by this segment and offset from 
+   * the segment by a given distance.
+   * A fraction of <code>0.0</code> offsets from the start point of the segment;
+   * a fraction of <code>1.0</code> offsets from the end point of the segment.
+   * The computed point is offset to the left of the line if the offset distance is
+   * positive, to the right if negative.
+   *
+   * @param segmentLengthFraction the fraction of the segment length along the line
+   * @param offsetDistance the distance the point is offset from the segment
+   *    (positive is to the left, negative is to the right)
+   * @return the point at that distance and offset
+   * 
+   * @throws IllegalStateException if the segment has zero length
+   */
+  public Coordinate pointAlongOffset(double segmentLengthFraction, double offsetDistance)
+  {
+  	// the point on the segment line
+    double segx = p0.x + segmentLengthFraction * (p1.x - p0.x);
+    double segy = p0.y + segmentLengthFraction * (p1.y - p0.y);
+    
+    double dx = p1.x - p0.x;
+    double dy = p1.y - p0.y;
+    double len = Math.sqrt(dx * dx + dy * dy);
+    double ux = 0.0;
+    double uy = 0.0;
+    if (offsetDistance != 0.0) {
+      if (len <= 0.0)
+        throw new IllegalStateException("Cannot compute offset from zero-length line segment");
+
+      // u is the vector that is the length of the offset, in the direction of the segment
+      ux = offsetDistance * dx / len;
+      uy = offsetDistance * dy / len;
+    }
+    
+    // the offset point is the seg point plus the offset vector rotated 90 degrees CCW
+    double offsetx = segx - uy;
+    double offsety = segy + ux;
+
+    Coordinate coord = new Coordinate(offsetx, offsety);
+    return coord;
+  }
+
+  /**
    * Computes the Projection Factor for the projection of the point p
    * onto this LineSegment.  The Projection Factor is the constant r
    * by which the vector for this segment must be multiplied to
-   * equal the vector for the projection of p on the line
+   * equal the vector for the projection of <tt>p<//t> on the line
    * defined by this segment.
+   * <p>
+   * The projection factor returned will be in the range <tt>(-inf, +inf)</tt>.
+   * 
+   * @param p the point to compute the factor for
+   * @return the projection factor for the point
    */
   public double projectionFactor(Coordinate p)
   {
@@ -258,6 +342,29 @@ public class LineSegment
   }
 
   /**
+   * Computes the fraction of distance (in <tt>[0.0, 1.0]</tt>) 
+   * that the projection of a point occurs along this line segment.
+   * If the point is beyond either ends of the line segment,
+   * the closest fractional value (<tt>0.0</tt> or <tt>1.0</tt>) is returned.
+   * <p>
+   * Essentially, this is the {@link #projectionFactor} clamped to 
+   * the range <tt>[0.0, 1.0]</tt>.
+   *  
+   * @param inputPt the point
+   * @return the fraction along the line segment the projection of the point occurs
+   */
+  public double segmentFraction(
+      Coordinate inputPt)
+  {
+    double segFrac = projectionFactor(inputPt);
+    if (segFrac < 0.0)
+      segFrac = 0.0;
+    else if (segFrac > 1.0)
+      segFrac = 1.0;
+    return segFrac;
+  }
+
+  /**
    * Compute the projection of a point onto the line determined
    * by this line segment.
    * <p>
@@ -383,8 +490,10 @@ public class LineSegment
    * more information is required about the details of the intersection,
    * the {@link RobustLineIntersector} class should be used.
    *
-   * @param line
+   * @param line a line segment
    * @return an intersection point, or <code>null</code> if there is none
+   * 
+   * @see RobustLineIntersector
    */
   public Coordinate intersection(LineSegment line)
   {
@@ -396,6 +505,45 @@ public class LineSegment
   }
 
   /**
+   * Computes the intersection point of the lines defined
+   * by two segments, if there is one.
+   * There may be 0, 1 or an infinite number of intersection points 
+   * between two lines.
+   * If there is a unique intersection point, it is returned. 
+   * Otherwise, <tt>null</tt> is returned.
+   * If more information is required about the details of the intersection,
+   * the {@link RobustLineIntersector} class should be used.
+   *
+   * @param line a line segment defining a straight line
+   * @return an intersection point, or <code>null</code> if there is none
+   * or an infinite number
+   * 
+   * @see RobustLineIntersector
+   */
+  public Coordinate lineIntersection(LineSegment line)
+  {
+    try {
+      Coordinate intPt = HCoordinate.intersection(p0, p1, line.p0, line.p1);
+      return intPt;
+    }
+    catch (NotRepresentableException ex) {
+      // eat this exception, and return null;
+    }
+    return null;
+  }
+
+  /**
+   * Creates a LineString with the same coordinates as this segment
+   * 
+   * @param geomFactory the geometery factory to use
+   * @return a LineString with the same geometry as this segment
+   */
+  public LineString toGeometry(GeometryFactory geomFactory)
+  {
+    return geomFactory.createLineString(new Coordinate[] { p0, p1 });
+  }
+  
+  /**
    *  Returns <code>true</code> if <code>other</code> has the same values for
    *  its points.
    *
@@ -411,6 +559,23 @@ public class LineSegment
     return p0.equals(other.p0) && p1.equals(other.p1);
   }
 
+  /**
+   * Gets a hashcode for this object.
+   * 
+   * @return a hashcode for this object
+   */
+  public int hashCode() {
+    long bits0 = java.lang.Double.doubleToLongBits(p0.x);
+    bits0 ^= java.lang.Double.doubleToLongBits(p0.y) * 31;
+    int hash0 = (((int) bits0) ^ ((int) (bits0  >> 32)));
+    
+    long bits1 = java.lang.Double.doubleToLongBits(p1.x);
+    bits1 ^= java.lang.Double.doubleToLongBits(p1.y) * 31;
+    int hash1 = (((int) bits1) ^ ((int) (bits1  >> 32)));
+
+    // XOR is supposed to be a good way to combine hashcodes
+    return hash0 ^ hash1;
+  }
 
   /**
    *  Compares this object with the specified object for order.
diff --git a/src/com/vividsolutions/jts/geom/LineString.java b/src/com/vividsolutions/jts/geom/LineString.java
index 9bc13db..644a5ad 100644
--- a/src/com/vividsolutions/jts/geom/LineString.java
+++ b/src/com/vividsolutions/jts/geom/LineString.java
@@ -33,30 +33,46 @@
 package com.vividsolutions.jts.geom;
 
 import com.vividsolutions.jts.algorithm.CGAlgorithms;
-import com.vividsolutions.jts.operation.IsSimpleOp;
+import com.vividsolutions.jts.operation.BoundaryOp;
 
 /**
- *  Basic implementation of <code>LineString</code>.
+ *  Models an OGC-style <code>LineString</code>.
+ *  A LineString consists of a sequence of two or more vertices,
+ *  along with all points along the linearly-interpolated curves
+ *  (line segments) between each 
+ *  pair of consecutive vertices.
+ *  Consecutive vertices may be equal.
+ *  The line segments in the line may intersect each other (in other words, 
+ *  the linestring may "curl back" in itself and self-intersect.
+ *  Linestrings with exactly two identical points are invalid. 
+ *  <p> 
+ * A linestring must have either 0 or 2 or more points.  
+ * If these conditions are not met, the constructors throw 
+ * an {@link IllegalArgumentException}
  *
  *@version 1.7
  */
-public class LineString extends Geometry {
+public class LineString 
+	extends Geometry 
+	implements Lineal
+{
   private static final long serialVersionUID = 3110669828065365560L;
   /**
    *  The points of this <code>LineString</code>.
    */
-  private CoordinateSequence points;
+  protected CoordinateSequence points;
 
   /**
    *  Constructs a <code>LineString</code> with the given points.
    *
    *@param  points          the points of the linestring, or <code>null</code>
    *      to create the empty geometry. This array must not contain <code>null</code>
-   *      elements. Consecutive points may not be equal.
+   *      elements. Consecutive points may be equal.
    *@param  precisionModel  the specification of the grid of allowable points
    *      for this <code>LineString</code>
    *@param  SRID            the ID of the Spatial Reference System used by this
    *      <code>LineString</code>
+   * @throws IllegalArgumentException if too few points are provided
    */
   /** @deprecated Use GeometryFactory instead */
   public LineString(Coordinate points[], PrecisionModel precisionModel, int SRID)
@@ -66,8 +82,11 @@ public class LineString extends Geometry {
   }
 
   /**
+   * Constructs a <code>LineString</code> with the given points.
+   *  
    *@param  points          the points of the linestring, or <code>null</code>
    *      to create the empty geometry. Consecutive points may not be equal.
+   * @throws IllegalArgumentException if too few points are provided
    */
   public LineString(CoordinateSequence points, GeometryFactory factory) {
     super(factory);
@@ -80,7 +99,8 @@ public class LineString extends Geometry {
       points = getFactory().getCoordinateSequenceFactory().create(new Coordinate[]{});
     }
     if (points.size() == 1) {
-      throw new IllegalArgumentException("point array must contain 0 or >1 elements");
+      throw new IllegalArgumentException("Invalid number of points in LineString (found " 
+      		+ points.size() + " - must be 0 or >= 2)");
     }
     this.points = points;
   }
@@ -157,28 +177,22 @@ public class LineString extends Geometry {
   /**
    *  Returns the length of this <code>LineString</code>
    *
-   *@return the area of the polygon
+   *@return the length of the linestring
    */
   public double getLength()
   {
    return CGAlgorithms.length(points);
   }
 
-  public boolean isSimple()
-  {
-    return (new IsSimpleOp()).isSimple(this);
-  }
-
+  /**
+   * Gets the boundary of this geometry.
+   * The boundary of a lineal geometry is always a zero-dimensional geometry (which may be empty).
+   *
+   * @return the boundary geometry
+   * @see Geometry#getBoundary
+   */
   public Geometry getBoundary() {
-    if (isEmpty()) {
-      return getFactory().createGeometryCollection(null);
-    }
-    if (isClosed()) {
-      return getFactory().createMultiPoint((Coordinate[])null);
-    }
-    return getFactory().createMultiPoint(new Point[]{
-        getStartPoint(), getEndPoint()
-        });
+    return (new BoundaryOp(this)).getBoundary();
   }
 
   /**
@@ -187,7 +201,7 @@ public class LineString extends Geometry {
    *
    * @return a {@link LineString} with coordinates in the reverse order
    */
-  public LineString reverse()
+  public Geometry reverse()
   {
     CoordinateSequence seq = (CoordinateSequence) points.clone();
     CoordinateSequences.reverse(seq);
@@ -240,6 +254,19 @@ public class LineString extends Geometry {
       }
   }
 
+  public void apply(CoordinateSequenceFilter filter) 
+  {
+    if (points.size() == 0)
+      return;
+    for (int i = 0; i < points.size(); i++) {
+      filter.filter(points, i);
+      if (filter.isDone())
+        break;
+    }
+    if (filter.isGeometryChanged())
+      geometryChanged();
+  }
+
   public void apply(GeometryFilter filter) {
     filter.filter(this);
   }
@@ -248,6 +275,12 @@ public class LineString extends Geometry {
     filter.filter(this);
   }
 
+  /**
+   * Creates and returns a full copy of this {@link LineString} object.
+   * (including all coordinates contained by it).
+   *
+   * @return a clone of this instance
+   */
   public Object clone() {
     LineString ls = (LineString) super.clone();
     ls.points = (CoordinateSequence) points.clone();
diff --git a/src/com/vividsolutions/jts/geom/Lineal.java b/src/com/vividsolutions/jts/geom/Lineal.java
new file mode 100644
index 0000000..6103dd7
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/Lineal.java
@@ -0,0 +1,12 @@
+package com.vividsolutions.jts.geom;
+
+/**
+ * Identifies {@link Geometry} subclasses which
+ * are 1-dimensional and have components which are {@link LineStrings}. 
+ * 
+ * @author Martin Davis
+ *
+ */
+public interface Lineal {
+
+}
diff --git a/src/com/vividsolutions/jts/geom/LinearRing.java b/src/com/vividsolutions/jts/geom/LinearRing.java
index 37e77fd..4e25c77 100644
--- a/src/com/vividsolutions/jts/geom/LinearRing.java
+++ b/src/com/vividsolutions/jts/geom/LinearRing.java
@@ -41,6 +41,11 @@ package com.vividsolutions.jts.geom;
  * the first and last coordinate in the ring must be equal,
  * and the interior of the ring must not self-intersect.
  * Either orientation of the ring is allowed.
+ * <p>
+ * A ring must have either 0 or 4 or more points.  
+ * The first and last points must be equal (in 2D).
+ * If these conditions are not met, the constructors throw 
+ * an {@link IllegalArgumentException}
  *
  * @version 1.7
  */
@@ -59,6 +64,8 @@ public class LinearRing extends LineString
    *      for this <code>LinearRing</code>
    *@param  SRID            the ID of the Spatial Reference System used by this
    *      <code>LinearRing</code>
+   * @throws IllegalArgumentException if the ring is not closed, or has too few points
+   * 
    * @deprecated Use GeometryFactory instead
    */
   public LinearRing(Coordinate points[], PrecisionModel precisionModel,
@@ -71,6 +78,7 @@ public class LinearRing extends LineString
    * This method is ONLY used to avoid deprecation warnings.
    * @param points
    * @param factory
+   * @throws IllegalArgumentException if the ring is not closed, or has too few points
    */
   private LinearRing(Coordinate points[], GeometryFactory factory) {
     this(factory.getCoordinateSequenceFactory().create(points), factory);
@@ -83,6 +91,8 @@ public class LinearRing extends LineString
    *
    *@param  points  a sequence points forming a closed and simple linestring, or
    *      <code>null</code> to create the empty geometry.
+   *      
+   * @throws IllegalArgumentException if the ring is not closed, or has too few points
    *
    */
   public LinearRing(CoordinateSequence points, GeometryFactory factory) {
@@ -92,14 +102,25 @@ public class LinearRing extends LineString
 
   private void validateConstruction() {
     if (!isEmpty() && ! super.isClosed()) {
-      throw new IllegalArgumentException("points must form a closed linestring");
+      throw new IllegalArgumentException("Points of LinearRing do not form a closed linestring");
     }
     if (getCoordinateSequence().size() >= 1 && getCoordinateSequence().size() <= 3) {
-      throw new IllegalArgumentException("Number of points must be 0 or >3");
+      throw new IllegalArgumentException("Invalid number of points in LinearRing (found " 
+      		+ getCoordinateSequence().size() + " - must be 0 or >= 4)");
     }
   }
 
   /**
+   * Returns <code>Dimension.FALSE</code>, since by definition LinearRings do
+   * not have a boundary.
+   *
+   * @return Dimension.FALSE
+   */
+  public int getBoundaryDimension() {
+    return Dimension.FALSE;
+  }
+
+  /**
    * Returns <code>true</code>, since by definition LinearRings are always simple.
    * @return <code>true</code>
    *
@@ -113,4 +134,11 @@ public class LinearRing extends LineString
     return "LinearRing";
   }
 
+  public Geometry reverse()
+  {
+    CoordinateSequence seq = (CoordinateSequence) points.clone();
+    CoordinateSequences.reverse(seq);
+    LinearRing rev = getFactory().createLinearRing(seq);
+    return rev;
+  }
 }
diff --git a/src/com/vividsolutions/jts/geom/Location.java b/src/com/vividsolutions/jts/geom/Location.java
index b4b941d..9c8533b 100644
--- a/src/com/vividsolutions/jts/geom/Location.java
+++ b/src/com/vividsolutions/jts/geom/Location.java
@@ -35,31 +35,30 @@
 package com.vividsolutions.jts.geom;
 
 /**
- *  Constants representing the location of a point relative to a geometry. They
- *  can also be thought of as the row or column index of a DE-9IM matrix. For a
- *  description of the DE-9IM, see the <A
- *  HREF="http://www.opengis.org/techno/specs.htm">OpenGIS Simple Features
- *  Specification for SQL</A> .
+ *  Constants representing the different topological locations
+ *  which can occur in a {@link Geometry}. 
+ *  The constants are also used as the row and column indices 
+ *  of DE-9IM {@link IntersectionMatrix}es. 
  *
  *@version 1.7
  */
 public class Location {
   /**
-   *  DE-9IM row index of the interior of the first geometry and column index of
-   *  the interior of the second geometry. Location value for the interior of a
-   *  geometry.
+   * The location value for the interior of a geometry.
+   * Also, DE-9IM row index of the interior of the first geometry and column index of
+   *  the interior of the second geometry. 
    */
   public final static int INTERIOR = 0;
   /**
-   *  DE-9IM row index of the boundary of the first geometry and column index of
-   *  the boundary of the second geometry. Location value for the boundary of a
-   *  geometry.
+   * The location value for the boundary of a geometry.
+   * Also, DE-9IM row index of the boundary of the first geometry and column index of
+   *  the boundary of the second geometry. 
    */
   public final static int BOUNDARY = 1;
   /**
-   *  DE-9IM row index of the exterior of the first geometry and column index of
-   *  the exterior of the second geometry. Location value for the exterior of a
-   *  geometry.
+   * The location value for the exterior of a geometry.
+   * Also, DE-9IM row index of the exterior of the first geometry and column index of
+   *  the exterior of the second geometry. 
    */
   public final static int EXTERIOR = 2;
 
diff --git a/src/com/vividsolutions/jts/geom/MultiLineString.java b/src/com/vividsolutions/jts/geom/MultiLineString.java
index 6bdf433..4444ad4 100644
--- a/src/com/vividsolutions/jts/geom/MultiLineString.java
+++ b/src/com/vividsolutions/jts/geom/MultiLineString.java
@@ -1,5 +1,3 @@
-
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -34,16 +32,17 @@
  */
 package com.vividsolutions.jts.geom;
 
-import com.vividsolutions.jts.geomgraph.GeometryGraph;
-import com.vividsolutions.jts.operation.IsSimpleOp;
-
+import com.vividsolutions.jts.operation.BoundaryOp;
 
 /**
  *  Basic implementation of <code>MultiLineString</code>.
  *
  *@version 1.7
  */
-public class MultiLineString extends GeometryCollection {
+public class MultiLineString 
+	extends GeometryCollection
+	implements Lineal
+	{
   private static final long serialVersionUID = 8166665132445433741L;
   /**
    *  Constructs a <code>MultiLineString</code>.
@@ -102,18 +101,16 @@ public class MultiLineString extends GeometryCollection {
     return true;
   }
 
-  public boolean isSimple()
+  /**
+   * Gets the boundary of this geometry.
+   * The boundary of a lineal geometry is always a zero-dimensional geometry (which may be empty).
+   *
+   * @return the boundary geometry
+   * @see Geometry#getBoundary
+   */
+  public Geometry getBoundary()
   {
-    return (new IsSimpleOp()).isSimple(this);
-  }
-
-  public Geometry getBoundary() {
-    if (isEmpty()) {
-      return getFactory().createGeometryCollection(null);
-    }
-    GeometryGraph g = new GeometryGraph(0, this);
-    Coordinate[] pts = g.getBoundaryPoints();
-    return getFactory().createMultiPoint(pts);
+    return (new BoundaryOp(this)).getBoundary();
   }
 
   /**
@@ -125,12 +122,12 @@ public class MultiLineString extends GeometryCollection {
    *
    * @return a {@link MultiLineString} in the reverse order
    */
-  public MultiLineString reverse()
+  public Geometry reverse()
   {
     int nLines = geometries.length;
     LineString[] revLines = new LineString[nLines];
     for (int i = 0; i < geometries.length; i++) {
-      revLines[nLines - 1 - i] = ((LineString) geometries[i]).reverse();
+      revLines[nLines - 1 - i] = (LineString)geometries[i].reverse();
     }
     return getFactory().createMultiLineString(revLines);
   }
diff --git a/src/com/vividsolutions/jts/geom/MultiPoint.java b/src/com/vividsolutions/jts/geom/MultiPoint.java
index f7d85be..6f276f0 100644
--- a/src/com/vividsolutions/jts/geom/MultiPoint.java
+++ b/src/com/vividsolutions/jts/geom/MultiPoint.java
@@ -34,8 +34,6 @@
  */
 package com.vividsolutions.jts.geom;
 
-import com.vividsolutions.jts.operation.IsSimpleOp;
-
 /**
  *  Models a collection of <code>Point</code>s.
  *
@@ -43,6 +41,7 @@ import com.vividsolutions.jts.operation.IsSimpleOp;
  */
 public class MultiPoint
   extends GeometryCollection
+  implements Puntal
 {
 
   private static final long serialVersionUID = -8048474874175355449L;
@@ -84,14 +83,18 @@ public class MultiPoint
     return "MultiPoint";
   }
 
+  /**
+   * Gets the boundary of this geometry.
+   * Zero-dimensional geometries have no boundary by definition,
+   * so an empty GeometryCollection is returned.
+   *
+   * @return an empty GeometryCollection
+   * @see Geometry#getBoundary
+   */
   public Geometry getBoundary() {
     return getFactory().createGeometryCollection(null);
   }
 
-  public boolean isSimple() {
-    return (new IsSimpleOp()).isSimple(this);
-  }
-
   public boolean isValid() {
     return true;
   }
diff --git a/src/com/vividsolutions/jts/geom/MultiPolygon.java b/src/com/vividsolutions/jts/geom/MultiPolygon.java
index ba8a3e0..ebc7f44 100644
--- a/src/com/vividsolutions/jts/geom/MultiPolygon.java
+++ b/src/com/vividsolutions/jts/geom/MultiPolygon.java
@@ -41,7 +41,10 @@ import java.util.ArrayList;
  *
  *@version 1.7
  */
-public class MultiPolygon extends GeometryCollection {
+public class MultiPolygon 
+	extends GeometryCollection 
+	implements Polygonal
+{
   private static final long serialVersionUID = -551033529766975875L;
   /**
    *  Constructs a <code>MultiPolygon</code>.
@@ -93,9 +96,15 @@ public class MultiPolygon extends GeometryCollection {
     return true;
   }
 
+  /**
+   * Computes the boundary of this geometry
+   *
+   * @return a lineal geometry (which may be empty)
+   * @see Geometry#getBoundary
+   */
   public Geometry getBoundary() {
     if (isEmpty()) {
-      return getFactory().createGeometryCollection(null);
+      return getFactory().createMultiLineString(null);
     }
     ArrayList allRings = new ArrayList();
     for (int i = 0; i < geometries.length; i++) {
@@ -115,6 +124,23 @@ public class MultiPolygon extends GeometryCollection {
     }
     return super.equalsExact(other, tolerance);
   }
+  
+  /**
+   * Creates a {@link MultiPolygon} with
+   * every component reversed.
+   * The order of the components in the collection are not reversed.
+   *
+   * @return a MultiPolygon in the reverse order
+   */
+  public Geometry reverse()
+  {
+    int n = geometries.length;
+    Polygon[] revGeoms = new Polygon[n];
+    for (int i = 0; i < geometries.length; i++) {
+      revGeoms[i] = (Polygon) geometries[i].reverse();
+    }
+    return getFactory().createMultiPolygon(revGeoms);
+  }
 }
 
 
diff --git a/src/com/vividsolutions/jts/geom/OctagonalEnvelope.java b/src/com/vividsolutions/jts/geom/OctagonalEnvelope.java
new file mode 100644
index 0000000..9bc2d47
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/OctagonalEnvelope.java
@@ -0,0 +1,362 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.geom;
+
+/**
+ * A Bounding Container which is in the shape of an octagon.
+ * The OctagonalEnvelope of a geometric object
+ * is tight along the four extremal rectilineal parallels
+ * and along the four extremal diagonal parallels.
+ * Depending on the shape of the contained
+ * geometry, the octagon may be degenerate to any extreme
+ * (e.g. it may be a rectangle, a line, or a point).
+ */
+public class OctagonalEnvelope
+{
+  private static double computeA(double x, double y)
+  {
+    return x + y;
+  }
+
+  private static double computeB(double x, double y)
+  {
+    return x - y;
+  }
+
+  private static double SQRT2 = Math.sqrt(2.0);
+  
+  // initialize in the null state
+  private double minX = Double.NaN;
+  private double maxX;
+  private double minY;
+  private double maxY;
+  private double minA;
+  private double maxA;
+  private double minB;
+  private double maxB;
+
+  /**
+   * Creates a new null bounding octagon
+   */
+  public OctagonalEnvelope()
+  {
+  }
+
+  /**
+   * Creates a new null bounding octagon bounding a {@link Coordinate}
+   */
+  public OctagonalEnvelope(Coordinate p)
+  {
+    expandToInclude(p);
+  }
+
+  /**
+   * Creates a new null bounding octagon bounding a pair of {@link Coordinate}s
+   */
+  public OctagonalEnvelope(Coordinate p0, Coordinate p1)
+  {
+    expandToInclude(p0);
+    expandToInclude(p1);
+  }
+
+  /**
+   * Creates a new null bounding octagon bounding an {@link Envelope}
+   */
+  public OctagonalEnvelope(Envelope env)
+  {
+    expandToInclude(env);
+  }
+
+  /**
+   * Creates a new null bounding octagon bounding an {@link OctagonalEnvelope}
+   * (the copy constructor).
+   */
+  public OctagonalEnvelope(OctagonalEnvelope oct)
+  {
+    expandToInclude(oct);
+  }
+
+  /**
+   * Creates a new null bounding octagon bounding a {@link Geometry}
+   */
+  public OctagonalEnvelope(Geometry geom)
+  {
+    expandToInclude(geom);
+  }
+
+
+  public double getMinX() { return minX; }
+  public double getMaxX() { return maxX; }
+  public double getMinY() { return minY; }
+  public double getMaxY() { return maxY; }
+  public double getMinA() { return minA; }
+  public double getMaxA() { return maxA; }
+  public double getMinB() { return minB; }
+  public double getMaxB() { return maxB; }
+
+  public boolean isNull() { return Double.isNaN(minX); }
+
+  /**
+   *  Sets the value of this object to the null value
+   */
+  public void setToNull() {
+    minX = Double.NaN;
+  }
+
+  public void expandToInclude(Geometry g)
+  {
+    g.apply(new BoundingOctagonComponentFilter());
+  }
+
+  public OctagonalEnvelope expandToInclude(CoordinateSequence seq)
+  {
+    for (int i = 0; i < seq.size(); i++) {
+      double x = seq.getX(i);
+      double y = seq.getY(i);
+      expandToInclude(x, y);
+    }
+    return this;
+  }
+
+  public OctagonalEnvelope expandToInclude(OctagonalEnvelope oct)
+  {
+    if (oct.isNull()) return this;
+
+    if (isNull()) {
+      minX = oct.minX;
+      maxX = oct.maxX;
+      minY = oct.minY;
+      maxY = oct.maxY;
+      minA = oct.minA;
+      maxA = oct.maxA;
+      minB = oct.minB;
+      maxB = oct.maxB;
+      return this;
+    }
+    if (oct.minX < minX) minX = oct.minX;
+    if (oct.maxX > maxX) maxX = oct.maxX;
+    if (oct.minY < minY) minY = oct.minY;
+    if (oct.maxY > maxY) maxY = oct.maxY;
+    if (oct.minA < minA) minA = oct.minA;
+    if (oct.maxA > maxA) maxA = oct.maxA;
+    if (oct.minB < minB) minB = oct.minB;
+    if (oct.maxB > maxB) maxB = oct.maxB;
+    return this;
+  }
+
+  public OctagonalEnvelope expandToInclude(Coordinate p)
+  {
+    expandToInclude(p.x, p.y);
+    return this;
+  }
+
+  public OctagonalEnvelope expandToInclude(Envelope env)
+  {
+    expandToInclude(env.getMinX(), env.getMinY());
+    expandToInclude(env.getMinX(), env.getMaxY());
+    expandToInclude(env.getMaxX(), env.getMinY());
+    expandToInclude(env.getMaxX(), env.getMaxY());
+    return this;
+  }
+
+  public OctagonalEnvelope expandToInclude(double x, double y)
+  {
+    double A = computeA(x, y);
+    double B = computeB(x, y);
+
+    if (isNull()) {
+      minX = x;
+      maxX = x;
+      minY = y;
+      maxY = y;
+      minA = A;
+      maxA = A;
+      minB = B;
+      maxB = B;
+    }
+    else {
+      if (x < minX) minX = x;
+      if (x > maxX) maxX = x;
+      if (y < minY) minY = y;
+      if (y > maxY) maxY = y;
+      if (A < minA) minA = A;
+      if (A > maxA) maxA = A;
+      if (B < minB) minB = B;
+      if (B > maxB) maxB = B;
+    }
+    return this;
+  }
+
+  public void expandBy(double distance)
+  {
+    if (isNull()) return;
+
+    double diagonalDistance = SQRT2 * distance;
+
+    minX -= distance;
+    maxX += distance;
+    minY -= distance;
+    maxY += distance;
+    minA -= diagonalDistance;
+    maxA += diagonalDistance;
+    minB -= diagonalDistance;
+    maxB += diagonalDistance;
+
+    if (! isValid())
+      setToNull();
+  }
+
+  /**
+   * Tests if the extremal values for this octagon are valid.
+   *
+   * @return <code>true</code> if this object has valid values
+   */
+  private boolean isValid()
+  {
+    if (isNull()) return true;
+    return minX <= maxX
+                 && minY <= maxY
+                 && minA <= maxA
+                 && minB <= maxB;
+  }
+
+  public boolean intersects(OctagonalEnvelope other)
+  {
+    if (isNull() || other.isNull()) { return false; }
+
+    if (minX > other.maxX) return false;
+    if (maxX < other.minX) return false;
+    if (minY > other.maxY) return false;
+    if (maxY < other.minY) return false;
+    if (minA > other.maxA) return false;
+    if (maxA < other.minA) return false;
+    if (minB > other.maxB) return false;
+    if (maxB < other.minB) return false;
+    return true;
+  }
+
+  public boolean intersects(Coordinate p)
+  {
+    if (minX > p.x) return false;
+    if (maxX < p.x) return false;
+    if (minY > p.y) return false;
+    if (maxY < p.y) return false;
+    
+    double A = computeA(p.x, p.y);
+    double B = computeB(p.x, p.y);
+    if (minA > A) return false;
+    if (maxA < A) return false;
+    if (minB > B) return false;
+    if (maxB < B) return false;
+    return true;
+  }
+
+  public boolean contains(OctagonalEnvelope other)
+  {
+    if (isNull() || other.isNull()) { return false; }
+
+    return other.minX >= minX
+        && other.maxX <= maxX
+        && other.minY >= minY
+        && other.maxY <= maxY
+        && other.minA >= minA
+        && other.maxA <= maxA
+        && other.minB >= minB
+        && other.maxB <= maxB;
+  }
+
+  public Geometry toGeometry(GeometryFactory geomFactory)
+  {
+    if (isNull()) {
+      return geomFactory.createPoint((CoordinateSequence)null);
+    }
+
+    Coordinate px00 = new Coordinate(minX, minA - minX);
+    Coordinate px01 = new Coordinate(minX, minX - minB);
+
+    Coordinate px10 = new Coordinate(maxX, maxX - maxB);
+    Coordinate px11 = new Coordinate(maxX, maxA - maxX);
+
+    Coordinate py00 = new Coordinate(minA - minY, minY);
+    Coordinate py01 = new Coordinate(minY + maxB, minY);
+
+    Coordinate py10 = new Coordinate(maxY + minB, maxY);
+    Coordinate py11 = new Coordinate(maxA - maxY, maxY);
+
+    PrecisionModel pm = geomFactory.getPrecisionModel();
+    pm.makePrecise(px00);
+    pm.makePrecise(px01);
+    pm.makePrecise(px10);
+    pm.makePrecise(px11);
+    pm.makePrecise(py00);
+    pm.makePrecise(py01);
+    pm.makePrecise(py10);
+    pm.makePrecise(py11);
+
+    CoordinateList coordList = new CoordinateList();
+    coordList.add(px00, false);
+    coordList.add(px01, false);
+    coordList.add(py10, false);
+    coordList.add(py11, false);
+    coordList.add(px11, false);
+    coordList.add(px10, false);
+    coordList.add(py01, false);
+    coordList.add(py00, false);
+
+    if (coordList.size() == 1) {
+      return geomFactory.createPoint(px00);
+    }
+    if (coordList.size() == 2) {
+      Coordinate[] pts = coordList.toCoordinateArray();
+      return geomFactory.createLineString(pts);
+    }
+    // must be a polygon, so add closing point
+    coordList.add(px00, false);
+    Coordinate[] pts = coordList.toCoordinateArray();
+    return geomFactory.createPolygon(geomFactory.createLinearRing(pts), null);
+  }
+
+  private class BoundingOctagonComponentFilter
+  implements GeometryComponentFilter
+  {
+     public void filter(Geometry geom)
+     {
+       if (geom instanceof LineString) {
+         expandToInclude( ((LineString) geom).getCoordinateSequence());
+       }
+       else if (geom instanceof Point) {
+         expandToInclude( ((Point) geom).getCoordinateSequence());
+       }
+     }
+  }
+}
diff --git a/src/com/vividsolutions/jts/geom/Point.java b/src/com/vividsolutions/jts/geom/Point.java
index 4ab9185..c9e8563 100644
--- a/src/com/vividsolutions/jts/geom/Point.java
+++ b/src/com/vividsolutions/jts/geom/Point.java
@@ -35,13 +35,17 @@
 package com.vividsolutions.jts.geom;
 
 import com.vividsolutions.jts.util.Assert;
+import com.vividsolutions.jts.operation.valid.*;
 
 /**
  *  Basic implementation of <code>Point</code>.
  *
  *@version 1.7
  */
-public class Point extends Geometry {
+public class Point 
+	extends Geometry
+	implements Puntal
+{
   private static final long serialVersionUID = 4902022702746614570L;
   /**
    *  The <code>Coordinate</code> wrapped by this <code>Point</code>.
@@ -101,7 +105,17 @@ public class Point extends Geometry {
     return true;
   }
 
+  /**
+   * A Point is valid iff:
+   * <ul>
+   * <li>the coordinate which defines it is a valid coordinate (i.e does not have an NaN X or Y ordinate)
+   * </ul>
+   * 
+   * @return true iff the Point is valid
+   */
   public boolean isValid() {
+  	if (! IsValidOp.isValid(getCoordinate()))
+  		return false;
     return true;
   }
 
@@ -135,6 +149,14 @@ public class Point extends Geometry {
     return "Point";
   }
 
+  /**
+   * Gets the boundary of this geometry.
+   * Zero-dimensional geometries have no boundary by definition,
+   * so an empty GeometryCollection is returned.
+   *
+   * @return an empty GeometryCollection
+   * @see Geometry#getBoundary
+   */
   public Geometry getBoundary() {
     return getFactory().createGeometryCollection(null);
   }
@@ -159,9 +181,18 @@ public class Point extends Geometry {
   }
 
   public void apply(CoordinateFilter filter) {
-    if (isEmpty()) { return; }
-    filter.filter(getCoordinate());
-  }
+	    if (isEmpty()) { return; }
+	    filter.filter(getCoordinate());
+	  }
+
+  public void apply(CoordinateSequenceFilter filter) 
+  {
+	    if (isEmpty())
+        return;
+	    filter.filter(coordinates, 0);
+      if (filter.isGeometryChanged())
+        geometryChanged();
+	  }
 
   public void apply(GeometryFilter filter) {
     filter.filter(this);
@@ -171,13 +202,27 @@ public class Point extends Geometry {
     filter.filter(this);
   }
 
+  /**
+   * Creates and returns a full copy of this {@link Point} object.
+   * (including all coordinates contained by it).
+   *
+   * @return a clone of this instance
+   */
   public Object clone() {
     Point p = (Point) super.clone();
     p.coordinates = (CoordinateSequence) coordinates.clone();
     return p;// return the clone
   }
 
-  public void normalize() { }
+  public Geometry reverse()
+  {
+    return (Geometry) clone();
+  }
+  
+  public void normalize() 
+  { 
+    // a Point is always in normalized form 
+  }
 
   protected int compareToSameClass(Object other) {
     Point point = (Point) other;
diff --git a/src/com/vividsolutions/jts/geom/Polygon.java b/src/com/vividsolutions/jts/geom/Polygon.java
index f41e563..cb17193 100644
--- a/src/com/vividsolutions/jts/geom/Polygon.java
+++ b/src/com/vividsolutions/jts/geom/Polygon.java
@@ -51,7 +51,10 @@ import com.vividsolutions.jts.algorithm.*;
  *
  *@version 1.7
  */
-public class Polygon extends Geometry {
+public class Polygon 
+	extends Geometry
+	implements Polygonal
+{
   private static final long serialVersionUID = -3494792200821764533L;
 
   /**
@@ -178,6 +181,12 @@ public class Polygon extends Geometry {
     return shell.isEmpty();
   }
 
+  /**
+   * Tests if a valid polygon is simple.
+   * This method always returns true, since a valid polygon is always simple
+   *
+   * @return <code>true</code>
+   */
   public boolean isSimple() {
     return true;
   }
@@ -195,7 +204,7 @@ public class Polygon extends Geometry {
     for (int i = 0; i < 5; i++) {
       double x = seq.getX(i);
       if (! (x == env.getMinX() || x == env.getMaxX())) return false;
-      double y = seq.getX(i);
+      double y = seq.getY(i);
       if (! (y == env.getMinY() || y == env.getMaxY())) return false;
     }
 
@@ -239,9 +248,9 @@ public class Polygon extends Geometry {
   public double getArea()
   {
     double area = 0.0;
-    area += Math.abs(CGAlgorithms.signedArea(shell.getCoordinates()));
+    area += Math.abs(CGAlgorithms.signedArea(shell.getCoordinateSequence()));
     for (int i = 0; i < holes.length; i++) {
-      area -= Math.abs(CGAlgorithms.signedArea(holes[i].getCoordinates()));
+      area -= Math.abs(CGAlgorithms.signedArea(holes[i].getCoordinateSequence()));
     }
     return area;
   }
@@ -261,15 +270,22 @@ public class Polygon extends Geometry {
     return len;
   }
 
+  /**
+   * Computes the boundary of this geometry
+   *
+   * @return a lineal geometry (which may be empty)
+   * @see Geometry#getBoundary
+   */
   public Geometry getBoundary() {
     if (isEmpty()) {
-      return getFactory().createGeometryCollection(null);
+      return getFactory().createMultiLineString(null);
     }
     LinearRing[] rings = new LinearRing[holes.length + 1];
     rings[0] = shell;
     for (int i = 0; i < holes.length; i++) {
       rings[i + 1] = holes[i];
     }
+    // create LineString or MultiLineString as appropriate
     if (rings.length <= 1)
       return getFactory().createLinearRing(rings[0].getCoordinateSequence());
     return getFactory().createMultiLineString(rings);
@@ -304,11 +320,25 @@ public class Polygon extends Geometry {
   }
 
   public void apply(CoordinateFilter filter) {
-    shell.apply(filter);
-    for (int i = 0; i < holes.length; i++) {
-      holes[i].apply(filter);
-    }
-  }
+	    shell.apply(filter);
+	    for (int i = 0; i < holes.length; i++) {
+	      holes[i].apply(filter);
+	    }
+	  }
+
+  public void apply(CoordinateSequenceFilter filter) 
+  {
+	    shell.apply(filter);
+      if (! filter.isDone()) {
+        for (int i = 0; i < holes.length; i++) {
+          holes[i].apply(filter);
+          if (filter.isDone()) 
+            break;
+        }
+      }
+      if (filter.isGeometryChanged())
+        geometryChanged();
+	  }
 
   public void apply(GeometryFilter filter) {
     filter.filter(this);
@@ -322,6 +352,12 @@ public class Polygon extends Geometry {
     }
   }
 
+  /**
+   * Creates and returns a full copy of this {@link Polygon} object.
+   * (including all coordinates contained by it).
+   *
+   * @return a clone of this instance
+   */
   public Object clone() {
     Polygon poly = (Polygon) super.clone();
     poly.shell = (LinearRing) shell.clone();
@@ -388,5 +424,15 @@ public class Polygon extends Geometry {
     }
   }
 
+  public Geometry reverse()
+  {
+    Polygon poly = (Polygon) super.clone();
+    poly.shell = (LinearRing) ((LinearRing) shell.clone()).reverse();
+    poly.holes = new LinearRing[holes.length];
+    for (int i = 0; i < holes.length; i++) {
+      poly.holes[i] = (LinearRing) ((LinearRing) holes[i].clone()).reverse();
+    }
+    return poly;// return the clone
+  }
 }
 
diff --git a/src/com/vividsolutions/jts/geom/Polygonal.java b/src/com/vividsolutions/jts/geom/Polygonal.java
new file mode 100644
index 0000000..372ec5c
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/Polygonal.java
@@ -0,0 +1,14 @@
+package com.vividsolutions.jts.geom;
+
+/**
+ * Identifies {@link Geometry} subclasses which
+ * are 2-dimensional 
+ * and have components which have {@link Lineal} boundaries. 
+ * 
+ * @author Martin Davis
+ *
+ */
+public interface Polygonal 
+{
+
+}
diff --git a/src/com/vividsolutions/jts/geom/PrecisionModel.java b/src/com/vividsolutions/jts/geom/PrecisionModel.java
index d8a7bd6..1ae4ec5 100644
--- a/src/com/vividsolutions/jts/geom/PrecisionModel.java
+++ b/src/com/vividsolutions/jts/geom/PrecisionModel.java
@@ -64,7 +64,7 @@ import java.util.Map;
  * <li>FLOATING_SINGLE - represents single precision floating point.
  * <li>FIXED - represents a model with a fixed number of decimal places.
  *  A Fixed Precision Model is specified by a scale factor.
- *  The scale factor specifies the grid which numbers are rounded to.
+ *  The scale factor specifies the size of the grid which numbers are rounded to.
  *  Input coordinates are mapped to fixed coordinates according to the following
  *  equations:
  *    <UL>
@@ -72,6 +72,10 @@ import java.util.Map;
  *      <LI> jtsPt.y = round( (inputPt.y * scale ) / scale
  *    </UL>
  * </ul>
+ * For example, to specify 3 decimal places of precision, use a scale factor
+ * of 1000. To specify -3 decimal places of precision (i.e. rounding to
+ * the nearest 1000), use a scale factor of 0.001.
+ * <p>
  *  Coordinates are represented internally as Java double-precision values.
  * Since Java uses the IEEE-394 floating point standard, this
  *  provides 53 bits of precision. (Thus the maximum precisely representable
@@ -83,20 +87,27 @@ import java.util.Map;
  */
 public class PrecisionModel implements Serializable, Comparable
 {
+	/**
+	 * Determines which of two {@link PrecisionModel}s is the most precise
+	 * (allows the greatest number of significant digits).
+	 * 
+	 * @param pm1 a PrecisionModel
+	 * @param pm2 a PrecisionModel
+	 * @return the PrecisionModel which is most precise
+	 */
+	public static PrecisionModel mostPrecise(PrecisionModel pm1, PrecisionModel pm2)
+	{
+		if (pm1.compareTo(pm2) >= 0)
+			return pm1;
+		return pm2;
+	}
+	
   private static final long serialVersionUID = 7777263578777803835L;
 
   /**
    * The types of Precision Model which JTS supports.
-   * <p>
-   * This class is only for use to support the "enums" for the types of precision model.
-   * <p>
-   * <i>
-   * Note: Type should be declared as private to this class,
-   * but JBuilder 7 throws a compiler exception
-   * when trying to compile with the "private" keyword.  Package-private is safe enough.
-   * </i>
    */
-  static class Type
+  public static class Type
       implements Serializable
   {
     private static final long serialVersionUID = -5528602631731589822L;
@@ -228,33 +239,36 @@ public class PrecisionModel implements Serializable, Comparable
    *
    * @return the maximum number of decimal places provided by this precision model
    */
-  	public int getMaximumSignificantDigits() {
-		int maxSigDigits = 16;
-		if (modelType == FLOATING) {
-			maxSigDigits = 16;
-		} else if (modelType == FLOATING_SINGLE) {
-			maxSigDigits = 6;
-		} else if (modelType == FIXED) {
-			maxSigDigits = 1 + (int) Math.ceil(Math.log(getScale()) / Math.log(10));
-		}
-		return maxSigDigits;
-	}
+  public int getMaximumSignificantDigits() {
+    int maxSigDigits = 16;
+    if (modelType == FLOATING) {
+      maxSigDigits = 16;
+    } else if (modelType == FLOATING_SINGLE) {
+      maxSigDigits = 6;
+    } else if (modelType == FIXED) {
+      maxSigDigits = 1 + (int) Math.ceil(Math.log(getScale()) / Math.log(10));
+    }
+    return maxSigDigits;
+  }
 
   /**
-   *  Returns the multiplying factor used to obtain a precise coordinate.
-   * This method is private because PrecisionModel is intended to
-   * be an immutable (value) type.
+   * Returns the scale factor used to specify a fixed precision model.
+   * The number of decimal places of precision is 
+   * equal to the base-10 logarithm of the scale factor.
+   * Non-integral and negative scale factors are supported.
+   * Negative scale factors indicate that the places 
+   * of precision is to the left of the decimal point.  
    *
-   *@return    the amount by which to multiply a coordinate after subtracting
-   *      the offset
+   *@return the scale factor for the fixed precision model
    */
   public double getScale() {
     return scale;
   }
 
   /**
-   * Gets the type of this PrecisionModel
-   * @return the type of this PrecisionModel
+   * Gets the type of this precision model
+   * @return the type of this precision model
+   * @see Type
    */
   public Type getType()
   {
@@ -262,9 +276,7 @@ public class PrecisionModel implements Serializable, Comparable
   }
   /**
    *  Sets the multiplying factor used to obtain a precise coordinate.
-   * This method is private because PrecisionModel is intended to
-   * be an immutable (value) type.
-   *
+   * This method is private because PrecisionModel is an immutable (value) type.
    */
   private void setScale(double scale)
   {
@@ -344,8 +356,7 @@ public class PrecisionModel implements Serializable, Comparable
   }
 
   /**
-   *  Sets <code>external</code> to the external representation of <code>internal</code>
-   *  .
+   *  Sets <code>external</code> to the external representation of <code>internal</code>.
    *
    *@param  internal  the original coordinate
    *@param  external  the coordinate whose values will be changed to the
@@ -359,14 +370,20 @@ public class PrecisionModel implements Serializable, Comparable
 
   /**
    * Rounds a numeric value to the PrecisionModel grid.
-   * Symmetric Arithmetic Rounding is used, to provide
+   * Asymmetric Arithmetic Rounding is used, to provide
    * uniform rounding behaviour no matter where the number is
    * on the number line.
    * <p>
-   * <b>Note:</b> Java's <code>Math#rint</code> uses the "banker's rounding" algorithm,
+   * This method has no effect on NaN values.
+   * <p>
+   * <b>Note:</b> Java's <code>Math#rint</code> uses the "Banker's Rounding" algorithm,
    * which is not suitable for precision operations elsewhere in JTS.
    */
-  public double makePrecise(double val) {
+  public double makePrecise(double val) 
+  {
+  	// don't change NaN values
+  	if (Double.isNaN(val)) return val;
+  	
   	if (modelType == FLOATING_SINGLE) {
   		float floatSingleVal = (float) val;
   		return (double) floatSingleVal;
diff --git a/src/com/vividsolutions/jts/geom/Puntal.java b/src/com/vividsolutions/jts/geom/Puntal.java
new file mode 100644
index 0000000..148294d
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/Puntal.java
@@ -0,0 +1,12 @@
+package com.vividsolutions.jts.geom;
+
+/**
+ * Identifies {@link Geometry} subclasses which
+ * are 0-dimensional and with components which are {@link Points}. 
+ * 
+ * @author Martin Davis
+ *
+ */
+public interface Puntal {
+
+}
diff --git a/src/com/vividsolutions/jts/geom/Triangle.java b/src/com/vividsolutions/jts/geom/Triangle.java
index 1a8d332..f6404bd 100644
--- a/src/com/vividsolutions/jts/geom/Triangle.java
+++ b/src/com/vividsolutions/jts/geom/Triangle.java
@@ -33,6 +33,8 @@
  */
 package com.vividsolutions.jts.geom;
 
+import com.vividsolutions.jts.algorithm.*;
+
 /**
  * Represents a planar triangle, and provides methods for calculating various
  * properties of triangles.
@@ -41,8 +43,271 @@ package com.vividsolutions.jts.geom;
  */
 public class Triangle
 {
+
+
+  /**
+   * Tests whether a triangle is acute.
+   * A triangle is acute iff all interior angles are acute.
+   * This is a strict test - right triangles will return <tt>false</tt>
+   * A triangle which is not acute is either right or obtuse.
+   * <p>
+   * Note: this implementation is not robust for angles very close to 90 degrees.
+   * 
+   * @param a a vertex of the triangle
+   * @param b a vertex of the triangle
+   * @param c a vertex of the triangle
+   * @return true if the triangle is acute
+   */
+  public static boolean isAcute(Coordinate a, Coordinate b, Coordinate c)
+  {
+    if (! Angle.isAcute(a, b, c)) return false;
+    if (! Angle.isAcute(b, c, a)) return false;
+    if (! Angle.isAcute(c, a, b)) return false;
+    return true;
+  }
+
+  /**
+   * Computes the line which is the perpendicular bisector of the
+   * line segment a-b.
+   *
+   * @param a a point
+   * @param b another point
+   * @return the perpendicular bisector, as an HCoordinate
+   */
+  public static HCoordinate perpendicularBisector(Coordinate a, Coordinate b) {
+    // returns the perpendicular bisector of the line segment ab
+    double dx = b.x - a.x;
+    double dy = b.y - a.y;
+    HCoordinate l1 = new HCoordinate(a.x + dx / 2.0, a.y + dy / 2.0, 1.0);
+    HCoordinate l2 = new HCoordinate(a.x - dy + dx / 2.0, a.y + dx + dy / 2.0, 1.0);
+    return new HCoordinate(l1,l2);
+  }
+
+  /**
+   * Computes the circumcentre of a triangle.
+   * The circumcentre is the centre of the circumcircle,
+   * the smallest circle which encloses the triangle.
+   * It is also the common intersection point of the
+   * perpendicular bisectors of the sides of the triangle,
+   * and is the only point which has equal distance to all three
+   * vertices of the triangle.
+   *
+   * @param a a vertx of the triangle
+   * @param b a vertx of the triangle
+   * @param c a vertx of the triangle
+   * @return the circumcentre of the triangle
+   */
+  public static Coordinate circumcentre(Coordinate a, Coordinate b, Coordinate c)
+  {
+    // compute the perpendicular bisector of chord ab
+    HCoordinate cab = perpendicularBisector(a, b);
+    // compute the perpendicular bisector of chord bc
+    HCoordinate cbc = perpendicularBisector(b, c);
+    // compute the intersection of the bisectors (circle radii)
+    HCoordinate hcc = new HCoordinate(cab, cbc);
+    Coordinate cc = null;
+    try {
+      cc = new Coordinate(hcc.getX(), hcc.getY());
+    }
+    catch (NotRepresentableException ex) {
+      // MD - not sure what we can do to prevent this (robustness problem)
+      // Idea - can we condition which edges we choose?
+      throw new IllegalStateException(ex.getMessage());
+    }
+    return cc;
+  }
+
+  /**
+   * Computes the incentre of a triangle.
+   * The <i>inCentre</i> of a triangle is the point which is equidistant
+   * from the sides of the triangle.
+   * It is also the point at which the bisectors
+   * of the triangle's angles meet.
+   * It is the centre of the triangle's <i>incircle</i>,
+   * which is the unique circle that is tangent to each of the triangle's three sides.
+    *
+   * @param a a vertx of the triangle
+   * @param b a vertx of the triangle
+   * @param c a vertx of the triangle
+   * @return the point which is the incentre of the triangle
+   */
+  public static Coordinate inCentre(Coordinate a, Coordinate b, Coordinate c)
+  {
+    // the lengths of the sides, labelled by their opposite vertex
+    double len0 = b.distance(c);
+    double len1 = a.distance(c);
+    double len2 = a.distance(b);
+    double circum = len0 + len1 + len2;
+
+    double inCentreX = (len0 * a.x + len1 * b.x +len2 * c.x)  / circum;
+    double inCentreY = (len0 * a.y + len1 * b.y +len2 * c.y)  / circum;
+    return new Coordinate(inCentreX, inCentreY);
+  }
+
+  /**
+   * Computes the centroid (centre of mass) of a triangle.
+   * This is also the point at which the triangle's three
+   * medians intersect (a triangle median is the segment from a vertex of the triangle to the
+   * midpoint of the opposite side).
+   * The centroid divides each median in a ratio of 2:1.
+   * The centroid always lies within the triangle.
+   *
+   *
+   * @param a a vertex of the triangle
+   * @param b a vertex of the triangle
+   * @param c a vertex of the triangle
+   * @return the centroid of the triangle
+   */
+  public static Coordinate centroid(Coordinate a, Coordinate b, Coordinate c)
+  {
+    double x = (a.x + b.x + c.x) / 3;
+    double y = (a.y + b.y + c.y) / 3;
+    return new Coordinate(x, y);
+  }
+
+  /**
+   * Computes the length of the longest side of a triangle
+   *
+   * @param a a vertex of the triangle
+   * @param b a vertex of the triangle
+   * @param c a vertex of the triangle
+   * @return the length of the longest side of the triangle
+   */
+  public static double longestSideLength(Coordinate a, Coordinate b, Coordinate c)
+  {
+    double lenAB = a.distance(b);
+    double lenBC = b.distance(c);
+    double lenCA = c.distance(a);
+    double maxLen = lenAB;
+    if (lenBC > maxLen)
+      maxLen = lenBC;
+    if (lenCA > maxLen)
+      maxLen = lenCA;
+    return maxLen;
+  }
+
+  /**
+   * Computes the point at which the bisector of the angle ABC
+   * cuts the segment AC.
+   *
+   * @param a a vertex of the triangle
+   * @param b a vertex of the triangle
+   * @param c a vertex of the triangle
+   * @return the angle bisector cut point
+   */
+  public static Coordinate angleBisector(Coordinate a, Coordinate b, Coordinate c)
+  {
+    /**
+     * Uses the fact that the lengths of the parts of the split segment
+     * are proportional to the lengths of the adjacent triangle sides
+     */
+    double len0 = b.distance(a);
+    double len2 = b.distance(c);
+    double frac = len0 / (len0 + len2);
+    double dx = c.x - a.x;
+    double dy = c.y - a.y;
+
+    Coordinate splitPt = new Coordinate(a.x + frac * dx,
+                                        a.y + frac * dy);
+    return splitPt;
+  }
+
+  /**
+   * Computes the 2D area of a triangle.
+   * The area value is always non-negative.
+   *
+   * @param a a vertex of the triangle
+   * @param b a vertex of the triangle
+   * @param c a vertex of the triangle
+   * @return the area of the triangle
+   * 
+   * @see signedArea
+   */
+  public static double area(Coordinate a, Coordinate b, Coordinate c)
+  {
+    return Math.abs(((c.x - a.x) * (b.y - a.y) - (b.x - a.x) * (c.y - a.y)) / 2);
+  }
+
+  /**
+   * Computes the signed 2D area of a triangle.
+   * The area value is positive if the triangle is oriented CW,
+   * and negative if it is oriented CCW.
+   * <p>
+   * The signed area value can be used to determine point orientation, but 
+   * the implementation in this method
+   * is susceptible to round-off errors.  
+   * Use {@link CGAlgorithms#orientationIndex)} for robust orientation
+   * calculation.
+   *
+   * @param a a vertex of the triangle
+   * @param b a vertex of the triangle
+   * @param c a vertex of the triangle
+   * @return the signed 2D area of the triangle
+   * 
+   * @see CGAlgorithms#orientationIndex
+   */
+  public static double signedArea(Coordinate a, Coordinate b, Coordinate c)
+  {
+		/**
+		 * Uses the formula 1/2 * | u x v |
+		 * where
+		 * 	u,v are the side vectors of the triangle
+		 *  x is the vector cross-product
+		 * For 2D vectors, this formual simplifies to the expression below
+		 */
+    return ((c.x - a.x) * (b.y - a.y) - (b.x - a.x) * (c.y - a.y)) / 2;
+  }
+
+	/**
+	 * Computes the 3D area of a triangle.
+	 * The value computed is alway non-negative.
+	 * 
+   * @param a a vertex of the triangle
+   * @param b a vertex of the triangle
+   * @param c a vertex of the triangle
+   * @return the 3D area of the triangle
+	 */
+	public static double area3D(Coordinate a, Coordinate b, Coordinate c)
+	{
+		/**
+		 * Uses the formula 1/2 * | u x v |
+		 * where
+		 * 	u,v are the side vectors of the triangle
+		 *  x is the vector cross-product
+		 */
+		// side vectors u and v
+		double ux = b.x - a.x;
+		double uy = b.y - a.y;
+		double uz = b.z - a.z;
+		
+		double vx = c.x - a.x;
+		double vy = c.y - a.y;
+		double vz = c.z - a.z;
+		
+		// cross-product = u x v 
+		double crossx = uy * vz - uz * vy;
+		double crossy = uz * vx - ux * vz;
+		double crossz = ux * vy - uy * vx;
+		
+		// tri area = 1/2 * | u x v |
+		double absSq = crossx * crossx + crossy * crossy + crossz * crossz;
+		double area3D = Math.sqrt(absSq) / 2;
+		
+		return area3D;
+	}
+	
+	/**
+	 * The coordinates of the vertices of the triangle
+	 */
   public Coordinate p0, p1, p2;
 
+  /**
+   * Creates a new triangle with the given vertices.
+   * 
+   * @param p0 a vertex
+   * @param p1 a vertex
+   * @param p2 a vertex
+   */
   public Triangle(Coordinate p0, Coordinate p1, Coordinate p2)
   {
     this.p0 = p0;
@@ -51,22 +316,21 @@ public class Triangle
   }
 
   /**
-   * The inCentre of a triangle is the point which is equidistant
-   * from the sides of the triangle.  This is also the point at which the bisectors
-   * of the angles meet.
+   * Computes the incentre of a triangle.
+   * The <i>incentre</i> of a triangle is the point which is equidistant
+   * from the sides of the triangle.
+   * It is also the point at which the bisectors
+   * of the triangle's angles meet.
+   * It is the centre of the triangle's <i>incircle</i>,
+   * which is the unique circle that is tangent to each of the triangle's three sides.
    *
    * @return the point which is the inCentre of the triangle
    */
   public Coordinate inCentre()
   {
-    // the lengths of the sides, labelled by their opposite vertex
-    double len0 = p1.distance(p2);
-    double len1 = p0.distance(p2);
-    double len2 = p0.distance(p1);
-    double circum = len0 + len1 + len2;
-
-    double inCentreX = (len0 * p0.x + len1 * p1.x +len2 * p2.x)  / circum;
-    double inCentreY = (len0 * p0.y + len1 * p1.y +len2 * p2.y)  / circum;
-    return new Coordinate(inCentreX, inCentreY);
+    return inCentre(p0, p1, p2);
   }
+
+
 }
+
diff --git a/src/com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.java b/src/com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.java
index 95a0a94..e880793 100644
--- a/src/com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.java
+++ b/src/com/vividsolutions/jts/geom/impl/CoordinateArraySequenceFactory.java
@@ -1,4 +1,3 @@
-
 /*
 * The JTS Topology Suite is a collection of Java classes that
 * implement the fundamental operations required to validate a given
@@ -30,7 +29,7 @@
 *
 *     (250)385-6040
 *     www.vividsolutions.com
- */
+*/
 package com.vividsolutions.jts.geom.impl;
 
 import java.io.Serializable;
@@ -50,10 +49,8 @@ public final class CoordinateArraySequenceFactory
   private CoordinateArraySequenceFactory() {
   }
 
-  /**
-   * @see http://www.javaworld.com/javaworld/javatips/jw-javatip122.html
-   */
   private Object readResolve() {
+  	// http://www.javaworld.com/javaworld/javatips/jw-javatip122.html
     return CoordinateArraySequenceFactory.instance();
   }
 
diff --git a/src/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.java b/src/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.java
index 0a10abe..ae48020 100644
--- a/src/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.java
+++ b/src/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.java
@@ -1,3 +1,35 @@
+/*
+* The JTS Topology Suite is a collection of Java classes that
+* implement the fundamental operations required to validate a given
+* geo-spatial data set to a known topological specification.
+*
+* Copyright (C) 2001 Vivid Solutions
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation; either
+* version 2.1 of the License, or (at your option) any later version.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this library; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*
+* For more information, contact:
+*
+*     Vivid Solutions
+*     Suite #1A
+*     2328 Government Street
+*     Victoria BC  V8T 5G5
+*     Canada
+*
+*     (250)385-6040
+*     www.vividsolutions.com
+*/
 package com.vividsolutions.jts.geom.impl;
 
 import com.vividsolutions.jts.geom.*;
@@ -257,7 +289,7 @@ public abstract class PackedCoordinateSequence
     public Coordinate getCoordinateInternal(int i) {
       double x = coords[i * dimension];
       double y = coords[i * dimension + 1];
-      double z = dimension == 2 ? 0.0 : coords[i * dimension + 2];
+      double z = dimension == 2 ? Coordinate.NULL_ORDINATE : coords[i * dimension + 2];
       return new Coordinate(x, y, z);
     }
 
@@ -383,7 +415,7 @@ public abstract class PackedCoordinateSequence
     public Coordinate getCoordinateInternal(int i) {
       double x = coords[i * dimension];
       double y = coords[i * dimension + 1];
-      double z = dimension == 2 ? 0.0 : coords[i * dimension + 2];
+      double z = dimension == 2 ? Coordinate.NULL_ORDINATE : coords[i * dimension + 2];
       return new Coordinate(x, y, z);
     }
 
diff --git a/src/com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.java b/src/com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.java
index bab987d..1c74e20 100644
--- a/src/com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.java
+++ b/src/com/vividsolutions/jts/geom/impl/PackedCoordinateSequenceFactory.java
@@ -1,3 +1,35 @@
+/*
+* The JTS Topology Suite is a collection of Java classes that
+* implement the fundamental operations required to validate a given
+* geo-spatial data set to a known topological specification.
+*
+* Copyright (C) 2001 Vivid Solutions
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation; either
+* version 2.1 of the License, or (at your option) any later version.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this library; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*
+* For more information, contact:
+*
+*     Vivid Solutions
+*     Suite #1A
+*     2328 Government Street
+*     Victoria BC  V8T 5G5
+*     Canada
+*
+*     (250)385-6040
+*     www.vividsolutions.com
+*/
 package com.vividsolutions.jts.geom.impl;
 
 import com.vividsolutions.jts.geom.*;
diff --git a/src/com/vividsolutions/jts/geom/impl/package.html b/src/com/vividsolutions/jts/geom/impl/package.html
new file mode 100644
index 0000000..ba95a7d
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/impl/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Implementations of interfaces for geometric structures.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/geom/prep/AbstractPreparedPolygonContains.java b/src/com/vividsolutions/jts/geom/prep/AbstractPreparedPolygonContains.java
new file mode 100644
index 0000000..0550559
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/prep/AbstractPreparedPolygonContains.java
@@ -0,0 +1,246 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.geom.prep;
+
+import java.util.*;
+
+
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.noding.*;
+import com.vividsolutions.jts.geom.util.*;
+
+/**
+ * A base class containing the logic for computes the <tt>contains</tt>
+ * and <tt>covers</tt> spatial relationship predicates
+ * for a {@link PreparedPolygon} relative to all other {@link Geometry} classes.
+ * Uses short-circuit tests and indexing to improve performance. 
+ * <p>
+ * Contains and covers are very similar, and differ only in how certain
+ * cases along the boundary are handled.  These cases require 
+ * full topological evaluation to handle, so all the code in 
+ * this class is common to both predicates.
+ * <p>
+ * It is not possible to short-circuit in all cases, in particular
+ * in the case where line segments of the test geometry touches the polygon linework.
+ * In this case full topology must be computed.
+ * (However, if the test geometry consists of only points, this 
+ * <i>can</i> be evaluated in an optimized fashion.
+ * 
+ * @author Martin Davis
+ *
+ */
+public abstract class AbstractPreparedPolygonContains 
+	extends PreparedPolygonPredicate
+{
+	/**
+	 * This flag controls a difference between contains and covers.
+	 * 
+	 * For contains the value is true.
+	 * For covers the value is false.
+	 */
+	protected boolean requireSomePointInInterior = true; 
+	
+	// information about geometric situation
+	private boolean hasSegmentIntersection = false;
+  private boolean hasProperIntersection = false;
+  private boolean hasNonProperIntersection = false;
+	
+  /**
+   * Creates an instance of this operation.
+   * 
+   * @param prepPoly the PreparedPolygon to evaluate
+   */
+	public AbstractPreparedPolygonContains(PreparedPolygon prepPoly)
+	{
+		super(prepPoly);
+	}
+	
+	/**
+	 * Evaluate the <tt>contains</tt> or <tt>covers</tt> relationship
+	 * for the given geometry.
+	 * 
+	 * @param geom the test geometry
+	 * @return true if the test geometry is contained
+	 */
+	protected boolean eval(Geometry geom)
+	{
+		/**
+		 * Do point-in-poly tests first, since they are cheaper and may result
+		 * in a quick negative result.
+		 * 
+		 * If a point of any test components does not lie in target, result is false
+		 */
+		boolean isAllInTargetArea = isAllTestComponentsInTarget(geom);
+		if (! isAllInTargetArea) return false;
+		
+		/**
+		 * If the test geometry consists of only Points, 
+		 * then it is now sufficient to test if any of those
+		 * points lie in the interior of the target geometry.
+		 * If so, the test is contained.
+		 * If not, all points are on the boundary of the area,
+		 * which implies not contained.
+		 */
+		if (requireSomePointInInterior
+				&& geom.getDimension() == 0) {
+			boolean isAnyInTargetInterior = isAnyTestComponentInTargetInterior(geom);
+			return isAnyInTargetInterior;
+		}
+		
+		/**
+		 * Check if there is any intersection between the line segments
+		 * in target and test.
+		 * In some important cases, finding a proper interesection implies that the 
+		 * test geometry is NOT contained.
+		 * These cases are:
+		 * <ul>
+		 * <li>If the test geometry is polygonal
+		 * <li>If the target geometry is a single polygon with no holes
+		 * <ul>
+		 * In both of these cases, a proper intersection implies that there
+		 * is some portion of the interior of the test geometry lying outside
+		 * the target, which means that the test is not contained.
+		 */
+		boolean properIntersectionImpliesNotContained = isProperIntersectionImpliesNotContainedSituation(geom);
+		// MD - testing only
+//		properIntersectionImpliesNotContained = true;
+		
+    // find all intersection types which exist
+    findAndClassifyIntersections(geom);
+		
+		if (properIntersectionImpliesNotContained && hasProperIntersection)
+			return false;
+		
+    /**
+     * If all intersections are proper 
+     * (i.e. no non-proper intersections occur)
+     * we can conclude that the test geometry is not contained in the target area,
+     * by the Epsilon-Neighbourhood Exterior Intersection condition.
+     * In real-world data this is likely to be by far the most common situation, 
+     * since natural data is unlikely to have many exact vertex segment intersections.
+     * Thus this check is very worthwhile, since it avoid having to perform
+     * a full topological check.
+     * 
+     * (If non-proper (vertex) intersections ARE found, this may indicate
+     * a situation where two shells touch at a single vertex, which admits
+     * the case where a line could cross between the shells and still be wholely contained in them.
+     */
+		if (hasSegmentIntersection && ! hasNonProperIntersection)
+      return false;
+    
+		/**
+		 * If there is a segment intersection and the situation is not one
+		 * of the ones above, the only choice is to compute the full topological
+		 * relationship.  This is because contains/covers is very sensitive 
+		 * to the situation along the boundary of the target.
+		 */
+		if (hasSegmentIntersection) {
+			return fullTopologicalPredicate(geom);
+//			System.out.println(geom);
+		}
+				
+		/**
+		 * This tests for the case where a ring of the target lies inside
+		 * a test polygon - which implies the exterior of the Target
+		 * intersects the interior of the Test, and hence the result is false
+		 */
+		if (geom instanceof Polygonal) {
+			// TODO: generalize this to handle GeometryCollections
+			boolean isTargetInTestArea = isAnyTargetComponentInAreaTest(geom, prepPoly.getRepresentativePoints());
+			if (isTargetInTestArea) return false;
+		}
+		return true;
+	}
+	
+	private boolean isProperIntersectionImpliesNotContainedSituation(Geometry testGeom)
+	{
+    /**
+     * If the test geometry is polygonal we have the A/A situation.
+     * In this case, a proper intersection indicates that 
+     * the Epsilon-Neighbourhood Exterior Intersection condition exists.
+     * This condition means that in some small
+     * area around the intersection point, there must exist a situation
+     * where the interior of the test intersects the exterior of the target.
+     * This implies the test is NOT contained in the target. 
+     */
+		if (testGeom instanceof Polygonal) return true;
+    /**
+     * A single shell with no holes allows concluding that 
+     * a proper intersection implies not contained 
+     * (due to the Epsilon-Neighbourhood Exterior Intersection condition) 
+     */
+		if (isSingleShell(prepPoly.getGeometry())) return true;
+		return false;
+	}
+	
+  /**
+   * Tests whether a geometry consists of a single polygon with no holes.
+   *  
+   * @return true if the geometry is a single polygon with no holes
+   */
+	private boolean isSingleShell(Geometry geom)
+	{
+    // handles single-element MultiPolygons, as well as Polygons
+		if (geom.getNumGeometries() != 1) return false;
+		
+		Polygon poly = (Polygon) geom.getGeometryN(0);
+		int numHoles = poly.getNumInteriorRing();
+		if (numHoles == 0) return true;
+		return false;
+	}
+	
+	private void findAndClassifyIntersections(Geometry geom)
+	{
+    List lineSegStr = SegmentStringUtil.extractSegmentStrings(geom);
+    
+	  LineIntersector li = new RobustLineIntersector();
+		SegmentIntersectionDetector intDetector = new SegmentIntersectionDetector(li);
+		intDetector.setFindAllIntersectionTypes(true);
+		prepPoly.getIntersectionFinder().intersects(lineSegStr, intDetector);
+			
+		hasSegmentIntersection = intDetector.hasIntersection();
+    hasProperIntersection = intDetector.hasProperIntersection();
+    hasNonProperIntersection = intDetector.hasNonProperIntersection();
+	}
+			
+	/**
+	 * Computes the full topological predicate.
+	 * Used when short-circuit tests are not conclusive.
+	 * 
+	 * @param geom the test geometry
+	 * @return true if this prepared polygon has the relationship with the test geometry
+	 */
+	protected abstract boolean fullTopologicalPredicate(Geometry geom);
+	
+}
diff --git a/src/com/vividsolutions/jts/geom/prep/BasicPreparedGeometry.java b/src/com/vividsolutions/jts/geom/prep/BasicPreparedGeometry.java
new file mode 100644
index 0000000..272c8f8
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/prep/BasicPreparedGeometry.java
@@ -0,0 +1,220 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.geom.prep;
+
+import java.util.Iterator;
+import java.util.List;
+
+import com.vividsolutions.jts.algorithm.locate.*;
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.util.ComponentCoordinateExtracter;
+
+/**
+ * A base class for {@link PreparedGeometry} subclasses.
+ * Contains default implementations for methods, which simply delegate
+ * to the equivalent {@link Geometry} methods.
+ * This class may be used as a "no-op" class for Geometry types
+ * which do not have a corresponding {@link PreparedGeometry} implementation.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class BasicPreparedGeometry 
+  implements PreparedGeometry
+{
+  private Geometry baseGeom;
+  private List representativePts;  // List<Coordinate>
+
+  public BasicPreparedGeometry(Geometry geom) 
+  {
+    this.baseGeom = geom;
+    representativePts = ComponentCoordinateExtracter.getCoordinates(geom);
+  }
+
+  public Geometry getGeometry() { return baseGeom; }
+
+  /**
+   * Gets the list of representative points for this geometry.
+   * One vertex is included for every component of the geometry
+   * (i.e. including one for every ring of polygonal geometries) 
+   * 
+   * @return a List of Coordinate
+   */
+  public List getRepresentativePoints()
+  {
+    return representativePts;
+  }
+  
+	/**
+	 * Tests whether any representative of the target geometry 
+	 * intersects the test geometry.
+	 * This is useful in A/A, A/L, A/P, L/P, and P/P cases.
+	 * 
+	 * @param geom the test geometry
+	 * @param repPts the representative points of the target geometry
+	 * @return true if any component intersects the areal test geometry
+	 */
+	public boolean isAnyTargetComponentInTest(Geometry testGeom)
+	{
+		PointLocator locator = new PointLocator();
+    for (Iterator i = representativePts.iterator(); i.hasNext(); ) {
+      Coordinate p = (Coordinate) i.next();
+      if (locator.intersects(p, testGeom))
+        return true;
+    }
+		return false;
+	}
+
+  /**
+   * Determines whether a Geometry g interacts with 
+   * this geometry by testing the geometry envelopes.
+   *  
+   * @param g a Geometry
+   * @return true if the envelopes intersect
+   */
+  protected boolean envelopesIntersect(Geometry g)
+  {
+    if (! baseGeom.getEnvelopeInternal().intersects(g.getEnvelopeInternal()))
+      return false;
+    return true;
+  }
+  
+  /**
+   * Determines whether the envelope of 
+   * this geometry covers the Geometry g.
+   * 
+   *  
+   * @param g a Geometry
+   * @return true if g is contained in this envelope
+   */
+  protected boolean envelopeCovers(Geometry g)
+  {
+    if (! baseGeom.getEnvelopeInternal().covers(g.getEnvelopeInternal()))
+      return false;
+    return true;
+  }
+  
+  /**
+   * Default implementation.
+   */
+  public boolean contains(Geometry g)
+  {
+    return baseGeom.contains(g);
+  }
+
+  /**
+   * Default implementation.
+   */
+  public boolean containsProperly(Geometry g)
+  {
+  	// since raw relate is used, provide some optimizations
+  	
+    // short-circuit test
+    if (! baseGeom.getEnvelopeInternal().contains(g.getEnvelopeInternal()))
+      return false;
+  	
+    // otherwise, compute using relate mask
+    return baseGeom.relate(g, "T**FF*FF*");
+  }
+
+  /**
+   * Default implementation.
+   */
+  public boolean coveredBy(Geometry g)
+  {
+    return baseGeom.coveredBy(g);
+  }
+
+  /**
+   * Default implementation.
+   */
+  public boolean covers(Geometry g)
+  {
+    return baseGeom.covers(g);
+  }
+
+  /**
+   * Default implementation.
+   */
+  public boolean crosses(Geometry g)
+  {
+    return baseGeom.crosses(g);
+  }
+  
+  /**
+   * Standard implementation for all geometries.
+   * Supports {@link GeometryCollection}s as input.
+   */
+  public boolean disjoint(Geometry g)
+  {
+    return ! intersects(g);
+  }
+  
+  /**
+   * Default implementation.
+   */
+  public boolean intersects(Geometry g)
+  {
+    return baseGeom.intersects(g);
+  }
+  
+  /**
+   * Default implementation.
+   */
+  public boolean overlaps(Geometry g)
+  {
+    return baseGeom.overlaps(g);
+  }
+  
+  /**
+   * Default implementation.
+   */
+  public boolean touches(Geometry g)
+  {
+    return baseGeom.touches(g);
+  }
+  
+  /**
+   * Default implementation.
+   */
+  public boolean within(Geometry g)
+  {
+    return baseGeom.within(g);
+  }
+  
+  public String toString()
+  {
+  	return baseGeom.toString();
+  }
+}
diff --git a/src/com/vividsolutions/jts/geom/prep/PreparedGeometry.java b/src/com/vividsolutions/jts/geom/prep/PreparedGeometry.java
new file mode 100644
index 0000000..04ff1dd
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/prep/PreparedGeometry.java
@@ -0,0 +1,188 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.geom.prep;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * An interface for classes which prepare {@link Geometry}s 
+ * in order to optimize the performance 
+ * of repeated calls to specific geometric operations.
+ * <p>
+ * A given implementation may provide optimized implementations
+ * for only some of the specified methods, 
+ * and delegate the remaining methods to the original {@link Geometry} operations.
+ * An implementation may also only optimize certain situations,
+ * and delegate others. 
+ * See the implementing classes for documentation about which methods and situations
+ * they optimize.
+ * 
+ * @author Martin Davis
+ *
+ */
+public interface PreparedGeometry 
+{
+	
+	/**
+	 * Gets the original {@link Geometry} which has been prepared.
+	 * 
+	 * @return the base geometry
+	 */
+	Geometry getGeometry();
+
+	/**
+	 * Tests whether the base {@link Geometry} contains a given geometry.
+	 * 
+	 * @param geom the Geometry to test
+	 * @return true if this Geometry contains the given Geometry
+	 * 
+	 * @see Geometry#contains(Geometry)
+	 */
+	boolean contains(Geometry geom);
+
+	/**
+	 * Tests whether the base {@link Geometry} properly contains a given geometry.
+	 * <p>
+	 * The <code>containsProperly</code> predicate has the following equivalent definitions:
+	 * <ul>
+	 * <li>Every point of the other geometry is a point of this geometry's interior.
+	 * <li>The DE-9IM Intersection Matrix for the two geometries matches 
+	 * <code>[T**FF*FF*]</code>
+	 * </ul>
+	 * In other words, if the test geometry has any interaction with the boundary of the target
+	 * geometry the result of <tt>containsProperly</tt> is <tt>false</tt>. 
+	 * This is different semantics to the {@link Geometry#contains} predicate,
+	 * in which test geometries can intersect the target's boundary and still be contained.
+	 * <p>
+	 * The advantage of using this predicate is that it can be computed
+	 * efficiently, since it avoids the need to compute the full topological relationship
+	 * of the input boundaries in cases where they intersect.
+	 * <p>
+	 * An example use case is computing the intersections
+	 * of a set of geometries with a large polygonal geometry.  
+	 * Since <tt>intersection</tt> is a fairly slow operation, it can be more efficient
+	 * to use <tt>containsProperly</tt> to filter out test geometries which lie
+	 * wholly inside the area.  In these cases the intersection is
+	 * known <i>a priori</i> to be exactly the original test geometry. 
+	 * 
+	 * @param geom the Geometry to test
+	 * @return true if this Geometry properly contains the given Geometry
+	 * 
+	 * @see Geometry#contains
+	 * 
+	 */
+	boolean containsProperly(Geometry geom);
+
+	/**
+	 * Tests whether the base {@link Geometry} is covered by a given geometry.
+	 * 
+	 * @param geom the Geometry to test
+	 * @return true if this Geometry is covered by the given Geometry
+	 * 
+	 * @see Geometry#coveredBy(Geometry)
+	 */
+	boolean coveredBy(Geometry geom);
+
+	/**
+	 * Tests whether the base {@link Geometry} covers a given geometry.
+	 * 
+	 * @param geom the Geometry to test
+	 * @return true if this Geometry covers the given Geometry
+	 * 
+	 * @see Geometry#covers(Geometry)
+	 */
+	boolean covers(Geometry geom);
+
+	/**
+	 * Tests whether the base {@link Geometry} crosses a given geometry.
+	 * 
+	 * @param geom the Geometry to test
+	 * @return true if this Geometry crosses the given Geometry
+	 * 
+	 * @see Geometry#crosses(Geometry)
+	 */
+	boolean crosses(Geometry geom);
+
+	/**
+	 * Tests whether the base {@link Geometry} is disjoint from a given geometry.
+	 * This method supports {@link GeometryCollection}s as input
+	 * 
+	 * @param geom the Geometry to test
+	 * @return true if this Geometry is disjoint from the given Geometry
+	 * 
+	 * @see Geometry#disjoint(Geometry)
+	 */
+	boolean disjoint(Geometry geom);
+
+	/**
+	 * Tests whether the base {@link Geometry} intersects a given geometry.
+	 * This method supports {@link GeometryCollection}s as input
+	 * 
+	 * @param geom the Geometry to test
+	 * @return true if this Geometry intersects the given Geometry
+	 * 
+	 * @see Geometry#intersects(Geometry)
+	 */
+	boolean intersects(Geometry geom);
+
+	/**
+	 * Tests whether the base {@link Geometry} overlaps a given geometry.
+	 * 
+	 * @param geom the Geometry to test
+	 * @return true if this Geometry overlaps the given Geometry
+	 * 
+	 * @see Geometry#overlaps(Geometry)
+	 */
+	boolean overlaps(Geometry geom);
+
+	/**
+	 * Tests whether the base {@link Geometry} touches a given geometry.
+	 * 
+	 * @param geom the Geometry to test
+	 * @return true if this Geometry touches the given Geometry
+	 * 
+	 * @see Geometry#touches(Geometry)
+	 */
+	boolean touches(Geometry geom);
+
+	/**
+	 * Tests whether the base {@link Geometry} is within a given geometry.
+	 * 
+	 * @param geom the Geometry to test
+	 * @return true if this Geometry is within the given Geometry
+	 * 
+	 * @see Geometry#within(Geometry)
+	 */
+	boolean within(Geometry geom);
+
+}
diff --git a/src/com/vividsolutions/jts/geom/prep/PreparedGeometryFactory.java b/src/com/vividsolutions/jts/geom/prep/PreparedGeometryFactory.java
new file mode 100644
index 0000000..966d26d
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/prep/PreparedGeometryFactory.java
@@ -0,0 +1,85 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.geom.prep;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * A factory for creating {@link PreparedGeometry}s.
+ * It chooses an appropriate implementation of PreparedGeometry
+ * based on the geoemtric type of the input geometry.
+ * <p>
+ * In the future, the factory may accept hints that indicate
+ * special optimizations which can be performed.
+ * 
+ * 
+ * @author Martin Davis
+ *
+ */
+public class PreparedGeometryFactory 
+{
+  /**
+   * Creates a new {@link PreparedGeometry} appropriate for the argument {@link Geometry}.
+   * 
+   * @param geom the geometry to prepare
+   * @return the prepared geometry
+   */
+	public static PreparedGeometry prepare(Geometry geom)
+	{
+		return (new PreparedGeometryFactory()).create(geom); 
+	}
+
+  public PreparedGeometryFactory() {
+  }
+
+  /**
+   * Creates a new {@link PreparedGeometry} appropriate for the argument {@link Geometry}.
+   * 
+   * @param geom the geometry to prepare
+   * @return the prepared geometry
+   */
+  public PreparedGeometry create(Geometry geom)
+  {
+    if (geom instanceof Polygonal) 
+      return new PreparedPolygon((Polygonal) geom);
+    if (geom instanceof Lineal) 
+      return new PreparedLineString((Lineal) geom);
+    if (geom instanceof Puntal) 
+      return new PreparedPoint((Puntal) geom);
+    
+    /**
+     * Default representation.
+     */
+    return new BasicPreparedGeometry(geom);
+  }
+}
diff --git a/src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java b/src/com/vividsolutions/jts/geom/prep/PreparedLineString.java
similarity index 52%
copy from src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java
copy to src/com/vividsolutions/jts/geom/prep/PreparedLineString.java
index 683e9a2..4b6a78b 100644
--- a/src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java
+++ b/src/com/vividsolutions/jts/geom/prep/PreparedLineString.java
@@ -1,4 +1,3 @@
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -31,42 +30,48 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.geomgraph;
+package com.vividsolutions.jts.geom.prep;
 
-import java.util.*;
-import com.vividsolutions.jts.algorithm.*;
 import com.vividsolutions.jts.geom.*;
 import com.vividsolutions.jts.noding.*;
 
 /**
- * Validates that a collection of SegmentStrings is correctly noded.
- * Throws an appropriate exception if an noding error is found.
+ * A prepared version for {@link Lineal} geometries.
+ * 
+ * @author mbdavis
  *
- * @version 1.7
  */
-public class EdgeNodingValidator {
+public class PreparedLineString
+  extends BasicPreparedGeometry
+{
+  private FastSegmentSetIntersectionFinder segIntFinder = null;
 
-  private static Collection toSegmentStrings(Collection edges)
-  {
-    // convert Edges to SegmentStrings
-    Collection segStrings = new ArrayList();
-    for (Iterator i = edges.iterator(); i.hasNext(); ) {
-      Edge e = (Edge) i.next();
-      segStrings.add(new SegmentString(e.getCoordinates(), e));
-    }
-    return segStrings;
+  public PreparedLineString(Lineal line) {
+    super((Geometry) line);
   }
 
-  private NodingValidator nv;
-
-  public EdgeNodingValidator(Collection edges)
+  public FastSegmentSetIntersectionFinder getIntersectionFinder()
   {
-    nv = new NodingValidator(toSegmentStrings(edges));
+  	/**
+  	 * MD - Another option would be to use a simple scan for 
+  	 * segment testing for small geometries.  
+  	 * However, testing indicates that there is no particular advantage 
+  	 * to this approach.
+  	 */
+  	if (segIntFinder == null)
+  		segIntFinder = new FastSegmentSetIntersectionFinder(SegmentStringUtil.extractSegmentStrings(getGeometry()));
+    return segIntFinder;
   }
-
-  public void checkValid()
+  
+  public boolean intersects(Geometry g)
   {
-    nv.checkValid();
+  	if (! envelopesIntersect(g)) return false;
+    return PreparedLineStringIntersects.intersects(this, g);
   }
-
+  
+  /**
+   * There's not much point in trying to optimize contains, since 
+   * contains for linear targets requires the entire test geometry 
+   * to exactly match the target linework.
+   */
 }
diff --git a/src/com/vividsolutions/jts/geom/prep/PreparedLineStringIntersects.java b/src/com/vividsolutions/jts/geom/prep/PreparedLineStringIntersects.java
new file mode 100644
index 0000000..aeb4a84
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/prep/PreparedLineStringIntersects.java
@@ -0,0 +1,142 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.geom.prep;
+
+import java.util.*;
+
+
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.noding.*;
+import com.vividsolutions.jts.geom.util.*;
+
+/**
+ * Computes the <tt>intersects</tt> spatial relationship predicate
+ * for a target {@link PreparedLineString} relative to other {@link Geometry} classes.
+ * Uses short-circuit tests and indexing to improve performance. 
+ * 
+ * @author Martin Davis
+ *
+ */
+public class PreparedLineStringIntersects 
+{
+	/**
+	 * Computes the intersects predicate between a {@link PreparedLineString}
+	 * and a {@link Geometry}.
+	 * 
+	 * @param prep the prepared linestring
+	 * @param geom a test geometry
+	 * @return true if the linestring intersects the geometry
+	 */
+	public static boolean intersects(PreparedLineString prep, Geometry geom)
+	{
+		PreparedLineStringIntersects op = new PreparedLineStringIntersects(prep);
+    return op.intersects(geom);
+	}
+
+	protected PreparedLineString prepLine;
+
+  /**
+   * Creates an instance of this operation.
+   * 
+   * @param prepPoly the target PreparedLineString
+   */
+	public PreparedLineStringIntersects(PreparedLineString prepLine)
+	{
+		this.prepLine = prepLine;
+	}
+	
+	/**
+	 * Tests whether this geometry intersects a given geometry.
+	 * 
+	 * @param geom the test geometry
+	 * @return true if the test geometry intersects
+	 */
+	public boolean intersects(Geometry geom)
+	{
+		/**
+		 * If any segments intersect, obviously intersects = true
+		 */
+    List lineSegStr = SegmentStringUtil.extractSegmentStrings(geom);
+		boolean segsIntersect = prepLine.getIntersectionFinder().intersects(lineSegStr);
+		// MD - performance testing
+//		boolean segsIntersect = false;
+		if (segsIntersect) 
+      return true;
+		
+		/**
+		 * For L/L case we are done
+		 */
+		if (geom.getDimension() == 1) return false;
+		
+		/**
+		 * For L/A case, need to check for proper inclusion of the target in the test
+		 */
+		if (geom.getDimension() == 2
+				&& prepLine.isAnyTargetComponentInTest(geom)) return true;
+		
+		/** 
+		 * For L/P case, need to check if any points lie on line(s)
+		 */
+		if (geom.getDimension() == 0)
+			return isAnyTestPointInTarget(geom);
+		
+//		return prepLine.getGeometry().intersects(geom);
+		return false;
+	}
+	  
+  /**
+   * Tests whether any representative point of the test Geometry intersects
+   * the target geometry.
+   * Only handles test geometries which are Puntal (dimension 0)
+   * 
+   * @param geom a Puntal geometry to test
+   * @return true if any point of the argument intersects the prepared geometry
+   */
+	protected boolean isAnyTestPointInTarget(Geometry testGeom)
+	{
+		/**
+		 * This could be optimized by using the segment index on the lineal target.
+		 * However, it seems like the L/P case would be pretty rare in practice.
+		 */
+		PointLocator locator = new PointLocator();
+    List coords = ComponentCoordinateExtracter.getCoordinates(testGeom);
+    for (Iterator i = coords.iterator(); i.hasNext(); ) {
+      Coordinate p = (Coordinate) i.next();
+      if (locator.intersects(p, prepLine.getGeometry()))
+        return true;
+    }
+		return false;
+	}
+
+}
diff --git a/src/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.java b/src/com/vividsolutions/jts/geom/prep/PreparedPoint.java
similarity index 62%
copy from src/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.java
copy to src/com/vividsolutions/jts/geom/prep/PreparedPoint.java
index 04db936..c42e1d4 100644
--- a/src/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.java
+++ b/src/com/vividsolutions/jts/geom/prep/PreparedPoint.java
@@ -1,5 +1,3 @@
-
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -32,17 +30,37 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.algorithm;
+package com.vividsolutions.jts.geom.prep;
 
 import com.vividsolutions.jts.geom.*;
 
+
 /**
- * Stub version of RobustCGAlgorithms for backwards compatibility.
- * Will be deprecated in next release - use CGAlgorithms instead.
- *
- * @version 1.7
+ * A prepared version for {@link Puntal} geometries.
+ * 
+ * @author Martin Davis
  *
  */
-public class RobustCGAlgorithms extends CGAlgorithms {
+public class PreparedPoint
+  extends BasicPreparedGeometry
+{
+  public PreparedPoint(Puntal point) {
+    super((Geometry) point);
+  }
 
+  /**
+   * Tests whether this point intersects a {@link Geometry}.
+   * <p>
+   * The optimization here is that computing topology for the test geometry
+   * is avoided.  This can be significant for large geometries.
+   */
+  public boolean intersects(Geometry g)
+  {
+  	if (! envelopesIntersect(g)) return false;
+  	
+  	/**
+  	 * This avoids computing topology for the test geometry
+  	 */
+    return isAnyTargetComponentInTest(g);
+  }  
 }
diff --git a/src/com/vividsolutions/jts/geom/prep/PreparedPolygon.java b/src/com/vividsolutions/jts/geom/prep/PreparedPolygon.java
new file mode 100644
index 0000000..7886dac
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/prep/PreparedPolygon.java
@@ -0,0 +1,127 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.geom.prep;
+
+
+import com.vividsolutions.jts.algorithm.locate.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.noding.*;
+import com.vividsolutions.jts.operation.predicate.*;
+
+/**
+ * A prepared version for {@link Polygonal} geometries.
+ * 
+ * @author mbdavis
+ *
+ */
+public class PreparedPolygon
+  extends BasicPreparedGeometry
+{
+	private boolean isRectangle = false;
+	// create these lazily, since they are expensive
+  private FastSegmentSetIntersectionFinder segIntFinder = null;
+  private PointOnGeometryLocator pia = null;
+
+  public PreparedPolygon(Polygonal poly) {
+    super((Geometry) poly);
+    isRectangle = getGeometry().isRectangle();
+  }
+
+  public FastSegmentSetIntersectionFinder getIntersectionFinder()
+  {
+  	/**
+  	 * MD - Another option would be to use a simple scan for 
+  	 * segment testing for small geometries.  
+  	 * However, testing indicates that there is no particular advantage 
+  	 * to this approach.
+  	 */
+  	if (segIntFinder == null)
+  		segIntFinder = new FastSegmentSetIntersectionFinder(SegmentStringUtil.extractSegmentStrings(getGeometry()));
+   return segIntFinder;
+  }
+  
+  public PointOnGeometryLocator getPointLocator()
+  {
+  	if (pia == null)
+      pia = new IndexedPointInAreaLocator(getGeometry());
+ 		
+    return pia;
+  }
+  
+  public boolean intersects(Geometry g)
+  {
+  	// envelope test
+  	if (! envelopesIntersect(g)) return false;
+  	
+    // optimization for rectangles
+    if (isRectangle) {
+      return RectangleIntersects.intersects((Polygon) getGeometry(), g);
+    }
+    
+    return PreparedPolygonIntersects.intersects(this, g);
+  }
+  
+  public boolean contains(Geometry g)
+  {
+    // short-circuit test
+    if (! envelopeCovers(g)) 
+    	return false;
+  	
+    // optimization for rectangles
+    if (isRectangle) {
+      return RectangleContains.contains((Polygon) getGeometry(), g);
+    }
+
+    return PreparedPolygonContains.contains(this, g);
+  }
+  
+  public boolean containsProperly(Geometry g)
+  {
+    // short-circuit test
+    if (! envelopeCovers(g)) 
+    	return false;
+    return PreparedPolygonContainsProperly.containsProperly(this, g);
+  }
+  
+  public boolean covers(Geometry g)
+  {
+    // short-circuit test
+    if (! envelopeCovers(g)) 
+    	return false;
+    // optimization for rectangle arguments
+    if (isRectangle) {
+      return true;
+    }
+    return PreparedPolygonCovers.covers(this, g);
+  }
+}
diff --git a/src/com/vividsolutions/jts/geom/prep/PreparedPolygonContains.java b/src/com/vividsolutions/jts/geom/prep/PreparedPolygonContains.java
new file mode 100644
index 0000000..bce50ff
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/prep/PreparedPolygonContains.java
@@ -0,0 +1,101 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.geom.prep;
+
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Computes the <tt>contains</tt> spatial relationship predicate
+ * for a {@link PreparedPolygon} relative to all other {@link Geometry} classes.
+ * Uses short-circuit tests and indexing to improve performance. 
+ * <p>
+ * It is not possible to short-circuit in all cases, in particular
+ * in the case where the test geometry touches the polygon linework.
+ * In this case full topology must be computed.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class PreparedPolygonContains 
+	extends AbstractPreparedPolygonContains
+{
+	/**
+	 * Computes the </tt>contains</tt> predicate between a {@link PreparedPolygon}
+	 * and a {@link Geometry}.
+	 * 
+	 * @param prep the prepared polygon
+	 * @param geom a test geometry
+	 * @return true if the polygon contains the geometry
+	 */
+	public static boolean contains(PreparedPolygon prep, Geometry geom)
+	{
+    PreparedPolygonContains polyInt = new PreparedPolygonContains(prep);
+    return polyInt.contains(geom);
+	}
+
+  /**
+   * Creates an instance of this operation.
+   * 
+   * @param prepPoly the PreparedPolygon to evaluate
+   */
+	public PreparedPolygonContains(PreparedPolygon prepPoly)
+	{
+		super(prepPoly);
+	}
+		
+	/**
+	 * Tests whether this PreparedPolygon <tt>contains</tt> a given geometry.
+	 * 
+	 * @param geom the test geometry
+	 * @return true if the test geometry is contained
+	 */
+	public boolean contains(Geometry geom)
+	{
+		return eval(geom);
+	}
+	
+	/**
+	 * Computes the full topological <tt>contains</tt> predicate.
+	 * Used when short-circuit tests are not conclusive.
+	 * 
+	 * @param geom the test geometry
+	 * @return true if this prepared polygon contains the test geometry
+	 */
+	protected boolean fullTopologicalPredicate(Geometry geom)
+	{
+		boolean isContained = prepPoly.getGeometry().contains(geom);
+		return isContained;
+	}
+	
+}
diff --git a/src/com/vividsolutions/jts/geom/prep/PreparedPolygonContainsProperly.java b/src/com/vividsolutions/jts/geom/prep/PreparedPolygonContainsProperly.java
new file mode 100644
index 0000000..ee2ab7d
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/prep/PreparedPolygonContainsProperly.java
@@ -0,0 +1,126 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.geom.prep;
+
+import java.util.*;
+
+
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.noding.*;
+import com.vividsolutions.jts.geom.util.*;
+
+/**
+ * Computes the <tt>containsProperly</tt> spatial relationship predicate
+ * for {@link PreparedPolygon}s relative to all other {@link Geometry} classes.
+ * Uses short-circuit tests and indexing to improve performance. 
+ * <p>
+ * A Geometry A <tt>containsProperly</tt> another Geometry B iff
+ * all points of B are contained in the Interior of A.
+ * Equivalently, B is contained in A AND B does not intersect 
+ * the Boundary of A.
+ * <p>
+ * The advantage to using this predicate is that it can be computed
+ * efficiently, with no need to compute topology at individual points.
+ * In a situation with many geometries intersecting the boundary 
+ * of the target geometry, this can make a performance difference.
+ * 
+ * @author Martin Davis
+ */
+public class PreparedPolygonContainsProperly 
+	extends PreparedPolygonPredicate
+{
+	/**
+	 * Computes the </tt>containsProperly</tt> predicate between a {@link PreparedPolygon}
+	 * and a {@link Geometry}.
+	 * 
+	 * @param prep the prepared polygon
+	 * @param geom a test geometry
+	 * @return true if the polygon properly contains the geometry
+	 */
+	public static boolean containsProperly(PreparedPolygon prep, Geometry geom)
+	{
+		PreparedPolygonContainsProperly polyInt = new PreparedPolygonContainsProperly(prep);
+    return polyInt.containsProperly(geom);
+	}
+
+  /**
+   * Creates an instance of this operation.
+   * 
+   * @param prepPoly the PreparedPolygon to evaluate
+   */
+	public PreparedPolygonContainsProperly(PreparedPolygon prepPoly)
+	{
+		super(prepPoly);
+	}
+	
+	/**
+	 * Tests whether this PreparedPolygon containsProperly a given geometry.
+	 * 
+	 * @param geom the test geometry
+	 * @return true if the test geometry is contained properly
+	 */
+	public boolean containsProperly(Geometry geom)
+	{
+		/**
+		 * Do point-in-poly tests first, since they are cheaper and may result
+		 * in a quick negative result.
+		 * 
+		 * If a point of any test components does not lie in the target interior, result is false
+		 */
+		boolean isAllInPrepGeomAreaInterior = isAllTestComponentsInTargetInterior(geom);
+		if (! isAllInPrepGeomAreaInterior) return false;
+		
+		/**
+		 * If any segments intersect, result is false.
+		 */
+    List lineSegStr = SegmentStringUtil.extractSegmentStrings(geom);
+		boolean segsIntersect = prepPoly.getIntersectionFinder().intersects(lineSegStr);
+		if (segsIntersect) 
+      return false;
+		
+		/**
+		 * Given that no segments intersect, if any vertex of the target
+		 * is contained in some test component.
+		 * the test is NOT properly contained.
+		 */
+		if (geom instanceof Polygonal) {
+			// TODO: generalize this to handle GeometryCollections
+			boolean isTargetGeomInTestArea = isAnyTargetComponentInAreaTest(geom, prepPoly.getRepresentativePoints());
+			if (isTargetGeomInTestArea) return false;
+		}
+		
+		return true;
+	}
+	
+}
diff --git a/src/com/vividsolutions/jts/geom/prep/PreparedPolygonCovers.java b/src/com/vividsolutions/jts/geom/prep/PreparedPolygonCovers.java
new file mode 100644
index 0000000..d767175
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/prep/PreparedPolygonCovers.java
@@ -0,0 +1,101 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.geom.prep;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Computes the <tt>covers</tt> spatial relationship predicate
+ * for a {@link PreparedPolygon} relative to all other {@link Geometry} classes.
+ * Uses short-circuit tests and indexing to improve performance. 
+ * <p>
+ * It is not possible to short-circuit in all cases, in particular
+ * in the case where the test geometry touches the polygon linework.
+ * In this case full topology must be computed.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class PreparedPolygonCovers 
+	extends AbstractPreparedPolygonContains
+{
+	/**
+	 * Computes the </tt>covers</tt> predicate between a {@link PreparedPolygon}
+	 * and a {@link Geometry}.
+	 * 
+	 * @param prep the prepared polygon
+	 * @param geom a test geometry
+	 * @return true if the polygon covers the geometry
+	 */
+	public static boolean covers(PreparedPolygon prep, Geometry geom)
+	{
+    PreparedPolygonCovers polyInt = new PreparedPolygonCovers(prep);
+    return polyInt.covers(geom);
+	}
+
+  /**
+   * Creates an instance of this operation.
+   * 
+   * @param prepPoly the PreparedPolygon to evaluate
+   */
+	public PreparedPolygonCovers(PreparedPolygon prepPoly)
+	{
+		super(prepPoly);
+		requireSomePointInInterior = false;
+	}
+		
+	/**
+	 * Tests whether this PreparedPolygon <tt>covers</tt> a given geometry.
+	 * 
+	 * @param geom the test geometry
+	 * @return true if the test geometry is covered
+	 */
+	public boolean covers(Geometry geom)
+	{
+		return eval(geom);
+	}
+	
+	/**
+	 * Computes the full topological <tt>covers</tt> predicate.
+	 * Used when short-circuit tests are not conclusive.
+	 * 
+	 * @param geom the test geometry
+	 * @return true if this prepared polygon covers the test geometry
+	 */
+	protected boolean fullTopologicalPredicate(Geometry geom)
+	{
+		boolean result = prepPoly.getGeometry().covers(geom);
+		return result;
+	}
+	
+}
diff --git a/src/com/vividsolutions/jts/geom/prep/PreparedPolygonIntersects.java b/src/com/vividsolutions/jts/geom/prep/PreparedPolygonIntersects.java
new file mode 100644
index 0000000..8c21cc1
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/prep/PreparedPolygonIntersects.java
@@ -0,0 +1,117 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.geom.prep;
+
+import java.util.*;
+
+
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.noding.*;
+import com.vividsolutions.jts.geom.util.*;
+
+/**
+ * Computes the <tt>intersects</tt> spatial relationship predicate
+ * for {@link PreparedPolygon}s relative to all other {@link Geometry} classes.
+ * Uses short-circuit tests and indexing to improve performance. 
+ * 
+ * @author Martin Davis
+ *
+ */
+public class PreparedPolygonIntersects 
+	extends PreparedPolygonPredicate
+{
+	/**
+	 * Computes the intersects predicate between a {@link PreparedPolygon}
+	 * and a {@link Geometry}.
+	 * 
+	 * @param prep the prepared polygon
+	 * @param geom a test geometry
+	 * @return true if the polygon intersects the geometry
+	 */
+	public static boolean intersects(PreparedPolygon prep, Geometry geom)
+	{
+    PreparedPolygonIntersects polyInt = new PreparedPolygonIntersects(prep);
+    return polyInt.intersects(geom);
+	}
+	
+  /**
+   * Creates an instance of this operation.
+   * 
+   * @param prepPoly the PreparedPolygon to evaluate
+   */
+	public PreparedPolygonIntersects(PreparedPolygon prepPoly)
+	{
+		super(prepPoly);
+	}
+	
+	/**
+	 * Tests whether this PreparedPolygon intersects a given geometry.
+	 * 
+	 * @param geom the test geometry
+	 * @return true if the test geometry intersects
+	 */
+	public boolean intersects(Geometry geom)
+	{
+		/**
+		 * Do point-in-poly tests first, since they are cheaper and may result
+		 * in a quick positive result.
+		 * 
+		 * If a point of any test components lie in target, result is true
+		 */
+		boolean isInPrepGeomArea = isAnyTestComponentInTarget(geom);
+		if (isInPrepGeomArea) return true;
+		
+		/**
+		 * If any segments intersect, result is true
+		 */
+    List lineSegStr = SegmentStringUtil.extractSegmentStrings(geom);
+		boolean segsIntersect = prepPoly.getIntersectionFinder().intersects(lineSegStr);
+		if (segsIntersect) 
+      return true;
+		
+		/**
+		 * If the test has dimension = 2 as well, it is necessary to
+		 * test for proper inclusion of the target.
+		 * Since no segments intersect, it is sufficient to test representative points.
+		 */
+		if (geom.getDimension() == 2) {
+			// TODO: generalize this to handle GeometryCollections
+			boolean isPrepGeomInArea = isAnyTargetComponentInAreaTest(geom, prepPoly.getRepresentativePoints());
+			if (isPrepGeomInArea) return true;
+		}
+		
+		return false;
+	}
+	  
+}
diff --git a/src/com/vividsolutions/jts/geom/prep/PreparedPolygonPredicate.java b/src/com/vividsolutions/jts/geom/prep/PreparedPolygonPredicate.java
new file mode 100644
index 0000000..d4108a5
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/prep/PreparedPolygonPredicate.java
@@ -0,0 +1,134 @@
+package com.vividsolutions.jts.geom.prep;
+
+import java.util.*;
+
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.algorithm.locate.PointOnGeometryLocator;
+import com.vividsolutions.jts.algorithm.locate.SimplePointInAreaLocator;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.util.*;
+
+/**
+ * A base class for predicate operations on {@link PreparedPolygon}s.
+ * 
+ * @author mbdavis
+ *
+ */
+public abstract class PreparedPolygonPredicate 
+{
+	protected PreparedPolygon prepPoly;
+  private PointOnGeometryLocator targetPointLocator;
+
+  /**
+   * Creates an instance of this operation.
+   * 
+   * @param prepPoly the PreparedPolygon to evaluate
+   */
+	public PreparedPolygonPredicate(PreparedPolygon prepPoly)
+	{
+		this.prepPoly = prepPoly;
+    targetPointLocator = prepPoly.getPointLocator();
+	}
+	
+  /**
+   * Tests whether all components of the test Geometry 
+	 * are contained in the target geometry.
+   * Handles both linear and point components.
+   * 
+   * @param geom a geometry to test
+   * @return true if all componenta of the argument are contained in the target geometry
+   */
+	protected boolean isAllTestComponentsInTarget(Geometry testGeom)
+	{
+    List coords = ComponentCoordinateExtracter.getCoordinates(testGeom);
+    for (Iterator i = coords.iterator(); i.hasNext(); ) {
+      Coordinate p = (Coordinate) i.next();
+      int loc = targetPointLocator.locate(p);
+      if (loc == Location.EXTERIOR)
+        return false;
+    }
+		return true;
+	}
+	
+  /**
+   * Tests whether all components of the test Geometry 
+	 * are contained in the interior of the target geometry.
+   * Handles both linear and point components.
+   * 
+   * @param geom a geometry to test
+   * @return true if all componenta of the argument are contained in the target geometry interior
+   */
+	protected boolean isAllTestComponentsInTargetInterior(Geometry testGeom)
+	{
+    List coords = ComponentCoordinateExtracter.getCoordinates(testGeom);
+    for (Iterator i = coords.iterator(); i.hasNext(); ) {
+      Coordinate p = (Coordinate) i.next();
+      int loc = targetPointLocator.locate(p);
+      if (loc != Location.INTERIOR)
+        return false;
+    }
+		return true;
+	}
+	
+  /**
+   * Tests whether any component of the test Geometry intersects
+   * the area of the target geometry.
+   * Handles test geometries with both linear and point components.
+   * 
+   * @param geom a geometry to test
+   * @return true if any component of the argument intersects the prepared area geometry
+   */
+	protected boolean isAnyTestComponentInTarget(Geometry testGeom)
+	{
+    List coords = ComponentCoordinateExtracter.getCoordinates(testGeom);
+    for (Iterator i = coords.iterator(); i.hasNext(); ) {
+      Coordinate p = (Coordinate) i.next();
+      int loc = targetPointLocator.locate(p);
+      if (loc != Location.EXTERIOR)
+        return true;
+    }
+		return false;
+	}
+
+  /**
+   * Tests whether any component of the test Geometry intersects
+   * the interior of the target geometry.
+   * Handles test geometries with both linear and point components.
+   * 
+   * @param geom a geometry to test
+   * @return true if any component of the argument intersects the prepared area geometry interior
+   */
+	protected boolean isAnyTestComponentInTargetInterior(Geometry testGeom)
+	{
+    List coords = ComponentCoordinateExtracter.getCoordinates(testGeom);
+    for (Iterator i = coords.iterator(); i.hasNext(); ) {
+      Coordinate p = (Coordinate) i.next();
+      int loc = targetPointLocator.locate(p);
+      if (loc == Location.INTERIOR)
+        return true;
+    }
+		return false;
+	}
+
+
+	/**
+	 * Tests whether any component of the target geometry 
+	 * intersects the test geometry (which must be an areal geometry) 
+	 * 
+	 * @param geom the test geometry
+	 * @param repPts the representative points of the target geometry
+	 * @return true if any component intersects the areal test geometry
+	 */
+	protected boolean isAnyTargetComponentInAreaTest(Geometry testGeom, List targetRepPts)
+	{
+		PointOnGeometryLocator piaLoc = new SimplePointInAreaLocator(testGeom);
+    for (Iterator i = targetRepPts.iterator(); i.hasNext(); ) {
+      Coordinate p = (Coordinate) i.next();
+      int loc = piaLoc.locate(p);
+      if (loc != Location.EXTERIOR)
+        return true;
+    }
+		return false;
+	}
+
+}
diff --git a/src/com/vividsolutions/jts/geom/prep/package.html b/src/com/vividsolutions/jts/geom/prep/package.html
new file mode 100644
index 0000000..54941bc
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/prep/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Classes to perform optimized geometric operations on suitably prepared geometries.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/geom/util/AffineTransformation.java b/src/com/vividsolutions/jts/geom/util/AffineTransformation.java
new file mode 100644
index 0000000..7552753
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/util/AffineTransformation.java
@@ -0,0 +1,1053 @@
+package com.vividsolutions.jts.geom.util;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.util.*;
+/**
+ * Represents an affine transformation on the 2D Cartesian plane. 
+ * It can be used to transform a {@link Coordinate} or {@link Geometry}.
+ * An affine transformation is a mapping of the 2D plane into itself
+ * via a series of transformations of the following basic types:
+ * <ul>
+ * <li>reflection (through a line)
+ * <li>rotation (around the origin)
+ * <li>scaling (relative to the origin)
+ * <li>shearing (in both the X and Y directions)
+ * <li>translation 
+ * </ul>
+ * In general, affine transformations preserve straightness and parallel lines,
+ * but do not preserve distance or shape.
+ * <p>
+ * An affine transformation can be represented by a 3x3 
+ * matrix in the following form:
+ * <blockquote><pre>
+ * T = | m00 m01 m02 |
+ *     | m10 m11 m12 |
+ *     |  0   0   1  |
+ * </pre></blockquote>
+ * A coordinate P = (x, y) can be transformed to a new coordinate P' = (x', y')
+ * by representing it as a 3x1 matrix and using matrix multiplication to compute:
+ * <blockquote><pre>
+ * | x' |  = T x | x |
+ * | y' |        | y |
+ * | 1  |        | 1 |
+ * </pre></blockquote>
+ * Affine transformations can be composed using the {@link #compose} method.
+ * The composition of transformations is in general not commutative.
+ * transformation matrices as follows:
+ * <blockquote><pre>
+ * A.compose(B) = T<sub>B</sub> x T<sub>A</sub>
+ * </pre></blockquote>
+ * This produces a transformation whose effect is that of A followed by B.
+ * Composition is computed via multiplication of the 
+ * The methods {@link #reflect}, {@link #rotate}, {@link #scale}, {@link #shear}, and {@link #translate} 
+ * have the effect of composing a transformation of that type with
+ * the transformation they are invoked on.  
+ * <p>
+ * Affine transformations may be invertible or non-invertible.  
+ * If a transformation is invertible, then there exists 
+ * an inverse transformation which when composed produces 
+ * the identity transformation.  
+ * The {@link #getInverse} method
+ * computes the inverse of a transformation, if one exists.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class AffineTransformation
+	implements Cloneable, CoordinateSequenceFilter
+{
+  
+  /**
+   * Creates a transformation for a reflection about the 
+   * line (x0,y0) - (x1,y1).
+   * 
+   * @param x0 the x-ordinate of a point on the reflection line
+   * @param y0 the y-ordinate of a point on the reflection line
+   * @param x1 the x-ordinate of a another point on the reflection line
+   * @param y1 the y-ordinate of a another point on the reflection line
+   * @return a transformation for the reflection
+   */
+  public static AffineTransformation reflectionInstance(double x0, double y0, double x1, double y1)
+  {
+    AffineTransformation trans = new AffineTransformation();
+    trans.setToReflection(x0, y0, x1, y1);
+    return trans;
+  }
+  
+  /**
+   * Creates a transformation for a reflection about the 
+   * line (0,0) - (x,y).
+   * 
+   * @param x the x-ordinate of a point on the reflection line
+   * @param y the y-ordinate of a point on the reflection line
+   * @return a transformation for the reflection
+   */
+  public static AffineTransformation reflectionInstance(double x, double y)
+  {
+    AffineTransformation trans = new AffineTransformation();
+    trans.setToReflection(x, y);
+    return trans;
+  }
+  
+  /**
+   * Creates a transformation for a rotation
+   * about the origin 
+   * by an angle <i>theta</i>.
+   * Positive angles correspond to a rotation 
+   * in the counter-clockwise direction.
+   * 
+   * @param theta the rotation angle, in radians
+   * @return a transformation for the rotation
+   */
+  public static AffineTransformation rotationInstance(double theta)
+  {
+    return rotationInstance(Math.sin(theta), Math.cos(theta));
+  }
+  
+  /**
+   * Creates a transformation for a rotation 
+   * by an angle <i>theta</i>,
+   * specified by the sine and cosine of the angle.
+   * This allows providing exact values for sin(theta) and cos(theta)
+   * for the common case of rotations of multiples of quarter-circles. 
+   * 
+   * @param sinTheta the sine of the rotation angle
+   * @param cosTheta the cosine of the rotation angle
+   * @return a transformation for the rotation
+   */
+  public static AffineTransformation rotationInstance(double sinTheta, double cosTheta)
+  {
+    AffineTransformation trans = new AffineTransformation();
+    trans.setToRotation(sinTheta, cosTheta);
+    return trans;
+  }
+  
+  /**
+   * Creates a transformation for a rotation
+   * about the point (x,y) by an angle <i>theta</i>.
+   * Positive angles correspond to a rotation 
+   * in the counter-clockwise direction.
+   * 
+   * @param theta the rotation angle, in radians
+   * @param x the x-ordinate of the rotation point
+   * @param y the y-ordinate of the rotation point
+   * @return a transformation for the rotation
+   */
+  public static AffineTransformation rotationInstance(double theta, double x, double y)
+  {
+    return rotationInstance(Math.sin(theta), Math.cos(theta), x, y);
+  }
+  
+  /**
+   * Creates a transformation for a rotation 
+   * about the point (x,y) by an angle <i>theta</i>,
+   * specified by the sine and cosine of the angle.
+   * This allows providing exact values for sin(theta) and cos(theta)
+   * for the common case of rotations of multiples of quarter-circles. 
+   * 
+   * @param sinTheta the sine of the rotation angle
+   * @param cosTheta the cosine of the rotation angle
+   * @param x the x-ordinate of the rotation point
+   * @param y the y-ordinate of the rotation point
+   * @return a transformation for the rotation
+   */
+  public static AffineTransformation rotationInstance(double sinTheta, double cosTheta, double x, double y)
+  {
+    AffineTransformation trans = new AffineTransformation();
+    trans.setToRotation(sinTheta, cosTheta, x, y);
+    return trans;
+  }
+  
+  /**
+   * Creates a transformation for a scaling relative to the origin.
+   * 
+   * @param xScale the value to scale by in the x direction
+   * @param yScale the value to scale by in the y direction
+   * @return a transformation for the scaling
+   */
+  public static AffineTransformation scaleInstance(double xScale, double yScale)
+  {
+    AffineTransformation trans = new AffineTransformation();
+    trans.setToScale(xScale, yScale);
+    return trans;
+  }
+  
+  /**
+   * Creates a transformation for a scaling relative to the point (x,y).
+   * 
+   * @param xScale the value to scale by in the x direction
+   * @param yScale the value to scale by in the y direction
+   * @param x the x-ordinate of the point to scale around
+   * @param y the y-ordinate of the point to scale around
+   * @return a transformation for the scaling
+   */
+  public static AffineTransformation scaleInstance(double xScale, double yScale, double x, double y)
+  {
+    AffineTransformation trans = new AffineTransformation();
+    trans.translate(-x, -y);
+    trans.scale(xScale, yScale);
+    trans.translate(x, y);
+    return trans;
+  }
+  
+
+  /**
+   * Creates a transformation for a shear.
+   * 
+   * @param xShear the value to shear by in the x direction
+   * @param yShear the value to shear by in the y direction
+   * @return a tranformation for the shear
+   */
+  public static AffineTransformation shearInstance(double xShear, double yShear)
+  {
+    AffineTransformation trans = new AffineTransformation();
+    trans.setToShear(xShear, yShear);
+    return trans;
+  }
+  
+  /**
+   * Creates a transformation for a translation.
+   * 
+   * @param x the value to translate by in the x direction
+   * @param y the value to translate by in the y direction
+   * @return a tranformation for the translation
+   */  
+  public static AffineTransformation translationInstance(double x, double y)
+  {
+    AffineTransformation trans = new AffineTransformation();
+    trans.setToTranslation(x, y);
+    return trans;
+  }
+  
+  // affine matrix entries
+  // (bottom row is always [ 0 0 1 ])
+  private double m00;
+  private double m01;
+  private double m02;
+  private double m10;
+  private double m11;
+  private double m12;
+  
+  /**
+   * Constructs a new identity transformation
+   */
+  public AffineTransformation()
+  {
+    setToIdentity();
+  }
+  
+  /**
+   * Constructs a new transformation whose 
+   * matrix has the specified values.
+   * 
+   * @param matrix an array containing the 6 values { m00, m01, m02, m10, m11, m12 }
+   * @throws NullPointerException if matrix is null
+   * @throws ArrayIndexOutOfBoundsException if matrix is too small 
+   */
+  public AffineTransformation(double[] matrix)
+  {
+    m00 = matrix[0];
+    m01 = matrix[1];
+    m02 = matrix[2];
+    m10 = matrix[3];
+    m11 = matrix[4];
+    m12 = matrix[5];
+  }
+  
+  /**
+   * Constructs a new transformation whose 
+   * matrix has the specified values.
+   * 
+   * @param m00 the entry for the [0, 0] element in the transformation matrix 
+   * @param m01 the entry for the [0, 1] element in the transformation matrix
+   * @param m02 the entry for the [0, 2] element in the transformation matrix
+   * @param m10 the entry for the [1, 0] element in the transformation matrix
+   * @param m11 the entry for the [1, 1] element in the transformation matrix
+   * @param m12 the entry for the [1, 2] element in the transformation matrix
+   */
+  public AffineTransformation(double m00,
+      double m01,
+      double m02,
+      double m10,
+      double m11,
+      double m12)
+  {
+    setTransformation(m00, m01, m02, m10, m11, m12);
+  }
+  
+  /**
+   * Constructs a transformation which is
+   * a copy of the given one.
+   * 
+   * @param trans the transformation to copy
+   */
+  public AffineTransformation(AffineTransformation trans)
+  {
+    setTransformation(trans);
+  }
+  
+  /**
+   * Constructs a transformation
+   * which maps the given source
+   * points into the given destination points.
+   * 
+   * @param src0 source point 0
+   * @param src1 source point 1
+   * @param src2 source point 2
+   * @param dest0 the mapped point for source point 0
+   * @param dest1 the mapped point for source point 1
+   * @param dest2 the mapped point for source point 2
+   * 
+   */
+  public AffineTransformation(Coordinate src0,
+      Coordinate src1,
+      Coordinate src2,
+      Coordinate dest0,
+      Coordinate dest1,
+      Coordinate dest2)
+  {
+  }
+  
+  /**
+   * Sets this transformation to be the identity transformation.
+   * The identity transformation has the matrix:
+   * <blockquote><pre>
+   * | 1 0 0 |
+   * | 0 1 0 |
+   * | 0 0 1 |
+   * </pre></blockquote>
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setToIdentity()
+  {
+    m00 = 1.0;    m01 = 0.0;  m02 = 0.0;
+    m10 = 0.0;    m11 = 1.0;  m12 = 0.0;
+    return this;
+  }
+  
+  /**
+   * Sets this transformation's matrix to have the given values.
+   * 
+   * @param m00 the entry for the [0, 0] element in the transformation matrix 
+   * @param m01 the entry for the [0, 1] element in the transformation matrix
+   * @param m02 the entry for the [0, 2] element in the transformation matrix
+   * @param m10 the entry for the [1, 0] element in the transformation matrix
+   * @param m11 the entry for the [1, 1] element in the transformation matrix
+   * @param m12 the entry for the [1, 2] element in the transformation matrix
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setTransformation(double m00,
+      double m01,
+      double m02,
+      double m10,
+      double m11,
+      double m12)
+  {
+    this.m00 = m00;
+    this.m01 = m01;
+    this.m02 = m02;
+    this.m10 = m10;
+    this.m11 = m11;
+    this.m12 = m12;
+    return this;
+  }
+  
+  /**
+   * Sets this transformation to be a copy of the given one
+   * 
+   * @param trans a transformation to copy
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setTransformation(AffineTransformation trans)
+  {
+    m00 = trans.m00;    m01 = trans.m01;  m02 = trans.m02;
+    m10 = trans.m10;    m11 = trans.m11;  m12 = trans.m12; 
+    return this;
+  }
+  
+  /**
+   * Gets an array containing the entries
+   * of the transformation matrix.
+   * Only the 6 non-trivial entries are returned,
+   * in the sequence:
+   * <pre>
+   * m00, m01, m02, m10, m11, m12
+   * </pre>
+   * 
+   * @return an array of length 6
+   */
+  public double[] getMatrixEntries()
+  {
+    return new double[] { m00, m01, m02, m10, m11, m12 };
+  }
+  
+  /**
+  * Computes the determinant of the transformation matrix. 
+  * The determinant is computed as:
+  * <blockquote><pre>
+  * | m00 m01 m02 |
+  * | m10 m11 m12 | = m00 * m11 - m01 * m10
+  * |  0   0   1  |
+  * </pre></blockquote>
+  * If the determinant is zero, 
+  * the transform is singular (not invertible), 
+  * and operations which attempt to compute
+  * an inverse will throw a <tt>NoninvertibleTransformException</tt>. 
+
+  * @return the determinant of the transformation
+  * @see #getInverse()
+  */
+  public double getDeterminant()
+  {
+    return m00 * m11 - m01 * m10;
+  }
+
+  /**
+   * Computes the inverse of this transformation, if one
+   * exists.
+   * The inverse is the transformation which when 
+   * composed with this one produces the identity 
+   * transformation.
+   * A transformation has an inverse if and only if it
+   * is not singular (i.e. its
+   * determinant is non-zero).
+   * Geometrically, an transformation is non-invertible
+   * if it maps the plane to a line or a point.
+   * If no inverse exists this method
+   * will throw a <tt>NoninvertibleTransformationException</tt>.
+   * <p>
+   * The matrix of the inverse is equal to the 
+   * inverse of the matrix for the transformation.
+   * It is computed as follows:
+   * <blockquote><pre>  
+   *                 1    
+   * inverse(A)  =  ---   x  adjoint(A) 
+   *                det 
+   *
+   *
+   *             =   1       |  m11  -m01   m01*m12-m02*m11  |
+   *                ---   x  | -m10   m00  -m00*m12+m10*m02  |
+   *                det      |  0     0     m00*m11-m10*m01  |
+   *
+   *
+   *
+   *             = |  m11/det  -m01/det   m01*m12-m02*m11/det |
+   *               | -m10/det   m00/det  -m00*m12+m10*m02/det |
+   *               |   0           0          1               |
+   *
+   * </pre></blockquote>  
+   *  
+   * @return a new inverse transformation
+   * @throws NoninvertibleTransformationException
+   * @see #getDeterminant()
+   */
+  public AffineTransformation getInverse()
+  	  throws NoninvertibleTransformationException
+  {
+    double det = getDeterminant();
+    if (det == 0)
+    	throw new NoninvertibleTransformationException("Transformation is non-invertible");
+    
+    double im00 = m11 / det;
+    double im10 = -m10 / det;
+    double im01 = -m01 / det;
+    double im11 = m00 / det;
+    double im02 = (m01 * m12 - m02 * m11) / det;
+    double im12 = (-m00 * m12 + m10 * m02) / det;
+    
+    return new AffineTransformation(im00, im01, im02, im10, im11, im12);
+  }
+  
+  /**
+   * Explicitly computes the math for a reflection.  May not work.
+   * @param x0
+   * @param y0
+   * @param x1
+   * @param y1
+   * @return
+   */
+  public AffineTransformation setToReflectionBasic(double x0, double y0, double x1, double y1)
+  {
+    if (x0 == x1 && y0 == y1) {
+      throw new IllegalArgumentException("Reflection line points must be distinct");
+    }
+    double dx = x1 - x0;
+    double dy = y1 - y0;
+    double d = Math.sqrt(dx * dx + dy * dy);
+    double sin = dy / d;
+    double cos = dx / d;
+    double cs2 = 2 * sin * cos;
+    double c2s2 = cos * cos - sin * sin;
+    m00 = c2s2;   m01 = cs2;    m02 = 0.0;
+    m10 = cs2;    m11 = -c2s2;  m12 = 0.0;
+    return this;
+  }
+  
+  public AffineTransformation setToReflection(double x0, double y0, double x1, double y1)
+  {
+    if (x0 == x1 && y0 == y1) {
+      throw new IllegalArgumentException("Reflection line points must be distinct");
+    }
+    // translate line vector to origin
+    setToTranslation(-x0, -y0);
+    
+    // rotate vector to positive x axis direction
+    double dx = x1 - x0;
+    double dy = y1 - y0;
+    double d = Math.sqrt(dx * dx + dy * dy);
+    double sin = dy / d;
+    double cos = dx / d;
+    rotate(-sin, cos);
+    // reflect about the x axis
+    scale(1, -1);
+    // rotate back
+    rotate(sin, cos);
+    // translate back
+    translate(x0, y0);
+    return this;
+  }
+  
+  /**
+   * Sets this transformation to be a reflection 
+   * about the line defined by vector (x,y).
+   * The transformation for a reflection
+   * is computed by:
+   * <blockquote><pre>
+   * d = sqrt(x<sup>2</sup> + y<sup>2</sup>)  
+   * sin = x / d;
+   * cos = x / d;
+   * 
+   * T<sub>ref</sub> = T<sub>rot(sin, cos)</sub> x T<sub>scale(1, -1)</sub> x T<sub>rot(-sin, cos)</sub  
+   * </pre></blockquote> 
+   * 
+   * @param x the x-component of the reflection line vector
+   * @param y the y-component of the reflection line vector
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setToReflection(double x, double y)
+  {
+    if (x == 0.0 && y == 0.0) {
+      throw new IllegalArgumentException("Reflection vector must be non-zero");
+    }
+    // rotate vector to positive x axis direction
+    double d = Math.sqrt(x * x + y * y);
+    double sin = y / d;
+    double cos = x / d;
+    rotate(-sin, cos);
+    // reflect about the x-axis
+    scale(1, -1);
+    // rotate back
+    rotate(sin, cos);
+    return this;
+  }
+  
+  /**
+   * Sets this transformation to be a rotation around the origin.
+   * A positive rotation angle corresponds 
+   * to a counter-clockwise rotation.
+   * The transformation matrix for a rotation
+   * by an angle <tt>theta</tt>
+   * has the value:
+   * <blockquote><pre>  
+   * |  cos(theta)  -sin(theta)   0 |
+   * |  sin(theta)   cos(theta)   0 |
+   * |           0            0   1 |
+   * </pre></blockquote> 
+   * 
+   * @param theta the rotation angle, in radians
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setToRotation(double theta)
+  {
+    setToRotation(Math.sin(theta), Math.cos(theta));
+    return this;
+  }
+  
+  /**
+   * Sets this transformation to be a rotation around the origin
+   * by specifying the sin and cos of the rotation angle directly.
+   * The transformation matrix for the rotation
+   * has the value:
+   * <blockquote><pre>  
+   * |  cosTheta  -sinTheta   0 |
+   * |  sinTheta   cosTheta   0 |
+   * |         0          0   1 |
+   * </pre></blockquote> 
+   * 
+   * @param sinTheta the sine of the rotation angle
+   * @param cosTheta the cosine of the rotation angle
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setToRotation(double sinTheta, double cosTheta)
+  {
+    m00 = cosTheta;    m01 = -sinTheta;  m02 = 0.0;
+    m10 = sinTheta;    m11 = cosTheta;   m12 = 0.0;
+    return this;
+  }
+  
+  /**
+   * Sets this transformation to be a rotation
+   * around a given point (x,y).
+   * A positive rotation angle corresponds 
+   * to a counter-clockwise rotation.
+   * The transformation matrix for a rotation
+   * by an angle <tt>theta</tt>
+   * has the value:
+   * <blockquote><pre>  
+   * |  cosTheta  -sinTheta   x-x*cos+y*sin |
+   * |  sinTheta   cosTheta   y-x*sin-y*cos |
+   * |           0            0   1 |
+   * </pre></blockquote> 
+   * 
+   * @param theta the rotation angle, in radians
+   * @param x the x-ordinate of the rotation point
+   * @param y the y-ordinate of the rotation point
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setToRotation(double theta, double x, double y)
+  {
+    setToRotation(Math.sin(theta), Math.cos(theta), x, y);
+    return this;
+  }
+  
+
+  /**
+   * Sets this transformation to be a rotation
+   * around a given point (x,y)
+   * by specifying the sin and cos of the rotation angle directly.
+   * The transformation matrix for the rotation
+   * has the value:
+   * <blockquote><pre>  
+   * |  cosTheta  -sinTheta   x-x*cos+y*sin |
+   * |  sinTheta   cosTheta   y-x*sin-y*cos |
+   * |         0          0         1       |
+   * </pre></blockquote> 
+   * 
+   * @param sinTheta the sine of the rotation angle
+   * @param cosTheta the cosine of the rotation angle
+   * @param x the x-ordinate of the rotation point
+   * @param y the y-ordinate of the rotation point
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setToRotation(double sinTheta, double cosTheta, double x, double y)
+  {
+    m00 = cosTheta;    m01 = -sinTheta;  m02 = x - x * cosTheta + y * sinTheta;
+    m10 = sinTheta;    m11 = cosTheta;   m12 = y - x * sinTheta - y * cosTheta;
+    return this;
+  }
+  
+  /**
+   * Sets this transformation to be a scaling.
+   * The transformation matrix for a scale
+   * has the value:
+   * <blockquote><pre>  
+   * |  xScale      0  dx |
+   * |  1      yScale  dy |
+   * |  0           0   1 |
+   * </pre></blockquote> 
+   * 
+   * @param xScale the amount to scale x-ordinates by
+   * @param yScale the amount to scale y-ordinates by
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setToScale(double xScale, double yScale)
+  {
+    m00 = xScale;   m01 = 0.0;      m02 = 0.0;
+    m10 = 0.0;      m11 = yScale;   m12 = 0.0;
+    return this;
+  }
+  
+  /**
+   * Sets this transformation to be a shear.
+   * The transformation matrix for a shear 
+   * has the value:
+   * <blockquote><pre>  
+   * |  1      xShear  0 |
+   * |  yShear      1  0 |
+   * |  0           0  1 |
+   * </pre></blockquote> 
+   * Note that a shear of (1, 1) is <i>not</i> 
+   * equal to shear(1, 0) composed with shear(0, 1).
+   * Instead, shear(1, 1) corresponds to a mapping onto the 
+   * line x = y.
+   * 
+   * @param xShear the x component to shear by
+   * @param yShear the y component to shear by
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setToShear(double xShear, double yShear)
+  {
+    m00 = 1.0;      m01 = xShear;      m02 = 0.0;
+    m10 = yShear;   m11 = 1.0;         m12 = 0.0;
+    return this;
+  }
+  
+  /**
+   * Sets this transformation to be a translation.
+   * For a translation by the vector (x, y)
+   * the transformation matrix has the value:
+   * <blockquote><pre>  
+   * |  1  0  dx |
+   * |  1  0  dy |
+   * |  0  0   1 |
+   * </pre></blockquote> 
+   * @param dx the x component to translate by
+   * @param dy the y component to translate by
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation setToTranslation(double dx, double dy)
+  {
+    m00 = 1.0;  m01 = 0.0; m02 = dx;
+    m10 = 0.0;  m11 = 1.0; m12 = dy;
+    return this;
+  }
+  
+  /**
+   * Updates the value of this transformation
+   * to that of a reflection transformation composed 
+   * with the current value.
+   * 
+   * @param x0 the x-ordinate of a point on the line to reflect around
+   * @param y0 the y-ordinate of a point on the line to reflect around
+   * @param x1 the x-ordinate of a point on the line to reflect around
+   * @param y1 the y-ordinate of a point on the line to reflect around
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation reflect(double x0, double y0, double x1, double y1)
+  {
+    compose(reflectionInstance(x0, y0, x1, y1));
+    return this;
+  }
+  
+  /**
+   * Updates the value of this transformation
+   * to that of a reflection transformation composed 
+   * with the current value.
+   * 
+   * @param x the x-ordinate of the line to reflect around
+   * @param y the y-ordinate of the line to reflect around
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation reflect(double x, double y)
+  {
+    compose(reflectionInstance(x, y));
+    return this;
+  }
+  
+  /**
+   * Updates the value of this transformation
+   * to that of a rotation transformation composed 
+   * with the current value.
+   * Positive angles correspond to a rotation 
+   * in the counter-clockwise direction.
+   * 
+   * @param theta the angle to rotate by, in radians
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation rotate(double theta)
+  {
+    compose(rotationInstance(theta));
+    return this;
+  }
+  
+  /**
+   * Updates the value of this transformation
+   * to that of a rotation around the origin composed 
+   * with the current value,
+   * with the sin and cos of the rotation angle specified directly.
+   * 
+   * @param sinTheta the sine of the angle to rotate by
+   * @param cosTheta the cosine of the angle to rotate by
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation rotate(double sinTheta, double cosTheta)
+  {
+    compose(rotationInstance(sinTheta, cosTheta));
+    return this;
+  }
+  
+  /**
+   * Updates the value of this transformation
+   * to that of a rotation around a given point composed 
+   * with the current value.
+   * Positive angles correspond to a rotation 
+   * in the counter-clockwise direction.
+   * 
+   * @param theta the angle to rotate by, in radians
+   * @param x the x-ordinate of the rotation point
+   * @param y the y-ordinate of the rotation point
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation rotate(double theta, double x, double y)
+  {
+    compose(rotationInstance(theta, x, y));
+    return this;
+  }
+  
+  /**
+   * Updates the value of this transformation
+   * to that of a rotation around a given point composed 
+   * with the current value,
+   * with the sin and cos of the rotation angle specified directly.
+   * 
+   * @param sinTheta the sine of the angle to rotate by
+   * @param cosTheta the cosine of the angle to rotate by
+   * @param x the x-ordinate of the rotation point
+   * @param y the y-ordinate of the rotation point
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation rotate(double sinTheta, double cosTheta, double x, double y)
+  {
+    compose(rotationInstance(sinTheta, cosTheta));
+    return this;
+  }
+  
+  /**
+   * Updates the value of this transformation
+   * to that of a scale transformation composed 
+   * with the current value.
+   * 
+   * @param xScale the value to scale by in the x direction
+   * @param yScale the value to scale by in the y direction
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation scale(double xScale, double yScale)
+  {
+    compose(scaleInstance(xScale, yScale));
+    return this;
+  }
+  
+  /**
+   * Updates the value of this transformation
+   * to that of a shear transformation composed 
+   * with the current value.
+   * 
+   * @param xShear the value to shear by in the x direction
+   * @param yShear the value to shear by in the y direction
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation shear(double xShear, double yShear)
+  {
+    compose(shearInstance(xShear, yShear));
+    return this;
+  }
+
+  /**
+   * Updates the value of this transformation
+   * to that of a translation transformation composed 
+   * with the current value.
+   * 
+   * @param x the value to translate by in the x direction
+   * @param y the value to translate by in the y direction
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation translate(double x, double y)
+  {
+    compose(translationInstance(x, y));
+    return this;
+  }
+  
+
+  /**
+   * Updates this transformation to be
+   * the composition of this transformation with the given {@link AffineTransformation}. 
+   * This produces a transformation whose effect 
+   * is equal to applying this transformation 
+   * followed by the argument transformation.
+   * Mathematically,
+   * <blockquote><pre>
+   * A.compose(B) = T<sub>B</sub> x T<sub>A</sub>
+   * </pre></blockquote>
+   * 
+   * @param trans an affine transformation
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation compose(AffineTransformation trans)
+  {
+    double mp00 = trans.m00 * m00 + trans.m01 * m10;
+    double mp01 = trans.m00 * m01 + trans.m01 * m11;
+    double mp02 = trans.m00 * m02 + trans.m01 * m12 + trans.m02;
+    double mp10 = trans.m10 * m00 + trans.m11 * m10;
+    double mp11 = trans.m10 * m01 + trans.m11 * m11;
+    double mp12 = trans.m10 * m02 + trans.m11 * m12 + trans.m12;
+    m00 = mp00;
+    m01 = mp01;
+    m02 = mp02;
+    m10 = mp10;
+    m11 = mp11;
+    m12 = mp12;
+    return this;
+  }
+  
+  /**
+   * Updates this transformation to be the composition 
+   * of a given {@link AffineTransformation} with this transformation.
+   * This produces a transformation whose effect 
+   * is equal to applying the argument transformation 
+   * followed by this transformation.
+   * Mathematically,
+   * <blockquote><pre>
+   * A.composeBefore(B) = T<sub>A</sub> x T<sub>B</sub>
+   * </pre></blockquote>
+   * 
+   * @param trans an affine transformation
+   * @return this transformation, with an updated matrix
+   */
+  public AffineTransformation composeBefore(AffineTransformation trans)
+  {
+    double mp00 = m00 * trans.m00 + m01 * trans.m10;
+    double mp01 = m00 * trans.m01 + m01 * trans.m11;
+    double mp02 = m00 * trans.m02 + m01 * trans.m12 + m02;
+    double mp10 = m10 * trans.m00 + m11 * trans.m10;
+    double mp11 = m10 * trans.m01 + m11 * trans.m11;
+    double mp12 = m10 * trans.m02 + m11 * trans.m12 + m12;
+    m00 = mp00;
+    m01 = mp01;
+    m02 = mp02;
+    m10 = mp10;
+    m11 = mp11;
+    m12 = mp12;
+    return this;
+  }
+  
+  /**
+   * Applies this transformation to the <tt>src</tt> coordinate
+   * and places the results in the <tt>dest</tt> coordinate
+   * (which may be the same as the source).
+   * 
+   * @param src the coordinate to transform
+   * @param dest the coordinate to accept the results 
+   * @return the <tt>dest</tt> coordinate
+   */
+  public Coordinate transform(Coordinate src, Coordinate dest)
+  {
+    double xp = m00 * src.x + m01 * src.y + m02;
+    double yp = m10 * src.x + m11 * src.y + m12;
+    dest.x = xp;
+    dest.y = yp;
+    return dest;
+  }
+  
+  /**
+   * Cretaes a new @link Geometry which is the result
+   * of this transformation applied to the input Geometry.
+   * 
+   *@param seq  a <code>Geometry</code>
+   *@return a transformed Geometry
+   */
+  public Geometry transform(Geometry g)
+  {
+    Geometry g2 = (Geometry) g.clone();
+    g2.apply(this);
+    return g2;    
+  }
+  
+  /**
+   * Applies this transformation to the i'th coordinate
+   * in the given CoordinateSequence.
+   * 
+   *@param seq  a <code>CoordinateSequence</code>
+   *@param i the index of the coordinate to transform
+   */
+  public void transform(CoordinateSequence seq, int i)
+  {
+    double xp = m00 * seq.getOrdinate(i, 0) + m01 * seq.getOrdinate(i, 1) + m02;
+    double yp = m10 * seq.getOrdinate(i, 0) + m11 * seq.getOrdinate(i, 1) + m12;
+    seq.setOrdinate(i, 0, xp);
+    seq.setOrdinate(i, 1, yp);  
+  }
+  
+  /**
+   * Transforms the i'th coordinate in the input sequence
+   * 
+   *@param seq  a <code>CoordinateSequence</code>
+   *@param i the index of the coordinate to transform
+   */
+  public void filter(CoordinateSequence seq, int i)
+  {
+    transform(seq, i);
+  }
+  
+  public boolean isGeometryChanged()
+  {
+    return true;
+  }
+  
+  /**
+   * Reports that this filter should continue to be executed until 
+   * all coordinates have been transformed.
+   * 
+   * @return false
+   */
+  public boolean isDone() 
+  {
+    return false;
+  }
+  
+  /**
+  * Tests if this transformation is the identity transformation.
+  *
+  * @return true if this is the identity transformation
+  */
+  public boolean isIdentity()
+  {
+    return (m00 == 1 && m01 == 0 && m02 == 0
+          && m10 == 0 && m11 == 1 && m12 == 0);
+  }
+  
+ /**
+  * Tests if an object is an
+  * <tt>AffineTransformation</tt>
+  * and has the same matrix as 
+  * this transformation.
+  * 
+  * @param obj an object to test
+  * @return true if the given object is equal to this object
+  */
+  public boolean equals(Object obj)
+  {
+    if (! (obj instanceof AffineTransformation))
+      return false;
+    if (obj == null) return false;
+    
+    AffineTransformation trans = (AffineTransformation) obj;
+    return m00 == trans.m00
+    && m01 == trans.m01
+    && m02 == trans.m02
+    && m10 == trans.m10
+    && m11 == trans.m11
+    && m12 == trans.m12;
+  }
+  
+  /**
+   * Gets a text representation of this transformation.
+   * The string is of the form:
+   * <pre>
+   * AffineTransformation[[m00, m01, m02], [m10, m11, m12]]
+   * </pre>
+   * 
+   * @return a string representing this transformation
+   * 
+   */
+  public String toString()
+  {
+    return "AffineTransformation[[" + m00 + ", " + m01 + ", " + m02 
+    + "], ["
+    + m10 + ", " + m11 + ", " + m12 + "]]";
+  }
+  
+  /**
+   * Clones this transformation
+   * 
+   * @return a copy of this transformation
+   */
+  public Object clone()
+  {
+  	try {
+  		return super.clone();
+  	} catch(Exception ex) {
+  		Assert.shouldNeverReachHere();
+  	}
+  	return null;
+  }
+}
diff --git a/src/com/vividsolutions/jts/geom/util/AffineTransformationBuilder.java b/src/com/vividsolutions/jts/geom/util/AffineTransformationBuilder.java
new file mode 100644
index 0000000..f62317f
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/util/AffineTransformationBuilder.java
@@ -0,0 +1,131 @@
+package com.vividsolutions.jts.geom.util;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.algorithm.*;
+
+/**
+ * Builds an {@link AffineTransformation} defined by a set of control vectors. 
+ * A control vector consists of a source point and a destination point, 
+ * which is the image of the source point under the desired transformation.
+ * <p>
+ * A transformation is well-defined 
+ * by a set of three control vectors 
+ * if and only if the source points are not collinear. 
+ * (In particular, the degenerate situation
+ * where two or more source points are identical will not produce a well-defined transformation).
+ * A well-defined transformation exists and is unique.
+ * If the control vectors are not well-defined, the system of equations
+ * defining the transformation matrix entries is not solvable,
+ * and no transformation can be determined.
+ * <p>
+ * No such restriction applies to the destination points.
+ * However, if the destination points are collinear or non-unique,
+ * a non-invertible transformations will be generated.
+ * <p>
+ * This technique of recovering a transformation
+ * from its effect on known points is used in the Bilinear Interpolated Triangulation
+ * algorithm for warping planar surfaces.
+ *
+ * @author Martin Davis
+ */
+public class AffineTransformationBuilder
+{
+  private Coordinate src0;
+  private Coordinate src1;
+  private Coordinate src2;
+  private Coordinate dest0;
+  private Coordinate dest1;
+  private Coordinate dest2;
+  
+  // the matrix entries for the transformation
+  private double m00, m01, m02, m10, m11, m12;
+  
+ 
+  /**
+   * Constructs a new builder for
+   * the transformation defined by the given 
+   * set of control point mappings.
+   * 
+   * @param src0 a control point
+   * @param src1 a control point
+   * @param src2 a control point
+   * @param dest0 the image of control point 0 under the required transformation
+   * @param dest1 the image of control point 1 under the required transformation
+   * @param dest2 the image of control point 2 under the required transformation
+   */
+  public AffineTransformationBuilder(Coordinate src0,
+      Coordinate src1,
+      Coordinate src2,
+      Coordinate dest0,
+      Coordinate dest1,
+      Coordinate dest2)
+  {
+    this.src0 = src0;
+    this.src1 = src1;
+    this.src2 = src2;
+    this.dest0 = dest0;
+    this.dest1 = dest1;
+    this.dest2 = dest2;
+  }
+    
+  /**
+   * Computes the {@link AffineTransformation}
+   * determined by the control point mappings,
+   * or <code>null</code> if the control vectors do not determine a well-defined transformation.
+   * 
+   * @return an affine transformation
+   * @return null if the control vectors do not determine a well-defined transformation
+   */
+  public AffineTransformation getTransformation()
+  {
+  	// compute full 3-point transformation
+    boolean isSolvable = compute();
+    if (isSolvable)
+      return new AffineTransformation(m00, m01, m02, m10, m11, m12);
+    return null;
+  }
+    
+  /**
+   * Computes the transformation matrix by 
+   * solving the two systems of linear equations
+   * defined by the control point mappings,
+   * if this is possible.
+   * 
+   * @return true if the transformation matrix is solvable
+   */
+  private boolean compute()
+  {
+    double[] bx = new double[] { dest0.x, dest1.x, dest2.x };
+    double[] row0 = solve(bx);
+    if (row0 == null) return false;
+    m00 = row0[0];
+    m01 = row0[1];
+    m02 = row0[2];
+    
+    double[] by = new double[] { dest0.y, dest1.y, dest2.y };
+    double[] row1 = solve(by);
+    if (row1 == null) return false;
+    m10 = row1[0];
+    m11 = row1[1];
+    m12 = row1[2];
+    return true;
+  }
+
+  /**
+   * Solves the transformation matrix system of linear equations
+   * for the given right-hand side vector.
+   * 
+   * @param b the vector for the right-hand side of the system
+   * @return the solution vector
+   * @return null if no solution could be determined
+   */
+  private double[] solve(double[] b)
+  {
+    double[][] a = new double[][] {
+        { src0.x, src0.y, 1 },
+        { src1.x, src1.y, 1},
+        { src2.x, src2.y, 1}
+    };
+    return Matrix.solve(a, b);
+  }
+}
diff --git a/src/com/vividsolutions/jts/geom/util/AffineTransformationFactory.java b/src/com/vividsolutions/jts/geom/util/AffineTransformationFactory.java
new file mode 100644
index 0000000..380344d
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/util/AffineTransformationFactory.java
@@ -0,0 +1,166 @@
+package com.vividsolutions.jts.geom.util;
+
+import com.vividsolutions.jts.algorithm.Angle;
+import com.vividsolutions.jts.geom.Coordinate;
+
+/**
+ * Supports creating {@link AffineTransformation}s defined by various kinds of
+ * inputs and transformation mapping rules.
+ * 
+ * @author Martin Davis
+ * 
+ */
+public class AffineTransformationFactory {
+	/**
+	 * Creates a tranformation from a set of three control vectors. A control
+	 * vector consists of a source point and a destination point, which is the
+	 * image of the source point under the desired transformation. Three control
+	 * vectors allows defining a fully general affine transformation.
+	 * 
+	 * @param src0
+	 * @param src1
+	 * @param src2
+	 * @param dest0
+	 * @param dest1
+	 * @param dest2
+	 * @return the computed transformation
+	 */
+	public static AffineTransformation createFromControlVectors(Coordinate src0,
+			Coordinate src1, Coordinate src2, Coordinate dest0, Coordinate dest1,
+			Coordinate dest2) {
+		AffineTransformationBuilder builder = new AffineTransformationBuilder(src0,
+				src1, src2, dest0, dest1, dest2);
+		return builder.getTransformation();
+	}
+
+	/**
+	 * Creates an AffineTransformation defined by a pair of control vectors. A
+	 * control vector consists of a source point and a destination point, which is
+	 * the image of the source point under the desired transformation. The
+	 * computed transformation is a combination of one or more of a uniform scale,
+	 * a rotation, and a translation (i.e. there is no shear component and no
+	 * reflection)
+	 * 
+	 * @param src0
+	 * @param src1
+	 * @param dest0
+	 * @param dest1
+	 * @return the computed transformation
+   * @return null if the control vectors do not determine a well-defined transformation
+	 */
+	public static AffineTransformation createFromControlVectors(Coordinate src0,
+			Coordinate src1, Coordinate dest0, Coordinate dest1) {
+		Coordinate rotPt = new Coordinate(dest1.x - dest0.x, dest1.y - dest0.y);
+
+		double ang = Angle.angleBetweenOriented(src1, src0, rotPt);
+
+		double srcDist = src1.distance(src0);
+		double destDist = dest1.distance(dest0);
+
+		if (srcDist == 0.0)
+			return null;
+
+		double scale = destDist / srcDist;
+
+		AffineTransformation trans = AffineTransformation.translationInstance(
+				-src0.x, -src0.y);
+		trans.rotate(ang);
+		trans.scale(scale, scale);
+		trans.translate(dest0.x, dest0.y);
+		return trans;
+	}
+
+	/**
+	 * Creates an AffineTransformation defined by a single control vector. A
+	 * control vector consists of a source point and a destination point, which is
+	 * the image of the source point under the desired transformation. This
+	 * produces a translation.
+	 * 
+	 * @param src0
+	 *          the start point of the control vector
+	 * @param dest0
+	 *          the end point of the control vector
+	 * @return the computed transformation
+	 */
+	public static AffineTransformation createFromControlVectors(Coordinate src0,
+			Coordinate dest0) {
+		double dx = dest0.x - src0.x;
+		double dy = dest0.y - src0.y;
+		return AffineTransformation.translationInstance(dx, dy);
+	}
+
+	/**
+	 * Creates an AffineTransformation defined by a set of control vectors.
+	 * Between one and three vectors must be supplied.
+	 * 
+	 * @param src
+	 *          the source points of the vectors
+	 * @param dest
+	 *          the destination points of the vectors
+	 * @return the computed transformation
+	 * @throws IllegalArgumentException
+	 *           if the control vector arrays are too short, long or of different
+	 *           lengths
+	 */
+	public static AffineTransformation createFromControlVectors(Coordinate[] src,
+			Coordinate[] dest) {
+		if (src.length != dest.length)
+			throw new IllegalArgumentException(
+					"Src and Dest arrays are not the same length");
+		if (src.length <= 0)
+			throw new IllegalArgumentException("Too few control points");
+		if (src.length > 3)
+			throw new IllegalArgumentException("Too many control points");
+
+		if (src.length == 1)
+			return createFromControlVectors(src[0], dest[0]);
+		if (src.length == 2)
+			return createFromControlVectors(src[0], src[1], dest[0], dest[1]);
+
+		return createFromControlVectors(src[0], src[1], src[2], dest[0], dest[1],
+				dest[2]);
+	}
+
+	/**
+	 * Creates an AffineTransformation defined by a maping between two baselines. 
+	 * The computed transformation consists of:
+	 * <ul>
+	 * <li>a translation 
+	 * from the start point of the source baseline to the start point of the destination baseline,
+	 * <li>a rotation through the angle between the baselines about the destination start point,
+	 * <li>and a scaling equal to the ratio of the baseline lengths.
+	 * </ul>
+	 * If the source baseline has zero length, an identity transformation is returned.
+	 * 
+	 * @param src0 the start point of the source baseline
+	 * @param src1 the end point of the source baseline
+	 * @param dest0 the start point of the destination baseline
+	 * @param dest1 the end point of the destination baseline
+	 * @return the computed transformation
+	 */
+	public static AffineTransformation createFromBaseLines(
+			Coordinate src0, Coordinate src1, 
+			Coordinate dest0, Coordinate dest1) 
+	{
+		Coordinate rotPt = new Coordinate(src0.x + dest1.x - dest0.x, src0.y + dest1.y - dest0.y);
+
+		double ang = Angle.angleBetweenOriented(src1, src0, rotPt);
+
+		double srcDist = src1.distance(src0);
+		double destDist = dest1.distance(dest0);
+
+		// return identity if transformation would be degenerate
+		if (srcDist == 0.0)
+			return new AffineTransformation();
+
+		double scale = destDist / srcDist;
+
+		AffineTransformation trans = AffineTransformation.translationInstance(
+				-src0.x, -src0.y);
+		trans.rotate(ang);
+		trans.scale(scale, scale);
+		trans.translate(dest0.x, dest0.y);
+		return trans;
+	}
+
+}
diff --git a/src/com/vividsolutions/jts/geom/util/LinearComponentExtracter.java b/src/com/vividsolutions/jts/geom/util/ComponentCoordinateExtracter.java
similarity index 69%
copy from src/com/vividsolutions/jts/geom/util/LinearComponentExtracter.java
copy to src/com/vividsolutions/jts/geom/util/ComponentCoordinateExtracter.java
index 9329ae0..bf71801 100644
--- a/src/com/vividsolutions/jts/geom/util/LinearComponentExtracter.java
+++ b/src/com/vividsolutions/jts/geom/util/ComponentCoordinateExtracter.java
@@ -37,11 +37,12 @@ import java.util.*;
 import com.vividsolutions.jts.geom.*;
 
 /**
- * Extracts all the 1-dimensional ({@link LineString}) components from a {@link Geometry}.
+ * Extracts a single representative {@link Coordinate} 
+ * from each connected component of a {@link Geometry}.
  *
- * @version 1.7
+ * @version 1.9
  */
-public class LinearComponentExtracter
+public class ComponentCoordinateExtracter
   implements GeometryComponentFilter
 {
 
@@ -51,29 +52,32 @@ public class LinearComponentExtracter
    * efficient to create a single {@link LineExtracterFilter} instance
    * and pass it to multiple geometries.
    *
-   * @param geom the geometry from which to extract linear components
-   * @return the list of linear components
+   * @param geom the Geometry from which to extract
+   * @return a list of Coordinates
    */
-  public static List getLines(Geometry geom)
+  public static List getCoordinates(Geometry geom)
   {
-    List lines = new ArrayList();
-    geom.apply(new LinearComponentExtracter(lines));
-    return lines;
+    List coords = new ArrayList();
+    geom.apply(new ComponentCoordinateExtracter(coords));
+    return coords;
   }
 
-  private List lines;
+  private List coords;
 
   /**
    * Constructs a LineExtracterFilter with a list in which to store LineStrings found.
    */
-  public LinearComponentExtracter(List lines)
+  public ComponentCoordinateExtracter(List coords)
   {
-    this.lines = lines;
+    this.coords = coords;
   }
 
   public void filter(Geometry geom)
   {
-    if (geom instanceof LineString) lines.add(geom);
+    // add coordinates from connected components
+    if (geom instanceof LineString
+        || geom instanceof Point) 
+      coords.add(geom.getCoordinate());
   }
 
 }
diff --git a/src/com/vividsolutions/jts/geom/util/GeometryCollectionMapper.java b/src/com/vividsolutions/jts/geom/util/GeometryCollectionMapper.java
new file mode 100644
index 0000000..29fd7fc
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/util/GeometryCollectionMapper.java
@@ -0,0 +1,35 @@
+package com.vividsolutions.jts.geom.util;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+
+public class GeometryCollectionMapper 
+{
+  public static GeometryCollection map(GeometryCollection gc, MapOp op)
+  {
+    GeometryCollectionMapper mapper = new GeometryCollectionMapper(op);
+    return mapper.map(gc);
+  }
+  
+  private MapOp mapOp = null;
+  
+  public GeometryCollectionMapper(MapOp mapOp) {
+    this.mapOp = mapOp;
+  }
+
+  public GeometryCollection map(GeometryCollection gc)
+  {
+    List mapped = new ArrayList();
+    for (int i = 0; i < gc.getNumGeometries(); i++) {
+      Geometry g = mapOp.map(gc.getGeometryN(i));
+      if (!g.isEmpty())
+        mapped.add(g);
+    }
+    return gc.getFactory().createGeometryCollection(
+        GeometryFactory.toGeometryArray(mapped));
+  }
+  
+  public interface MapOp {
+    Geometry map(Geometry g);
+  }
+}
diff --git a/src/com/vividsolutions/jts/geom/util/GeometryCombiner.java b/src/com/vividsolutions/jts/geom/util/GeometryCombiner.java
new file mode 100644
index 0000000..b186656
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/util/GeometryCombiner.java
@@ -0,0 +1,156 @@
+package com.vividsolutions.jts.geom.util;
+
+import java.util.*;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Combines {@link Geometry}s
+ * to produce a {@link GeometryCollection} of the most appropriate type.
+ * Input geometries which are already collections
+ * will have their elements extracted first.
+ * No validation of the result geometry is performed.
+ * (The only case where invalidity is possible is where {@link Polygonal} geometries
+ * are combined and result in a self-intersection).
+ * 
+ * @author mbdavis
+ * @see GeometryFactory#buildGeometry
+ */
+public class GeometryCombiner 
+{
+	/**
+	 * Combines a collection of geometries.
+	 * 
+	 * @param geoms the geometries to combine
+	 * @return the combined geometry
+	 */
+	public static Geometry combine(Collection geoms)
+	{
+		GeometryCombiner combiner = new GeometryCombiner(geoms);
+		return combiner.combine();
+	}
+	
+	/**
+	 * Combines two geometries.
+	 * 
+	 * @param g0 a geometry to combine
+	 * @param g1 a geometry to combine
+	 * @return the combined geometry
+	 */
+	public static Geometry combine(Geometry g0, Geometry g1)
+	{
+		GeometryCombiner combiner = new GeometryCombiner(createList(g0, g1));
+		return combiner.combine();
+	}
+	
+	/**
+	 * Combines three geometries.
+	 * 
+	 * @param g0 a geometry to combine
+	 * @param g1 a geometry to combine
+	 * @param g2 a geometry to combine
+	 * @return the combined geometry
+	 */
+	public static Geometry combine(Geometry g0, Geometry g1, Geometry g2)
+	{
+		GeometryCombiner combiner = new GeometryCombiner(createList(g0, g1, g2));
+		return combiner.combine();
+	}
+	
+	/**
+	 * Creates a list from two items
+	 * 
+	 * @param obj0
+	 * @param obj1
+	 * @return a List containing the two items
+	 */
+  private static List createList(Object obj0, Object obj1)
+  {
+		List list = new ArrayList();
+		list.add(obj0);
+		list.add(obj1);
+		return list;
+  }
+  
+	/**
+	 * Creates a list from two items
+	 * 
+	 * @param obj0
+	 * @param obj1
+	 * @return a List containing the two items
+	 */
+  private static List createList(Object obj0, Object obj1, Object obj2)
+  {
+		List list = new ArrayList();
+		list.add(obj0);
+		list.add(obj1);
+		list.add(obj2);
+		return list;
+  }
+  
+	private GeometryFactory geomFactory;
+	private boolean skipEmpty = false;
+	private Collection inputGeoms;
+		
+	/**
+	 * Creates a new combiner for a collection of geometries
+	 * 
+	 * @param geoms the geometries to combine
+	 */
+	public GeometryCombiner(Collection geoms)
+	{
+		geomFactory = extractFactory(geoms);
+		this.inputGeoms = geoms;
+	}
+	
+	/**
+	 * Extracts the GeometryFactory used by the geometries in a collection
+	 * 
+	 * @param geoms
+	 * @return a GeometryFactory
+	 */
+	public static GeometryFactory extractFactory(Collection geoms) {
+		if (geoms.isEmpty())
+			return null;
+		return ((Geometry) geoms.iterator().next()).getFactory();
+	}
+	
+	/**
+	 * Computes the combination of the input geometries
+	 * to produce the most appropriate {@link Geometry} or {@link GeometryCollection}
+	 * 
+	 * @return a Geometry which is the combination of the inputs
+	 */
+  public Geometry combine()
+  {
+  	List elems = new ArrayList();
+  	for (Iterator i = inputGeoms.iterator(); i.hasNext(); ) {
+  		Geometry g = (Geometry) i.next();
+  		extractElements(g, elems);
+  	}
+    
+    if (elems.size() == 0) {
+    	if (geomFactory != null) {
+      // return an empty GC
+    		return geomFactory.createGeometryCollection(null);
+    	}
+    	return null;
+    }
+    // return the "simplest possible" geometry
+    return geomFactory.buildGeometry(elems);
+  }
+  
+  private void extractElements(Geometry geom, List elems)
+  {
+    if (geom == null)
+      return;
+    
+    for (int i = 0; i < geom.getNumGeometries(); i++) {
+      Geometry elemGeom = geom.getGeometryN(i);
+      if (skipEmpty && elemGeom.isEmpty())
+        continue;
+      elems.add(elemGeom);
+    }
+  }
+
+}
diff --git a/src/com/vividsolutions/jts/geom/util/GeometryEditor.java b/src/com/vividsolutions/jts/geom/util/GeometryEditor.java
index 9bff093..fc43451 100644
--- a/src/com/vividsolutions/jts/geom/util/GeometryEditor.java
+++ b/src/com/vividsolutions/jts/geom/util/GeometryEditor.java
@@ -40,31 +40,44 @@ import java.util.ArrayList;
 
 
 /**
- * Supports creating a new {@link Geometry} which is a modification of an existing one.
+ * A class which supports 
+ * creating new {@link Geometry}s 
+ * which are modifications of existing ones.
  * Geometry objects are intended to be treated as immutable.
- * This class allows you to "modify" a Geometry
- * by traversing it and creating a new Geometry with the same overall structure but
- * possibly modified components.
- * The following kinds of modifications can be made:
+ * This class "modifies" Geometrys
+ * by traversing them, applying a user-defined
+ * {@link GeometryEditOperation} or {@link CoordinateOperation}  
+ * and creating new Geometrys with the same structure but
+ * (possibly) modified components.
+ * <p>
+ * Examples of the kinds of modifications which can be made are:
  * <ul>
  * <li>the values of the coordinates may be changed.
- * Changing coordinate values may make the result Geometry invalid;
- * this is not checked by the GeometryEditor
+ *     The editor does not check whether changing coordinate values makes the result Geometry invalid
  * <li>the coordinate lists may be changed
- * (e.g. by adding or deleting coordinates).
- * The modifed coordinate lists must be consistent with their original parent component
- * (e.g. a LinearRing must always have at least 4 coordinates, and the first and last
- * coordinate must be equal)
+ *     (e.g. by adding or deleting coordinates).
+ *     The modifed coordinate lists must be consistent with their original parent component
+ *     (e.g. a LinearRing must always have at least 4 coordinates, and the first and last
+ *     coordinate must be equal)
  * <li>components of the original geometry may be deleted
- * (e.g. holes may be removed from a Polygon, or LineStrings removed from a MultiLineString).
- * Deletions will be propagated up the component tree appropriately.
+ * (   e.g. holes may be removed from a Polygon, or LineStrings removed from a MultiLineString).
+ *     Deletions will be propagated up the component tree appropriately.
  * </ul>
- * Note that all changes must be consistent with the original Geometry's structure
- * (e.g. a Polygon cannot be collapsed into a LineString).
+ * All changes must be consistent with the original Geometry's structure
+ * (e.g. a <tt>Polygon</tt> cannot be collapsed into a <tt>LineString</tt>).
+ * If changing the structure is required, use a {@link GeometryTransformer}.
+ * <p>
+ * This class supports the case where an edited Geometry needs to
+ * be created under a new GeometryFactory, via the {@link GeometryEditor(GeometryFactory)}
+ * constructor.  
+ * Examples of situations where this is required is if the geometry is 
+ * transformed to a new SRID and/or a new PrecisionModel.
  * <p>
  * The resulting Geometry is not checked for validity.
- * If validity needs to be enforced, the new Geometry's #isValid should be checked.
+ * If validity needs to be enforced, the new Geometry's 
+ * {@link #isValid} method should be called.
  *
+ * @see GeometryTransformer
  * @see Geometry#isValid
  *
  * @version 1.7
@@ -72,13 +85,14 @@ import java.util.ArrayList;
 public class GeometryEditor
 {
   /**
-   * The factory used to create the modified Geometry
+   * The factory used to create the modified Geometry.
+   * If <tt>null</tt> the GeometryFactory of the input is used.
    */
   private GeometryFactory factory = null;
 
   /**
    * Creates a new GeometryEditor object which will create
-   * an edited {@link Geometry} with the same {@link GeometryFactory} as the input Geometry.
+   * edited {@link Geometry}s with the same {@link GeometryFactory} as the input Geometry.
    */
   public GeometryEditor()
   {
@@ -86,9 +100,9 @@ public class GeometryEditor
 
   /**
    * Creates a new GeometryEditor object which will create
-   * the edited Geometry with the given {@link GeometryFactory}
+   * edited {@link Geometry}s with the given {@link GeometryFactory}.
    *
-   * @param factory the GeometryFactory to create the edited Geometry with
+   * @param factory the GeometryFactory to create  edited Geometrys with
    */
   public GeometryEditor(GeometryFactory factory)
   {
@@ -97,7 +111,7 @@ public class GeometryEditor
 
   /**
    * Edit the input {@link Geometry} with the given edit operation.
-   * Clients will create subclasses of {@link GeometryEditorOperation} or
+   * Clients can create subclasses of {@link GeometryEditorOperation} or
    * {@link CoordinateOperation} to perform required modifications.
    *
    * @param geometry the Geometry to edit
@@ -253,6 +267,10 @@ public class GeometryEditor
 
     /**
      * Edits the array of {@link Coordinate}s from a {@link Geometry}.
+     * <p>
+     * If it is desired to preserve the immutability of Geometrys,
+     * if the coordinates are changed a new array should be created
+     * and returned.
      *
      * @param coordinates the coordinate array to operate on
      * @param geometry the geometry containing the coordinate list
diff --git a/src/com/vividsolutions/jts/geom/util/GeometryExtracter.java b/src/com/vividsolutions/jts/geom/util/GeometryExtracter.java
new file mode 100644
index 0000000..5fb05b1
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/util/GeometryExtracter.java
@@ -0,0 +1,105 @@
+
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.geom.util;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Extracts the components of a given type from a {@link Geometry}.
+ *
+ * @version 1.7
+ */
+public class GeometryExtracter
+  implements GeometryFilter
+{
+	
+	protected static boolean isOfClass(Object o, Class clz)
+	{
+		return clz.isAssignableFrom(o.getClass());
+//		return o.getClass() == clz;
+	}
+	
+  /**
+   * Extracts the components of type <tt>clz</tt> from a {@link Geometry}
+   * and adds them to the provided {@link List}.
+   * 
+   * @param geom the geometry from which to extract
+   * @param list the list to add the extracted elements to
+   */
+  public static List extract(Geometry geom, Class clz, List list)
+  {
+  	if (isOfClass(geom, clz)) {
+  		list.add(geom);
+  	}
+  	else if (geom instanceof GeometryCollection) {
+  		geom.apply(new GeometryExtracter(clz, list));
+  	}
+  	// skip non-LineString elemental geometries
+  	
+    return list;
+  }
+
+  /**
+   * Extracts the components of type <tt>clz</tt> from a {@link Geometry}
+   * and returns them in a {@link List}.
+   * 
+   * @param geom the geometry from which to extract
+   */
+  public static List extract(Geometry geom, Class clz)
+  {
+    return extract(geom, clz, new ArrayList());
+  }
+
+  private Class clz;
+  private List comps;
+  
+  /**
+   * Constructs a filter with a list in which to store the elements found.
+   * 
+   * @param clz the class of the components to extract (null means all types)
+   * @param comps the list to extract into
+   */
+  public GeometryExtracter(Class clz, List comps)
+  {
+  	this.clz = clz;
+    this.comps = comps;
+  }
+
+  public void filter(Geometry geom)
+  {
+    if (clz == null || isOfClass(geom, clz)) comps.add(geom);
+  }
+
+}
diff --git a/src/com/vividsolutions/jts/geom/util/GeometryTransformer.java b/src/com/vividsolutions/jts/geom/util/GeometryTransformer.java
index f055b3d..7175d0f 100644
--- a/src/com/vividsolutions/jts/geom/util/GeometryTransformer.java
+++ b/src/com/vividsolutions/jts/geom/util/GeometryTransformer.java
@@ -16,20 +16,25 @@ import com.vividsolutions.jts.geom.*;
  * Subclasses will override whichever <code>transformX</code> methods
  * they need to to handle particular Geometry types.
  * <p>
- * A typically usage would be a transformation that may transform Polygons into
- * Polygons, LineStrings
- * or Points.  This class would likely need to override the {@link transformMultiPolygon}
- * method to ensure that if input Polygons change type the result is a GeometryCollection,
- * not a MultiPolygon
+ * A typically usage would be a transformation class that transforms <tt>Polygons</tt> into
+ * <tt>Polygons</tt>, <tt>LineStrings</tt> or <tt>Points</tt>, depending on the geometry of the input
+ * (For instance, a simplification operation).  
+ * This class would likely need to override the {@link transformMultiPolygon}
+ * method to ensure that if input Polygons change type the result is a <tt>GeometryCollection</tt>,
+ * not a <tt>MultiPolygon</tt>.
  * <p>
- * The default behaviour of this class is to simply recursively transform
- * each Geometry component into an identical object by copying.
+ * The default behaviour of this class is simply to recursively transform
+ * each Geometry component into an identical object by deep copying down
+ * to the level of, but not including, coordinates.
  * <p>
- * Note that all <code>transformX</code> methods may return <code>null</code>,
- * to avoid creating empty geometry objects. This will be handled correctly
- * by the transformer.
- * The @link transform} method itself will always
- * return a geometry object.
+ * All <code>transformX</code> methods may return <code>null</code>,
+ * to avoid creating empty or invalid geometry objects. This will be handled correctly
+ * by the transformer.   <code>transform<i>XXX</i></code> methods should always return valid
+ * geometry - if they cannot do this they should return <code>null</code>
+ * (for instance, it may not be possible for a transformLineString implementation
+ * to return at least two points - in this case, it should return <code>null</code>).
+ * The {@link transform} method itself will always
+ * return a non-null Geometry object (but this may be empty).
  *
  * @version 1.7
  *
@@ -73,6 +78,11 @@ public class GeometryTransformer
   public GeometryTransformer() {
   }
 
+  /**
+   * Utility function to make input geometry available
+   *
+   * @return the input geometry
+   */
   public Geometry getInputGeometry() { return inputGeom; }
 
   public final Geometry transform(Geometry inputGeom)
@@ -122,6 +132,18 @@ public class GeometryTransformer
     return (CoordinateSequence) seq.clone();
   }
 
+  /**
+   * Transforms a {@link CoordinateSequence}.
+   * This method should always return a valid coordinate list for
+   * the desired result type.  (E.g. a coordinate list for a LineString
+   * must have 0 or at least 2 points).
+   * If this is not possible, return an empty sequence -
+   * this will be pruned out.
+   *
+   * @param coords the coordinates to transform
+   * @param parent the parent geometry
+   * @return the transformed coordinates
+   */
   protected CoordinateSequence transformCoordinates(CoordinateSequence coords, Geometry parent)
   {
     return copy(coords);
@@ -143,6 +165,19 @@ public class GeometryTransformer
     return factory.buildGeometry(transGeomList);
   }
 
+  /**
+   * Transforms a LinearRing.
+   * The transformation of a LinearRing may result in a coordinate sequence
+   * which does not form a structurally valid ring (i.e. a degnerate ring of 3 or fewer points).
+   * In this case a LineString is returned. 
+   * Subclasses may wish to override this method and check for this situation
+   * (e.g. a subclass may choose to eliminate degenerate linear rings)
+   * 
+   * @param geom the ring to simplify
+   * @param parent the parent geometry
+   * @return a LinearRing if the transformation resulted in a structurally valid ring
+   * @return a LineString if the transformation caused the LinearRing to collapse to 3 or fewer points
+   */
   protected Geometry transformLinearRing(LinearRing geom, Geometry parent) {
     CoordinateSequence seq = transformCoordinates(geom.getCoordinateSequence(), geom);
     int seqSize = seq.size();
@@ -153,6 +188,13 @@ public class GeometryTransformer
 
   }
 
+  /**
+   * Transforms a {@link LineString} geometry.
+   *
+   * @param geom
+   * @param parent
+   * @return
+   */
   protected Geometry transformLineString(LineString geom, Geometry parent) {
     // should check for 1-point sequences and downgrade them to points
     return factory.createLineString(
diff --git a/src/com/vividsolutions/jts/geom/util/PolygonExtracter.java b/src/com/vividsolutions/jts/geom/util/LineStringExtracter.java
similarity index 53%
copy from src/com/vividsolutions/jts/geom/util/PolygonExtracter.java
copy to src/com/vividsolutions/jts/geom/util/LineStringExtracter.java
index 94604ca..743b0bc 100644
--- a/src/com/vividsolutions/jts/geom/util/PolygonExtracter.java
+++ b/src/com/vividsolutions/jts/geom/util/LineStringExtracter.java
@@ -37,38 +37,59 @@ import java.util.*;
 import com.vividsolutions.jts.geom.*;
 
 /**
- * Extracts all the 2-dimensional ({@link Polygon}) components from a {@link Geometry}.
+ * Extracts all the {@link LineString} elements from a {@link Geometry}.
  *
  * @version 1.7
+ * @see GeometryExtracter
  */
-public class PolygonExtracter
+public class LineStringExtracter
   implements GeometryFilter
 {
   /**
-   * Returns the Polygon components from a single geometry.
-   * If more than one geometry is to be processed, it is more
-   * efficient to create a single {@link PolygonExtracterFilter} instance
-   * and pass it to multiple geometries.
+   * Extracts the {@link LineString} elements from a single {@link Geometry}
+   * and adds them to the provided {@link List}.
+   * 
+   * @param geom the geometry from which to extract
+   * @param lines the list to add the extracted LineStrings to
+   * @param list the list to add the extracted elements to
    */
-  public static List getPolygons(Geometry geom)
+  public static List getLines(Geometry geom, List lines)
   {
-    List comps = new ArrayList();
-    geom.apply(new PolygonExtracter(comps));
-    return comps;
+  	if (geom instanceof LineString) {
+  		lines.add(geom);
+  	}
+  	else if (geom instanceof GeometryCollection) {
+  		geom.apply(new LineStringExtracter(lines));
+  	}
+  	// skip non-LineString elemental geometries
+  	
+    return lines;
+  }
+
+  /**
+   * Extracts the {@link LineString} elements from a single {@link Geometry}
+   * and returns them in a {@link List}.
+   * 
+   * @param geom the geometry from which to extract
+   */
+  public static List getLines(Geometry geom)
+  {
+    return getLines(geom, new ArrayList());
   }
 
   private List comps;
+  
   /**
-   * Constructs a PolygonExtracterFilter with a list in which to store Polygons found.
+   * Constructs a filter with a list in which to store the elements found.
    */
-  public PolygonExtracter(List comps)
+  public LineStringExtracter(List comps)
   {
     this.comps = comps;
   }
 
   public void filter(Geometry geom)
   {
-    if (geom instanceof Polygon) comps.add(geom);
+    if (geom instanceof LineString) comps.add(geom);
   }
 
 }
diff --git a/src/com/vividsolutions/jts/geom/util/LinearComponentExtracter.java b/src/com/vividsolutions/jts/geom/util/LinearComponentExtracter.java
index 9329ae0..8958832 100644
--- a/src/com/vividsolutions/jts/geom/util/LinearComponentExtracter.java
+++ b/src/com/vividsolutions/jts/geom/util/LinearComponentExtracter.java
@@ -34,6 +34,7 @@
 package com.vividsolutions.jts.geom.util;
 
 import java.util.*;
+
 import com.vividsolutions.jts.geom.*;
 
 /**
@@ -44,6 +45,72 @@ import com.vividsolutions.jts.geom.*;
 public class LinearComponentExtracter
   implements GeometryComponentFilter
 {
+  /**
+   * Extracts the linear components from a single {@link Geometry}
+   * and adds them to the provided {@link Collection}.
+   *
+   * @param geoms the Collection of geometries from which to extract linear components
+   * @param lines the collection to add the extracted linear components to
+   * @return the collection of linear components (LineStrings or LinearRings)
+   */
+  public static Collection getLines(Collection geoms, Collection lines)
+  {
+  	for (Iterator i = geoms.iterator(); i.hasNext(); ) {
+  		Geometry g = (Geometry) i.next();
+  		getLines(g, lines);
+  	}
+    return lines;
+  }
+
+  /**
+   * Extracts the linear components from a single {@link Geometry}
+   * and adds them to the provided {@link Collection}.
+   *
+   * @param geoms the Collection of geometries from which to extract linear components
+   * @param lines the collection to add the extracted linear components to
+   * @return the collection of linear components (LineStrings or LinearRings)
+   */
+  public static Collection getLines(Collection geoms, Collection lines, boolean forceToLineString)
+  {
+  	for (Iterator i = geoms.iterator(); i.hasNext(); ) {
+  		Geometry g = (Geometry) i.next();
+  		getLines(g, lines, forceToLineString);
+  	}
+    return lines;
+  }
+
+  /**
+   * Extracts the linear components from a single {@link Geometry}
+   * and adds them to the provided {@link Collection}.
+   *
+   * @param geom the geometry from which to extract linear components
+   * @param lines the Collection to add the extracted linear components to
+   * @return the Collection of linear components (LineStrings or LinearRings)
+   */
+  public static Collection getLines(Geometry geom, Collection lines)
+  {
+  	if (geom instanceof LineString) {
+  		lines.add(geom);
+  	}
+  	else {
+      geom.apply(new LinearComponentExtracter(lines));
+  	}
+    return lines;
+  }
+
+  /**
+   * Extracts the linear components from a single {@link Geometry}
+   * and adds them to the provided {@link Collection}.
+   *
+   * @param geom the geometry from which to extract linear components
+   * @param lines the Collection to add the extracted linear components to
+   * @return the Collection of linear components (LineStrings or LinearRings)
+   */
+  public static Collection getLines(Geometry geom, Collection lines, boolean forceToLineString)
+  {
+    geom.apply(new LinearComponentExtracter(lines, forceToLineString));
+    return lines;
+  }
 
   /**
    * Extracts the linear components from a single geometry.
@@ -61,19 +128,43 @@ public class LinearComponentExtracter
     return lines;
   }
 
-  private List lines;
+  private Collection lines;
+  private boolean isForcedToLineString = false;
+  
+  /**
+   * Constructs a LineExtracterFilter with a list in which to store LineStrings found.
+   */
+  public LinearComponentExtracter(Collection lines)
+  {
+    this.lines = lines;
+  }
 
   /**
    * Constructs a LineExtracterFilter with a list in which to store LineStrings found.
    */
-  public LinearComponentExtracter(List lines)
+  public LinearComponentExtracter(Collection lines, boolean isForcedToLineString)
   {
     this.lines = lines;
+    this.isForcedToLineString = isForcedToLineString;
   }
 
+  public void setForceToLineString(boolean isForcedToLineString)
+  {
+  	this.isForcedToLineString = isForcedToLineString;
+  }
+  
   public void filter(Geometry geom)
   {
-    if (geom instanceof LineString) lines.add(geom);
+  	if (isForcedToLineString && geom instanceof LinearRing) {
+  		LineString line = geom.getFactory().createLineString( ((LinearRing) geom).getCoordinateSequence());
+  		lines.add(line);
+  		return;
+  	}
+  	// if not being forced, and this is a linear component
+  	if (geom instanceof LineString) 
+  		lines.add(geom);
+  	
+  	// else this is not a linear component, so skip it
   }
 
 }
diff --git a/src/com/vividsolutions/jts/geom/util/Matrix.java b/src/com/vividsolutions/jts/geom/util/Matrix.java
new file mode 100644
index 0000000..179d22a
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/util/Matrix.java
@@ -0,0 +1,88 @@
+package com.vividsolutions.jts.geom.util;
+
+/**
+ * Implements some 2D matrix operations 
+ * (in particular, solving systems of linear equations).
+ * 
+ * @author Martin Davis
+ *
+ */
+public class Matrix
+{
+  private static void swapRows(double[][] m, int i, int j)
+  {
+    if (i == j) return;
+    for (int col = 0; col < m[0].length; col++) {
+      double temp = m[i][col];
+      m[i][col] = m[j][col];
+      m[j][col] = temp;
+    }
+  }
+  
+  private static void swapRows(double[] m, int i, int j)
+  {
+    if (i == j) return;
+    double temp = m[i];
+    m[i] = m[j];
+    m[j] = temp;
+  }
+  
+  /**
+   * Solves a system of equations using Gaussian Elimination.
+   * In order to avoid overhead the algorithm runs in-place
+   * on A - if A should not be modified the client must supply a copy.
+   * 
+   * @param A an nxn matrix in row/column order )modified by this method)
+   * @param b a vector of length n
+   * 
+   * @return a vector containing the solution (if any)
+   * @return null if the system has no or no unique solution
+   * 
+   * @throws IllegalArgumentException if the matrix is the wrong size 
+   */
+  public static double[] solve( double[][] a, double[] b )
+  {
+    int n = b.length;
+    if ( a.length != n || a[0].length != n )
+      throw new IllegalArgumentException("Matrix A is incorrectly sized");
+    
+    // Use Gaussian Elimination with partial pivoting.
+    // Iterate over each row
+    for (int i = 0; i < n; i++ ) {
+      // Find the largest pivot in the rows below the current one.
+      int maxElementRow = i;
+      for (int j = i + 1; j < n; j++ )
+        if ( Math.abs( a[j][i] ) > Math.abs( a[maxElementRow][i] ) )
+          maxElementRow = j;
+        
+      if ( a[maxElementRow][i] == 0.0 )
+        return null;
+      
+      // Exchange current row and maxElementRow in A and b.
+      swapRows(a, i, maxElementRow );
+      swapRows(b, i, maxElementRow );
+      
+      // Eliminate using row i
+      for (int j = i + 1; j < n; j++ ) {
+        double rowFactor = a[j][i] / a[i][i];
+        for (int k = n - 1; k >= i; k-- )
+          a[j][k] -= a[i][k] * rowFactor;
+        b[j] -= b[i] * rowFactor;
+      }
+    }
+    
+    /**
+     * A is now (virtually) in upper-triangular form.
+     * The solution vector is determined by back-substitution.
+     */
+    double[] solution = new double[n];
+    for (int j = n - 1; j >= 0; j-- ) {
+      double t = 0.0;
+      for (int k = j + 1; k < n; k++ )
+        t += a[j][k] * solution[k];
+      solution[j] = ( b[j] - t ) / a[j][j];
+    }
+    return solution;
+  }
+  
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.java b/src/com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.java
new file mode 100644
index 0000000..2a683ed
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/util/NoninvertibleTransformationException.java
@@ -0,0 +1,20 @@
+package com.vividsolutions.jts.geom.util;
+
+/**
+ * Indicates that an {@link AffineTransformation}
+ * is non-invertible.
+ * 
+ * @author Martin Davis
+ */
+public class NoninvertibleTransformationException
+	extends Exception
+{
+  public NoninvertibleTransformationException()
+  {
+    super();
+  }
+  public NoninvertibleTransformationException(String msg)
+  {
+    super(msg);
+  }
+}
diff --git a/src/com/vividsolutions/jts/geom/util/PointExtracter.java b/src/com/vividsolutions/jts/geom/util/PointExtracter.java
index c303693..baf8f12 100644
--- a/src/com/vividsolutions/jts/geom/util/PointExtracter.java
+++ b/src/com/vividsolutions/jts/geom/util/PointExtracter.java
@@ -34,27 +34,47 @@
 package com.vividsolutions.jts.geom.util;
 
 import java.util.*;
+
 import com.vividsolutions.jts.geom.*;
 
 /**
  * Extracts all the 0-dimensional ({@link Point}) components from a {@link Geometry}.
  *
  * @version 1.7
+ * @see GeometryExtracter
  */
 public class PointExtracter
   implements GeometryFilter
 {
   /**
-   * Returns the Point components from a single geometry.
-   * If more than one geometry is to be processed, it is more
-   * efficient to create a single {@link PointExtracterFilter} instance
-   * and pass it to multiple geometries.
+   * Extracts the {@link Point} elements from a single {@link Geometry}
+   * and adds them to the provided {@link List}.
+   * 
+   * @param geom the geometry from which to extract
+   * @param list the list to add the extracted elements to
+   */
+  public static List getPoints(Geometry geom, List list)
+  {
+  	if (geom instanceof Point) {
+  		list.add(geom);
+  	}
+  	else if (geom instanceof GeometryCollection) {
+  		geom.apply(new PointExtracter(list));
+  	}
+  	// skip non-Polygonal elemental geometries
+  	
+    return list;
+  }
+
+  /**
+   * Extracts the {@link Point} elements from a single {@link Geometry}
+   * and returns them in a {@link List}.
+   * 
+   * @param geom the geometry from which to extract
    */
   public static List getPoints(Geometry geom)
   {
-    List pts = new ArrayList();
-    geom.apply(new PointExtracter(pts));
-    return pts;
+    return getPoints(geom, new ArrayList());
   }
 
   private List pts;
diff --git a/src/com/vividsolutions/jts/geom/util/PolygonExtracter.java b/src/com/vividsolutions/jts/geom/util/PolygonExtracter.java
index 94604ca..98c1dbb 100644
--- a/src/com/vividsolutions/jts/geom/util/PolygonExtracter.java
+++ b/src/com/vividsolutions/jts/geom/util/PolygonExtracter.java
@@ -37,24 +37,43 @@ import java.util.*;
 import com.vividsolutions.jts.geom.*;
 
 /**
- * Extracts all the 2-dimensional ({@link Polygon}) components from a {@link Geometry}.
+ * Extracts all the {@link Polygon} elements from a {@link Geometry}.
  *
  * @version 1.7
+ * @see GeometryExtracter
  */
 public class PolygonExtracter
   implements GeometryFilter
 {
   /**
-   * Returns the Polygon components from a single geometry.
-   * If more than one geometry is to be processed, it is more
-   * efficient to create a single {@link PolygonExtracterFilter} instance
-   * and pass it to multiple geometries.
+   * Extracts the {@link Polygon} elements from a single {@link Geometry}
+   * and adds them to the provided {@link List}.
+   * 
+   * @param geom the geometry from which to extract
+   * @param list the list to add the extracted elements to
+   */
+  public static List getPolygons(Geometry geom, List list)
+  {
+  	if (geom instanceof Polygon) {
+  		list.add(geom);
+  	}
+  	else if (geom instanceof GeometryCollection) {
+  		geom.apply(new PolygonExtracter(list));
+  	}
+  	// skip non-Polygonal elemental geometries
+  	
+    return list;
+  }
+
+  /**
+   * Extracts the {@link Polygon} elements from a single {@link Geometry}
+   * and returns them in a {@link List}.
+   * 
+   * @param geom the geometry from which to extract
    */
   public static List getPolygons(Geometry geom)
   {
-    List comps = new ArrayList();
-    geom.apply(new PolygonExtracter(comps));
-    return comps;
+    return getPolygons(geom, new ArrayList());
   }
 
   private List comps;
diff --git a/src/com/vividsolutions/jts/geom/util/SineStarFactory.java b/src/com/vividsolutions/jts/geom/util/SineStarFactory.java
new file mode 100644
index 0000000..1608cd8
--- /dev/null
+++ b/src/com/vividsolutions/jts/geom/util/SineStarFactory.java
@@ -0,0 +1,115 @@
+package com.vividsolutions.jts.geom.util;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.util.*;
+
+/**
+ * Creates geometries which are shaped like multi-armed stars
+ * with each arm shaped like a sine wave.
+ * These kinds of geometries are useful as a more complex 
+ * geometry for testing algorithms.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class SineStarFactory
+	extends GeometricShapeFactory
+{
+	protected int numArms = 8;
+	protected double armLengthRatio = 0.5;
+	
+  /**
+   * Creates a factory which will create sine stars using the default
+   * {@link GeometryFactory}.
+   *
+   * @param geomFact the factory to use
+   */
+	public SineStarFactory()
+	{
+		super();
+	}
+	
+  /**
+   * Creates a factory which will create sine stars using the given
+   * {@link GeometryFactory}.
+   *
+   * @param geomFact the factory to use
+   */
+  public SineStarFactory(GeometryFactory geomFact)
+  {
+    super(geomFact);
+  }
+
+  /**
+   * Sets the number of arms in the star
+   * 
+   * @param numArms the number of arms to generate
+   */
+  public void setNumArms(int numArms)
+  {
+  	this.numArms = numArms;
+  }
+  
+  /**
+   * Sets the ration of the length of each arm to the distance from the tip
+   * of the arm to the centre of the star.
+   * Value should be between 0.0 and 1.0
+   * 
+   * @param armLengthRatio
+   */
+  public void setArmLengthRatio(double armLengthRatio)
+  {
+  	this.armLengthRatio = armLengthRatio;
+  }
+  
+  /**
+   * Generates the geometry for the sine star
+   * 
+   * @return the geometry representing the sine star
+   */
+  public Geometry createSineStar()
+  {
+    Envelope env = dim.getEnvelope();
+    double radius = env.getWidth() / 2.0;
+
+  	double armRatio = armLengthRatio;
+    if (armRatio < 0.0)
+      armRatio = 0.0;
+    if (armRatio > 1.0)
+      armRatio = 1.0;
+
+    double armMaxLen = armRatio * radius;
+    double insideRadius = (1 - armRatio) * radius;
+
+    double centreX = env.getMinX() + radius;
+    double centreY = env.getMinY() + radius;
+
+    Coordinate[] pts = new Coordinate[nPts + 1];
+    int iPt = 0;
+    for (int i = 0; i < nPts; i++) {
+      // the fraction of the way thru the current arm - in [0,1]
+      double ptArcFrac = (i / (double) nPts) * numArms;
+      double armAngFrac = ptArcFrac - Math.floor(ptArcFrac);
+      
+      // the angle for the current arm - in [0,2Pi]  
+      // (each arm is a complete sine wave cycle)
+      double armAng = 2 * Math.PI * armAngFrac;
+      // the current length of the arm
+      double armLenFrac = (Math.cos(armAng) + 1.0) / 2.0;
+      
+      // the current radius of the curve (core + arm)
+      double curveRadius = insideRadius + armMaxLen * armLenFrac;
+
+      // the current angle of the curve
+      double ang = i * (2 * Math.PI / nPts);
+      double x = curveRadius * Math.cos(ang) + centreX;
+      double y = curveRadius * Math.sin(ang) + centreY;
+      pts[iPt++] = createCoord(x, y);
+    }
+    pts[iPt] = new Coordinate(pts[0]);
+
+    LinearRing ring = geomFact.createLinearRing(pts);
+    Polygon poly = geomFact.createPolygon(ring, null);
+    return poly;
+  }
+}
diff --git a/src/com/vividsolutions/jts/geomgraph/EdgeEnd.java b/src/com/vividsolutions/jts/geomgraph/EdgeEnd.java
index fd386cb..f3e4d70 100644
--- a/src/com/vividsolutions/jts/geomgraph/EdgeEnd.java
+++ b/src/com/vividsolutions/jts/geomgraph/EdgeEnd.java
@@ -127,7 +127,7 @@ public class EdgeEnd
     return CGAlgorithms.computeOrientation(e.p0, e.p1, p1);
   }
 
-  public void computeLabel()
+  public void computeLabel(BoundaryNodeRule boundaryNodeRule)
   {
     // subclasses should override this if they are using labels
   }
diff --git a/src/com/vividsolutions/jts/geomgraph/EdgeEndStar.java b/src/com/vividsolutions/jts/geomgraph/EdgeEndStar.java
index e639ceb..cfcaf0e 100644
--- a/src/com/vividsolutions/jts/geomgraph/EdgeEndStar.java
+++ b/src/com/vividsolutions/jts/geomgraph/EdgeEndStar.java
@@ -38,7 +38,8 @@ package com.vividsolutions.jts.geomgraph;
 import java.io.PrintStream;
 import java.util.*;
 import com.vividsolutions.jts.geom.*;
-import com.vividsolutions.jts.algorithm.SimplePointInAreaLocator;
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.algorithm.locate.SimplePointInAreaLocator;
 import com.vividsolutions.jts.util.*;
 
 /**
@@ -126,9 +127,9 @@ abstract public class EdgeEndStar
     return (EdgeEnd) edgeList.get(iNextCW);
   }
 
-  public void computeLabelling(GeometryGraph[] geom)
+  public void computeLabelling(GeometryGraph[] geomGraph)
   {
-    computeEdgeEndLabels();
+    computeEdgeEndLabels(geomGraph[0].getBoundaryNodeRule());
     // Propagate side labels  around the edges in the star
     // for each parent Geometry
 //Debug.print(this);
@@ -190,7 +191,7 @@ abstract public class EdgeEndStar
           }
           else {
             Coordinate p = e.getCoordinate();
-            loc = getLocation(geomi, p, geom);
+            loc = getLocation(geomi, p, geomGraph);
           }
           label.setAllLocationsIfNull(geomi, loc);
         }
@@ -201,15 +202,16 @@ abstract public class EdgeEndStar
 //Debug.printIfWatch(this);
   }
 
-  private void computeEdgeEndLabels()
+  private void computeEdgeEndLabels(BoundaryNodeRule boundaryNodeRule)
   {
     // Compute edge label for each EdgeEnd
     for (Iterator it = iterator(); it.hasNext(); ) {
       EdgeEnd ee = (EdgeEnd) it.next();
-      ee.computeLabel();
+      ee.computeLabel(boundaryNodeRule);
     }
   }
-  int getLocation(int geomIndex, Coordinate p, GeometryGraph[] geom)
+  
+  private int getLocation(int geomIndex, Coordinate p, GeometryGraph[] geom)
   {
     // compute location only on demand
     if (ptInAreaLocation[geomIndex] == Location.NONE) {
@@ -218,9 +220,9 @@ abstract public class EdgeEndStar
     return ptInAreaLocation[geomIndex];
   }
 
-  public boolean isAreaLabelsConsistent()
+  public boolean isAreaLabelsConsistent(GeometryGraph geomGraph)
   {
-    computeEdgeEndLabels();
+    computeEdgeEndLabels(geomGraph.getBoundaryNodeRule());
     return checkAreaLabelsConsistent(0);
   }
 
@@ -286,7 +288,7 @@ abstract public class EdgeEndStar
       if (label.getLocation(geomIndex, Position.ON) == Location.NONE)
           label.setLocation(geomIndex, Position.ON, currLoc);
       // set side labels (if any)
-     // if (label.isArea()) {   //ORIGINAL
+//      if (label.isArea()) {   //ORIGINAL
       if (label.isArea(geomIndex)) {
         int leftLoc   = label.getLocation(geomIndex, Position.LEFT);
         int rightLoc  = label.getLocation(geomIndex, Position.RIGHT);
diff --git a/src/com/vividsolutions/jts/geomgraph/EdgeIntersection.java b/src/com/vividsolutions/jts/geomgraph/EdgeIntersection.java
index 4dca1e0..288ebaf 100644
--- a/src/com/vividsolutions/jts/geomgraph/EdgeIntersection.java
+++ b/src/com/vividsolutions/jts/geomgraph/EdgeIntersection.java
@@ -62,6 +62,12 @@ public class EdgeIntersection
     this.dist = dist;
   }
 
+  public Coordinate getCoordinate() { return coord; }
+
+  public int getSegmentIndex() { return segmentIndex; }
+
+  public double getDistance() { return dist; }
+
   public int compareTo(Object obj)
   {
     EdgeIntersection other = (EdgeIntersection) obj;
diff --git a/src/com/vividsolutions/jts/geomgraph/EdgeList.java b/src/com/vividsolutions/jts/geomgraph/EdgeList.java
index 121b688..84e2391 100644
--- a/src/com/vividsolutions/jts/geomgraph/EdgeList.java
+++ b/src/com/vividsolutions/jts/geomgraph/EdgeList.java
@@ -37,9 +37,12 @@ package com.vividsolutions.jts.geomgraph;
 
 import java.io.PrintStream;
 import java.util.*;
+
 import com.vividsolutions.jts.geom.Coordinate;
 import com.vividsolutions.jts.index.SpatialIndex;
 import com.vividsolutions.jts.index.quadtree.Quadtree;
+import com.vividsolutions.jts.noding.OrientedCoordinateArray;
+import com.vividsolutions.jts.noding.SegmentString;
 
 /**
  * A EdgeList is a list of Edges.  It supports locating edges
@@ -52,13 +55,8 @@ public class EdgeList
   /**
    * An index of the edges, for fast lookup.
    *
-   * a Quadtree is used, because this index needs to be dynamic
-   * (e.g. allow insertions after queries).
-   * An alternative would be to use an ordered set based on the values
-   * of the edge coordinates
-   *
    */
-  private SpatialIndex index = new Quadtree();
+  private Map ocaMap = new TreeMap();
 
   public EdgeList() {
   }
@@ -69,7 +67,8 @@ public class EdgeList
   public void add(Edge e)
   {
     edges.add(e);
-    index.insert(e.getEnvelope(), e);
+    OrientedCoordinateArray oca = new OrientedCoordinateArray(e.getCoordinates());
+    ocaMap.put(oca, e);
   }
 
   public void addAll(Collection edgeColl)
@@ -81,7 +80,6 @@ public class EdgeList
 
   public List getEdges() { return edges; }
 
-// <FIX> fast lookup for edges
   /**
    * If there is an edge equal to e already in the list, return it.
    * Otherwise return null.
@@ -90,15 +88,12 @@ public class EdgeList
    */
   public Edge findEqualEdge(Edge e)
   {
-    Collection testEdges = index.query(e.getEnvelope());
-
-    for (Iterator i = testEdges.iterator(); i.hasNext(); ) {
-      Edge testEdge = (Edge) i.next();
-      if (testEdge.equals(e) ) return testEdge;
-    }
-    return null;
+    OrientedCoordinateArray oca = new OrientedCoordinateArray(e.getCoordinates());
+    // will return null if no edge matches
+    Edge matchEdge = (Edge) ocaMap.get(oca);
+    return matchEdge; 
   }
-
+  
   public Iterator iterator() { return edges.iterator(); }
 
   public Edge get(int i) { return (Edge) edges.get(i); }
diff --git a/src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java b/src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java
index 683e9a2..af56c2d 100644
--- a/src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java
+++ b/src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java
@@ -34,36 +34,61 @@
 package com.vividsolutions.jts.geomgraph;
 
 import java.util.*;
-import com.vividsolutions.jts.algorithm.*;
-import com.vividsolutions.jts.geom.*;
 import com.vividsolutions.jts.noding.*;
 
 /**
- * Validates that a collection of SegmentStrings is correctly noded.
+ * Validates that a collection of {@link Edge}s is correctly noded.
  * Throws an appropriate exception if an noding error is found.
  *
  * @version 1.7
  */
-public class EdgeNodingValidator {
-
-  private static Collection toSegmentStrings(Collection edges)
+public class EdgeNodingValidator 
+{  
+	/**
+   * Checks whether the supplied {@link Edge}s
+   * are correctly noded.  
+   * Throws a  {@link TopologyException} if they are not.
+   * 
+   * @param edges a collection of Edges.
+   * @throws TopologyException if the SegmentStrings are not correctly noded
+   *
+   */
+	public static void checkValid(Collection edges)
+	{
+		EdgeNodingValidator validator = new EdgeNodingValidator(edges);
+		validator.checkValid();
+	}
+	
+  public static Collection toSegmentStrings(Collection edges)
   {
     // convert Edges to SegmentStrings
     Collection segStrings = new ArrayList();
     for (Iterator i = edges.iterator(); i.hasNext(); ) {
       Edge e = (Edge) i.next();
-      segStrings.add(new SegmentString(e.getCoordinates(), e));
+      segStrings.add(new BasicSegmentString(e.getCoordinates(), e));
     }
     return segStrings;
   }
 
-  private NodingValidator nv;
+  private FastNodingValidator nv;
 
+  /**
+   * Creates a new validator for the given collection of {@link Edge}s.
+   * 
+   * @param edges a collection of Edges.
+   */
   public EdgeNodingValidator(Collection edges)
   {
-    nv = new NodingValidator(toSegmentStrings(edges));
+    nv = new FastNodingValidator(toSegmentStrings(edges));
   }
 
+  /**
+   * Checks whether the supplied edges
+   * are correctly noded.  Throws an exception if they are not.
+   * 
+   * @throws TopologyException if the SegmentStrings are not correctly noded
+   *
+   */
   public void checkValid()
   {
     nv.checkValid();
diff --git a/src/com/vividsolutions/jts/geomgraph/EdgeRing.java b/src/com/vividsolutions/jts/geomgraph/EdgeRing.java
index dddecdf..0dfa1dc 100644
--- a/src/com/vividsolutions/jts/geomgraph/EdgeRing.java
+++ b/src/com/vividsolutions/jts/geomgraph/EdgeRing.java
@@ -41,7 +41,9 @@ import java.util.List;
 
 import com.vividsolutions.jts.algorithm.CGAlgorithms;
 import com.vividsolutions.jts.geom.*;
-import com.vividsolutions.jts.util.Assert;
+import com.vividsolutions.jts.geom.impl.*;
+import com.vividsolutions.jts.io.*;
+import com.vividsolutions.jts.util.*;
 
 
 /**
@@ -60,11 +62,9 @@ public abstract class EdgeRing {
   private ArrayList holes = new ArrayList(); // a list of EdgeRings which are holes in this EdgeRing
 
   protected GeometryFactory geometryFactory;
-  protected CGAlgorithms cga;
 
-  public EdgeRing(DirectedEdge start, GeometryFactory geometryFactory, CGAlgorithms cga) {
+  public EdgeRing(DirectedEdge start, GeometryFactory geometryFactory) {
     this.geometryFactory = geometryFactory;
-    this.cga = cga;
     computePoints(start);
     computeRing();
   }
@@ -113,7 +113,8 @@ public abstract class EdgeRing {
       coord[i] = (Coordinate) pts.get(i);
     }
     ring = geometryFactory.createLinearRing(coord);
-    isHole = cga.isCCW(ring.getCoordinates());
+    isHole = CGAlgorithms.isCCW(ring.getCoordinates());
+//Debug.println( (isHole ? "hole - " : "shell - ") + WKTWriter.toLineString(new CoordinateArraySequence(ring.getCoordinates())));
   }
   abstract public DirectedEdge getNext(DirectedEdge de);
   abstract public void setEdgeRing(DirectedEdge de, EdgeRing er);
@@ -133,7 +134,9 @@ public abstract class EdgeRing {
     DirectedEdge de = start;
     boolean isFirstEdge = true;
     do {
-      Assert.isTrue(de != null, "found null Directed Edge");
+//      Assert.isTrue(de != null, "found null Directed Edge");
+      if (de == null)
+        throw new TopologyException("Found null DirectedEdge");
       if (de.getEdgeRing() == this)
         throw new TopologyException("Directed Edge visited twice during ring-building at " + de.getCoordinate());
 
@@ -230,7 +233,7 @@ public abstract class EdgeRing {
     LinearRing shell = getLinearRing();
     Envelope env = shell.getEnvelopeInternal();
     if (! env.contains(p)) return false;
-    if (! cga.isPointInRing(p, shell.getCoordinates()) ) return false;
+    if (! CGAlgorithms.isPointInRing(p, shell.getCoordinates()) ) return false;
 
     for (Iterator i = holes.iterator(); i.hasNext(); ) {
       EdgeRing hole = (EdgeRing) i.next();
diff --git a/src/com/vividsolutions/jts/geomgraph/GeometryGraph.java b/src/com/vividsolutions/jts/geomgraph/GeometryGraph.java
index 65e1e0d..61855bd 100644
--- a/src/com/vividsolutions/jts/geomgraph/GeometryGraph.java
+++ b/src/com/vividsolutions/jts/geomgraph/GeometryGraph.java
@@ -36,7 +36,8 @@
 package com.vividsolutions.jts.geomgraph;
 
 import java.util.*;
-import com.vividsolutions.jts.algorithm.LineIntersector;
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.algorithm.locate.*;
 import com.vividsolutions.jts.geom.*;
 import com.vividsolutions.jts.geomgraph.index.*;
 import com.vividsolutions.jts.util.*;
@@ -60,6 +61,7 @@ public class GeometryGraph
  * the "At Most One Rule":
  *    isInBoundary = (componentCount == 1)
  */
+/*
   public static boolean isInBoundary(int boundaryCount)
   {
     // the "Mod-2 Rule"
@@ -69,11 +71,16 @@ public class GeometryGraph
   {
     return isInBoundary(boundaryCount) ? Location.BOUNDARY : Location.INTERIOR;
   }
+*/
+
+  public static int determineBoundary(BoundaryNodeRule boundaryNodeRule, int boundaryCount)
+  {
+    return boundaryNodeRule.isInBoundary(boundaryCount)
+        ? Location.BOUNDARY : Location.INTERIOR;
+  }
 
   private Geometry parentGeom;
-  // the precision model of the Geometry represented by this graph
-  //private PrecisionModel precisionModel = null;
-  //private int SRID;
+
   /**
    * The lineEdgeMap is a map of the linestring components of the
    * parentGeometry to the edges which are derived from them.
@@ -81,17 +88,22 @@ public class GeometryGraph
    */
   private Map lineEdgeMap = new HashMap();
 
-  //private PrecisionModel newPM = null;
+  private BoundaryNodeRule boundaryNodeRule = null;
+
   /**
    * If this flag is true, the Boundary Determination Rule will used when deciding
    * whether nodes are in the boundary or not
    */
-  private boolean useBoundaryDeterminationRule = false;
+  private boolean useBoundaryDeterminationRule = true;
   private int argIndex;  // the index of this geometry as an argument to a spatial function (used for labelling)
   private Collection boundaryNodes;
   private boolean hasTooFewPoints = false;
   private Coordinate invalidPoint = null;
 
+  private PointOnGeometryLocator areaPtLocator = null;
+  // for use if geometry is not Polygonal
+  private final PointLocator ptLocator = new PointLocator();
+  
   private EdgeSetIntersector createEdgeSetIntersector()
   {
   // various options for computing intersections, from slowest to fastest
@@ -106,9 +118,17 @@ public class GeometryGraph
     return new SimpleMCSweepLineIntersector();
   }
 
-  public GeometryGraph(int argIndex, Geometry parentGeom) {
+  public GeometryGraph(int argIndex, Geometry parentGeom)
+  {
+    this(argIndex, parentGeom,
+         BoundaryNodeRule.OGC_SFS_BOUNDARY_RULE
+         );
+  }
+
+  public GeometryGraph(int argIndex, Geometry parentGeom, BoundaryNodeRule boundaryNodeRule) {
     this.argIndex = argIndex;
     this.parentGeom = parentGeom;
+    this.boundaryNodeRule = boundaryNodeRule;
     if (parentGeom != null) {
 //      precisionModel = parentGeom.getPrecisionModel();
 //      SRID = parentGeom.getSRID();
@@ -133,10 +153,13 @@ public class GeometryGraph
 //  public int getSRID() { return SRID; }
 
   public boolean hasTooFewPoints() { return hasTooFewPoints; }
+
   public Coordinate getInvalidPoint() { return invalidPoint; }
 
   public Geometry getGeometry() { return parentGeom; }
 
+  public BoundaryNodeRule getBoundaryNodeRule() { return boundaryNodeRule; }
+
   public Collection getBoundaryNodes()
   {
     if (boundaryNodes == null)
@@ -174,9 +197,8 @@ public class GeometryGraph
 
     // check if this Geometry should obey the Boundary Determination Rule
     // all collections except MultiPolygons obey the rule
-    if (g instanceof GeometryCollection
-        && ! (g instanceof MultiPolygon))
-            useBoundaryDeterminationRule = true;
+    if (g instanceof MultiPolygon)
+      useBoundaryDeterminationRule = false;
 
     if (g instanceof Polygon)                 addPolygon((Polygon) g);
                         // LineString also handles LinearRings
@@ -221,7 +243,7 @@ public class GeometryGraph
 
     int left  = cwLeft;
     int right = cwRight;
-    if (cga.isCCW(coord)) {
+    if (CGAlgorithms.isCCW(coord)) {
       left = cwRight;
       right = cwLeft;
     }
@@ -327,12 +349,6 @@ public class GeometryGraph
     return si;
   }
 
-/* NOT USED
-  public SegmentIntersector computeSelfNodes(LineIntersector li)
-  {
-    return computeSelfNodes(li, false);
-  }
-*/
   public SegmentIntersector computeEdgeIntersections(
     GeometryGraph g,
     LineIntersector li,
@@ -364,10 +380,9 @@ Debug.print(e.getEdgeIntersectionList());
   }
 
   /**
-   * Adds points using the mod-2 rule of SFS.  This is used to add the boundary
-   * points of dim-1 geometries (Curves/MultiCurves).  According to the SFS,
-   * an endpoint of a Curve is on the boundary
-   * iff if it is in the boundaries of an odd number of Geometries
+   * Adds candidate boundary points using the current {@link BoundaryNodeRule}.
+   * This is used to add the boundary
+   * points of dim-1 geometries (Curves/MultiCurves).
    */
   private void insertBoundaryPoint(int argIndex, Coordinate coord)
   {
@@ -381,7 +396,7 @@ Debug.print(e.getEdgeIntersectionList());
     if (loc == Location.BOUNDARY) boundaryCount++;
 
     // determine the boundary status of the point according to the Boundary Determination Rule
-    int newLoc = determineBoundary(boundaryCount);
+    int newLoc = determineBoundary(boundaryNodeRule, boundaryCount);
     lbl.setLocation(argIndex, newLoc);
   }
 
@@ -412,4 +427,23 @@ Debug.print(e.getEdgeIntersectionList());
       insertPoint(argIndex, coord, loc);
   }
 
+  // MD - experimental for now
+  /**
+   * Determines the {@link Location} of the given {@link Coordinate}
+   * in this geometry.
+   * 
+   * @param p the point to test
+   * @return the location of the point in the geometry
+   */
+  public int locate(Coordinate pt)
+  {
+  	if (parentGeom instanceof Polygonal && parentGeom.getNumGeometries() > 50) {
+  		// lazily init point locator
+  		if (areaPtLocator == null) {
+  			areaPtLocator = new IndexedPointInAreaLocator(parentGeom);
+  		}
+  		return areaPtLocator.locate(pt);
+  	}
+  	return ptLocator.locate(pt, parentGeom);
+  }
 }
diff --git a/src/com/vividsolutions/jts/geomgraph/Label.java b/src/com/vividsolutions/jts/geomgraph/Label.java
index bf3e321..7f1377b 100644
--- a/src/com/vividsolutions/jts/geomgraph/Label.java
+++ b/src/com/vividsolutions/jts/geomgraph/Label.java
@@ -177,7 +177,15 @@ public class Label {
   public boolean isAnyNull(int geomIndex) { return elt[geomIndex].isAnyNull(); }
 
   public boolean isArea()               { return elt[0].isArea() || elt[1].isArea();   }
-  public boolean isArea(int geomIndex)  { return elt[geomIndex].isArea();   }
+  public boolean isArea(int geomIndex)  
+  {
+  	/*  Testing
+  	if (elt[0].getLocations().length != elt[1].getLocations().length) {
+  		System.out.println(this);
+  	}
+  		*/
+  	return elt[geomIndex].isArea();   
+  }
   public boolean isLine(int geomIndex)  { return elt[geomIndex].isLine();   }
 
   public boolean isEqualOnSide(Label lbl, int side)
@@ -202,11 +210,11 @@ public class Label {
   {
     StringBuffer buf = new StringBuffer();
     if (elt[0] != null) {
-      buf.append("a:");
+      buf.append("A:");
       buf.append(elt[0].toString());
     }
     if (elt[1] != null) {
-      buf.append(" b:");
+      buf.append(" B:");
       buf.append(elt[1].toString());
     }
     return buf.toString();
diff --git a/src/com/vividsolutions/jts/geomgraph/Node.java b/src/com/vividsolutions/jts/geomgraph/Node.java
index b754b33..9586dbf 100644
--- a/src/com/vividsolutions/jts/geomgraph/Node.java
+++ b/src/com/vividsolutions/jts/geomgraph/Node.java
@@ -129,6 +129,7 @@ public class Node
     else
       label.setLocation(argIndex, onLocation);
   }
+
   /**
    * Updates the label of a node to BOUNDARY,
    * obeying the mod-2 boundaryDetermination rule.
diff --git a/src/com/vividsolutions/jts/geomgraph/PlanarGraph.java b/src/com/vividsolutions/jts/geomgraph/PlanarGraph.java
index 06d82ec..779ff06 100644
--- a/src/com/vividsolutions/jts/geomgraph/PlanarGraph.java
+++ b/src/com/vividsolutions/jts/geomgraph/PlanarGraph.java
@@ -1,6 +1,3 @@
-
-
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -63,11 +60,8 @@ import com.vividsolutions.jts.geom.*;
  *
  * @version 1.7
  */
-public class PlanarGraph {
-
-  public static final CGAlgorithms cga = new CGAlgorithms();
-  //public static final LineIntersector li = new RobustLineIntersector();
-
+public class PlanarGraph
+{
   /**
    * For nodes in the Collection, link the DirectedEdges at the node that are in the result.
    * This allows clients to link only a subset of nodes in the graph, for
diff --git a/src/com/vividsolutions/jts/geomgraph/Quadrant.java b/src/com/vividsolutions/jts/geomgraph/Quadrant.java
index dc95b2c..30b8403 100644
--- a/src/com/vividsolutions/jts/geomgraph/Quadrant.java
+++ b/src/com/vividsolutions/jts/geomgraph/Quadrant.java
@@ -50,39 +50,59 @@ import com.vividsolutions.jts.geom.Coordinate;
  *
  * @version 1.7
  */
-public class Quadrant {
+public class Quadrant 
+{
+	public static final int NE = 0;
+	public static final int NW = 1;
+	public static final int SW = 2;
+	public static final int SE = 3;
+	
   /**
    * Returns the quadrant of a directed line segment (specified as x and y
    * displacements, which cannot both be 0).
+   * 
+   * @throws IllegalArgumentException if the displacements are both 0
    */
   public static int quadrant(double dx, double dy)
   {
     if (dx == 0.0 && dy == 0.0)
       throw new IllegalArgumentException("Cannot compute the quadrant for point ( "+ dx + ", " + dy + " )" );
-    if (dx >= 0) {
-      if (dy >= 0)
-        return 0;
+    if (dx >= 0.0) {
+      if (dy >= 0.0)
+        return NE;
       else
-        return 3;
+        return SE;
     }
     else {
-	if (dy >= 0)
-          return 1;
-	else
-          return 2;
+    	if (dy >= 0.0)
+    		return NW;
+    	else
+    		return SW;
     }
   }
 
   /**
    * Returns the quadrant of a directed line segment from p0 to p1.
+   * 
+   * @throws IllegalArgumentException if the points are equal
    */
   public static int quadrant(Coordinate p0, Coordinate p1)
   {
-    double dx = p1.x - p0.x;
-    double dy = p1.y - p0.y;
-    if (dx == 0.0 && dy == 0.0)
+    if (p1.x == p0.x && p1.y == p0.y)
       throw new IllegalArgumentException("Cannot compute the quadrant for two identical points " + p0);
-    return quadrant(dx, dy);
+    
+    if (p1.x >= p0.x) {
+      if (p1.y >= p0.y)
+        return NE;
+      else
+        return SE;
+    }
+    else {
+    	if (p1.y >= p0.y)
+    		return NW;
+    	else
+    		return SW;
+    }
   }
 
   /**
@@ -124,8 +144,8 @@ public class Quadrant {
    */
   public static boolean isInHalfPlane(int quad, int halfPlane)
   {
-    if (halfPlane == 3) {
-      return quad == 3 || quad == 0;
+    if (halfPlane == SE) {
+      return quad == SE || quad == SW;
     }
     return quad == halfPlane || quad == halfPlane + 1;
   }
@@ -135,6 +155,6 @@ public class Quadrant {
    */
   public static boolean isNorthern(int quad)
   {
-    return quad == 0 || quad == 1;
+    return quad == NE || quad == NW;
   }
 }
diff --git a/src/com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.java b/src/com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.java
index ca7f4e5..e5ebc43 100644
--- a/src/com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.java
+++ b/src/com/vividsolutions/jts/geomgraph/index/EdgeSetIntersector.java
@@ -54,11 +54,8 @@ import com.vividsolutions.jts.geomgraph.*;
  *
  * @version 1.7
  */
-public abstract class EdgeSetIntersector {
-
-  List edges0 = null;
-  List edges1 = null;
-
+public abstract class EdgeSetIntersector 
+{
   public EdgeSetIntersector() {
   }
 
diff --git a/src/com/vividsolutions/jts/geomgraph/index/SegmentIntersector.java b/src/com/vividsolutions/jts/geomgraph/index/SegmentIntersector.java
index 98a64a2..ecce0b7 100644
--- a/src/com/vividsolutions/jts/geomgraph/index/SegmentIntersector.java
+++ b/src/com/vividsolutions/jts/geomgraph/index/SegmentIntersector.java
@@ -43,9 +43,13 @@ import com.vividsolutions.jts.util.Debug;
 
 
 /**
+ * Computes the intersection of line segments,
+ * and adds the intersection to the edges containing the segments.
+ * 
  * @version 1.7
  */
-public class SegmentIntersector {
+public class SegmentIntersector 
+{
 
   public static boolean isAdjacentSegments(int i1, int i2)
   {
diff --git a/src/com/vividsolutions/jts/index/bintree/Bintree.java b/src/com/vividsolutions/jts/index/bintree/Bintree.java
index 77f160d..d01f3d2 100644
--- a/src/com/vividsolutions/jts/index/bintree/Bintree.java
+++ b/src/com/vividsolutions/jts/index/bintree/Bintree.java
@@ -37,18 +37,33 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
+
+import com.vividsolutions.jts.geom.Envelope;
+
 /**
  * An <code>BinTree</code> (or "Binary Interval Tree")
  * is a 1-dimensional version of a quadtree.
- * It indexes 1-dimensional intervals (which of course may
+ * It indexes 1-dimensional intervals (which may
  * be the projection of 2-D objects on an axis).
  * It supports range searching
  * (where the range may be a single point).
+ * This structure is dynamic - 
+ * new items can be added at any time,   
+ * and it will support deletion of items 
+ * (although this is not currently implemented).
  * <p>
  * This implementation does not require specifying the extent of the inserted
  * items beforehand.  It will automatically expand to accomodate any extent
  * of dataset.
  * <p>
+ * The bintree structure is used to provide a primary filter
+ * for interval queries.  The query() method returns a list of
+ * all objects which <i>may</i> intersect the query interval.
+ * Note that it may return objects which do not in fact intersect.
+ * A secondary filter is required to test for exact intersection.
+ * Of course, this secondary filter may consist of other tests besides
+ * intersection, such as testing other kinds of spatial relationships.
+ * <p>
  * This index is different to the Interval Tree of Edelsbrunner
  * or the Segment Tree of Bentley.
  *
@@ -131,6 +146,19 @@ if (newSize <= oldSize) {
     */
   }
 
+  /**
+   * Removes a single item from the tree.
+   *
+   * @param itemEnv the Envelope of the item to be removed
+   * @param item the item to remove
+   * @return <code>true</code> if the item was found (and thus removed)
+   */
+  public boolean remove(Interval itemInterval, Object item)
+  {
+    Interval insertInterval = ensureExtent(itemInterval, minExtent);
+    return root.remove(insertInterval, item);
+  }
+  
   public Iterator iterator()
   {
     List foundItems = new ArrayList();
@@ -144,6 +172,10 @@ if (newSize <= oldSize) {
   }
 
   /**
+   * Queries the tree to find all candidate items which 
+   * may overlap the query interval.
+   * If the query interval is <tt>null</tt>, all items in the tree are found.
+   * 
    * min and max may be the same value
    */
   public List query(Interval interval)
@@ -157,6 +189,14 @@ if (newSize <= oldSize) {
     return foundItems;
   }
 
+  /**
+   * Adds items in the tree which potentially overlap the query interval
+   * to the given collection.
+   * If the query interval is <tt>null</tt>, add all items in the tree.
+   * 
+   * @param interval a query nterval, or null
+   * @param resultItems the candidate items found
+   */
   public void query(Interval interval, Collection foundItems)
   {
     root.addAllItemsFromOverlapping(interval, foundItems);
diff --git a/src/com/vividsolutions/jts/index/bintree/Interval.java b/src/com/vividsolutions/jts/index/bintree/Interval.java
index a977ebc..1ee2090 100644
--- a/src/com/vividsolutions/jts/index/bintree/Interval.java
+++ b/src/com/vividsolutions/jts/index/bintree/Interval.java
@@ -97,4 +97,9 @@ public class Interval {
   {
     return (p >= this.min && p <= this.max);
   }
+
+  public String toString()
+  {
+    return "[" + min + ", " + max + "]";
+  }
 }
diff --git a/src/com/vividsolutions/jts/index/bintree/Node.java b/src/com/vividsolutions/jts/index/bintree/Node.java
index 606166e..a18f5d8 100644
--- a/src/com/vividsolutions/jts/index/bintree/Node.java
+++ b/src/com/vividsolutions/jts/index/bintree/Node.java
@@ -77,6 +77,8 @@ public class Node
 
   protected boolean isSearchMatch(Interval itemInterval)
   {
+//    System.out.println(itemInterval + " overlaps " + interval + " : "
+//                       + itemInterval.overlaps(interval));
     return itemInterval.overlaps(interval);
   }
 
diff --git a/src/com/vividsolutions/jts/index/bintree/NodeBase.java b/src/com/vividsolutions/jts/index/bintree/NodeBase.java
index ea0b3dc..a9dc887 100644
--- a/src/com/vividsolutions/jts/index/bintree/NodeBase.java
+++ b/src/com/vividsolutions/jts/index/bintree/NodeBase.java
@@ -37,6 +37,8 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
+import com.vividsolutions.jts.geom.Envelope;
+
 
 /**
  * The base class for nodes in a {@link Bintree}.
@@ -87,21 +89,74 @@ public abstract class NodeBase {
   }
   protected abstract boolean isSearchMatch(Interval interval);
 
-  public List addAllItemsFromOverlapping(Interval interval, Collection resultItems)
+  /**
+   * Adds items in the tree which potentially overlap the query interval
+   * to the given collection.
+   * If the query interval is <tt>null</tt>, add all items in the tree.
+   * 
+   * @param interval a query nterval, or null
+   * @param resultItems the candidate items found
+   */
+  public void addAllItemsFromOverlapping(Interval interval, Collection resultItems)
   {
-    if (! isSearchMatch(interval))
-      return items;
+    if (interval != null && ! isSearchMatch(interval))
+      return;
 
+    // some of these may not actually overlap - this is allowed by the bintree contract
     resultItems.addAll(items);
 
+    if (subnode[0] != null) subnode[0].addAllItemsFromOverlapping(interval, resultItems);
+    if (subnode[1] != null) subnode[1].addAllItemsFromOverlapping(interval, resultItems);
+  }
+
+  /**
+   * Removes a single item from this subtree.
+   *
+   * @param itemInterval the envelope containing the item
+   * @param item the item to remove
+   * @return <code>true</code> if the item was found and removed
+   */
+  public boolean remove(Interval itemInterval, Object item)
+  {
+    // use interval to restrict nodes scanned
+    if (! isSearchMatch(itemInterval))
+      return false;
+
+    boolean found = false;
     for (int i = 0; i < 2; i++) {
       if (subnode[i] != null) {
-        subnode[i].addAllItemsFromOverlapping(interval, resultItems);
+        found = subnode[i].remove(itemInterval, item);
+        if (found) {
+          // trim subtree if empty
+          if (subnode[i].isPrunable())
+            subnode[i] = null;
+          break;
+        }
       }
     }
-    return items;
+    // if item was found lower down, don't need to search for it here
+    if (found) return found;
+    // otherwise, try and remove the item from the list of items in this node
+    found = items.remove(item);
+    return found;
+  }
+
+  public boolean isPrunable()
+  {
+    return ! (hasChildren() || hasItems());
+  }
+
+  public boolean hasChildren()
+  {
+    for (int i = 0; i < 2; i++) {
+      if (subnode[i] != null)
+        return true;
+    }
+    return false;
   }
 
+  public boolean hasItems() { return ! items.isEmpty(); }
+
   int depth()
   {
     int maxSubDepth = 0;
diff --git a/src/com/vividsolutions/jts/index/chain/MonotoneChain.java b/src/com/vividsolutions/jts/index/chain/MonotoneChain.java
index 5eccb51..334de6e 100644
--- a/src/com/vividsolutions/jts/index/chain/MonotoneChain.java
+++ b/src/com/vividsolutions/jts/index/chain/MonotoneChain.java
@@ -38,18 +38,19 @@ import com.vividsolutions.jts.geom.*;
 
 
 /**
- * MonotoneChains are a way of partitioning the segments of a linestring to
+ * Monotone Chains are a way of partitioning the segments of a linestring to
  * allow for fast searching of intersections.
  * They have the following properties:
  * <ol>
- * <li>the segments within a monotone chain will never intersect each other
+ * <li>the segments within a monotone chain never intersect each other
  * <li>the envelope of any contiguous subset of the segments in a monotone chain
  * is equal to the envelope of the endpoints of the subset.
  * </ol>
  * Property 1 means that there is no need to test pairs of segments from within
  * the same monotone chain for intersection.
+ * <p>
  * Property 2 allows
- * binary search to be used to find the intersection points of two monotone chains.
+ * an efficient binary search to be used to find the intersection points of two monotone chains.
  * For many types of real-world data, these properties eliminate a large number of
  * segment comparisons, producing substantial speed gains.
  * <p>
diff --git a/src/com/vividsolutions/jts/index/chain/MonotoneChainBuilder.java b/src/com/vividsolutions/jts/index/chain/MonotoneChainBuilder.java
index 48bf5a5..37dcf13 100644
--- a/src/com/vividsolutions/jts/index/chain/MonotoneChainBuilder.java
+++ b/src/com/vividsolutions/jts/index/chain/MonotoneChainBuilder.java
@@ -39,8 +39,8 @@ import com.vividsolutions.jts.geom.Coordinate;
 import com.vividsolutions.jts.geomgraph.Quadrant;
 
 /**
- * A MonotoneChainBuilder implements functions to determine the monotone chains
- * in a sequence of points.
+ * Constructs {@link MonotoneChain}s
+ * for sequences of {@link Coordinate}s.
  *
  * @version 1.7
  */
@@ -98,17 +98,36 @@ public class MonotoneChainBuilder {
   }
 
   /**
-   * @return the index of the last point in the monotone chain starting at <code>start</code>.
+   * Finds the index of the last point in a monotone chain
+   * starting at a given point.
+   * Any repeated points (0-length segments) will be included
+   * in the monotone chain returned.
+   * 
+   * @return the index of the last point in the monotone chain 
+   * starting at <code>start</code>.
    */
   private static int findChainEnd(Coordinate[] pts, int start)
   {
-    // determine quadrant for chain
-    int chainQuad = Quadrant.quadrant(pts[start], pts[start + 1]);
+  	int safeStart = start;
+  	// skip any zero-length segments at the start of the sequence
+  	// (since they cannot be used to establish a quadrant)
+  	while (safeStart < pts.length - 1 && pts[safeStart].equals2D(pts[safeStart + 1])) {
+  		safeStart++;
+  	}
+  	// check if there are NO non-zero-length segments
+  	if (safeStart >= pts.length - 1) {
+  		return pts.length - 1;
+  	}
+    // determine overall quadrant for chain (which is the starting quadrant)
+    int chainQuad = Quadrant.quadrant(pts[safeStart], pts[safeStart + 1]);
     int last = start + 1;
     while (last < pts.length) {
-      // compute quadrant for next possible segment in chain
-      int quad = Quadrant.quadrant(pts[last - 1], pts[last]);
-      if (quad != chainQuad) break;
+    	// skip zero-length segments, but include them in the chain
+    	if (! pts[last - 1].equals2D(pts[last])) {
+        // compute quadrant for next possible segment in chain
+    		int quad = Quadrant.quadrant(pts[last - 1], pts[last]);
+      	if (quad != chainQuad) break;
+    	}
       last++;
     }
     return last - 1;
diff --git a/src/com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.java b/src/com/vividsolutions/jts/index/intervalrtree/IntervalRTreeBranchNode.java
similarity index 55%
copy from src/com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.java
copy to src/com/vividsolutions/jts/index/intervalrtree/IntervalRTreeBranchNode.java
index 339342a..9cc0450 100644
--- a/src/com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.java
+++ b/src/com/vividsolutions/jts/index/intervalrtree/IntervalRTreeBranchNode.java
@@ -1,5 +1,3 @@
-
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -32,35 +30,38 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.operation.overlay;
+package com.vividsolutions.jts.index.intervalrtree;
 
-import com.vividsolutions.jts.geom.*;
-import com.vividsolutions.jts.algorithm.*;
-import com.vividsolutions.jts.geomgraph.*;
+import com.vividsolutions.jts.index.*;
 
-/**
- * A ring of {@link Edge}s with the property that no node
- * has degree greater than 2.  These are the form of rings required
- * to represent polygons under the OGC SFS spatial data model.
- *
- * @version 1.7
- * @see com.vividsolutions.jts.operation.overlay.MaximalEdgeRing
- */
-public class MinimalEdgeRing
-  extends EdgeRing
+public class IntervalRTreeBranchNode 
+extends IntervalRTreeNode
 {
-
-  public MinimalEdgeRing(DirectedEdge start, GeometryFactory geometryFactory, CGAlgorithms cga) {
-    super(start, geometryFactory, cga);
-  }
-
-  public DirectedEdge getNext(DirectedEdge de)
-  {
-    return de.getNextMin();
-  }
-  public void setEdgeRing(DirectedEdge de, EdgeRing er)
-  {
-    de.setMinEdgeRing(er);
-  }
-
+	private IntervalRTreeNode node1;
+	private IntervalRTreeNode node2;
+	
+	public IntervalRTreeBranchNode(IntervalRTreeNode n1, IntervalRTreeNode n2)
+	{
+		node1 = n1;
+		node2 = n2;
+		buildExtent(node1, node2);
+	}
+	
+	private void buildExtent(IntervalRTreeNode n1, IntervalRTreeNode n2)
+	{
+		min = Math.min(n1.min, n2.min);
+		max = Math.max(n1.max, n2.max);
+	}
+	
+	public void query(double queryMin, double queryMax, ItemVisitor visitor)
+	{
+		if (! intersects(queryMin, queryMax)) {
+//			System.out.println("Does NOT Overlap branch: " + this);
+			return;
+		}
+//		System.out.println("Overlaps branch: " + this);
+		if (node1 != null) node1.query(queryMin, queryMax, visitor);
+		if (node2 != null) node2.query(queryMin, queryMax, visitor);
+	}
+	
 }
diff --git a/src/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.java b/src/com/vividsolutions/jts/index/intervalrtree/IntervalRTreeLeafNode.java
similarity index 68%
copy from src/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.java
copy to src/com/vividsolutions/jts/index/intervalrtree/IntervalRTreeLeafNode.java
index 04db936..b8e3222 100644
--- a/src/com/vividsolutions/jts/algorithm/RobustCGAlgorithms.java
+++ b/src/com/vividsolutions/jts/index/intervalrtree/IntervalRTreeLeafNode.java
@@ -1,5 +1,3 @@
-
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -32,17 +30,29 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.algorithm;
+package com.vividsolutions.jts.index.intervalrtree;
 
-import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.index.*;
 
-/**
- * Stub version of RobustCGAlgorithms for backwards compatibility.
- * Will be deprecated in next release - use CGAlgorithms instead.
- *
- * @version 1.7
- *
- */
-public class RobustCGAlgorithms extends CGAlgorithms {
+public class IntervalRTreeLeafNode 
+extends IntervalRTreeNode
+{
+  private Object item;
+	
+	public IntervalRTreeLeafNode(double min, double max, Object item)
+	{
+		this.min = min;
+		this.max = max;
+		this.item = item;
+	}
+	
+	public void query(double queryMin, double queryMax, ItemVisitor visitor)
+	{
+		if (! intersects(queryMin, queryMax)) 
+      return;
+		
+		visitor.visitItem(item);
+	}
 
+	
 }
diff --git a/src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java b/src/com/vividsolutions/jts/index/intervalrtree/IntervalRTreeNode.java
similarity index 51%
copy from src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java
copy to src/com/vividsolutions/jts/index/intervalrtree/IntervalRTreeNode.java
index 683e9a2..24f1894 100644
--- a/src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java
+++ b/src/com/vividsolutions/jts/index/intervalrtree/IntervalRTreeNode.java
@@ -1,4 +1,3 @@
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -31,42 +30,49 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.geomgraph;
-
-import java.util.*;
-import com.vividsolutions.jts.algorithm.*;
-import com.vividsolutions.jts.geom.*;
-import com.vividsolutions.jts.noding.*;
+package com.vividsolutions.jts.index.intervalrtree;
 
-/**
- * Validates that a collection of SegmentStrings is correctly noded.
- * Throws an appropriate exception if an noding error is found.
- *
- * @version 1.7
- */
-public class EdgeNodingValidator {
+import java.util.Comparator;
 
-  private static Collection toSegmentStrings(Collection edges)
-  {
-    // convert Edges to SegmentStrings
-    Collection segStrings = new ArrayList();
-    for (Iterator i = edges.iterator(); i.hasNext(); ) {
-      Edge e = (Edge) i.next();
-      segStrings.add(new SegmentString(e.getCoordinates(), e));
-    }
-    return segStrings;
-  }
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.io.*;
+import com.vividsolutions.jts.index.*;
 
-  private NodingValidator nv;
+public abstract class IntervalRTreeNode 
+{
+	protected double min = Double.POSITIVE_INFINITY;
+	protected double max = Double.NEGATIVE_INFINITY;
 
-  public EdgeNodingValidator(Collection edges)
-  {
-    nv = new NodingValidator(toSegmentStrings(edges));
-  }
+	public double getMin() { return min; }
+	public double getMax() { return max; }
+	
+	public abstract void query(double queryMin, double queryMax, ItemVisitor visitor);
+	
+	protected boolean intersects(double queryMin, double queryMax)
+	{
+		if (min > queryMax 
+				|| max < queryMin)
+			return false;
+		return true;
+	}
 
-  public void checkValid()
+	public String toString()
+	{
+		return WKTWriter.toLineString(new Coordinate(min, 0), new Coordinate(max, 0));
+	}
+  
+  public static class NodeComparator implements Comparator
   {
-    nv.checkValid();
+    public int compare(Object o1, Object o2)
+    {
+      IntervalRTreeNode n1 = (IntervalRTreeNode) o1;
+      IntervalRTreeNode n2 = (IntervalRTreeNode) o2;
+      double mid1 = (n1.min + n1.max) / 2;
+      double mid2 = (n2.min + n2.max) / 2;
+      if (mid1 < mid2) return -1;
+      if (mid1 > mid2) return 1;
+      return 0;
+    }
   }
 
 }
diff --git a/src/com/vividsolutions/jts/index/intervalrtree/SortedPackedIntervalRTree.java b/src/com/vividsolutions/jts/index/intervalrtree/SortedPackedIntervalRTree.java
new file mode 100644
index 0000000..a2e8d35
--- /dev/null
+++ b/src/com/vividsolutions/jts/index/intervalrtree/SortedPackedIntervalRTree.java
@@ -0,0 +1,152 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.index.intervalrtree;
+
+import java.util.*;
+
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.index.*;
+import com.vividsolutions.jts.io.WKTWriter;
+
+/**
+ * A static index on a set of 1-dimensional intervals,
+ * using an R-Tree packed based on the order of the interval midpoints.
+ * It supports range searching,
+ * where the range is an interval of the real line (which may be a single point).
+ * A common use is to index 1-dimensional intervals which 
+ * are the projection of 2-D objects onto an axis of the coordinate system.
+ * <p>
+ * This index structure is <i>static</i> 
+ * - items cannot be added or removed once the first query has been made.
+ * The advantage of this characteristic is that the index performance 
+ * can be optimized based on a fixed set of items.
+ * 
+ * @author Martin Davis
+ */
+public class SortedPackedIntervalRTree 
+{
+  private List leaves = new ArrayList();
+	private IntervalRTreeNode root = null;
+	
+	public SortedPackedIntervalRTree()
+	{
+		
+	}
+	
+  /**
+   * Adds an item to the index which is associated with the given interval
+   * 
+   * @param min the lower bound of the item interval
+   * @param max the upper bound of the item interval
+   * @param item the item to insert
+   * 
+   * @throw IllegalStateException if the index has already been queried
+   */
+	public void insert(double min, double max, Object item)
+	{
+    if (root != null)
+      throw new IllegalStateException("Index cannot be added to once it has been queried");
+    leaves.add(new IntervalRTreeLeafNode(min, max, item));
+	}
+	
+  private void init()
+  {
+    if (root != null) return;
+    root = buildTree();
+  }
+  
+	private IntervalRTreeNode buildTree()
+	{
+    // sort the leaf nodes
+    Collections.sort(leaves, new IntervalRTreeNode.NodeComparator());
+    
+    // now group nodes into blocks of two and build tree up recursively
+		List src = leaves;
+		List temp = null;
+		List dest = new ArrayList();
+		
+		while (true) {
+			buildLevel(src, dest);
+			if (dest.size() == 1)
+				return (IntervalRTreeNode) dest.get(0);
+      
+			temp = src;
+			src = dest;
+			dest = temp;
+		}
+	}
+	
+  private int level = 0;
+  
+	private void buildLevel(List src, List dest) 
+  {
+    level++;
+		dest.clear();
+		for (int i = 0; i < src.size(); i += 2) {
+			IntervalRTreeNode n1 = (IntervalRTreeNode) src.get(i);
+			IntervalRTreeNode n2 = (i + 1 < src.size()) 
+						? (IntervalRTreeNode) src.get(i) : null;
+			if (n2 == null) {
+				dest.add(n1);
+			} else {
+				IntervalRTreeNode node = new IntervalRTreeBranchNode(
+						(IntervalRTreeNode) src.get(i),
+						(IntervalRTreeNode) src.get(i + 1));
+//        printNode(node);
+//				System.out.println(node);
+				dest.add(node);
+			}
+		}
+	}
+	
+  private void printNode(IntervalRTreeNode node)
+  {
+    System.out.println(WKTWriter.toLineString(new Coordinate(node.min, level), new Coordinate(node.max, level)));
+  }
+  
+  /**
+   * Search for intervals in the index which intersect the given closed interval
+   * and apply the visitor to them.
+   * 
+   * @param min the lower bound of the query interval
+   * @param max the upper bound of the query interval
+   * @param visitor the visitor to pass any matched items to
+   */
+	public void query(double min, double max, ItemVisitor visitor)
+	{
+    init();
+
+		root.query(min, max, visitor);
+	}
+  
+}
diff --git a/src/com/vividsolutions/jts/index/intervalrtree/package.html b/src/com/vividsolutions/jts/index/intervalrtree/package.html
new file mode 100644
index 0000000..cb0c98e
--- /dev/null
+++ b/src/com/vividsolutions/jts/index/intervalrtree/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Contains classes to implement an R-tree index for one-dimensional intervals.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/index/kdtree/KdNode.java b/src/com/vividsolutions/jts/index/kdtree/KdNode.java
new file mode 100644
index 0000000..dff8f1f
--- /dev/null
+++ b/src/com/vividsolutions/jts/index/kdtree/KdNode.java
@@ -0,0 +1,165 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.index.kdtree;
+
+import com.vividsolutions.jts.geom.Coordinate;
+
+/**
+ * A node of a {@link KdTree}, which represents one or more points in the same location.
+ * 
+ * @author dskea
+ */
+public class KdNode {
+
+    private Coordinate p = null;
+    private Object     data;
+    private KdNode     left;
+    private KdNode     right;
+    private int        count;
+
+    /**
+     * Creates a new KdNode.
+     * 
+     * @param _x coordinate of point
+     * @param _y coordinate of point
+     * @param data a data objects to associate with this node
+     */
+    public KdNode(double _x, double _y, Object data) {
+        p = new Coordinate(_x, _y);
+        left = null;
+        right = null;
+        count = 1;
+        this.data = data;
+    }
+
+    /**
+     * Creates a new KdNode.
+     * 
+     * @param p point location of new node
+     * @param data a data objects to associate with this node
+     */
+    public KdNode(Coordinate p, Object data) {
+        this.p = new Coordinate(p);
+        left = null;
+        right = null;
+        count = 1;
+        this.data = data;
+    }
+
+    /**
+     * Returns the X coordinate of the node
+     * 
+     * @retrun X coordiante of the node
+     */
+    public double getX() {
+        return p.x;
+    }
+
+    /**
+     * Returns the Y coordinate of the node
+     * 
+     * @return Y coordiante of the node
+     */
+    public double getY() {
+        return p.y;
+    }
+
+    /**
+     * Returns the location of this node
+     * 
+     * @return p location of this node
+     */
+    public Coordinate getCoordinate() {
+        return p;
+    }
+
+    /**
+     * Gets the user data object associated with this node.
+     * @return
+     */
+    public Object getData() {
+        return data;
+    }
+
+    /**
+     * Returns the left node of the tree
+     * 
+     * @return left node
+     */
+    public KdNode getLeft() {
+        return left;
+    }
+
+    /**
+     * Returns the right node of the tree
+     * 
+     * @return right node
+     */
+    public KdNode getRight() {
+        return right;
+    }
+
+    // Increments counts of points at this location
+    void increment() {
+        count = count + 1;
+    }
+
+    /**
+     * Returns the number of inserted points that are coincident at this location.
+     * 
+     * @return number of inserted points that this node represents
+     */
+    public int getCount() {
+        return count;
+    }
+
+    /**
+     * Tests whether more than one point with this value have been inserted (up to the tolerance)
+     * 
+     * @return true if more than one point have been inserted with this value
+     */
+    public boolean isRepeated() {
+        return count > 1;
+    }
+
+    // Sets left node value
+    void setLeft(KdNode _left) {
+        left = _left;
+    }
+
+    // Sets right node value
+    void setRight(KdNode _right) {
+        right = _right;
+    }
+}
diff --git a/src/com/vividsolutions/jts/index/kdtree/KdTree.java b/src/com/vividsolutions/jts/index/kdtree/KdTree.java
new file mode 100644
index 0000000..df75ba2
--- /dev/null
+++ b/src/com/vividsolutions/jts/index/kdtree/KdTree.java
@@ -0,0 +1,217 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.index.kdtree;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.Envelope;
+
+/**
+ * An implementation of a 2-D KD-Tree. KD-trees provide fast range searching on
+ * point data.
+ * <p>
+ * This implementation supports detecting and snapping points which are closer than a given
+ * tolerance value. If the same point (up to tolerance) is inserted more than once a new node is
+ * not created but the count of the existing node is incremented.
+ * 
+ * 
+ * @author David Skea
+ * @author Martin Davis
+ */
+public class KdTree 
+{
+	private KdNode root = null;
+	private KdNode last = null;
+	private long numberOfNodes;
+	private double tolerance;
+
+	/**
+	 * Creates a new instance of a KdTree 
+	 * with a snapping tolerance of 0.0.
+	 * (I.e. distinct points will <i>not</i> be snapped)
+	 */
+	public KdTree() {
+		this(0.0);
+	}
+
+	/**
+	 * Creates a new instance of a KdTree, specifying a snapping distance tolerance.
+	 * Points which lie closer than the tolerance to a point already 
+	 * in the tree will be treated as identical to the existing point.
+	 * 
+	 * @param tolerance
+	 *          the tolerance distance for considering two points equal
+	 */
+	public KdTree(double tolerance) {
+		this.tolerance = tolerance;
+	}
+
+	/**
+	 * Inserts a new point in the kd-tree, with no data.
+	 * 
+	 * @param p
+	 *          the point to insert
+	 * @return the kdnode containing the point
+	 */
+	public KdNode insert(Coordinate p) {
+		return insert(p, null);
+	}
+
+	/**
+	 * Inserts a new point into the kd-tree.
+	 * 
+	 * @param p
+	 *          the point to insert
+	 * @param data
+	 *          a data item for the point
+	 * @return returns a new KdNode if a new point is inserted, else an existing
+	 *         node is returned with its counter incremented. This can be checked
+	 *         by testing returnedNode.getCount() > 1.
+	 */
+	public KdNode insert(Coordinate p, Object data) {
+		if (root == null) {
+			root = new KdNode(p, data);
+			return root;
+		}
+
+		KdNode currentNode = root;
+		KdNode leafNode = root;
+		boolean isOddLevel = true;
+		boolean isLessThan = true;
+
+		// traverse the tree first cutting the plane left-right the top-bottom
+		while (currentNode != last) {
+			if (isOddLevel) {
+				isLessThan = p.x < currentNode.getX();
+			} else {
+				isLessThan = p.y < currentNode.getY();
+			}
+			leafNode = currentNode;
+			if (isLessThan) {
+				currentNode = currentNode.getLeft();
+			} else {
+				currentNode = currentNode.getRight();
+			}
+			// test if point is already a node
+			if (currentNode != null) {
+				boolean isInTolerance = p.distance(currentNode.getCoordinate()) < tolerance;
+
+				// if (isInTolerance && ! p.equals2D(currentNode.getCoordinate())) {
+				// System.out.println("KDTree: Snapped!");
+				// System.out.println(WKTWriter.toPoint(p));
+				// }
+
+				// check if point is already in tree (up to tolerance) and if so simply
+				// return
+				// existing node
+				if (isInTolerance) {
+					currentNode.increment();
+					return currentNode;
+				}
+			}
+			isOddLevel = !isOddLevel;
+		}
+
+		// no node found, add new leaf node to tree
+		numberOfNodes = numberOfNodes + 1;
+		KdNode node = new KdNode(p, data);
+		node.setLeft(last);
+		node.setRight(last);
+		if (isLessThan) {
+			leafNode.setLeft(node);
+		} else {
+			leafNode.setRight(node);
+		}
+		return node;
+	}
+
+	private void queryNode(KdNode currentNode, KdNode bottomNode,
+			Envelope queryEnv, boolean odd, List result) {
+		if (currentNode == bottomNode)
+			return;
+
+		double min;
+		double max;
+		double discriminant;
+		if (odd) {
+			min = queryEnv.getMinX();
+			max = queryEnv.getMaxX();
+			discriminant = currentNode.getX();
+		} else {
+			min = queryEnv.getMinY();
+			max = queryEnv.getMaxY();
+			discriminant = currentNode.getY();
+		}
+		boolean searchLeft = min < discriminant;
+		boolean searchRight = discriminant <= max;
+
+		if (searchLeft) {
+			queryNode(currentNode.getLeft(), bottomNode, queryEnv, !odd, result);
+		}
+		if (queryEnv.contains(currentNode.getCoordinate())) {
+			result.add((Object) currentNode);
+		}
+		if (searchRight) {
+			queryNode(currentNode.getRight(), bottomNode, queryEnv, !odd, result);
+		}
+
+	}
+
+	/**
+	 * Performs a range search of the points in the index.
+	 * 
+	 * @param queryEnv
+	 *          the range rectangle to query
+	 * @return a list of the KdNodes found
+	 */
+	public List query(Envelope queryEnv) {
+		List result = new ArrayList();
+		queryNode(root, last, queryEnv, true, result);
+		return result;
+	}
+
+	/**
+	 * Performs a range search of the points in the index.
+	 * 
+	 * @param queryEnv
+	 *          the range rectangle to query
+	 * @param result
+	 *          a list to accumulate the result nodes into
+	 */
+	public void query(Envelope queryEnv, List result) {
+		queryNode(root, last, queryEnv, true, result);
+	}
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/index/kdtree/package.html b/src/com/vividsolutions/jts/index/kdtree/package.html
new file mode 100644
index 0000000..99fe9bc
--- /dev/null
+++ b/src/com/vividsolutions/jts/index/kdtree/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Contains classes which implement a k-D tree index over 2-D point data.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/index/quadtree/Quadtree.java b/src/com/vividsolutions/jts/index/quadtree/Quadtree.java
index 60958f0..fb4d8c4 100644
--- a/src/com/vividsolutions/jts/index/quadtree/Quadtree.java
+++ b/src/com/vividsolutions/jts/index/quadtree/Quadtree.java
@@ -146,9 +146,9 @@ public class Quadtree
   /**
    * Removes a single item from the tree.
    *
-   * @param itemEnv the Envelope of the item to remove
+   * @param itemEnv the Envelope of the item to be removed
    * @param item the item to remove
-   * @return <code>true</code> if the item was found
+   * @return <code>true</code> if the item was found (and thus removed)
    */
   public boolean remove(Envelope itemEnv, Object item)
   {
@@ -170,6 +170,19 @@ public class Quadtree
   }
 */
 
+  /**
+   * Queries the tree and returns items which may lie in the given search envelope.
+   * Precisely, the items that are returned are all items in the tree 
+   * whose envelope <b>may</b> intersect the search Envelope.
+   * Note that some items with non-intersecting envelopes may be returned as well;
+   * the client is responsible for filtering these out.
+   * In most situations there will be many items in the tree which do not
+   * intersect the search envelope and which are not returned - thus
+   * providing improved performance over a simple linear scan.    
+   * 
+   * @param searchEnv the envelope of the desired query area.
+   * @return a List of items which may intersect the search envelope
+   */
   public List query(Envelope searchEnv)
   {
     /**
@@ -181,6 +194,19 @@ public class Quadtree
     return visitor.getItems();
   }
 
+  /**
+   * Queries the tree and visits items which may lie in the given search envelope.
+   * Precisely, the items that are visited are all items in the tree 
+   * whose envelope <b>may</b> intersect the search Envelope.
+   * Note that some items with non-intersecting envelopes may be visited as well;
+   * the client is responsible for filtering these out.
+   * In most situations there will be many items in the tree which do not
+   * intersect the search envelope and which are not visited - thus
+   * providing improved performance over a simple linear scan.    
+   * 
+   * @param searchEnv the envelope of the desired query area.
+   * @param visitor a visitor object which is passed the visited items
+   */
   public void query(Envelope searchEnv, ItemVisitor visitor)
   {
     /**
@@ -206,7 +232,7 @@ public class Quadtree
     if (delX < minExtent && delX > 0.0)
       minExtent = delX;
 
-    double delY = itemEnv.getWidth();
+    double delY = itemEnv.getHeight();
     if (delY < minExtent && delY > 0.0)
       minExtent = delY;
   }
diff --git a/src/com/vividsolutions/jts/index/quadtree/Root.java b/src/com/vividsolutions/jts/index/quadtree/Root.java
index c7d713b..1dd449f 100644
--- a/src/com/vividsolutions/jts/index/quadtree/Root.java
+++ b/src/com/vividsolutions/jts/index/quadtree/Root.java
@@ -102,7 +102,7 @@ public class Root
     * the smallest existing quad containing the query
     */
     boolean isZeroX = IntervalSize.isZeroWidth(itemEnv.getMinX(), itemEnv.getMaxX());
-    boolean isZeroY = IntervalSize.isZeroWidth(itemEnv.getMinX(), itemEnv.getMaxX());
+    boolean isZeroY = IntervalSize.isZeroWidth(itemEnv.getMinY(), itemEnv.getMaxY());
     NodeBase node;
     if (isZeroX || isZeroY)
       node = tree.find(itemEnv);
diff --git a/src/com/vividsolutions/jts/index/strtree/AbstractNode.java b/src/com/vividsolutions/jts/index/strtree/AbstractNode.java
index 87db062..1aafaa1 100644
--- a/src/com/vividsolutions/jts/index/strtree/AbstractNode.java
+++ b/src/com/vividsolutions/jts/index/strtree/AbstractNode.java
@@ -58,8 +58,8 @@ public abstract class AbstractNode implements Boundable {
   }
 
   /**
-   * Returns either child AbstractNodes, or if this is a leaf node, real data (wrapped
-   * in ItemBoundables).
+   * Returns either child {@link AbstractNodes}, or if this is a leaf node, real data (wrapped
+   * in {@link ItemBoundables}).
    */
   public List getChildBoundables() {
     return childBoundables;
diff --git a/src/com/vividsolutions/jts/index/strtree/AbstractSTRtree.java b/src/com/vividsolutions/jts/index/strtree/AbstractSTRtree.java
index aee5674..f220941 100644
--- a/src/com/vividsolutions/jts/index/strtree/AbstractSTRtree.java
+++ b/src/com/vividsolutions/jts/index/strtree/AbstractSTRtree.java
@@ -149,7 +149,11 @@ public abstract class AbstractSTRtree {
     return createHigherLevels(parentBoundables, level + 1);
   }
 
-  protected AbstractNode getRoot() { return root; }
+  public AbstractNode getRoot() 
+  {
+    if (! built) build();
+    return root; 
+  }
 
   /**
    * Returns the maximum number of child nodes that a node may have
@@ -280,7 +284,53 @@ public abstract class AbstractSTRtree {
   }
 
   /**
-   *  Also builds the tree, if necessary.
+   * Gets a tree structure (as a nested list) 
+   * corresponding to the structure of the items and nodes in this tree.
+   * <p>
+   * The returned {@link List}s contain either {@link Object} items, 
+   * or Lists which correspond to subtrees of the tree
+   * Subtrees which do not contain any items are not included.
+   * <p>
+   * Builds the tree if necessary.
+   * 
+   * @return a List of items and/or Lists
+   */
+  public List itemsTree()
+  {
+    if (!built) { build(); }
+
+    List valuesTree = itemsTree(root);
+    if (valuesTree == null)
+      return new ArrayList();
+    return valuesTree;
+  }
+  
+  private List itemsTree(AbstractNode node) 
+  {
+    List valuesTreeForNode = new ArrayList();
+    for (Iterator i = node.getChildBoundables().iterator(); i.hasNext(); ) {
+      Boundable childBoundable = (Boundable) i.next();
+      if (childBoundable instanceof AbstractNode) {
+        List valuesTreeForChild = itemsTree((AbstractNode) childBoundable);
+        // only add if not null (which indicates an item somewhere in this tree
+        if (valuesTreeForChild != null)
+          valuesTreeForNode.add(valuesTreeForChild);
+      }
+      else if (childBoundable instanceof ItemBoundable) {
+        valuesTreeForNode.add(((ItemBoundable)childBoundable).getItem());
+      }
+      else {
+        Assert.shouldNeverReachHere();
+      }
+    }
+    if (valuesTreeForNode.size() <= 0) 
+      return null;
+    return valuesTreeForNode;
+  }
+
+  /**
+   * Removes an item from the tree.
+   * (Builds the tree, if necessary.)
    */
   protected boolean remove(Object searchBounds, Object item) {
     if (!built) { build(); }
diff --git a/src/com/vividsolutions/jts/index/strtree/STRtree.java b/src/com/vividsolutions/jts/index/strtree/STRtree.java
index 4180ca2..a4b5305 100644
--- a/src/com/vividsolutions/jts/index/strtree/STRtree.java
+++ b/src/com/vividsolutions/jts/index/strtree/STRtree.java
@@ -140,14 +140,21 @@ public class STRtree extends AbstractSTRtree implements SpatialIndex {
     return slices;
   }
 
+  private static final int DEFAULT_NODE_CAPACITY = 10;
   /**
    * Constructs an STRtree with the default node capacity.
    */
-  public STRtree() { this(10); }
+  public STRtree() 
+  { 
+    this(DEFAULT_NODE_CAPACITY); 
+  }
 
   /**
    * Constructs an STRtree with the given maximum number of child nodes that
-   * a node may have
+   * a node may have.
+   * <p>
+   * The minimum recommended capacity setting is 4.
+   * 
    */
   public STRtree(int nodeCapacity) {
     super(nodeCapacity);
diff --git a/src/com/vividsolutions/jts/io/ByteArrayInStream.java b/src/com/vividsolutions/jts/io/ByteArrayInStream.java
index f34ba75..70537df 100644
--- a/src/com/vividsolutions/jts/io/ByteArrayInStream.java
+++ b/src/com/vividsolutions/jts/io/ByteArrayInStream.java
@@ -32,8 +32,6 @@
  */
 package com.vividsolutions.jts.io;
 
-import java.io.*;
-
 /**
  * Allows an array of bytes to be used as an {@link InStream}.
  * To optimize memory usage, instances can be reused
@@ -42,24 +40,45 @@ import java.io.*;
 public class ByteArrayInStream
 	implements InStream
 {
-  private byte[] byteBuffer;
-  private ByteArrayInputStream bis;
+	/*
+	 * Implementation improvement suggested by Andrea Aime - Dec 15 2007
+	 */
+	
+  private byte[] buffer;
+	private int position;
 
-  public ByteArrayInStream(byte[] byteBuffer)
-  {
-    setBuffer(byteBuffer);
-  }
+	/**
+	 * Creates a new stream based on the given buffer.
+	 * 
+	 * @param buffer the bytes to read
+	 */
+	public ByteArrayInStream(final byte[] buffer) {
+		setBytes(buffer);
+	}
 
-  public void setBuffer(byte[] byteBuffer)
-  {
-    this.byteBuffer = byteBuffer;
-    // for now - could be replaced with optimized custom code
-    bis = new ByteArrayInputStream(byteBuffer);
-  }
+	/**
+	 * Sets this stream to read from the given buffer
+	 * 
+	 * @param buffer the bytes to read
+	 */
+	public void setBytes(final byte[] buffer) {
+		this.buffer = buffer;
+		this.position = 0;
+	}
 
-  public void read(byte[] buf)
-  throws IOException
-  {
-    bis.read(buf);
-  }
+	/**
+	 * Reads up to <tt>buf.length</tt> bytes from the stream
+	 * into the given byte buffer.
+	 * 
+	 * @param buf the buffer to place the read bytes into
+	 */
+	public void read(final byte[] buf) {
+		int size = buf.length;
+		// don't try and copy past the end of the input
+		if ((position + size) > buffer.length) {
+			size = buffer.length - position;
+		}
+		System.arraycopy(buffer, position, buf, 0, size);
+		position += size;
+	}
 }
diff --git a/src/com/vividsolutions/jts/io/WKBReader.java b/src/com/vividsolutions/jts/io/WKBReader.java
index 795802a..6f5e1e6 100644
--- a/src/com/vividsolutions/jts/io/WKBReader.java
+++ b/src/com/vividsolutions/jts/io/WKBReader.java
@@ -40,6 +40,10 @@ import com.vividsolutions.jts.geom.*;
  * Supports use of an {@link InStream}, which allows easy use
  * with arbitary byte stream sources.
  * <p>
+ * This class reads the format describe in {@link WKBWriter}.  
+ * It also partiually handles
+ * the Extended WKB format used by PostGIS, by parsing and storing SRID values.
+ * <p>
  * This class is designed to support reuse of a single instance to read multiple
  * geometries. This class is not thread-safe; each thread should create its own
  * instance.
@@ -48,6 +52,39 @@ import com.vividsolutions.jts.geom.*;
  */
 public class WKBReader
 {
+  /**
+   * Converts a hexadecimal string to a byte array.
+   * The hexadecimal digit symbols are case-insensitive.
+   *
+   * @param hex a string containing hex digits
+   * @return an array of bytes with the value of the hex string
+   */
+  public static byte[] hexToBytes(String hex)
+  {
+    int byteLen = hex.length() / 2;
+    byte[] bytes = new byte[byteLen];
+
+    for (int i = 0; i < hex.length() / 2; i++) {
+      int i2 = 2 * i;
+      if (i2 + 1 > hex.length())
+        throw new IllegalArgumentException("Hex string has odd length");
+
+      int nib1 = hexToInt(hex.charAt(i2));
+      int nib0 = hexToInt(hex.charAt(i2 + 1));
+      byte b = (byte) ((nib1 << 4) + (byte) nib0);
+      bytes[i] = b;
+    }
+    return bytes;
+  }
+
+  private static int hexToInt(char hex)
+  {
+    int nib = Character.digit(hex, 16);
+    if (nib < 0)
+      throw new IllegalArgumentException("Invalid hex digit: '" + hex + "'");
+    return nib;
+  }
+
   private static final String INVALID_GEOM_TYPE_MSG
   = "Invalid geometry type encountered in ";
 
@@ -55,6 +92,8 @@ public class WKBReader
   private PrecisionModel precisionModel;
   // default dimension - will be set on read
   private int inputDimension = 2;
+  private boolean hasSRID = false;
+  private int SRID = 0;
   private ByteOrderDataInStream dis = new ByteOrderDataInStream();
   private double[] ordValues;
 
@@ -68,34 +107,39 @@ public class WKBReader
   }
 
   /**
-   * Reads a single {@link Geometry} from a byte array.
+   * Reads a single {@link Geometry} in WKB format from a byte array.
    *
    * @param bytes the byte array to read from
    * @return the geometry read
-   * @throws IOException if an input exception occurs
-   * @throws ParseException if a parse exception occurs
+   * @throws ParseException if the WKB is ill-formed
    */
-  public Geometry read(byte[] bytes) throws IOException, ParseException
+  public Geometry read(byte[] bytes) throws ParseException
   {
     // possibly reuse the ByteArrayInStream?
-    return read(new ByteArrayInStream(bytes));
+    // don't throw IOExceptions, since we are not doing any I/O
+    try {
+      return read(new ByteArrayInStream(bytes));
+    }
+    catch (IOException ex) {
+      throw new RuntimeException("Unexpected IOException caught: " + ex.getMessage());
+    }
   }
 
   /**
-   * Reads a {@link Geometry} from an {@link InStream).
+   * Reads a {@link Geometry} in binary WKB format from an {@link InStream).
    *
    * @param is the stream to read from
    * @return the Geometry read
-   * @throws IOException
-   * @throws ParseException
+   * @throws IOException if the underlying stream creates an error
+   * @throws ParseException if the WKB is ill-formed
    */
   public Geometry read(InStream is)
   throws IOException, ParseException
   {
     dis.setInStream(is);
-
-
-    return readGeometry();
+    Geometry g = readGeometry();
+    setSRID(g);
+    return g;
   }
 
   private Geometry readGeometry()
@@ -109,8 +153,15 @@ public class WKBReader
 
     int typeInt = dis.readInt();
     int geometryType = typeInt & 0xff;
+    // determine if Z values are present
     boolean hasZ = (typeInt & 0x80000000) != 0;
     inputDimension =  hasZ ? 3 : 2;
+    // determine if SRIDs are present
+    hasSRID = (typeInt & 0x20000000) != 0;
+
+    if (hasSRID) {
+      SRID = dis.readInt();
+    }
 
     // only allocate ordValues buffer if necessary
     if (ordValues == null || ordValues.length < inputDimension)
@@ -136,6 +187,19 @@ public class WKBReader
     //return null;
   }
 
+  /**
+   * Sets the SRID, if it was specified in the WKB
+   *
+   * @param g the geometry to update
+   * @return the geometry with an updated SRID value, if required
+   */
+  private Geometry setSRID(Geometry g)
+  {
+    if (SRID != 0)
+      g.setSRID(SRID);
+    return g;
+  }
+
   private Point readPoint() throws IOException
   {
     CoordinateSequence pts = readCoordinateSequence(1);
diff --git a/src/com/vividsolutions/jts/io/WKBWriter.java b/src/com/vividsolutions/jts/io/WKBWriter.java
index abaa73b..a9bd1f2 100644
--- a/src/com/vividsolutions/jts/io/WKBWriter.java
+++ b/src/com/vividsolutions/jts/io/WKBWriter.java
@@ -59,7 +59,46 @@ import com.vividsolutions.jts.util.Assert;
  */
 public class WKBWriter
 {
-  private int outputDimension;
+  /**
+   * Converts a byte array to a hexadecimal string.
+   * 
+   * @param bytes
+   * @return
+   * 
+   * @deprecated
+   */
+  public static String bytesToHex(byte[] bytes)
+  {
+    return toHex(bytes);
+  }
+
+  /**
+   * Converts a byte array to a hexadecimal string.
+   * 
+   * @param bytes a byte array
+   * @return a string of hexadecimal digits
+   */
+  public static String toHex(byte[] bytes)
+  {
+    StringBuffer buf = new StringBuffer();
+    for (int i = 0; i < bytes.length; i++) {
+      byte b = bytes[i];
+      buf.append(toHexDigit((b >> 4) & 0x0F));
+      buf.append(toHexDigit(b & 0x0F));
+    }
+    return buf.toString();
+  }
+
+  private static char toHexDigit(int n)
+  {
+    if (n < 0 || n > 15)
+      throw new IllegalArgumentException("Nibble value out of range: " + n);
+    if (n <= 9)
+      return (char) ('0' + n);
+    return (char) ('A' + (n - 10));
+  }
+
+  private int outputDimension = 2;
   private int byteOrder;
   private ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
   private OutStream byteArrayOutStream = new OutputStreamOutStream(byteArrayOS);
@@ -76,9 +115,12 @@ public class WKBWriter
 
   /**
    * Creates a writer that writes {@link Geometry}s with
-   * the given output dimension (2 or 3) and BIG_ENDIAN byte order
+   * the given dimension (2 or 3) for output coordinates
+   * and {@link BIG_ENDIAN} byte order.
+   * If the input geometry has a small coordinate dimension,
+   * coordinates will be padded with {@link NULL_ORDINATE}.
    *
-   * @param outputDimension the dimension to output (2 or 3)
+   * @param outputDimension the coordinate dimension to output (2 or 3)
    */
   public WKBWriter(int outputDimension) {
     this(outputDimension, ByteOrderValues.BIG_ENDIAN);
@@ -86,9 +128,12 @@ public class WKBWriter
 
   /**
    * Creates a writer that writes {@link Geometry}s with
-   * the given output dimension (2 or 3) and byte order
+   * the given dimension (2 or 3) for output coordinates
+   * and byte order
+   * If the input geometry has a small coordinate dimension,
+   * coordinates will be padded with {@link NULL_ORDINATE}.
    *
-   * @param outputDimension the dimension to output (2 or 3)
+   * @param outputDimension the coordinate dimension to output (2 or 3)
    * @param byteOrder the byte ordering to use
    */
   public WKBWriter(int outputDimension, int byteOrder) {
@@ -218,24 +263,26 @@ public class WKBWriter
     if (writeSize)
       writeInt(seq.size(), os);
 
-    boolean output3D = false;
-    if (seq.getDimension() >= 3 && outputDimension >= 3)
-      output3D = true;
-
     for (int i = 0; i < seq.size(); i++) {
-      writeCoordinate(seq, i, output3D, os);
+      writeCoordinate(seq, i, os);
     }
   }
 
-  private void writeCoordinate(CoordinateSequence seq, int index, boolean output3D, OutStream os)
+  private void writeCoordinate(CoordinateSequence seq, int index, OutStream os)
   throws IOException
   {
     ByteOrderValues.putDouble(seq.getX(index), buf, byteOrder);
     os.write(buf, 8);
     ByteOrderValues.putDouble(seq.getY(index), buf, byteOrder);
     os.write(buf, 8);
-    if (output3D) {
-      ByteOrderValues.putDouble(seq.getOrdinate(index, 2), buf, byteOrder);
+    
+    // only write 3rd dim if caller has requested it for this writer
+    if (outputDimension >= 3) {
+      // if 3rd dim is requested, only access and write it if the CS provides is
+    	double ordVal = Coordinate.NULL_ORDINATE;
+    	if (seq.getDimension() >= 3)
+    		ordVal = seq.getOrdinate(index, 2);
+      ByteOrderValues.putDouble(ordVal, buf, byteOrder);
       os.write(buf, 8);
     }
   }
diff --git a/src/com/vividsolutions/jts/io/WKTFileReader.java b/src/com/vividsolutions/jts/io/WKTFileReader.java
new file mode 100644
index 0000000..0fdc8b9
--- /dev/null
+++ b/src/com/vividsolutions/jts/io/WKTFileReader.java
@@ -0,0 +1,149 @@
+package com.vividsolutions.jts.io;
+
+import java.io.*;
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Reads a sequence of {@link Geometry}s in WKT format 
+ * from a text file.
+ * The geometries in the file may be separated by any amount
+ * of whitespace and newlines.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class WKTFileReader 
+{
+	private File file = null;
+  private Reader reader;
+//  private Reader fileReader = new FileReader(file);
+	private WKTReader wktReader;
+	private int count = 0;
+	private int limit = -1;
+	private int offset = 0;
+	
+  /**
+   * Creates a new <tt>WKTFileReader</tt> given the <tt>File</tt> to read from 
+   * and a <tt>WKTReader</tt> to use to parse the geometries.
+   * 
+   * @param file the <tt>File</tt> to read from
+   * @param wktReader the geometry reader to use
+   */
+	public WKTFileReader(File file, WKTReader wktReader)
+	{
+		this.file = file;
+    this.wktReader = wktReader;
+	}
+	
+  /**
+   * Creates a new <tt>WKTFileReader</tt>, given the name of the file to read from.
+   * 
+   * @param filename the name of the file to read from
+   * @param wktReader the geometry reader to use
+   */
+  public WKTFileReader(String filename, WKTReader wktReader)
+  {
+    this(new File(filename), wktReader);
+  }
+  
+  /**
+   * Creates a new <tt>WKTFileReader</tt>, given a {@link Reader} to read from.
+   * 
+   * @param reader the reader to read from
+   * @param wktReader the geometry reader to use
+   */
+  public WKTFileReader(Reader reader, WKTReader wktReader)
+  {
+    this.reader = reader;
+    this.wktReader = wktReader;
+  }
+  
+	/**
+	 * Sets the maximum number of geometries to read.
+   * 
+	 * @param limit the maximum number of geometries to read
+	 */
+	public void setLimit(int limit)
+	{
+		this.limit = limit;
+	}
+	
+	/**
+	 * Sets the number of geometries to skip before storing.
+   * 
+	 * @param offset the number of geometries to skip
+	 */
+	public void setOffset(int offset)
+	{
+		this.offset = offset;
+	}
+	
+	/**
+	 * Reads a sequence of geometries.
+	 * If an offset is specified, geometries read up to the offset count are skipped.
+	 * If a limit is specified, no more than <tt>limit</tt> geometries are read.
+	 * 
+	 * @return the list of geometries read
+	 * @throws IOException if an I/O exception was encountered
+	 * @throws ParseException if an error occured reading a geometry
+	 */
+	public List read() 
+	throws IOException, ParseException 
+	{
+    // do this here so that constructors don't throw exceptions
+    if (file != null)
+      reader = new FileReader(file);
+    
+		count = 0;
+		try {
+			BufferedReader bufferedReader = new BufferedReader(reader);
+			try {
+				return read(bufferedReader);
+			} finally {
+				bufferedReader.close();
+			}
+		} finally {
+			reader.close();
+		}
+	}
+	
+	private List read(BufferedReader bufferedReader) throws IOException,
+			ParseException {
+		List geoms = new ArrayList();
+		while (! isAtEndOfFile(bufferedReader) && ! isAtLimit(geoms)) {
+			Geometry g = wktReader.read(bufferedReader);
+			if (count >= offset)
+				geoms.add(g);
+			count++;
+		}
+		return geoms;
+	}
+	
+	private boolean isAtLimit(List geoms)
+	{
+		if (limit < 0) return false;
+		if (geoms.size() < limit) return false;
+		return true;
+	}
+	
+  private static final int MAX_LOOKAHEAD = 1000;
+  
+  /**
+	 * Tests if reader is at EOF.
+	 */
+	private boolean isAtEndOfFile(BufferedReader bufferedReader)
+			throws IOException 
+			{
+		bufferedReader.mark(MAX_LOOKAHEAD);
+
+		StreamTokenizer tokenizer = new StreamTokenizer(bufferedReader);
+		int type = tokenizer.nextToken();
+
+		if (type == StreamTokenizer.TT_EOF) {
+			return true;
+		}
+		bufferedReader.reset();
+		return false;
+	}
+}
diff --git a/src/com/vividsolutions/jts/io/WKTReader.java b/src/com/vividsolutions/jts/io/WKTReader.java
index 8381fe4..a0c17c8 100644
--- a/src/com/vividsolutions/jts/io/WKTReader.java
+++ b/src/com/vividsolutions/jts/io/WKTReader.java
@@ -89,7 +89,7 @@ import java.util.ArrayList;
  *
  * <i>WKTPolygon:</i> <b>POLYGON</b> <i>CoordinateSequenceList</i>
  *
- * <i>WKTMultiPoint:</i> <b>MULTIPOINT</b> <i>CoordinateSequence</i>
+ * <i>WKTMultiPoint:</i> <b>MULTIPOINT</b> <i>CoordinateSingletonList</i>
  *
  * <i>WKTMultiLineString:</i> <b>MULTILINESTRING</b> <i>CoordinateSequenceList</i>
  *
@@ -99,16 +99,26 @@ import java.util.ArrayList;
  * <i>WKTGeometryCollection: </i>
  *         <b>GEOMETRYCOLLECTION (</b> <i>WKTGeometry {</i> , <i>WKTGeometry }</i> <b>)</b>
  *
+ * <i>CoordinateSingletonList:</i>
+ *         <b>(</b> <i>CoordinateSingleton {</i> <b>,</b> <i>CoordinateSingleton }</i> <b>)</b>
+ *         | <b>EMPTY</b>
+ *         
+ * <i>CoordinateSingleton:</i>
+ *         <b>(</b> <i>Coordinate <b>)</b>
+ *         | <b>EMPTY</b>
+ *
  * <i>CoordinateSequenceList:</i>
  *         <b>(</b> <i>CoordinateSequence {</i> <b>,</b> <i>CoordinateSequence }</i> <b>)</b>
+ *         | <b>EMPTY</b>
  *
  * <i>CoordinateSequence:</i>
  *         <b>(</b> <i>Coordinate {</i> , <i>Coordinate }</i> <b>)</b>
+ *         | <b>EMPTY</b>
  *
  * <i>Coordinate:
  *         Number Number Number<sub>opt</sub></i>
  *
- * <i>Number:</i> A Java-style floating-point number
+ * <i>Number:</i> A Java-style floating-point number (including <tt>NaN</tt>, with arbitrary case)
  *
  * </pre></blockquote>
  *
@@ -122,7 +132,8 @@ public class WKTReader
   private static final String COMMA = ",";
   private static final String L_PAREN = "(";
   private static final String R_PAREN = ")";
-
+  private static final String NAN_SYMBOL = "NaN";
+  
   private GeometryFactory geometryFactory;
   private PrecisionModel precisionModel;
   private StreamTokenizer tokenizer;
@@ -209,23 +220,34 @@ public class WKTReader
    *@throws  IOException     if an I/O error occurs
    *@throws  ParseException  if an unexpected token was encountered
    */
-  private Coordinate[] getCoordinates()
-      throws IOException, ParseException
-  {
-    String nextToken = getNextEmptyOrOpener();
-    if (nextToken.equals(EMPTY)) {
-      return new Coordinate[]{};
-    }
-    ArrayList coordinates = new ArrayList();
-    coordinates.add(getPreciseCoordinate());
-    nextToken = getNextCloserOrComma();
-    while (nextToken.equals(COMMA)) {
-      coordinates.add(getPreciseCoordinate());
-      nextToken = getNextCloserOrComma();
-    }
-    Coordinate[] array = new Coordinate[coordinates.size()];
-    return (Coordinate[]) coordinates.toArray(array);
-  }
+  private Coordinate[] getCoordinates() throws IOException, ParseException {
+		String nextToken = getNextEmptyOrOpener();
+		if (nextToken.equals(EMPTY)) {
+			return new Coordinate[] {};
+		}
+		ArrayList coordinates = new ArrayList();
+		coordinates.add(getPreciseCoordinate());
+		nextToken = getNextCloserOrComma();
+		while (nextToken.equals(COMMA)) {
+			coordinates.add(getPreciseCoordinate());
+			nextToken = getNextCloserOrComma();
+		}
+		Coordinate[] array = new Coordinate[coordinates.size()];
+		return (Coordinate[]) coordinates.toArray(array);
+	}
+
+	private Coordinate[] getCoordinatesNoLeftParen() throws IOException, ParseException {
+		String nextToken = null;
+		ArrayList coordinates = new ArrayList();
+		coordinates.add(getPreciseCoordinate());
+		nextToken = getNextCloserOrComma();
+		while (nextToken.equals(COMMA)) {
+			coordinates.add(getPreciseCoordinate());
+			nextToken = getNextCloserOrComma();
+		}
+		Coordinate[] array = new Coordinate[coordinates.size()];
+		return (Coordinate[]) coordinates.toArray(array);
+	}
 
   private Coordinate getPreciseCoordinate()
       throws IOException, ParseException
@@ -249,6 +271,8 @@ public class WKTReader
   /**
    * Parses the next number in the stream.
    * Numbers with exponents are handled.
+   * <tt>NaN</tt> values are handled correctly, and
+   * the case of the "NaN" symbol is not significant. 
    *
    *@param  tokenizer        tokenizer over a stream of text in Well-known Text
    *      format. The next token must be a number.
@@ -262,12 +286,17 @@ public class WKTReader
     switch (type) {
       case StreamTokenizer.TT_WORD:
       {
-        try {
-          return Double.parseDouble(tokenizer.sval);
-        }
-        catch (NumberFormatException ex) {
-          throw new ParseException("Invalid number: " + tokenizer.sval);
-        }
+      	if (tokenizer.sval.equalsIgnoreCase(NAN_SYMBOL)) {
+      		return Double.NaN;
+      	}
+      	else {
+	        try {
+	          return Double.parseDouble(tokenizer.sval);
+	        }
+	        catch (NumberFormatException ex) {
+	          throw new ParseException("Invalid number: " + tokenizer.sval);
+	        }
+      	}
       }
     }
     parseError("number");
@@ -356,6 +385,21 @@ public class WKTReader
   }
 
   /**
+   *  Returns the next word in the stream.
+   *
+   *@param  tokenizer        tokenizer over a stream of text in Well-known Text
+   *      format. The next token must be a word.
+   *@return                  the next word in the stream as uppercase text
+   *@throws  ParseException  if the next token is not a word
+   *@throws  IOException     if an I/O error occurs
+   */
+  private String lookaheadWord() throws IOException, ParseException {
+  	String nextWord = getNextWord();
+  	tokenizer.pushBack();
+    return nextWord;
+  }
+
+  /**
    * Throws a formatted ParseException for the current token.
    *
    * @param expected a description of what was expected
@@ -406,8 +450,17 @@ public class WKTReader
    *@throws  IOException     if an I/O error occurs
    */
   private Geometry readGeometryTaggedText() throws IOException, ParseException {
-    String type = getNextWord();
-    if (type.equals("POINT")) {
+    String type = null;
+    
+    try{
+    	type = getNextWord();
+    }catch(IOException e){
+    	return null;
+    }catch(ParseException e){
+    	return null;
+    }
+    
+    if (type.equalsIgnoreCase("POINT")) {
       return readPointText();
     }
     else if (type.equalsIgnoreCase("LINESTRING")) {
@@ -486,8 +539,16 @@ public class WKTReader
     return geometryFactory.createLinearRing(getCoordinates());
   }
 
+  /*
+  private MultiPoint OLDreadMultiPointText() throws IOException, ParseException {
+    return geometryFactory.createMultiPoint(toPoints(getCoordinates()));
+  }
+  */
+  
+  private static final boolean ALLOW_OLD_JTS_MULTIPOINT_SYNTAX = true;
+
   /**
-   *  Creates a <code>MultiPoint</code> using the next token in the stream.
+   *  Creates a <code>MultiPoint</code> using the next tokens in the stream.
    *
    *@param  tokenizer        tokenizer over a stream of text in Well-known Text
    *      format. The next tokens must form a <MultiPoint Text>.
@@ -496,8 +557,33 @@ public class WKTReader
    *@throws  IOException     if an I/O error occurs
    *@throws  ParseException  if an unexpected token was encountered
    */
-  private MultiPoint readMultiPointText() throws IOException, ParseException {
-    return geometryFactory.createMultiPoint(toPoints(getCoordinates()));
+  private MultiPoint readMultiPointText() throws IOException, ParseException 
+  {
+    String nextToken = getNextEmptyOrOpener();
+    if (nextToken.equals(EMPTY)) {
+      return geometryFactory.createMultiPoint(new Point[0]);
+    }
+    
+    // check for old-style JTS syntax and parse it if present
+  	// MD 2009-02-21 - this is only provided for backwards compatibility for a few versions
+  	if (ALLOW_OLD_JTS_MULTIPOINT_SYNTAX) {
+  		String nextWord = lookaheadWord();
+  		if (nextWord != L_PAREN) {
+  			return geometryFactory.createMultiPoint(toPoints(getCoordinatesNoLeftParen()));
+  		}
+  	}
+  	
+    ArrayList points = new ArrayList();
+    Point point = readPointText();
+    points.add(point);
+    nextToken = getNextCloserOrComma();
+    while (nextToken.equals(COMMA)) {
+    	point = readPointText();
+      points.add(point);
+      nextToken = getNextCloserOrComma();
+    }
+    Point[] array = new Point[points.size()];
+    return geometryFactory.createMultiPoint((Point[]) points.toArray(array));
   }
 
   /**
diff --git a/src/com/vividsolutions/jts/io/WKTWriter.java b/src/com/vividsolutions/jts/io/WKTWriter.java
index 91a13b3..21721b2 100644
--- a/src/com/vividsolutions/jts/io/WKTWriter.java
+++ b/src/com/vividsolutions/jts/io/WKTWriter.java
@@ -40,18 +40,21 @@ import java.text.DecimalFormat;
 import java.text.DecimalFormatSymbols;
 
 /**
- * Outputs the Well-Known Text representation of a {@link Geometry}.
- * The Well-known Text format is defined in the
+ * Writes the Well-Known Text representation of a {@link Geometry}.
+ * The Well-Known Text format is defined in the
  * <A HREF="http://www.opengis.org/techno/specs.htm">
  * OGC Simple Features Specification for SQL</A>.
  * <p>
  * The <code>WKTWriter</code> outputs coordinates rounded to the precision
- * model. No more than the maximum number of necessary decimal places will be
+ * model. Only the maximum number of decimal places 
+ * necessary to represent the ordinates to the required precision will be
  * output.
  * <p>
- * A non-standard <code>LINEARRING</code> tag is used for LinearRings.
- * The SFS WKT spec does not define a special tag for <code>LinearRing</code>s.
- * Under it, rings are output using <code>LINESTRING</code>.
+ * The SFS WKT spec does not define a special tag for {@link LinearRing}s.
+ * Under the spec, rings are output as <code>LINESTRING</code>s.
+ * In order to allow precisely specifying constructed geometries, 
+ * JTS supports a non-standard <code>LINEARRING</code> tag which is used 
+ * to output LinearRings.
  *
  * @version 1.7
  * @see WKTReader
@@ -145,15 +148,74 @@ public class WKTWriter
     return buf.toString();
   }
 
+  private int outputDimension = 2;
   private DecimalFormat formatter;
   private boolean isFormatted = false;
+  private boolean useFormatting = false;
   private int level = 0;
+  private int coordsPerLine = -1;
+  private String indentTabStr = "  ";
 
+  /**
+   * Creates a new WKTWriter with default settings
+   */
   public WKTWriter()
   {
   }
 
   /**
+   * Creates a writer that writes {@link Geometry}s with
+   * the given output dimension (2 or 3).
+   * If the specified output dimension is 3, the Z value
+   * of coordinates will be written if it is present
+   * (i.e. if it is not <code>Double.NaN</code>).
+   *
+   * @param outputDimension the coordinate dimension to output (2 or 3)
+   */
+  public WKTWriter(int outputDimension) {
+    this.outputDimension = outputDimension;
+
+    if (outputDimension < 2 || outputDimension > 3)
+      throw new IllegalArgumentException("Invalid output dimension (must be 2 or 3)");
+  }
+
+  /**
+   * Sets whether the output will be formatted.
+   *
+   * @param isFormatted true if the output is to be formatted
+   */
+  public void setFormatted(boolean isFormatted)
+  {
+    this.isFormatted = isFormatted;
+  }
+
+  /**
+   * Sets the maximum number of coordinates per line
+   * written in formatted output.
+   * If the provided coordinate number is <= 0,
+   * coordinates will be written all on one line.
+   *
+   * @param coordsPerLine the number of coordinates per line to output.
+   */
+  public void setMaxCoordinatesPerLine(int coordsPerLine)
+  {
+    this.coordsPerLine = coordsPerLine;
+  }
+
+  /**
+   * Sets the tab size to use for indenting.
+   *
+   * @param size the number of spaces to use as the tab string
+   * @throws IllegalArgumentException if the size is non-positive
+   */
+  public void setTab(int size)
+  {
+    if(size <= 0)
+      throw new IllegalArgumentException("Tab count must be positive");
+    this.indentTabStr = stringOfChar(' ', size);
+  }
+
+  /**
    *  Converts a <code>Geometry</code> to its Well-known Text representation.
    *
    *@param  geometry  a <code>Geometry</code> to process
@@ -164,7 +226,7 @@ public class WKTWriter
   {
     Writer sw = new StringWriter();
     try {
-      writeFormatted(geometry, false, sw);
+      writeFormatted(geometry, isFormatted, sw);
     }
     catch (IOException ex) {
       Assert.shouldNeverReachHere();
@@ -224,10 +286,10 @@ public class WKTWriter
    *@return           a <Geometry Tagged Text> string (see the OpenGIS Simple
    *      Features Specification)
    */
-  private void writeFormatted(Geometry geometry, boolean isFormatted, Writer writer)
+  private void writeFormatted(Geometry geometry, boolean useFormatting, Writer writer)
     throws IOException
   {
-    this.isFormatted = isFormatted;
+    this.useFormatting = useFormatting;
     formatter = createFormatter(geometry.getPrecisionModel());
     appendGeometryTaggedText(geometry, 0, writer);
   }
@@ -417,21 +479,28 @@ public class WKTWriter
   }
 
   /**
-   *  Appends the i'th coordinate from the sequence to the writer
+   * Appends the i'th coordinate from the sequence to the writer
    *
-   *@param  seq      the <code>CoordinateSequence</code> to process
-   * @param i the index of the coordinate to write
-   *@param  writer          the output writer to append to
+   * @param  seq  the <code>CoordinateSequence</code> to process
+   * @param i     the index of the coordinate to write
+   * @param  writer the output writer to append to
    */
   private void appendCoordinate(CoordinateSequence seq, int i, Writer writer)
-    throws IOException
+      throws IOException
   {
     writer.write(writeNumber(seq.getX(i)) + " " + writeNumber(seq.getY(i)));
+    if (outputDimension >= 3 && seq.getDimension() >= 3) {
+      double z = seq.getOrdinate(i, 3);
+      if (! Double.isNaN(z)) {
+        writer.write(" ");
+        writer.write(writeNumber(z));
+      }
+    }
   }
 
   /**
-   *  Converts a <code>Coordinate</code> to <Point> format, then appends
-   *  it to the writer.
+   *  Converts a <code>Coordinate</code> to <code><Point></code> format,
+   *  then appends it to the writer.
    *
    *@param  coordinate      the <code>Coordinate</code> to process
    *@param  writer          the output writer to append to
@@ -440,6 +509,10 @@ public class WKTWriter
     throws IOException
   {
     writer.write(writeNumber(coordinate.x) + " " + writeNumber(coordinate.y));
+    if (outputDimension >= 3 && ! Double.isNaN(coordinate.z)) {
+      writer.write(" ");
+      writer.write(writeNumber(coordinate.z));
+    }
   }
 
   /**
@@ -473,7 +546,10 @@ public class WKTWriter
       for (int i = 0; i < seq.size(); i++) {
         if (i > 0) {
           writer.write(", ");
-          if (i % 10 == 0) indent(level + 2, writer);
+          if (coordsPerLine > 0
+              && i % coordsPerLine == 0) {
+            indent(level + 1, writer);
+          }
         }
         appendCoordinate(seq, i, writer);
       }
@@ -500,7 +576,10 @@ public class WKTWriter
       for (int i = 0; i < lineString.getNumPoints(); i++) {
         if (i > 0) {
           writer.write(", ");
-          if (i % 10 == 0) indent(level + 2, writer);
+          if (coordsPerLine > 0
+              && i % coordsPerLine == 0) {
+            indent(level + 1, writer);
+          }
         }
         appendCoordinate(lineString.getCoordinateN(i), writer);
       }
@@ -551,9 +630,12 @@ public class WKTWriter
       for (int i = 0; i < multiPoint.getNumGeometries(); i++) {
         if (i > 0) {
           writer.write(", ");
+          indentCoords(i, level + 1, writer);
         }
+        writer.write("(");
         appendCoordinate(((Point) multiPoint.getGeometryN(i)).getCoordinate(), writer);
-      }
+        writer.write(")");
+     }
       writer.write(")");
     }
   }
@@ -645,12 +727,24 @@ public class WKTWriter
     }
   }
 
+  private void indentCoords(int coordIndex,  int level, Writer writer)
+    throws IOException
+  {
+    if (coordsPerLine <= 0
+        || coordIndex % coordsPerLine != 0)
+      return;
+    indent(level, writer);
+  }
+
   private void indent(int level, Writer writer)
     throws IOException
   {
-    if (! isFormatted || level <= 0) return;
+    if (! useFormatting || level <= 0)
+      return;
     writer.write("\n");
-    writer.write(stringOfChar(' ', INDENT * level));
+    for (int i = 0; i < level; i++) {
+      writer.write(indentTabStr);
+    }
   }
 
 
diff --git a/src/jtsio/src/com/vividsolutions/jts/io/gml2/GMLConstants.java b/src/com/vividsolutions/jts/io/gml2/GMLConstants.java
similarity index 89%
rename from src/jtsio/src/com/vividsolutions/jts/io/gml2/GMLConstants.java
rename to src/com/vividsolutions/jts/io/gml2/GMLConstants.java
index 84bf078..7010a49 100644
--- a/src/jtsio/src/com/vividsolutions/jts/io/gml2/GMLConstants.java
+++ b/src/com/vividsolutions/jts/io/gml2/GMLConstants.java
@@ -33,11 +33,9 @@
 package com.vividsolutions.jts.io.gml2;
 
 /**
- * This class encapsualtes a collection of parsable GML tag names. For the purpose
- * of performing a Geometry Spatial Validation we'll restrict ourselves to parsing
- * only XML/GML tags defined in the geometry.xsd schema file
+ * Various constant strings associated with GML format.
  */
-final class GMLConstants{
+final public class GMLConstants{
 	
 	  // Namespace constants
 	  public static final String GML_NAMESPACE = "http://www.opengis.net/gml";
diff --git a/src/jtsio/src/com/vividsolutions/jts/io/gml2/GMLHandler.java b/src/com/vividsolutions/jts/io/gml2/GMLHandler.java
similarity index 54%
rename from src/jtsio/src/com/vividsolutions/jts/io/gml2/GMLHandler.java
rename to src/com/vividsolutions/jts/io/gml2/GMLHandler.java
index 56c85d3..c81421f 100644
--- a/src/jtsio/src/com/vividsolutions/jts/io/gml2/GMLHandler.java
+++ b/src/com/vividsolutions/jts/io/gml2/GMLHandler.java
@@ -43,138 +43,176 @@ import com.vividsolutions.jts.geom.GeometryFactory;
 import com.vividsolutions.jts.io.gml2.GeometryStrategies.ParseStrategy;
 
 /**
- * When you encounter some GML Geometry elements, you may either delegate the events to this handler.
- * 
- * This handler ignores both namespaces and prefixes. These mappings may be included at a later date, but for the moment are left as an exercise for the reader. 
+ * A SAX {@link DefaultHandler} which builds {@link Geometry}s 
+ * from GML2-formatted geometries.
+ * An XML parser can delegate SAX events to this handler
+ * to parse and building Geometrys. 
+ * <p>
+ * This handler currently ignores both namespaces and prefixes. 
  * 
  * Hints: 
- * 		If your parent handler is a DefaultHandler register the parent handler to receive the errors and locator calls.
- * 		Use the @see com.vividsolutions.jts.io.gml2.GeometryStrategies#findStrategy(String, String) to help check for applicability
+ * <ul>
+ * <li>If your parent handler is a DefaultHandler register the parent handler to receive the errors and locator calls.
+ * <li>Use {@link GeometryStrategies#findStrategy(String, String)} to help check for applicability
+ * </ul>
  * 
  * @see DefaultHandler
  *
  * @author David Zwiers, Vivid Solutions. 
  */
 public class GMLHandler extends DefaultHandler {
-	
+
 	/**
-	 * This class is intended to log the SAX acitivity within a given element until it's termination. 
-	 * 
-	 * At this time, a new object of value is created and passed to the parent. An object of value is typically either java.lang.* or a JTS Geometry
-	 * 
-	 * This class is not intended for use outside this distribution, and may change in subsequent versions.
+	 * This class is intended to log the SAX acitivity within a given element until its termination. 
+	 * At this time, a new object of value is created and passed to the parent. 
+	 * An object of value is typically either java.lang.* or a JTS Geometry
+	 * This class is not intended for use outside this distribution, 
+	 * and may change in subsequent versions.
 	 *
 	 * @author David Zwiers, Vivid Solutions.
 	 */
-	static class Handler{
+	static class Handler {
 		protected Attributes attrs = null;
+
 		protected ParseStrategy strategy;
-		
+
 		/**
 		 * @param strategy 
 		 * @param attributes Nullable
 		 */
-		public Handler(ParseStrategy strategy, Attributes attributes){
-			if(attributes!=null)
+		public Handler(ParseStrategy strategy, Attributes attributes) {
+			if (attributes != null)
 				this.attrs = new AttributesImpl(attributes);
 			this.strategy = strategy;
 		}
-		
+
 		protected StringBuffer text = null;
+
 		/**
 		 * Caches text for the future
 		 * @param str
 		 */
-		public void addText(String str){
-			if(text == null)
+		public void addText(String str) {
+			if (text == null)
 				text = new StringBuffer();
 			text.append(str);
 		}
-		
-		protected List children = null; 
+
+		protected List children = null;
+
 		/**
 		 * Store param for the future
 		 * 
 		 * @param obj
 		 */
-		public void keep(Object obj){
-			if(children == null)
+		public void keep(Object obj) {
+			if (children == null)
 				children = new LinkedList();
 			children.add(obj);
-			
+
 		}
-		
+
 		/**
 		 * @param gf GeometryFactory
 		 * @return Parsed Object
 		 * @throws SAXException 
 		 */
-		public Object create(GeometryFactory gf) throws SAXException{
-			return strategy.parse(this,gf);
+		public Object create(GeometryFactory gf) throws SAXException {
+			return strategy.parse(this, gf);
 		}
 	}
-	
+
 	private Stack stack = new Stack();
-    private ErrorHandler delegate = null;
-    private GeometryFactory gf = null;
-    
-    /**
-     * Allows the user to specify a delegate object for error / warning messages. 
-     * 
-     * If the delegate also implements ContentHandler then the document Locator will be passed on.
-     * @param gf Geometry Factory
-     * 
-     * @see ErrorHandler
-     * @see ContentHandler
-     * @see ContentHandler#setDocumentLocator(org.xml.sax.Locator)
-     * @see org.xml.sax.Locator
-     * 
-     * @param delegate Nullable
-     */
-    public GMLHandler(GeometryFactory gf, ErrorHandler delegate){
-    	this.delegate = delegate;
-    	this.gf = gf;
-    	stack.push(new Handler(null,null));
-    }
-    
-    /**
-     * This method should only be called AFTER the parser has completed execution
-     * 
-     * @return Last Geometry Parsed, or a collection when there is morethan one geometry
-     */
-    public Geometry getGeometry(){
-    	if(stack.size() == 1){
-    		Handler h = (Handler)stack.peek();
-    		if(h.children.size() == 1)
-    			return (Geometry) h.children.get(0);
-        	return gf.createGeometryCollection((Geometry[]) h.children.toArray(new Geometry[stack.size()]));
-    	}
-    	throw new IllegalStateException("Parse did not complete as expected, there are "+stack.size()+" elements on the Stack");
-    }
+
+	private ErrorHandler delegate = null;
+
+	private GeometryFactory gf = null;
+
+	/**
+	 * Creates a new handler.
+	 * Allows the user to specify a delegate object for error / warning messages. 
+	 * If the delegate also implements ContentHandler then the document Locator will be passed on.
+	 * 
+	 * @param gf Geometry Factory
+	 * @param delegate Nullable
+	 * 
+	 * @see ErrorHandler
+	 * @see ContentHandler
+	 * @see ContentHandler#setDocumentLocator(org.xml.sax.Locator)
+	 * @see org.xml.sax.Locator
+	 * 
+	 */
+	public GMLHandler(GeometryFactory gf, ErrorHandler delegate) {
+		this.delegate = delegate;
+		this.gf = gf;
+		stack.push(new Handler(null, null));
+	}
+
+	/**
+	 * Tests whether this handler has completed parsing 
+	 * a geometry.
+	 * If this is the case, {@link getGeometry()} can be called
+	 * to get the value of the parsed geometry.
+	 * 
+	 * @return
+	 */
+	public boolean isGeometryComplete()
+	{
+		if (stack.size() > 1)
+			return false;
+		// top level node on stack needs to have at least one child 
+		Handler h = (Handler) stack.peek();
+		if (h.children.size() < 1)
+			return false;
+		return true;
+		
+	}
 	
+	/**
+	 * Gets the geometry parsed by this handler.
+	 * This method should only be called AFTER the parser has completed execution
+	 * 
+	 * @return the parsed Geometry, or a GeometryCollection if more than one geometry was parsed
+	 * @throws IllegalStateException if called before the parse is complete
+	 */
+	public Geometry getGeometry() {
+		if (stack.size() == 1) {
+			Handler h = (Handler) stack.peek();
+			if (h.children.size() == 1)
+				return (Geometry) h.children.get(0);
+			return gf.createGeometryCollection(
+					(Geometry[]) h.children.toArray(new Geometry[stack.size()]));
+		}
+		throw new IllegalStateException(
+				"Parse did not complete as expected, there are " + stack.size()
+						+ " elements on the Stack");
+	}
+
 	//////////////////////////////////////////////
 	// Parsing Methods
-	
+
 	/**
 	 * @see org.xml.sax.helpers.DefaultHandler#characters(char[], int, int)
 	 */
 	public void characters(char[] ch, int start, int length) throws SAXException {
-		if(!stack.isEmpty())
-			((Handler)stack.peek()).addText(new String(ch,start,length));
+		if (!stack.isEmpty())
+			((Handler) stack.peek()).addText(new String(ch, start, length));
 	}
 
 	/**
 	 * @see org.xml.sax.helpers.DefaultHandler#ignorableWhitespace(char[], int, int)
 	 */
-	public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException {
-		if(!stack.isEmpty())
-			((Handler)stack.peek()).addText(" ");
+	public void ignorableWhitespace(char[] ch, int start, int length)
+			throws SAXException {
+		if (!stack.isEmpty())
+			((Handler) stack.peek()).addText(" ");
 	}
 
 	/**
 	 * @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String, java.lang.String, java.lang.String)
 	 */
-	public void endElement(String uri, String localName, String qName) throws SAXException {
+	public void endElement(String uri, String localName, String qName)
+			throws SAXException {
 		Handler thisAction = (Handler) stack.pop();
 		((Handler) stack.peek()).keep(thisAction.create(gf));
 	}
@@ -182,18 +220,19 @@ public class GMLHandler extends DefaultHandler {
 	/**
 	 * @see org.xml.sax.helpers.DefaultHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
 	 */
-	public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+	public void startElement(String uri, String localName, String qName,
+			Attributes attributes) throws SAXException {
 		// create a handler
-		ParseStrategy ps = GeometryStrategies.findStrategy(uri,localName);
-		if(ps == null){
-			String qn = qName.substring(qName.indexOf(':')+1,qName.length());
-			ps = GeometryStrategies.findStrategy(null,qn);
+		ParseStrategy ps = GeometryStrategies.findStrategy(uri, localName);
+		if (ps == null) {
+			String qn = qName.substring(qName.indexOf(':') + 1, qName.length());
+			ps = GeometryStrategies.findStrategy(null, qn);
 		}
-		Handler h = new Handler(ps,attributes);
+		Handler h = new Handler(ps, attributes);
 		// and add it to the stack
 		stack.push(h);
 	}
-	
+
 	//////////////////////////////////////////////
 	// Logging Methods
 
@@ -202,17 +241,17 @@ public class GMLHandler extends DefaultHandler {
 	 */
 	public void setDocumentLocator(Locator locator) {
 		this.locator = locator;
-		if(delegate!=null && delegate instanceof ContentHandler)
+		if (delegate != null && delegate instanceof ContentHandler)
 			((ContentHandler) delegate).setDocumentLocator(locator);
-		
+
 	}
-	
+
 	private Locator locator = null;
-	
-	protected Locator getDocumentLocator(){
+
+	protected Locator getDocumentLocator() {
 		return locator;
 	}
-	
+
 	//////////////////////////////////////////////
 	// ERROR Methods
 
@@ -220,7 +259,7 @@ public class GMLHandler extends DefaultHandler {
 	 * @see org.xml.sax.helpers.DefaultHandler#fatalError(org.xml.sax.SAXParseException)
 	 */
 	public void fatalError(SAXParseException e) throws SAXException {
-		if(delegate!=null)
+		if (delegate != null)
 			delegate.fatalError(e);
 		else
 			super.fatalError(e);
@@ -230,7 +269,7 @@ public class GMLHandler extends DefaultHandler {
 	 * @see org.xml.sax.helpers.DefaultHandler#error(org.xml.sax.SAXParseException)
 	 */
 	public void error(SAXParseException e) throws SAXException {
-		if(delegate!=null)
+		if (delegate != null)
 			delegate.error(e);
 		else
 			super.error(e);
@@ -240,7 +279,7 @@ public class GMLHandler extends DefaultHandler {
 	 * @see org.xml.sax.helpers.DefaultHandler#warning(org.xml.sax.SAXParseException)
 	 */
 	public void warning(SAXParseException e) throws SAXException {
-		if(delegate!=null)
+		if (delegate != null)
 			delegate.warning(e);
 		else
 			super.warning(e);
diff --git a/src/jtsio/src/com/vividsolutions/jts/io/gml2/GMLReader.java b/src/com/vividsolutions/jts/io/gml2/GMLReader.java
similarity index 62%
rename from src/jtsio/src/com/vividsolutions/jts/io/gml2/GMLReader.java
rename to src/com/vividsolutions/jts/io/gml2/GMLReader.java
index 0b2dae2..65ce5fe 100644
--- a/src/jtsio/src/com/vividsolutions/jts/io/gml2/GMLReader.java
+++ b/src/com/vividsolutions/jts/io/gml2/GMLReader.java
@@ -35,17 +35,18 @@ package com.vividsolutions.jts.io.gml2;
 import java.io.*;
 
 import javax.xml.parsers.*;
-
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
 
 import com.vividsolutions.jts.geom.Geometry;
 import com.vividsolutions.jts.geom.GeometryFactory;
 
 /**
- * Reads the gml geometry(s) from the user specified xml fragment into a JTS geometry.
- * 
- * <code>
+ * Reads a GML2 geometry from an XML fragment into a {@link Geometry}.
+ * <p>
+ * An example of the GML2 format handled is:
+ * <pre>
  *   <LineString>
  *  	<coordinates>24824.045318333192,38536.15071012041
  *  		26157.378651666528,37567.42733944659 26666.666,36000.0
@@ -56,66 +57,76 @@ import com.vividsolutions.jts.geom.GeometryFactory;
  *  		21842.621348333472,37567.42733944659
  *  		23175.954681666808,38536.15071012041 </coordinates>
  *  </LineString>
- * </code>
- * 
- * This reader ignores namespace prefixes, and disables both the validation and namespace options on the SAXParser. 
- * 
- * For a full description of GML geometries, visit the OGC web site <a href='http://www.opengeospatial.org/'>http://www.opengeospatial.org/</a>.
- * 
- * In most use cases, portions of a document will be delegated to this package. 
+ * </pre>
+ *
+ * The reader ignores namespace prefixes, 
+ * and disables both the validation and namespace options on the <tt>SAXParser</tt>.
+ * This class requires the presence of a SAX Parser available via the 
+ * {@link javax.xml.parsers.SAXParserFactory#newInstance()}
+ * method.
+ * <p>
+ * A specification of the GML XML format 
+ * can be found at the OGC web site: <a href='http://www.opengeospatial.org/'>http://www.opengeospatial.org/</a>.
+ * <p>
+ * It is the caller's responsibility to ensure that the supplied {@link PrecisionModel}
+ * matches the precision of the incoming data.
+ * If a lower precision for the data is required, a subsequent
+ * process must be run on the data to reduce its precision.
+ * <p>
+ * To parse and build geometry directly from a SAX stream, see {@link GMLHandler}.
+ *
+ * @author David Zwiers, Vivid Solutions.
  * 
- * @author David Zwiers, Vivid Solutions. 
+ * @see GMLHandler
  */
-public class GMLReader {
-	
+public class GMLReader 
+{
+
 	/**
-	 * Reads the GML2 String into a single JTS Geometry
-	 * 
-	 * Where a collection of Geometries are found, a JTS GeometryCollection is returned.
-	 * 
+	 * Reads a GML2 Geometry from a <tt>String</tt> into a single {@link Geometry}
+	 *
+	 * If a collection of geometries is found, a {@link GeometryCollection} is returned.
+	 *
 	 * @param gml The GML String to parse
 	 * @param geometryFactory When null, a default will be used.
-	 * @return Geometry The resulting JTS Geometry
-	 * @throws ParserConfigurationException 
-	 * @throws IOException 
-	 * @throws SAXException 
-	 * @throws ParserConfigurationException
+	 * @return the resulting JTS Geometry
 	 * 
+	 * @throws ParserConfigurationException
+	 * @throws IOException
+	 * @throws SAXException
+	 *
 	 * @see #read(Reader, GeometryFactory)
 	 */
 	public Geometry read(String gml, GeometryFactory geometryFactory) throws SAXException, IOException, ParserConfigurationException{
 		return read(new StringReader(gml),geometryFactory);
 	}
-	
+
 	/**
-	 * Reads the Character Stream into a single JTS Geometry
-	 * 
-	 * Where a collection of Geometries are found, a JTS GeometryCollection is returned.
-	 * 
+	 * Reads a GML2 Geometry from a {@link Reader} into a single {@link Geometry}
+	 *
+	 * If a collection of Geometries is found, a {@link GeometryCollection} is returned.
+	 *
 	 * @param reader The input source
 	 * @param geometryFactory When null, a default will be used.
-	 * @return Geometry The resulting JTS Geometry
+	 * @return The resulting JTS Geometry
 	 * @throws SAXException
 	 * @throws IOException
-	 * @throws ParserConfigurationException
-	 * 
-	 * Note: The parser will be both namespace aware and validating.
 	 */
 	public Geometry read(Reader reader, GeometryFactory geometryFactory) throws SAXException, IOException, ParserConfigurationException{
 		SAXParserFactory fact = SAXParserFactory.newInstance();
-		
+
 		fact.setNamespaceAware(false);
 		fact.setValidating(false);
-		
+
 		SAXParser parser = fact.newSAXParser();
-		
+
 		if(geometryFactory == null)
 			geometryFactory = new GeometryFactory();
-		
+
 		GMLHandler gh = new GMLHandler(geometryFactory,null);
-		parser.parse(new InputSource(reader),gh);
-		
+		parser.parse(new InputSource(reader), (DefaultHandler)gh);
+
 		return gh.getGeometry();
 	}
-	
+
 }
diff --git a/src/com/vividsolutions/jts/io/gml2/GMLWriter.java b/src/com/vividsolutions/jts/io/gml2/GMLWriter.java
new file mode 100644
index 0000000..2682b9b
--- /dev/null
+++ b/src/com/vividsolutions/jts/io/gml2/GMLWriter.java
@@ -0,0 +1,487 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.io.gml2;
+
+import java.io.*;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.util.Assert;
+
+/**
+ * Writes {@link Geometry}s as XML fragments in GML2 format.
+ * Allows specifying the XML prefix, namespace and srsName
+ * of the emitted GML.
+ * Also allows adding custom root elements
+ * to support GML extensions such as KML. 
+ * With appropriate settings for prefix (none) and custom root elements
+ * this class can be used to write out geometry in KML format.
+ * <p>
+ * An example of the output that can be generated is:
+ * 
+ * <pre>
+ * <gml:LineString xmlns:gml='http://www.opengis.net/gml' srsName='foo'>
+ *   <gml:coordinates>
+ *     6.03,8.17 7.697,6.959 8.333,5.0 7.697,3.041 6.03,1.83 3.97,1.83 2.303,3.041 1.667,5.0 2.303,6.959 3.97,8.17 
+ *   </gml:coordinates>
+ * </gml:LineString>
+ * </pre>
+ * 
+ * <p>
+ * This class does not rely on any external XML libraries. 
+ *
+ * @author David Zwiers, Vivid Solutions 
+ * @author Martin Davis 
+ */
+public class GMLWriter {
+	private final String INDENT = "  ";
+
+	private int startingIndentIndex = 0;
+
+	private int maxCoordinatesPerLine = 10;
+
+	private boolean emitNamespace = false;
+
+	private boolean isRootTag = false;
+
+	private String prefix = GMLConstants.GML_PREFIX;
+	private String namespace = GMLConstants.GML_NAMESPACE;
+	private String srsName = null;
+	
+	private String[] customElements = null;
+	
+	/**
+	 * Creates a writer which outputs GML with default settings.
+	 * The defaults are:
+	 * <ul>
+	 * <li>the namespace prefix is <tt>gml:<//t>
+	 * <li>no namespace prefix declaration is written
+	 * <li>no <tt>srsName</tt> attribute is written
+	 * </ul>
+	 */
+	public GMLWriter() {
+	}
+
+	/**
+	 * Creates a writer which may emit the GML namespace prefix 
+	 * declaration in the geometry root element.
+	 * 
+	 * @param emitNamespace trueif the GML namespace prefix declaration should be written
+	 *  in the geometry root element
+	 */
+	public GMLWriter(boolean emitNamespace) {
+		this.setNamespace(emitNamespace);
+	}
+
+	/**
+	 * Specifies the namespace prefix to write on each GML tag. 
+	 * A null or blank prefix may be used to indicate no prefix.
+	 * <p>
+	 * The default is to write <tt>gml:</tt> as the namespace prefix.
+	 * 
+	 * @param prefix the namespace prefix to use (<tt>null</tt> or blank if none)
+	 */
+	public void setPrefix(String prefix) {
+		this.prefix = prefix;
+	}
+
+	/**
+	 * Sets the value of the <tt>srsName</tt> attribute 
+	 * to be written into the root geometry tag.
+	 * If the value is <tt>null</tt> or blank no srsName attribute will be written.
+	 * The provided value must be a valid XML attribute value 
+	 * - it will not be XML-escaped.
+	 * <p>
+	 * The default is not to write the <tt>srsName</tt> attribute.
+	 * 
+	 * @param srsName the srsName attribute value
+	 */
+	public void setSrsName(String srsName) {
+		this.srsName = srsName;
+	}
+
+	/**
+	 * Determines whether a GML namespace declaration will be written in the
+	 * opening tag of geometries.  Useful in XML-aware environments which 
+	 * parse the geometries before use, such as XSLT.
+	 * 
+	 * @param namespaceMode true if the GML namespace prefix declaration 
+	 * should be written in the root geometry element
+	 */
+	public void setNamespace(boolean emitNamespace) {
+		this.emitNamespace = emitNamespace;
+	}
+
+	/**
+	 * Specifies a list of custom elements
+	 * which are written after the opening tag
+	 * of the root element.
+	 * The text contained in the string sequence should form valid XML markup.
+	 * The specified strings are written one per line immediately after
+	 * the root geometry tag line.
+	 * <p>
+	 * For instance, this is useful for adding KML-specific geometry parameters
+	 * such as <tt><extrude></tt>
+	 * 
+	 * @param customElements a list of the custom element strings, or null if none
+	 */
+	public void setCustomElements(String[] customElements) {
+		this.customElements = customElements;
+	}
+
+	/**
+	 * Sets the starting column index for pretty printing
+	 * 
+	 * @param arg
+	 */
+	public void setStartingIndentIndex(int indent) {
+		if (indent < 0)
+			indent = 0;
+		startingIndentIndex = indent;
+	}
+
+	/**
+	 * Sets the number of coordinates printed per line. 
+	 * 
+	 * @param arg
+	 */
+	public void setMaxCoordinatesPerLine(int num) {
+		if (num < 1)
+			throw new IndexOutOfBoundsException(
+					"Invalid coordinate count per line, must be > 0");
+		maxCoordinatesPerLine = num;
+	}
+
+	/**
+	 * Writes a {@link Geometry} in GML2 format to a String.
+	 * 
+	 * @param geom
+	 * @return String GML2 Encoded Geometry
+	 * @throws IOException 
+	 */
+	public String write(Geometry geom) 
+	{
+		StringWriter writer = new StringWriter();
+		try {
+			write(geom, writer);
+		}
+    catch (IOException ex) {
+      Assert.shouldNeverReachHere();
+    }
+		return writer.toString();
+	}
+
+	/**
+	 * Writes a {@link Geometry} in GML2 format into a {@link Writer}.
+	 * 
+	 * @param geom Geometry to encode
+	 * @param writer Stream to encode to.
+	 * @throws IOException 
+	 */
+	public void write(Geometry geom, Writer writer) throws IOException {
+		write(geom, writer, startingIndentIndex);
+	}
+
+	private void write(Geometry geom, Writer writer, int level)
+			throws IOException 
+			{
+		isRootTag = true;
+		if (geom instanceof Point) {
+			writePoint((Point) geom, writer, level);
+		} else if (geom instanceof LineString) {
+			writeLineString((LineString) geom, writer, level);
+		} else if (geom instanceof Polygon) {
+			writePolygon((Polygon) geom, writer, level);
+		} else if (geom instanceof MultiPoint) {
+			writeMultiPoint((MultiPoint) geom, writer, level);
+		} else if (geom instanceof MultiLineString) {
+			writeMultiLineString((MultiLineString) geom, writer, level);
+		} else if (geom instanceof MultiPolygon) {
+			writeMultiPolygon((MultiPolygon) geom, writer, level);
+		} else if (geom instanceof GeometryCollection) {
+			writeGeometryCollection((GeometryCollection) geom, writer,
+					startingIndentIndex);
+		} else {
+			throw new IllegalArgumentException("Unhandled geometry type: "
+					+ geom.getGeometryType());
+		}
+		writer.flush();
+	}
+
+	// <gml:Point><gml:coordinates>1195156.78946687,382069.533723461</gml:coordinates></gml:Point>
+	private void writePoint(Point p, Writer writer, int level) throws IOException {
+		startLine(level, writer);
+		startGeomTag(GMLConstants.GML_POINT, p, writer);
+
+		write(new Coordinate[] { p.getCoordinate() }, writer, level + 1);
+
+		startLine(level, writer);
+		endGeomTag(GMLConstants.GML_POINT, writer);
+	}
+
+	//<gml:LineString><gml:coordinates>1195123.37289257,381985.763974674 1195120.22369473,381964.660533343 1195118.14929823,381942.597718511</gml:coordinates></gml:LineString>
+	private void writeLineString(LineString ls, Writer writer, int level)
+			throws IOException {
+		startLine(level, writer);
+		startGeomTag(GMLConstants.GML_LINESTRING, ls, writer);
+
+		write(ls.getCoordinates(), writer, level + 1);
+
+		startLine(level, writer);
+		endGeomTag(GMLConstants.GML_LINESTRING, writer);
+	}
+
+	//<gml:LinearRing><gml:coordinates>1226890.26761027,1466433.47430292 1226880.59239079,1466427.03208053...></coordinates></gml:LinearRing>
+	private void writeLinearRing(LinearRing lr, Writer writer, int level)
+			throws IOException {
+		startLine(level, writer);
+		startGeomTag(GMLConstants.GML_LINEARRING, lr, writer);
+
+		write(lr.getCoordinates(), writer, level + 1);
+
+		startLine(level, writer);
+		endGeomTag(GMLConstants.GML_LINEARRING, writer);
+	}
+
+	private void writePolygon(Polygon p, Writer writer, int level)
+			throws IOException {
+		startLine(level, writer);
+		startGeomTag(GMLConstants.GML_POLYGON, p, writer);
+
+		startLine(level + 1, writer);
+		startGeomTag(GMLConstants.GML_OUTER_BOUNDARY_IS, null, writer);
+
+		writeLinearRing((LinearRing) p.getExteriorRing(), writer, level + 2);
+
+		startLine(level + 1, writer);
+		endGeomTag(GMLConstants.GML_OUTER_BOUNDARY_IS, writer);
+
+		for (int t = 0; t < p.getNumInteriorRing(); t++) {
+			startLine(level + 1, writer);
+			startGeomTag(GMLConstants.GML_INNER_BOUNDARY_IS, null, writer);
+
+			writeLinearRing((LinearRing) p.getInteriorRingN(t), writer, level + 2);
+
+			startLine(level + 1, writer);
+			endGeomTag(GMLConstants.GML_INNER_BOUNDARY_IS, writer);
+		}
+
+		startLine(level, writer);
+		endGeomTag(GMLConstants.GML_POLYGON, writer);
+	}
+
+	private void writeMultiPoint(MultiPoint mp, Writer writer, int level)
+			throws IOException {
+		startLine(level, writer);
+		startGeomTag(GMLConstants.GML_MULTI_POINT, mp, writer);
+
+		for (int t = 0; t < mp.getNumGeometries(); t++) {
+			startLine(level + 1, writer);
+			startGeomTag(GMLConstants.GML_POINT_MEMBER, null, writer);
+
+			writePoint((Point) mp.getGeometryN(t), writer, level + 2);
+
+			startLine(level + 1, writer);
+			endGeomTag(GMLConstants.GML_POINT_MEMBER, writer);
+		}
+		startLine(level, writer);
+		endGeomTag(GMLConstants.GML_MULTI_POINT, writer);
+	}
+
+	private void writeMultiLineString(MultiLineString mls, Writer writer,
+			int level) throws IOException {
+		startLine(level, writer);
+		startGeomTag(GMLConstants.GML_MULTI_LINESTRING, mls, writer);
+
+		for (int t = 0; t < mls.getNumGeometries(); t++) {
+			startLine(level + 1, writer);
+			startGeomTag(GMLConstants.GML_LINESTRING_MEMBER, null, writer);
+
+			writeLineString((LineString) mls.getGeometryN(t), writer, level + 2);
+
+			startLine(level + 1, writer);
+			endGeomTag(GMLConstants.GML_LINESTRING_MEMBER, writer);
+		}
+		startLine(level, writer);
+		endGeomTag(GMLConstants.GML_MULTI_LINESTRING, writer);
+	}
+
+	private void writeMultiPolygon(MultiPolygon mp, Writer writer, int level)
+			throws IOException {
+		startLine(level, writer);
+		startGeomTag(GMLConstants.GML_MULTI_POLYGON, mp, writer);
+
+		for (int t = 0; t < mp.getNumGeometries(); t++) {
+			startLine(level + 1, writer);
+			startGeomTag(GMLConstants.GML_POLYGON_MEMBER, null, writer);
+
+			writePolygon((Polygon) mp.getGeometryN(t), writer, level + 2);
+
+			startLine(level + 1, writer);
+			endGeomTag(GMLConstants.GML_POLYGON_MEMBER, writer);
+		}
+		startLine(level, writer);
+		endGeomTag(GMLConstants.GML_MULTI_POLYGON, writer);
+	}
+
+	private void writeGeometryCollection(GeometryCollection gc, Writer writer,
+			int level) throws IOException {
+		startLine(level, writer);
+		startGeomTag(GMLConstants.GML_MULTI_GEOMETRY, gc, writer);
+
+		for (int t = 0; t < gc.getNumGeometries(); t++) {
+			startLine(level + 1, writer);
+			startGeomTag(GMLConstants.GML_GEOMETRY_MEMBER, null, writer);
+
+			write(gc.getGeometryN(t), writer, level + 2);
+
+			startLine(level + 1, writer);
+			endGeomTag(GMLConstants.GML_GEOMETRY_MEMBER, writer);
+		}
+		startLine(level, writer);
+		endGeomTag(GMLConstants.GML_MULTI_GEOMETRY, writer);
+	}
+
+	private static final String coordinateSeparator = ",";
+
+	private static final String tupleSeparator = " ";
+
+	/**
+	 * Takes a list of coordinates and converts it to GML.<br>
+	 * 2d and 3d aware.
+	 * 
+	 * @param coords array of coordinates
+	 * @throws IOException 
+	 */
+	private void write(Coordinate[] coords, Writer writer, int level)
+			throws IOException {
+		startLine(level, writer);
+		startGeomTag(GMLConstants.GML_COORDINATES, null, writer);
+
+		int dim = 2;
+
+		if (coords.length > 0) {
+			if (!(Double.isNaN(coords[0].z)))
+				dim = 3;
+		}
+
+		boolean isNewLine = true;
+		for (int i = 0; i < coords.length; i++) {
+			if (isNewLine) {
+				startLine(level + 1, writer);
+				isNewLine = false;
+			}
+			if (dim == 2) {
+				writer.write("" + coords[i].x);
+				writer.write(coordinateSeparator);
+				writer.write("" + coords[i].y);
+			} else if (dim == 3) {
+				writer.write("" + coords[i].x);
+				writer.write(coordinateSeparator);
+				writer.write("" + coords[i].y);
+				writer.write(coordinateSeparator);
+				writer.write("" + coords[i].z);
+			}
+			writer.write(tupleSeparator);
+
+			// break output lines to prevent them from getting too long
+			if ((i + 1) % maxCoordinatesPerLine == 0 && i < coords.length - 1) {
+				writer.write("\n");
+				isNewLine = true;
+			}
+		}
+		if (!isNewLine)
+			writer.write("\n");
+
+		startLine(level, writer);
+		endGeomTag(GMLConstants.GML_COORDINATES, writer);
+	}
+
+	private void startLine(int level, Writer writer) throws IOException {
+		for (int i = 0; i < level; i++)
+			writer.write(INDENT);
+	}
+
+	private void startGeomTag(String geometryName, Geometry g, Writer writer)
+			throws IOException {
+		writer.write("<"
+				+ ((prefix == null || "".equals(prefix)) ? "" : prefix + ":"));
+		writer.write(geometryName);
+		writeAttributes(g, writer);
+		writer.write(">\n");
+		writeCustomElements(g, writer);
+		isRootTag = false;
+	}
+
+	private void writeAttributes(Geometry geom, Writer writer) throws IOException {
+		if (geom == null)
+			return;
+		if (! isRootTag)
+			return;
+		
+		if (emitNamespace) {
+			writer.write(" xmlns"
+					+ ((prefix == null || "".equals(prefix)) ? "" : ":"+prefix )
+					+ "='" + namespace + "'");
+		}
+		if (srsName != null && srsName.length() > 0) {
+			writer.write(" " + GMLConstants.GML_ATTR_SRSNAME + "='" + srsName + "'");
+			// MD - obsoleted
+//			writer.write(geom.getSRID() + "");
+		}
+	}
+
+	private void writeCustomElements(Geometry geom, Writer writer) throws IOException {
+		if (geom == null)			return;
+		if (! isRootTag)			return;
+		if (customElements == null) return;
+		
+		for (int i = 0; i < customElements.length; i++) {
+			writer.write(customElements[i]);
+			writer.write("\n");
+		}
+	}
+	
+	private void endGeomTag(String geometryName, Writer writer)
+			throws IOException {
+		writer.write("</" + prefix());
+		writer.write(geometryName);
+		writer.write(">\n");
+	}
+	
+	private String prefix()
+	{
+		if (prefix == null || prefix.length() == 0)
+			return "";
+		return prefix + ":";
+	}
+}
diff --git a/src/jtsio/src/com/vividsolutions/jts/io/gml2/GeometryStrategies.java b/src/com/vividsolutions/jts/io/gml2/GeometryStrategies.java
similarity index 100%
rename from src/jtsio/src/com/vividsolutions/jts/io/gml2/GeometryStrategies.java
rename to src/com/vividsolutions/jts/io/gml2/GeometryStrategies.java
diff --git a/src/com/vividsolutions/jts/io/gml2/package.html b/src/com/vividsolutions/jts/io/gml2/package.html
new file mode 100644
index 0000000..4701757
--- /dev/null
+++ b/src/com/vividsolutions/jts/io/gml2/package.html
@@ -0,0 +1,6 @@
+<html>
+	<head><title>JTS IO: Java Topology Suite IO Library</title></head>
+	<body>
+	   Classes to read and write the GML2 geometry format.
+	</body>
+</html>
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/linearref/LengthIndexedLine.java b/src/com/vividsolutions/jts/linearref/LengthIndexedLine.java
index b131954..74f6758 100644
--- a/src/com/vividsolutions/jts/linearref/LengthIndexedLine.java
+++ b/src/com/vividsolutions/jts/linearref/LengthIndexedLine.java
@@ -31,6 +31,8 @@ public class LengthIndexedLine
    * on the line at the given index.
    * If the index is out of range the first or last point on the
    * line will be returned.
+   * The Z-ordinate of the computed point will be interpolated from
+   * the Z-ordinates of the line segment containing it, if they exist.
    *
    * @param index the index of the desired point
    * @return the Coordinate at the given index
@@ -42,6 +44,28 @@ public class LengthIndexedLine
   }
 
   /**
+   * Computes the {@link Coordinate} for the point
+   * on the line at the given index, offset by the given distance.
+   * If the index is out of range the first or last point on the
+   * line will be returned.
+   * The computed point is offset to the left of the line if the offset distance is
+   * positive, to the right if negative.
+   * 
+   * The Z-ordinate of the computed point will be interpolated from
+   * the Z-ordinates of the line segment containing it, if they exist.
+   *
+   * @param index the index of the desired point
+   * @param offsetDistance the distance the point is offset from the segment
+   *    (positive is to the left, negative is to the right)
+   * @return the Coordinate at the given index
+   */
+  public Coordinate extractPoint(double index, double offsetDistance)
+  {
+    LinearLocation loc = LengthLocationMap.getLocation(linearGeom, index);
+    return loc.getSegment(linearGeom).pointAlongOffset(loc.getSegmentFraction(), offsetDistance);
+  }
+
+  /**
    * Computes the {@link LineString} for the interval
    * on the line between the given indices.
    * If the endIndex lies before the startIndex,
diff --git a/src/com/vividsolutions/jts/linearref/LinearLocation.java b/src/com/vividsolutions/jts/linearref/LinearLocation.java
index 8df1540..5d683dc 100644
--- a/src/com/vividsolutions/jts/linearref/LinearLocation.java
+++ b/src/com/vividsolutions/jts/linearref/LinearLocation.java
@@ -32,6 +32,8 @@ public class LinearLocation
    * point of the segment is returned.
    * If the fraction is less than or equal to 0.0 the first point
    * of the segment is returned.
+   * The Z ordinate is interpolated from the Z-ordinates of the given points,
+   * if they are specified.
    *
    * @param p0 the first point of the line segment
    * @param p1 the last point of the line segment
@@ -45,7 +47,9 @@ public class LinearLocation
 
     double x = (p1.x - p0.x) * frac + p0.x;
     double y = (p1.y - p0.y) * frac + p0.y;
-    return new Coordinate(x, y);
+    // interpolate Z value. If either input Z is NaN, result z will be NaN as well.
+    double z = (p1.z - p0.z) * frac + p0.z;
+    return new Coordinate(x, y, z);
   }
 
   private int componentIndex = 0;
@@ -123,7 +127,7 @@ public class LinearLocation
   /**
    * Snaps the value of this location to
    * the nearest vertex on the given linear {@link Geometry},
-   * if the vertex is closer than <tt>maxDistance</tt>.
+   * if the vertex is closer than <tt>minDistance</tt>.
    *
    * @param linearGeom a linear geometry
    * @param minDistance the minimum allowable distance to a vertex
@@ -228,6 +232,26 @@ public class LinearLocation
   }
 
   /**
+   * Gets a {@link LineSegment} representing the segment of the 
+   * given linear {@link Geometry} which contains this location.
+   *
+   * @param linearGeom a linear geometry
+   * @return the <tt>LineSegment</tt> containing the location
+   */
+  public LineSegment getSegment(Geometry linearGeom)
+  {
+    LineString lineComp = (LineString) linearGeom.getGeometryN(componentIndex);
+    Coordinate p0 = lineComp.getCoordinateN(segmentIndex);
+    // check for endpoint - return last segment of the line if so
+    if (segmentIndex >= lineComp.getNumPoints() - 1) {
+    	Coordinate prev = lineComp.getCoordinateN(lineComp.getNumPoints() - 2);
+      return new LineSegment(prev, p0);
+    }
+    Coordinate p1 = lineComp.getCoordinateN(segmentIndex + 1);
+    return new LineSegment(p0, p1);
+  }
+
+  /**
    * Tests whether this location refers to a valid
    * location on the given linear {@link Geometry}.
    *
@@ -240,9 +264,9 @@ public class LinearLocation
       return false;
 
     LineString lineComp = (LineString) linearGeom.getGeometryN(componentIndex);
-    if (segmentIndex < 0 || segmentIndex > lineComp.getNumGeometries())
+    if (segmentIndex < 0 || segmentIndex > lineComp.getNumPoints())
       return false;
-    if (segmentIndex == lineComp.getNumGeometries() && segmentFraction != 0.0)
+    if (segmentIndex == lineComp.getNumPoints() && segmentFraction != 0.0)
       return false;
 
     if (segmentFraction < 0.0 || segmentFraction > 1.0)
@@ -327,12 +351,32 @@ public class LinearLocation
   }
 
   /**
+   * Tests whether two locations
+   * are on the same segment in the parent {@link Geometry}.
+   * 
+   * @param loc a location on the same geometry
+   * @return true if the locations are on the same segment of the parent geometry
+   */
+  public boolean isOnSameSegment(LinearLocation loc)
+  {
+  	if (componentIndex != loc.componentIndex) return false;
+  	if (segmentIndex == loc.segmentIndex) return true;
+  	if (loc.segmentIndex - segmentIndex == 1 
+  			&& loc.segmentFraction == 0.0) 
+  		return true;
+  	if (segmentIndex - loc.segmentIndex == 1 
+  			&& segmentFraction == 0.0) 
+  		return true;
+  	return false;
+  }
+
+  /**
    * Copies this location
    *
    * @return a copy of this location
    */
   public Object clone()
   {
-    return new LinearLocation(segmentIndex, segmentFraction);
+    return new LinearLocation(componentIndex, segmentIndex, segmentFraction);
   }
 }
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/linearref/LocationIndexOfPoint.java b/src/com/vividsolutions/jts/linearref/LocationIndexOfPoint.java
index 58076e6..3fff0dc 100644
--- a/src/com/vividsolutions/jts/linearref/LocationIndexOfPoint.java
+++ b/src/com/vividsolutions/jts/linearref/LocationIndexOfPoint.java
@@ -18,6 +18,12 @@ class LocationIndexOfPoint
     return locater.indexOf(inputPt);
   }
 
+  public static LinearLocation indexOfAfter(Geometry linearGeom, Coordinate inputPt, LinearLocation minIndex)
+  {
+    LocationIndexOfPoint locater = new LocationIndexOfPoint(linearGeom);
+    return locater.indexOfAfter(inputPt, minIndex);
+  }
+
   private Geometry linearGeom;
 
   public LocationIndexOfPoint(Geometry linearGeom) {
@@ -83,7 +89,7 @@ class LocationIndexOfPoint
         seg.p0 = it.getSegmentStart();
         seg.p1 = it.getSegmentEnd();
         double segDistance = seg.distance(inputPt);
-        double segFrac = segmentFraction(seg, inputPt);
+        double segFrac = seg.segmentFraction(inputPt);
 
         int candidateComponentIndex = it.getComponentIndex();
         int candidateSegmentIndex = it.getVertexIndex();
@@ -107,7 +113,19 @@ class LocationIndexOfPoint
     return loc;
   }
 
-  public static double segmentFraction(
+  /**
+   * Computes the fraction of distance (in <tt>[0.0, 1.0]</tt>) 
+   * that a point occurs along a line segment.
+   * If the point is beyond either ends of the line segment,
+   * the closest fractional value (<tt>0.0</tt> or <tt>1.0</tt>) is returned.
+   *  
+   * @param seg the line segment to use
+   * @param inputPt the point
+   * @return the fraction along the line segment the point occurs
+   */
+  /*
+   // MD - no longer needed
+  private static double segmentFraction(
       LineSegment seg,
       Coordinate inputPt)
   {
@@ -118,4 +136,5 @@ class LocationIndexOfPoint
       segFrac = 1.0;
     return segFrac;
   }
+  */
 }
diff --git a/src/com/vividsolutions/jts/linearref/LocationIndexedLine.java b/src/com/vividsolutions/jts/linearref/LocationIndexedLine.java
index b1f668a..344a5d8 100644
--- a/src/com/vividsolutions/jts/linearref/LocationIndexedLine.java
+++ b/src/com/vividsolutions/jts/linearref/LocationIndexedLine.java
@@ -33,6 +33,8 @@ public class LocationIndexedLine
    * on the line at the given index.
    * If the index is out of range the first or last point on the
    * line will be returned.
+   * The Z-ordinate of the computed point will be interpolated from
+   * the Z-ordinates of the line segment containing it, if they exist.
    *
    * @param length the index of the desired point
    * @return the Coordinate at the given index
@@ -43,6 +45,27 @@ public class LocationIndexedLine
   }
 
   /**
+   * Computes the {@link Coordinate} for the point
+   * on the line at the given index, offset by the given distance.
+   * If the index is out of range the first or last point on the
+   * line will be returned.
+   * The computed point is offset to the left of the line if the offset distance is
+   * positive, to the right if negative.
+   * 
+   * The Z-ordinate of the computed point will be interpolated from
+   * the Z-ordinates of the line segment containing it, if they exist.
+   *
+   * @param index the index of the desired point
+   * @param offsetDistance the distance the point is offset from the segment
+   *    (positive is to the left, negative is to the right)
+   * @return the Coordinate at the given index
+   */
+  public Coordinate extractPoint(LinearLocation index, double offsetDistance)
+  {
+    return index.getSegment(linearGeom).pointAlongOffset(index.getSegmentFraction(), offsetDistance);
+  }
+
+  /**
    * Computes the {@link LineString} for the interval
    * on the line between the given indices.
    *
@@ -72,6 +95,34 @@ public class LocationIndexedLine
   {
     return LocationIndexOfPoint.indexOf(linearGeom, pt);
   }
+  
+  /**
+   * Finds the index for a point on the line
+   * which is greater than the given index.
+   * If no such index exists, returns <tt>minIndex</tt>.
+   * This method can be used to determine all indexes for
+   * a point which occurs more than once on a non-simple line.
+   * It can also be used to disambiguate cases where the given point lies
+   * slightly off the line and is equidistant from two different
+   * points on the line.
+   *
+   * The supplied point does not <i>necessarily</i> have to lie precisely
+   * on the line, but if it is far from the line the accuracy and
+   * performance of this function is not guaranteed.
+   * Use {@link #project} to compute a guaranteed result for points
+   * which may be far from the line.
+   *
+   * @param pt a point on the line
+   * @param minIndex the value the returned index must be greater than
+   * @return the index of the point greater than the given minimum index
+   *
+   * @see project
+   */
+  public LinearLocation indexOfAfter(Coordinate pt, LinearLocation minIndex)
+  {
+    return LocationIndexOfPoint.indexOfAfter(linearGeom, pt, minIndex);
+  }
+
 
   /**
    * Computes the indices for a subline of the line.
diff --git a/src/com/vividsolutions/jts/noding/SegmentString.java b/src/com/vividsolutions/jts/noding/BasicSegmentString.java
similarity index 56%
copy from src/com/vividsolutions/jts/noding/SegmentString.java
copy to src/com/vividsolutions/jts/noding/BasicSegmentString.java
index 2c7a9a6..e2ae556 100644
--- a/src/com/vividsolutions/jts/noding/SegmentString.java
+++ b/src/com/vividsolutions/jts/noding/BasicSegmentString.java
@@ -49,24 +49,9 @@ import com.vividsolutions.jts.geom.Coordinate;
  *
  * @version 1.7
  */
-public class SegmentString
+public class BasicSegmentString
+	implements SegmentString 
 {
-  public static List getNodedSubstrings(Collection segStrings)
-  {
-    List resultEdgelist = new ArrayList();
-    getNodedSubstrings(segStrings, resultEdgelist);
-    return resultEdgelist;
-  }
-
-  public static void getNodedSubstrings(Collection segStrings, Collection resultEdgelist)
-  {
-    for (Iterator i = segStrings.iterator(); i.hasNext(); ) {
-      SegmentString ss = (SegmentString) i.next();
-      ss.getNodeList().addSplitEdges(resultEdgelist);
-    }
-  }
-
-  private SegmentNodeList nodeList = new SegmentNodeList(this);
   private Coordinate[] pts;
   private Object data;
 
@@ -76,7 +61,7 @@ public class SegmentString
    * @param pts the vertices of the segment string
    * @param data the user-defined data of this segment string (may be null)
    */
-  public SegmentString(Coordinate[] pts, Object data)
+  public BasicSegmentString(Coordinate[] pts, Object data)
   {
     this.pts = pts;
     this.data = data;
@@ -96,7 +81,6 @@ public class SegmentString
    */
   public void setData(Object data) { this.data = data; }
 
-  public SegmentNodeList getNodeList() { return nodeList; }
   public int size() { return pts.length; }
   public Coordinate getCoordinate(int i) { return pts[i]; }
   public Coordinate[] getCoordinates() { return pts; }
@@ -119,48 +103,4 @@ public class SegmentString
     return Octant.octant(getCoordinate(index), getCoordinate(index + 1));
   }
 
-  /**
-   * Adds EdgeIntersections for one or both
-   * intersections found for a segment of an edge to the edge intersection list.
-   */
-  public void addIntersections(LineIntersector li, int segmentIndex, int geomIndex)
-  {
-    for (int i = 0; i < li.getIntersectionNum(); i++) {
-      addIntersection(li, segmentIndex, geomIndex, i);
-    }
-  }
-  /**
-   * Add an SegmentNode for intersection intIndex.
-   * An intersection that falls exactly on a vertex
-   * of the SegmentString is normalized
-   * to use the higher of the two possible segmentIndexes
-   */
-  public void addIntersection(LineIntersector li, int segmentIndex, int geomIndex, int intIndex)
-  {
-    Coordinate intPt = new Coordinate(li.getIntersection(intIndex));
-    addIntersection(intPt, segmentIndex);
-  }
-
-  public void addIntersection(Coordinate intPt, int segmentIndex)
-  {
-    int normalizedSegmentIndex = segmentIndex;
-//Debug.println("edge intpt: " + intPt + " dist: " + dist);
-      // normalize the intersection point location
-      int nextSegIndex = normalizedSegmentIndex + 1;
-      if (nextSegIndex < pts.length) {
-        Coordinate nextPt = pts[nextSegIndex];
-//Debug.println("next pt: " + nextPt);
-
-        // Normalize segment index if intPt falls on vertex
-        // The check for point equality is 2D only - Z values are ignored
-        if (intPt.equals2D(nextPt)) {
-//Debug.println("normalized distance");
-            normalizedSegmentIndex = nextSegIndex;
-        }
-      }
-      /**
-      * Add the intersection point to edge intersection list.
-      */
-      SegmentNode ei = nodeList.add(intPt, normalizedSegmentIndex);
-  }
 }
diff --git a/src/com/vividsolutions/jts/noding/FastNodingValidator.java b/src/com/vividsolutions/jts/noding/FastNodingValidator.java
new file mode 100644
index 0000000..4ef2d27
--- /dev/null
+++ b/src/com/vividsolutions/jts/noding/FastNodingValidator.java
@@ -0,0 +1,137 @@
+
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.noding;
+
+import java.util.*;
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.util.*;
+import com.vividsolutions.jts.io.*;
+
+/**
+ * Validates that a collection of {@link SegmentString}s is correctly noded.
+ * Indexing is used to improve performance.
+ * This class assumes that at least one round of noding has already been performed
+ * (which may still leave intersections, due to rounding issues).
+ * Does NOT check a-b-a collapse situations. 
+ * Also does not check for endpt-interior vertex intersections.
+ * This should not be a problem, since the noders should be
+ * able to compute intersections between vertices correctly.
+ * User may either test the valid condition, or request that a 
+ * {@link TopologyException} 
+ * be thrown.
+ *
+ * @version 1.7
+ */
+public class FastNodingValidator 
+{
+  private LineIntersector li = new RobustLineIntersector();
+
+  private Collection segStrings;
+  private InteriorIntersectionFinder segInt = null;
+  private boolean isValid = true;
+  
+  public FastNodingValidator(Collection segStrings)
+  {
+    this.segStrings = segStrings;
+  }
+
+  /**
+   * Checks for an intersection and 
+   * reports if one is found.
+   * 
+   * @return true if the arrangement contains an interior intersection
+   */
+  public boolean isValid()
+  {
+  	execute();
+  	return isValid;
+  }
+  
+  /**
+   * Returns an error message indicating the segments containing
+   * the intersection.
+   * 
+   * @return an error message documenting the intersection location
+   */
+  public String getErrorMessage()
+  {
+  	if (isValid) return "no intersections found";
+  	
+		Coordinate[] intSegs = segInt.getIntersectionSegments();
+    return "found non-noded intersection between "
+        + WKTWriter.toLineString(intSegs[0], intSegs[1])
+        + " and "
+        + WKTWriter.toLineString(intSegs[2], intSegs[3]);
+  }
+  
+  /**
+   * Checks for an intersection and throws
+   * a TopologyException if one is found.
+   *
+   * @throws TopologyException if an intersection is found
+   */
+  public void checkValid()
+  {
+  	execute();
+  	if (! isValid)
+  		throw new TopologyException(getErrorMessage(), segInt.getInteriorIntersection());
+  }
+
+  private void execute()
+  {
+  	if (segInt != null) 
+  		return;
+    checkInteriorIntersections();
+  }
+
+  private void checkInteriorIntersections()
+  {
+  	/**
+  	 * MD - It may even be reliable to simply check whether 
+  	 * end segments (of SegmentStrings) have an interior intersection,
+  	 * since noding should have split any true interior intersections already.
+  	 */
+  	isValid = true;
+  	segInt = new InteriorIntersectionFinder(li);
+  	MCIndexNoder noder = new MCIndexNoder();
+  	noder.setSegmentIntersector(segInt);
+  	noder.computeNodes(segStrings);
+  	if (segInt.hasIntersection()) {
+  		isValid = false;
+  		return;
+  	}
+  }
+  
+}
diff --git a/src/com/vividsolutions/jts/noding/FastSegmentSetIntersectionFinder.java b/src/com/vividsolutions/jts/noding/FastSegmentSetIntersectionFinder.java
new file mode 100644
index 0000000..6524ee5
--- /dev/null
+++ b/src/com/vividsolutions/jts/noding/FastSegmentSetIntersectionFinder.java
@@ -0,0 +1,63 @@
+package com.vividsolutions.jts.noding;
+
+import java.util.*;
+import com.vividsolutions.jts.algorithm.*;
+
+/**
+ * Finds if two sets of {@link SegmentStrings}s intersect.
+ * Uses indexing for fast performance and to optimize repeated tests
+ * against a target set of lines.
+ * Short-circuited to return as soon an intersection is found.
+ *
+ * @version 1.7
+ */
+public class FastSegmentSetIntersectionFinder 
+{
+	private SegmentSetMutualIntersector segSetMutInt; 
+	// for testing purposes
+//	private SimpleSegmentSetMutualIntersector mci;  
+
+	public FastSegmentSetIntersectionFinder(Collection baseSegStrings)
+	{
+		init(baseSegStrings);
+	}
+	
+	private void init(Collection baseSegStrings)
+	{
+    segSetMutInt = new MCIndexSegmentSetMutualIntersector();
+//    segSetMutInt = new MCIndexIntersectionSegmentSetMutualIntersector();
+    
+//		mci = new SimpleSegmentSetMutualIntersector();
+		segSetMutInt.setBaseSegments(baseSegStrings);
+	}
+	
+	/**
+	 * Gets the segment set intersector used by this class.
+	 * This allows other uses of the same underlying indexed structure.
+	 * 
+	 * @return the segment set intersector used
+	 */
+	public SegmentSetMutualIntersector getSegmentSetIntersector()
+	{
+		return segSetMutInt;
+	}
+	
+  private static LineIntersector li = new RobustLineIntersector();
+
+	public boolean intersects(Collection segStrings)
+	{
+		SegmentIntersectionDetector intFinder = new SegmentIntersectionDetector(li);
+		segSetMutInt.setSegmentIntersector(intFinder);
+
+		segSetMutInt.process(segStrings);
+		return intFinder.hasIntersection();
+	}
+	
+	public boolean intersects(Collection segStrings, SegmentIntersectionDetector intDetector)
+	{
+		segSetMutInt.setSegmentIntersector(intDetector);
+
+		segSetMutInt.process(segStrings);
+		return intDetector.hasIntersection();
+	}
+}
diff --git a/src/com/vividsolutions/jts/noding/InteriorIntersectionFinder.java b/src/com/vividsolutions/jts/noding/InteriorIntersectionFinder.java
new file mode 100644
index 0000000..a105b72
--- /dev/null
+++ b/src/com/vividsolutions/jts/noding/InteriorIntersectionFinder.java
@@ -0,0 +1,180 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.noding;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.algorithm.LineIntersector;
+//import com.vividsolutions.jts.util.Debug;
+
+/**
+ * Finds an interior intersection in a set of {@link SegmentString}s,
+ * if one exists.  Only the first intersection found is reported.
+ *
+ * @version 1.7
+ */
+public class InteriorIntersectionFinder
+    implements SegmentIntersector
+{
+	private boolean isCheckEndSegmentsOnly = false;
+  private LineIntersector li;
+  private Coordinate interiorIntersection = null;
+  private Coordinate[] intSegments = null;
+
+  /**
+   * Creates an intersection finder which finds an interior intersection
+   * if one exists
+   *
+   * @param li the LineIntersector to use
+   */
+  public InteriorIntersectionFinder(LineIntersector li)
+  {
+    this.li = li;
+    interiorIntersection = null;
+  }
+
+  /**
+   * Sets whether only end segments should be tested for interior intersection.
+   * This is a performance optimization that may be used if
+   * the segments have been previously noded by an appropriate algorithm.
+   * It may be known that any potential noding failures will occur only in
+   * end segments.
+   * 
+   * @param isCheckEndSegmentsOnly whether to test only end segments
+   */
+  public void setCheckEndSegmentsOnly(boolean isCheckEndSegmentsOnly)
+  {
+  	this.isCheckEndSegmentsOnly = isCheckEndSegmentsOnly;
+  }
+  
+  /**
+   * Tests whether an intersection was found.
+   * 
+   * @return true if an intersection was found
+   */
+  public boolean hasIntersection() 
+  { 
+  	return interiorIntersection != null; 
+  }
+  
+  /**
+   * Gets the computed location of the intersection.
+   * Due to round-off, the location may not be exact.
+   * 
+   * @return the coordinate for the intersection location
+   */
+  public Coordinate getInteriorIntersection()  
+  {    
+  	return interiorIntersection;  
+  }
+
+  /**
+   * Gets the endpoints of the intersecting segments.
+   * 
+   * @return an array of the segment endpoints (p00, p01, p10, p11)
+   */
+  public Coordinate[] getIntersectionSegments()
+  {
+  	return intSegments;
+  }
+  
+  /**
+   * This method is called by clients
+   * of the {@link SegmentIntersector} class to process
+   * intersections for two segments of the {@link SegmentStrings} being intersected.
+   * Note that some clients (such as {@link MonotoneChain}s) may optimize away
+   * this call for segment pairs which they have determined do not intersect
+   * (e.g. by an disjoint envelope test).
+   */
+  public void processIntersections(
+      SegmentString e0,  int segIndex0,
+      SegmentString e1,  int segIndex1
+      )
+  {
+  	// short-circuit if intersection already found
+  	if (hasIntersection())
+  		return;
+  	
+    // don't bother intersecting a segment with itself
+    if (e0 == e1 && segIndex0 == segIndex1) return;
+
+    /**
+     * If enabled, only test end segments (on either segString).
+     * 
+     */
+    if (isCheckEndSegmentsOnly) {
+    	boolean isEndSegPresent = isEndSegment(e0, segIndex0) || isEndSegment(e1, segIndex1);
+    	if (! isEndSegPresent)
+    		return;
+    }
+    
+    Coordinate p00 = e0.getCoordinates()[segIndex0];
+    Coordinate p01 = e0.getCoordinates()[segIndex0 + 1];
+    Coordinate p10 = e1.getCoordinates()[segIndex1];
+    Coordinate p11 = e1.getCoordinates()[segIndex1 + 1];
+    
+    li.computeIntersection(p00, p01, p10, p11);
+//if (li.hasIntersection() && li.isProper()) Debug.println(li);
+
+    if (li.hasIntersection()) {
+      if (li.isInteriorIntersection()) {
+      	intSegments = new Coordinate[4];
+      	intSegments[0] = p00;
+      	intSegments[1] = p01;
+      	intSegments[2] = p10;
+      	intSegments[3] = p11;
+      	
+      	interiorIntersection = li.getIntersection(0);
+      }
+    }
+  }
+  
+  /**
+   * Tests whether a segment in a {@link SegmentString} is an end segment.
+   * (either the first or last).
+   * 
+   * @param segStr a segment string
+   * @param index the index of a segment in the segment string
+   * @return true if the segment is an end segment
+   */
+  private boolean isEndSegment(SegmentString segStr, int index)
+  {
+  	if (index == 0) return true;
+  	if (index >= segStr.size() - 2) return true;
+  	return false;
+  }
+  
+  public boolean isDone()
+  { 
+  	return interiorIntersection != null;
+  }
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/noding/IntersectionAdder.java b/src/com/vividsolutions/jts/noding/IntersectionAdder.java
index 859e0b8..798d81a 100644
--- a/src/com/vividsolutions/jts/noding/IntersectionAdder.java
+++ b/src/com/vividsolutions/jts/noding/IntersectionAdder.java
@@ -168,8 +168,8 @@ numTests++;
       // only intersection.
       if (! isTrivialIntersection(e0, segIndex0, e1, segIndex1)) {
         hasIntersection = true;
-        e0.addIntersections(li, segIndex0, 0);
-        e1.addIntersections(li, segIndex1, 1);
+        ((NodedSegmentString) e0).addIntersections(li, segIndex0, 0);
+        ((NodedSegmentString) e1).addIntersections(li, segIndex1, 1);
         if (li.isProper()) {
           numProperIntersections++;
 //Debug.println(li.toString());  Debug.println(li.getIntersection(0));
@@ -180,4 +180,11 @@ numTests++;
       }
     }
   }
+  
+  /**
+   * Always process all intersections
+   * 
+   * @return false always
+   */
+  public boolean isDone() { return false; }
 }
diff --git a/src/com/vividsolutions/jts/noding/IntersectionFinderAdder.java b/src/com/vividsolutions/jts/noding/IntersectionFinderAdder.java
index f1aad72..dcd9c08 100644
--- a/src/com/vividsolutions/jts/noding/IntersectionFinderAdder.java
+++ b/src/com/vividsolutions/jts/noding/IntersectionFinderAdder.java
@@ -1,3 +1,35 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
 package com.vividsolutions.jts.noding;
 
 import java.util.*;
@@ -60,9 +92,17 @@ public class IntersectionFinderAdder
         for (int intIndex = 0; intIndex < li.getIntersectionNum(); intIndex++) {
           interiorIntersections.add(li.getIntersection(intIndex));
         }
-        e0.addIntersections(li, segIndex0, 0);
-        e1.addIntersections(li, segIndex1, 1);
+        ((NodedSegmentString) e0).addIntersections(li, segIndex0, 0);
+        ((NodedSegmentString) e1).addIntersections(li, segIndex1, 1);
       }
     }
   }
+  
+  /**
+   * Always process all intersections
+   * 
+   * @return false always
+   */
+  public boolean isDone() { return false; }
+
 }
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/noding/MCIndexNoder.java b/src/com/vividsolutions/jts/noding/MCIndexNoder.java
index b7553e2..2f905a5 100644
--- a/src/com/vividsolutions/jts/noding/MCIndexNoder.java
+++ b/src/com/vividsolutions/jts/noding/MCIndexNoder.java
@@ -67,7 +67,7 @@ public class MCIndexNoder
 
   public Collection getNodedSubstrings()
   {
-    return  SegmentString.getNodedSubstrings(nodedSegStrings);
+    return  NodedSegmentString.getNodedSubstrings(nodedSegStrings);
   }
 
   public void computeNodes(Collection inputSegStrings)
@@ -97,6 +97,9 @@ public class MCIndexNoder
           queryChain.computeOverlaps(testChain, overlapAction);
           nOverlaps++;
         }
+        // short-circuit if possible
+        if (segInt.isDone())
+        	return;
       }
     }
   }
diff --git a/src/com/vividsolutions/jts/noding/MCIndexNoder.java b/src/com/vividsolutions/jts/noding/MCIndexSegmentSetMutualIntersector.java
similarity index 61%
copy from src/com/vividsolutions/jts/noding/MCIndexNoder.java
copy to src/com/vividsolutions/jts/noding/MCIndexSegmentSetMutualIntersector.java
index b7553e2..67e0afb 100644
--- a/src/com/vividsolutions/jts/noding/MCIndexNoder.java
+++ b/src/com/vividsolutions/jts/noding/MCIndexSegmentSetMutualIntersector.java
@@ -1,133 +1,148 @@
-
-/*
- * The JTS Topology Suite is a collection of Java classes that
- * implement the fundamental operations required to validate a given
- * geo-spatial data set to a known topological specification.
- *
- * Copyright (C) 2001 Vivid Solutions
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * For more information, contact:
- *
- *     Vivid Solutions
- *     Suite #1A
- *     2328 Government Street
- *     Victoria BC  V8T 5G5
- *     Canada
- *
- *     (250)385-6040
- *     www.vividsolutions.com
- */
-package com.vividsolutions.jts.noding;
-
-import com.vividsolutions.jts.index.*;
-import com.vividsolutions.jts.index.chain.*;
-import com.vividsolutions.jts.index.strtree.*;
-import java.util.*;
-
-/**
- * Nodes a set of {@link SegmentStrings} using a index based
- * on {@link MonotoneChain}s and a {@link SpatialIndex}.
- * The {@link SpatialIndex} used should be something that supports
- * envelope (range) queries efficiently (such as a {@link Quadtree}
- * or {@link STRtree}.
- *
- * @version 1.7
- */
-public class MCIndexNoder
-    extends SinglePassNoder
-{
-  private List monoChains = new ArrayList();
-  private SpatialIndex index= new STRtree();
-  private int idCounter = 0;
-  private Collection nodedSegStrings;
-  // statistics
-  private int nOverlaps = 0;
-
-  public MCIndexNoder()
-  {
-  }
-
-  public List getMonotoneChains() { return monoChains; }
-
-  public SpatialIndex getIndex() { return index; }
-
-  public Collection getNodedSubstrings()
-  {
-    return  SegmentString.getNodedSubstrings(nodedSegStrings);
-  }
-
-  public void computeNodes(Collection inputSegStrings)
-  {
-    this.nodedSegStrings = inputSegStrings;
-    for (Iterator i = inputSegStrings.iterator(); i.hasNext(); ) {
-      add((SegmentString) i.next());
-    }
-    intersectChains();
-//System.out.println("MCIndexNoder: # chain overlaps = " + nOverlaps);
-  }
-
-  private void intersectChains()
-  {
-    MonotoneChainOverlapAction overlapAction = new SegmentOverlapAction(segInt);
-
-    for (Iterator i = monoChains.iterator(); i.hasNext(); ) {
-      MonotoneChain queryChain = (MonotoneChain) i.next();
-      List overlapChains = index.query(queryChain.getEnvelope());
-      for (Iterator j = overlapChains.iterator(); j.hasNext(); ) {
-        MonotoneChain testChain = (MonotoneChain) j.next();
-        /**
-         * following test makes sure we only compare each pair of chains once
-         * and that we don't compare a chain to itself
-         */
-        if (testChain.getId() > queryChain.getId()) {
-          queryChain.computeOverlaps(testChain, overlapAction);
-          nOverlaps++;
-        }
-      }
-    }
-  }
-
-  private void add(SegmentString segStr)
-  {
-    List segChains = MonotoneChainBuilder.getChains(segStr.getCoordinates(), segStr);
-    for (Iterator i = segChains.iterator(); i.hasNext(); ) {
-      MonotoneChain mc = (MonotoneChain) i.next();
-      mc.setId(idCounter++);
-      index.insert(mc.getEnvelope(), mc);
-      monoChains.add(mc);
-    }
-  }
-
-  public class SegmentOverlapAction
-      extends MonotoneChainOverlapAction
-  {
-    private SegmentIntersector si = null;
-
-    public SegmentOverlapAction(SegmentIntersector si)
-    {
-      this.si = si;
-    }
-
-    public void overlap(MonotoneChain mc1, int start1, MonotoneChain mc2, int start2)
-    {
-      SegmentString ss1 = (SegmentString) mc1.getContext();
-      SegmentString ss2 = (SegmentString) mc2.getContext();
-      si.processIntersections(ss1, start1, ss2, start2);
-    }
-
-  }
-}
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.noding;
+
+import java.util.*;
+
+import com.vividsolutions.jts.index.SpatialIndex;
+import com.vividsolutions.jts.index.chain.*;
+import com.vividsolutions.jts.index.quadtree.Quadtree;
+import com.vividsolutions.jts.index.strtree.STRtree;
+import com.vividsolutions.jts.noding.SegmentIntersector;
+import com.vividsolutions.jts.noding.SegmentString;
+
+/**
+ * Intersects two sets of {@link SegmentStrings} using a index based
+ * on {@link MonotoneChain}s and a {@link SpatialIndex}.
+ *
+ * @version 1.7
+ */
+public class MCIndexSegmentSetMutualIntersector
+    extends SegmentSetMutualIntersector
+{
+  private List monoChains = new ArrayList();
+  /*
+  * The {@link SpatialIndex} used should be something that supports
+  * envelope (range) queries efficiently (such as a {@link Quadtree}
+  * or {@link STRtree}.
+  */
+  private SpatialIndex index= new STRtree();
+  private int indexCounter = 0;
+  private int processCounter = 0;
+  // statistics
+  private int nOverlaps = 0;
+
+  public MCIndexSegmentSetMutualIntersector()
+  {
+  }
+
+  public List getMonotoneChains() { return monoChains; }
+
+  public SpatialIndex getIndex() { return index; }
+
+  
+  public void setBaseSegments(Collection segStrings)
+  {
+    for (Iterator i = segStrings.iterator(); i.hasNext(); ) {
+      addToIndex((SegmentString) i.next());
+    }
+  }
+  
+  private void addToIndex(SegmentString segStr)
+  {
+    List segChains = MonotoneChainBuilder.getChains(segStr.getCoordinates(), segStr);
+    for (Iterator i = segChains.iterator(); i.hasNext(); ) {
+      MonotoneChain mc = (MonotoneChain) i.next();
+      mc.setId(indexCounter++);
+      index.insert(mc.getEnvelope(), mc);
+    }
+  }
+
+  public void process(Collection segStrings)
+  {
+  	processCounter = indexCounter + 1;
+  	nOverlaps = 0;
+  	monoChains.clear();
+    for (Iterator i = segStrings.iterator(); i.hasNext(); ) {
+      addToMonoChains((SegmentString) i.next());
+    }
+    intersectChains();
+//    System.out.println("MCIndexBichromaticIntersector: # chain overlaps = " + nOverlaps);
+//    System.out.println("MCIndexBichromaticIntersector: # oct chain overlaps = " + nOctOverlaps);
+  }
+
+  private void intersectChains()
+  {
+    MonotoneChainOverlapAction overlapAction = new SegmentOverlapAction(segInt);
+
+    for (Iterator i = monoChains.iterator(); i.hasNext(); ) {
+      MonotoneChain queryChain = (MonotoneChain) i.next();
+      List overlapChains = index.query(queryChain.getEnvelope());
+      for (Iterator j = overlapChains.iterator(); j.hasNext(); ) {
+        MonotoneChain testChain = (MonotoneChain) j.next();
+        queryChain.computeOverlaps(testChain, overlapAction);
+        nOverlaps++;
+        if (segInt.isDone()) return;
+      }
+    }
+  }
+
+  private void addToMonoChains(SegmentString segStr)
+  {
+    List segChains = MonotoneChainBuilder.getChains(segStr.getCoordinates(), segStr);
+    for (Iterator i = segChains.iterator(); i.hasNext(); ) {
+      MonotoneChain mc = (MonotoneChain) i.next();
+      mc.setId(processCounter++);
+      monoChains.add(mc);
+    }
+  }
+
+  public class SegmentOverlapAction
+      extends MonotoneChainOverlapAction
+  {
+    private SegmentIntersector si = null;
+
+    public SegmentOverlapAction(SegmentIntersector si)
+    {
+      this.si = si;
+    }
+
+    public void overlap(MonotoneChain mc1, int start1, MonotoneChain mc2, int start2)
+    {
+      SegmentString ss1 = (SegmentString) mc1.getContext();
+      SegmentString ss2 = (SegmentString) mc2.getContext();
+      si.processIntersections(ss1, start1, ss2, start2);
+    }
+
+  }
+}
diff --git a/src/com/vividsolutions/jts/noding/NodableSegmentString.java b/src/com/vividsolutions/jts/noding/NodableSegmentString.java
new file mode 100644
index 0000000..94a303f
--- /dev/null
+++ b/src/com/vividsolutions/jts/noding/NodableSegmentString.java
@@ -0,0 +1,21 @@
+package com.vividsolutions.jts.noding;
+
+import com.vividsolutions.jts.geom.Coordinate;
+
+/**
+ * An interface for classes which support adding nodes to
+ * a segment string.
+ * 
+ * @author Martin Davis
+ */
+public interface NodableSegmentString
+	extends SegmentString
+{
+  /**
+   * Adds an intersection node for a given point and segment to this segment string.
+   * 
+   * @param intPt the location of the intersection
+   * @param segmentIndex the index of the segment containing the intersection
+   */
+  public void addIntersection(Coordinate intPt, int segmentIndex);
+}
diff --git a/src/com/vividsolutions/jts/noding/SegmentString.java b/src/com/vividsolutions/jts/noding/NodedSegmentString.java
similarity index 60%
copy from src/com/vividsolutions/jts/noding/SegmentString.java
copy to src/com/vividsolutions/jts/noding/NodedSegmentString.java
index 2c7a9a6..fe9d93f 100644
--- a/src/com/vividsolutions/jts/noding/SegmentString.java
+++ b/src/com/vividsolutions/jts/noding/NodedSegmentString.java
@@ -36,6 +36,8 @@ package com.vividsolutions.jts.noding;
 import java.util.*;
 import com.vividsolutions.jts.algorithm.LineIntersector;
 import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.impl.CoordinateArraySequence;
+import com.vividsolutions.jts.io.WKTWriter;
 
 /**
  * Represents a list of contiguous line segments,
@@ -49,8 +51,14 @@ import com.vividsolutions.jts.geom.Coordinate;
  *
  * @version 1.7
  */
-public class SegmentString
+public class NodedSegmentString
+	implements NodableSegmentString
 {
+	/**
+	 * 
+	 * @param segStrings a Collection of NodedSegmentStrings
+	 * @return a Collection of NodedSegmentStrings representing the substrings
+	 */
   public static List getNodedSubstrings(Collection segStrings)
   {
     List resultEdgelist = new ArrayList();
@@ -58,10 +66,15 @@ public class SegmentString
     return resultEdgelist;
   }
 
-  public static void getNodedSubstrings(Collection segStrings, Collection resultEdgelist)
+	/**
+	 * 
+	 * @param segStrings a Collection of NodedSegmentStrings
+	 * @param resultEdgelist a List which will collect the NodedSegmentStrings representing the substrings
+	 */
+ public static void getNodedSubstrings(Collection segStrings, Collection resultEdgelist)
   {
     for (Iterator i = segStrings.iterator(); i.hasNext(); ) {
-      SegmentString ss = (SegmentString) i.next();
+      NodedSegmentString ss = (NodedSegmentString) i.next();
       ss.getNodeList().addSplitEdges(resultEdgelist);
     }
   }
@@ -76,7 +89,7 @@ public class SegmentString
    * @param pts the vertices of the segment string
    * @param data the user-defined data of this segment string (may be null)
    */
-  public SegmentString(Coordinate[] pts, Object data)
+  public NodedSegmentString(Coordinate[] pts, Object data)
   {
     this.pts = pts;
     this.data = data;
@@ -116,9 +129,16 @@ public class SegmentString
   public int getSegmentOctant(int index)
   {
     if (index == pts.length - 1) return -1;
-    return Octant.octant(getCoordinate(index), getCoordinate(index + 1));
+    return safeOctant(getCoordinate(index), getCoordinate(index + 1));
+//    return Octant.octant(getCoordinate(index), getCoordinate(index + 1));
   }
 
+  private int safeOctant(Coordinate p0, Coordinate p1)
+  {
+  	if (p0.equals2D(p1)) return 0;
+  	return Octant.octant(p0, p1);
+  }
+  
   /**
    * Adds EdgeIntersections for one or both
    * intersections found for a segment of an edge to the edge intersection list.
@@ -141,26 +161,50 @@ public class SegmentString
     addIntersection(intPt, segmentIndex);
   }
 
-  public void addIntersection(Coordinate intPt, int segmentIndex)
-  {
-    int normalizedSegmentIndex = segmentIndex;
-//Debug.println("edge intpt: " + intPt + " dist: " + dist);
-      // normalize the intersection point location
-      int nextSegIndex = normalizedSegmentIndex + 1;
-      if (nextSegIndex < pts.length) {
-        Coordinate nextPt = pts[nextSegIndex];
-//Debug.println("next pt: " + nextPt);
+  /**
+   * Adds an intersection node for a given point and segment to this segment string.
+   * 
+   * @param intPt the location of the intersection
+   * @param segmentIndex the index of the segment containing the intersection
+   */
+  public void  addIntersection(Coordinate intPt, int segmentIndex) {
+  	addIntersectionNode(intPt, segmentIndex);
+  }
+  	
+  /**
+   * Adds an intersection node for a given point and segment to this segment string.
+   * If an intersection already exists for this exact location, the existing
+   * node will be returned.
+   * 
+   * @param intPt the location of the intersection
+   * @param segmentIndex the index of the segment containing the intersection
+   * @return the intersection node for the point
+   */
+  public SegmentNode addIntersectionNode(Coordinate intPt, int segmentIndex) {
+		int normalizedSegmentIndex = segmentIndex;
+		//Debug.println("edge intpt: " + intPt + " dist: " + dist);
+		// normalize the intersection point location
+		int nextSegIndex = normalizedSegmentIndex + 1;
+		if (nextSegIndex < pts.length) {
+			Coordinate nextPt = pts[nextSegIndex];
+			//Debug.println("next pt: " + nextPt);
 
-        // Normalize segment index if intPt falls on vertex
-        // The check for point equality is 2D only - Z values are ignored
-        if (intPt.equals2D(nextPt)) {
-//Debug.println("normalized distance");
-            normalizedSegmentIndex = nextSegIndex;
-        }
-      }
-      /**
-      * Add the intersection point to edge intersection list.
-      */
-      SegmentNode ei = nodeList.add(intPt, normalizedSegmentIndex);
+			// Normalize segment index if intPt falls on vertex
+			// The check for point equality is 2D only - Z values are ignored
+			if (intPt.equals2D(nextPt)) {
+				//Debug.println("normalized distance");
+				normalizedSegmentIndex = nextSegIndex;
+			}
+		}
+		/**
+		 * Add the intersection point to edge intersection list.
+		 */
+		SegmentNode ei = nodeList.add(intPt, normalizedSegmentIndex);
+		return ei;
+	}
+  
+  public String toString()
+  {
+  	return WKTWriter.toLineString(new CoordinateArraySequence(pts));
   }
 }
diff --git a/src/com/vividsolutions/jts/noding/NodingValidator.java b/src/com/vividsolutions/jts/noding/NodingValidator.java
index 595bf77..5657a70 100644
--- a/src/com/vividsolutions/jts/noding/NodingValidator.java
+++ b/src/com/vividsolutions/jts/noding/NodingValidator.java
@@ -57,6 +57,7 @@ public class NodingValidator {
 
   public void checkValid()
   {
+  	// MD - is this call required?  Or could it be done in the Interior Intersection code?
     checkEndPtVertexIntersections();
     checkInteriorIntersections();
     checkCollapses();
diff --git a/src/com/vividsolutions/jts/noding/ScaledNoder.java b/src/com/vividsolutions/jts/noding/ScaledNoder.java
index d7aa927..447a4c9 100644
--- a/src/com/vividsolutions/jts/noding/ScaledNoder.java
+++ b/src/com/vividsolutions/jts/noding/ScaledNoder.java
@@ -53,11 +53,12 @@ public class ScaledNoder
 
   private Collection scale(Collection segStrings)
   {
+//  	System.out.println("Scaled: scaleFactor = " + scaleFactor);
     return CollectionUtil.transform(segStrings,
                                     new CollectionUtil.Function() {
       public Object execute(Object obj) {
         SegmentString ss = (SegmentString) obj;
-        return new SegmentString(scale(ss.getCoordinates()), ss.getData());
+        return new NodedSegmentString(scale(ss.getCoordinates()), ss.getData());
       }
                                     }
       );
@@ -68,26 +69,28 @@ public class ScaledNoder
     Coordinate[] roundPts = new Coordinate[pts.length];
     for (int i = 0; i < pts.length; i++) {
       roundPts[i] = new Coordinate(
-      Math.round((pts[i].x - offsetX) * scaleFactor),
-      Math.round((pts[i].y - offsetY) * scaleFactor)
+          Math.round((pts[i].x - offsetX) * scaleFactor),
+          Math.round((pts[i].y - offsetY) * scaleFactor)
         );
     }
-    return roundPts;
+    Coordinate[] roundPtsNoDup = CoordinateArrays.removeRepeatedPoints(roundPts);
+    return roundPtsNoDup;
   }
 
   //private double scale(double val) { return (double) Math.round(val * scaleFactor); }
 
   private void rescale(Collection segStrings)
   {
-    CollectionUtil.apply(segStrings,
-                                    new CollectionUtil.Function() {
-      public Object execute(Object obj) {
-        SegmentString ss = (SegmentString) obj;
-        rescale(ss.getCoordinates());
-        return null;
-      }
-                                    }
-      );
+//  	System.out.println("Rescaled: scaleFactor = " + scaleFactor);
+  	CollectionUtil.apply(segStrings,
+  			new CollectionUtil.Function() {
+  		public Object execute(Object obj) {
+  			SegmentString ss = (SegmentString) obj;
+  			rescale(ss.getCoordinates());
+  			return null;
+  		}
+  	}
+  	);
   }
 
   private void rescale(Coordinate[] pts)
diff --git a/src/com/vividsolutions/jts/noding/SegmentIntersectionDetector.java b/src/com/vividsolutions/jts/noding/SegmentIntersectionDetector.java
new file mode 100644
index 0000000..39df5a3
--- /dev/null
+++ b/src/com/vividsolutions/jts/noding/SegmentIntersectionDetector.java
@@ -0,0 +1,214 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.noding;
+
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.algorithm.LineIntersector;
+import com.vividsolutions.jts.noding.*;;
+//import com.vividsolutions.jts.util.Debug;
+
+/**
+ * Detects and records an intersection between two {@link SegmentString}s,
+ * if one exists.  Only a single intersection is recorded.
+ * This strategy can be configured to search for proper intersections.
+ * In this case, the presence of any intersection will still be recorded,
+ * but searching will continue until either a proper intersection has been found
+ * or no intersections are detected.
+ *
+ * @version 1.7
+ */
+public class SegmentIntersectionDetector
+    implements SegmentIntersector
+{
+  private LineIntersector li;
+  private boolean findProper = false;
+  private boolean findAllTypes = false;
+  
+  private boolean hasIntersection = false;
+  private boolean hasProperIntersection = false;
+  private boolean hasNonProperIntersection = false;
+  
+  private Coordinate intPt = null;
+  private Coordinate[] intSegments = null;
+
+  /**
+   * Creates an intersection finder 
+   *
+   * @param li the LineIntersector to use
+   */
+  public SegmentIntersectionDetector(LineIntersector li)
+  {
+    this.li = li;
+   }
+
+  public void setFindProper(boolean findProper)
+  {
+    this.findProper = findProper;
+  }
+  
+  public void setFindAllIntersectionTypes(boolean findAllTypes)
+  {
+    this.findAllTypes = findAllTypes;
+  }
+  
+  /**
+   * Tests whether an intersection was found.
+   * 
+   * @return true if an intersection was found
+   */
+  public boolean hasIntersection() 
+  { 
+  	return hasIntersection; 
+  }
+  
+  /**
+   * Tests whether a proper intersection was found.
+   * 
+   * @return true if a proper intersection was found
+   */
+  public boolean hasProperIntersection() 
+  { 
+    return hasProperIntersection; 
+  }
+  
+  /**
+   * Tests whether a non-proper intersection was found.
+   * 
+   * @return true if a non-proper intersection was found
+   */
+  public boolean hasNonProperIntersection() 
+  { 
+    return hasNonProperIntersection; 
+  }
+  
+  /**
+   * Gets the computed location of the intersection.
+   * Due to round-off, the location may not be exact.
+   * 
+   * @return the coordinate for the intersection location
+   */
+  public Coordinate getIntersection()  
+  {    
+  	return intPt;  
+  }
+
+
+  /**
+   * Gets the endpoints of the intersecting segments.
+   * 
+   * @return an array of the segment endpoints (p00, p01, p10, p11)
+   */
+  public Coordinate[] getIntersectionSegments()
+  {
+  	return intSegments;
+  }
+  
+  /**
+   * This method is called by clients
+   * of the {@link SegmentIntersector} class to process
+   * intersections for two segments of the {@link SegmentStrings} being intersected.
+   * Note that some clients (such as {@link MonotoneChain}s) may optimize away
+   * this call for segment pairs which they have determined do not intersect
+   * (e.g. by an disjoint envelope test).
+   */
+  public void processIntersections(
+      SegmentString e0,  int segIndex0,
+      SegmentString e1,  int segIndex1
+      )
+  {  	
+    // don't bother intersecting a segment with itself
+    if (e0 == e1 && segIndex0 == segIndex1) return;
+    
+    Coordinate p00 = e0.getCoordinates()[segIndex0];
+    Coordinate p01 = e0.getCoordinates()[segIndex0 + 1];
+    Coordinate p10 = e1.getCoordinates()[segIndex1];
+    Coordinate p11 = e1.getCoordinates()[segIndex1 + 1];
+    
+    li.computeIntersection(p00, p01, p10, p11);
+//  if (li.hasIntersection() && li.isProper()) Debug.println(li);
+
+    if (li.hasIntersection()) {
+			// System.out.println(li);
+    	
+    	// record intersection info
+			hasIntersection = true;
+			
+			boolean isProper = li.isProper();
+			if (isProper)
+				hasProperIntersection = true;
+      if (! isProper)
+        hasNonProperIntersection = true;
+			
+			/**
+			 * If this is the kind of intersection we are searching for
+			 * OR no location has yet been recorded
+			 * save the location data
+			 */
+			boolean saveLocation = true;
+			if (findProper && ! isProper) saveLocation = false;
+			
+			if (intPt == null || saveLocation) {
+
+				// record intersection location (approximate)
+				intPt = li.getIntersection(0);
+
+				// record intersecting segments
+				intSegments = new Coordinate[4];
+				intSegments[0] = p00;
+				intSegments[1] = p01;
+				intSegments[2] = p10;
+				intSegments[3] = p11;
+			}
+		}
+  }
+  
+  public boolean isDone()
+  { 
+    /**
+     * If finding all types, we can stop
+     * when both possible types have been found.
+     */
+    if (findAllTypes) {
+      return hasProperIntersection && hasNonProperIntersection;
+    }
+    
+  	/**
+  	 * If searching for a proper intersection, only stop if one is found
+  	 */
+  	if (findProper) {
+  		return hasProperIntersection;
+  	}
+  	return hasIntersection;
+  }
+}
diff --git a/src/com/vividsolutions/jts/noding/SegmentIntersector.java b/src/com/vividsolutions/jts/noding/SegmentIntersector.java
index 4f959aa..f25fcf5 100644
--- a/src/com/vividsolutions/jts/noding/SegmentIntersector.java
+++ b/src/com/vividsolutions/jts/noding/SegmentIntersector.java
@@ -38,16 +38,18 @@ import com.vividsolutions.jts.algorithm.LineIntersector;
 import com.vividsolutions.jts.util.Debug;
 
 /**
- * Computes the intersections between two line segments in {@link SegmentString}s
- * and adds them to each string.
+ * Processes possible intersections detected by a {@link Noder}.
  * The {@link SegmentIntersector} is passed to a {@link Noder}.
  * The {@link addIntersections} method is called whenever the {@link Noder}
  * detects that two SegmentStrings <i>might</i> intersect.
+ * This class may be used either to find all intersections, or
+ * to detect the presence of an intersection.  In the latter case,
+ * Noders may choose to short-circuit their computation by calling the
+ * {@link isDone} method.
  * This class is an example of the <i>Strategy</i> pattern.
  *
  * @version 1.7
  */
-
 public interface SegmentIntersector
 {
   /**
@@ -59,4 +61,12 @@ public interface SegmentIntersector
     SegmentString e0,  int segIndex0,
     SegmentString e1,  int segIndex1
      );
+  
+  /**
+   * Reports whether the client of this class
+   * needs to continue testing all intersections in an arrangement.
+   * 
+   * @return true if there is no need to continue testing segments
+   */
+  boolean isDone();
 }
diff --git a/src/com/vividsolutions/jts/noding/SegmentNode.java b/src/com/vividsolutions/jts/noding/SegmentNode.java
index ace5690..93f311e 100644
--- a/src/com/vividsolutions/jts/noding/SegmentNode.java
+++ b/src/com/vividsolutions/jts/noding/SegmentNode.java
@@ -43,13 +43,13 @@ import com.vividsolutions.jts.geom.Coordinate;
 public class SegmentNode
     implements Comparable
 {
-  private final SegmentString segString;
+  private final NodedSegmentString segString;
   public final Coordinate coord;   // the point of intersection
   public final int segmentIndex;   // the index of the containing line segment in the parent edge
   private final int segmentOctant;
   private final boolean isInterior;
 
-  public SegmentNode(SegmentString segString, Coordinate coord, int segmentIndex, int segmentOctant) {
+  public SegmentNode(NodedSegmentString segString, Coordinate coord, int segmentIndex, int segmentOctant) {
     this.segString = segString;
     this.coord = new Coordinate(coord);
     this.segmentIndex = segmentIndex;
diff --git a/src/com/vividsolutions/jts/noding/SegmentNodeList.java b/src/com/vividsolutions/jts/noding/SegmentNodeList.java
index b58754e..4d91784 100644
--- a/src/com/vividsolutions/jts/noding/SegmentNodeList.java
+++ b/src/com/vividsolutions/jts/noding/SegmentNodeList.java
@@ -45,14 +45,14 @@ import com.vividsolutions.jts.util.*;
 public class SegmentNodeList
 {
   private Map nodeMap = new TreeMap();
-  private SegmentString edge;  // the parent edge
+  private NodedSegmentString edge;  // the parent edge
 
-  public SegmentNodeList(SegmentString edge)
+  public SegmentNodeList(NodedSegmentString edge)
   {
     this.edge = edge;
   }
 
-  public SegmentString getEdge() { return edge; }
+  public NodedSegmentString getEdge() { return edge; }
 
   /**
    * Adds an intersection into the list, if it isn't already there.
@@ -248,7 +248,7 @@ public class SegmentNodeList
     }
     if (useIntPt1) pts[ipt] = ei1.coord;
 
-    return new SegmentString(pts, edge.getData());
+    return new NodedSegmentString(pts, edge.getData());
   }
 
   public void print(PrintStream out)
@@ -266,7 +266,7 @@ class NodeVertexIterator
     implements Iterator
 {
   private SegmentNodeList nodeList;
-  private SegmentString edge;
+  private NodedSegmentString edge;
   private Iterator nodeIt;
   private SegmentNode currNode = null;
   private SegmentNode nextNode = null;
diff --git a/src/com/vividsolutions/jts/noding/SegmentIntersector.java b/src/com/vividsolutions/jts/noding/SegmentSetMutualIntersector.java
similarity index 52%
copy from src/com/vividsolutions/jts/noding/SegmentIntersector.java
copy to src/com/vividsolutions/jts/noding/SegmentSetMutualIntersector.java
index 4f959aa..2d41742 100644
--- a/src/com/vividsolutions/jts/noding/SegmentIntersector.java
+++ b/src/com/vividsolutions/jts/noding/SegmentSetMutualIntersector.java
@@ -1,62 +1,76 @@
-/*
- * The JTS Topology Suite is a collection of Java classes that
- * implement the fundamental operations required to validate a given
- * geo-spatial data set to a known topological specification.
- *
- * Copyright (C) 2001 Vivid Solutions
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * For more information, contact:
- *
- *     Vivid Solutions
- *     Suite #1A
- *     2328 Government Street
- *     Victoria BC  V8T 5G5
- *     Canada
- *
- *     (250)385-6040
- *     www.vividsolutions.com
- */
-package com.vividsolutions.jts.noding;
-
-import java.util.*;
-import com.vividsolutions.jts.geom.*;
-import com.vividsolutions.jts.algorithm.LineIntersector;
-import com.vividsolutions.jts.util.Debug;
-
-/**
- * Computes the intersections between two line segments in {@link SegmentString}s
- * and adds them to each string.
- * The {@link SegmentIntersector} is passed to a {@link Noder}.
- * The {@link addIntersections} method is called whenever the {@link Noder}
- * detects that two SegmentStrings <i>might</i> intersect.
- * This class is an example of the <i>Strategy</i> pattern.
- *
- * @version 1.7
- */
-
-public interface SegmentIntersector
-{
-  /**
-   * This method is called by clients
-   * of the {@link SegmentIntersector} interface to process
-   * intersections for two segments of the {@link SegmentStrings} being intersected.
-   */
-  void processIntersections(
-    SegmentString e0,  int segIndex0,
-    SegmentString e1,  int segIndex1
-     );
-}
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.noding;
+
+import java.util.*;
+
+/**
+ * An intersector for the red-blue intersection problem.
+ * In this class of line arrangement problem,
+ * two disjoint sets of linestrings are provided.
+ * It is assumed that within
+ * each set, no two linestrings intersect except possibly at their endpoints.
+ * Implementations can take advantage of this fact to optimize processing.
+ *
+ * @author Martin Davis
+ * @version 1.10
+ */
+public abstract class SegmentSetMutualIntersector
+{
+  protected SegmentIntersector segInt;
+
+  /**
+   * Sets the {@link SegmentIntersector} to use with this intersector.
+   * The SegmentIntersector will either rocord or add intersection nodes
+   * for the input segment strings.
+   *
+   * @param segInt the segment intersector to use
+   */
+  public void setSegmentIntersector(SegmentIntersector segInt)
+  {
+    this.segInt = segInt;
+  }
+
+  /**
+   * 
+   * @param segStrings0 a collection of {@link SegmentString}s to node
+   */
+  public abstract void setBaseSegments(Collection segStrings);
+  
+  /**
+   * Computes the intersections for two collections of {@link SegmentString}s.
+   *
+  * @param segStrings1 a collection of {@link SegmentString}s to node
+   */
+  public abstract void process(Collection segStrings);
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/noding/SegmentString.java b/src/com/vividsolutions/jts/noding/SegmentString.java
index 2c7a9a6..ca5439b 100644
--- a/src/com/vividsolutions/jts/noding/SegmentString.java
+++ b/src/com/vividsolutions/jts/noding/SegmentString.java
@@ -33,134 +33,33 @@
  */
 package com.vividsolutions.jts.noding;
 
-import java.util.*;
-import com.vividsolutions.jts.algorithm.LineIntersector;
 import com.vividsolutions.jts.geom.Coordinate;
 
 /**
- * Represents a list of contiguous line segments,
- * and supports noding the segments.
- * The line segments are represented by an array of {@link Coordinate}s.
- * Intended to optimize the noding of contiguous segments by
- * reducing the number of allocated objects.
+ * An interface for classes which represent a sequence of contiguous line segments.
  * SegmentStrings can carry a context object, which is useful
  * for preserving topological or parentage information.
- * All noded substrings are initialized with the same context object.
  *
  * @version 1.7
  */
-public class SegmentString
+public interface SegmentString
 {
-  public static List getNodedSubstrings(Collection segStrings)
-  {
-    List resultEdgelist = new ArrayList();
-    getNodedSubstrings(segStrings, resultEdgelist);
-    return resultEdgelist;
-  }
-
-  public static void getNodedSubstrings(Collection segStrings, Collection resultEdgelist)
-  {
-    for (Iterator i = segStrings.iterator(); i.hasNext(); ) {
-      SegmentString ss = (SegmentString) i.next();
-      ss.getNodeList().addSplitEdges(resultEdgelist);
-    }
-  }
-
-  private SegmentNodeList nodeList = new SegmentNodeList(this);
-  private Coordinate[] pts;
-  private Object data;
-
-  /**
-   * Creates a new segment string from a list of vertices.
-   *
-   * @param pts the vertices of the segment string
-   * @param data the user-defined data of this segment string (may be null)
-   */
-  public SegmentString(Coordinate[] pts, Object data)
-  {
-    this.pts = pts;
-    this.data = data;
-  }
-
   /**
    * Gets the user-defined data for this segment string.
    *
    * @return the user-defined data
    */
-  public Object getData() { return data; }
+  public Object getData();
 
   /**
    * Sets the user-defined data for this segment string.
    *
    * @param data an Object containing user-defined data
    */
-  public void setData(Object data) { this.data = data; }
-
-  public SegmentNodeList getNodeList() { return nodeList; }
-  public int size() { return pts.length; }
-  public Coordinate getCoordinate(int i) { return pts[i]; }
-  public Coordinate[] getCoordinates() { return pts; }
-
-  public boolean isClosed()
-  {
-    return pts[0].equals(pts[pts.length - 1]);
-  }
-
-  /**
-   * Gets the octant of the segment starting at vertex <code>index</code>.
-   *
-   * @param index the index of the vertex starting the segment.  Must not be
-   * the last index in the vertex list
-   * @return the octant of the segment at the vertex
-   */
-  public int getSegmentOctant(int index)
-  {
-    if (index == pts.length - 1) return -1;
-    return Octant.octant(getCoordinate(index), getCoordinate(index + 1));
-  }
-
-  /**
-   * Adds EdgeIntersections for one or both
-   * intersections found for a segment of an edge to the edge intersection list.
-   */
-  public void addIntersections(LineIntersector li, int segmentIndex, int geomIndex)
-  {
-    for (int i = 0; i < li.getIntersectionNum(); i++) {
-      addIntersection(li, segmentIndex, geomIndex, i);
-    }
-  }
-  /**
-   * Add an SegmentNode for intersection intIndex.
-   * An intersection that falls exactly on a vertex
-   * of the SegmentString is normalized
-   * to use the higher of the two possible segmentIndexes
-   */
-  public void addIntersection(LineIntersector li, int segmentIndex, int geomIndex, int intIndex)
-  {
-    Coordinate intPt = new Coordinate(li.getIntersection(intIndex));
-    addIntersection(intPt, segmentIndex);
-  }
-
-  public void addIntersection(Coordinate intPt, int segmentIndex)
-  {
-    int normalizedSegmentIndex = segmentIndex;
-//Debug.println("edge intpt: " + intPt + " dist: " + dist);
-      // normalize the intersection point location
-      int nextSegIndex = normalizedSegmentIndex + 1;
-      if (nextSegIndex < pts.length) {
-        Coordinate nextPt = pts[nextSegIndex];
-//Debug.println("next pt: " + nextPt);
+  public void setData(Object data);
 
-        // Normalize segment index if intPt falls on vertex
-        // The check for point equality is 2D only - Z values are ignored
-        if (intPt.equals2D(nextPt)) {
-//Debug.println("normalized distance");
-            normalizedSegmentIndex = nextSegIndex;
-        }
-      }
-      /**
-      * Add the intersection point to edge intersection list.
-      */
-      SegmentNode ei = nodeList.add(intPt, normalizedSegmentIndex);
-  }
+  public int size();
+  public Coordinate getCoordinate(int i);
+  public Coordinate[] getCoordinates();
+  public boolean isClosed();
 }
diff --git a/src/com/vividsolutions/jts/noding/SegmentStringDissolver.java b/src/com/vividsolutions/jts/noding/SegmentStringDissolver.java
index 90cba46..748ea45 100644
--- a/src/com/vividsolutions/jts/noding/SegmentStringDissolver.java
+++ b/src/com/vividsolutions/jts/noding/SegmentStringDissolver.java
@@ -38,19 +38,31 @@ import com.vividsolutions.jts.geom.*;
 /**
  * Dissolves a noded collection of {@link SegmentString}s to produce
  * a set of merged linework with unique segments.
- * A custom merging strategy can be applied when two identical (up to orientation)
+ * A custom {@link SegmentStringMerger} merging strategy
+ * can be supplied.  
+ * This strategy will be called when two identical (up to orientation)
  * strings are dissolved together.
- * The default merging strategy is simply to discard the merged string.
+ * The default merging strategy is simply to discard one of the merged strings.
  * <p>
  * A common use for this class is to merge noded edges
  * while preserving topological labelling.
+ * This requires a custom merging strategy to be supplied 
+ * to merge the topology labels appropriately.
  *
  * @version 1.7
  * @see SegmentStringMerger
  */
 public class SegmentStringDissolver
 {
-  public interface SegmentStringMerger {
+	/**
+	 * A merging strategy which can be used to update the context data of {@link SegmentString}s 
+	 * which are merged during the dissolve process.
+	 * 
+	 * @author mbdavis
+	 *
+	 */
+  public interface SegmentStringMerger 
+  {
     /**
      * Updates the context data of a SegmentString
      * when an identical (up to orientation) one is found during dissolving.
@@ -137,9 +149,6 @@ public class SegmentStringDissolver
   }
 
 /*
-  public static CoordinateArrays.BidirectionalComparator ptsComp
-      = new CoordinateArrays.BidirectionalComparator();
-
 
   private boolean checkAdded(OrientedCoordinateArray oca)
   {
diff --git a/src/com/vividsolutions/jts/noding/SegmentStringUtil.java b/src/com/vividsolutions/jts/noding/SegmentStringUtil.java
new file mode 100644
index 0000000..47ffd86
--- /dev/null
+++ b/src/com/vividsolutions/jts/noding/SegmentStringUtil.java
@@ -0,0 +1,35 @@
+package com.vividsolutions.jts.noding;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.util.LinearComponentExtracter;
+
+/**
+ * Utility methods for processing {@link SegmentString}s.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class SegmentStringUtil 
+{
+  /**
+   * Extracts all linear components from a given {@link Geometry}
+   * to {@link SegmentString}s.
+   * The SegmentString data item is set to be the source Geometry.
+   * 
+   * @param geom the geometry to extract from
+   * @return a List of SegmentStrings
+   */
+  public static List extractSegmentStrings(Geometry geom)
+  {
+    List segStr = new ArrayList();
+    List lines = LinearComponentExtracter.getLines(geom);
+    for (Iterator i = lines.iterator(); i.hasNext(); ) {
+      LineString line = (LineString) i.next();
+      Coordinate[] pts = line.getCoordinates();
+      segStr.add(new NodedSegmentString(pts, geom));
+    }
+    return segStr;
+  }
+
+}
diff --git a/src/com/vividsolutions/jts/noding/SimpleNoder.java b/src/com/vividsolutions/jts/noding/SimpleNoder.java
index b238852..8c48f2b 100644
--- a/src/com/vividsolutions/jts/noding/SimpleNoder.java
+++ b/src/com/vividsolutions/jts/noding/SimpleNoder.java
@@ -55,7 +55,7 @@ public class SimpleNoder
 
   public Collection getNodedSubstrings()
   {
-    return  SegmentString.getNodedSubstrings(nodedSegStrings);
+    return  NodedSegmentString.getNodedSubstrings(nodedSegStrings);
   }
 
   public void computeNodes(Collection inputSegStrings)
diff --git a/src/com/vividsolutions/jts/noding/SimpleNoder.java b/src/com/vividsolutions/jts/noding/SimpleSegmentSetMutualIntersector.java
similarity index 55%
copy from src/com/vividsolutions/jts/noding/SimpleNoder.java
copy to src/com/vividsolutions/jts/noding/SimpleSegmentSetMutualIntersector.java
index b238852..e79d351 100644
--- a/src/com/vividsolutions/jts/noding/SimpleNoder.java
+++ b/src/com/vividsolutions/jts/noding/SimpleSegmentSetMutualIntersector.java
@@ -1,84 +1,85 @@
-
-/*
- * The JTS Topology Suite is a collection of Java classes that
- * implement the fundamental operations required to validate a given
- * geo-spatial data set to a known topological specification.
- *
- * Copyright (C) 2001 Vivid Solutions
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * For more information, contact:
- *
- *     Vivid Solutions
- *     Suite #1A
- *     2328 Government Street
- *     Victoria BC  V8T 5G5
- *     Canada
- *
- *     (250)385-6040
- *     www.vividsolutions.com
- */
-package com.vividsolutions.jts.noding;
-
-import java.util.*;
-import com.vividsolutions.jts.geom.*;
-
-/**
- * Nodes a set of {@link SegmentString}s by
- * performing a brute-force comparison of every segment to every other one.
- * This has n^2 performance, so is too slow for use on large numbers
- * of segments.
- *
- * @version 1.7
- */
-public class SimpleNoder
-    extends SinglePassNoder
-{
-
-  private Collection nodedSegStrings;
-
-  public SimpleNoder() {
-  }
-
-  public Collection getNodedSubstrings()
-  {
-    return  SegmentString.getNodedSubstrings(nodedSegStrings);
-  }
-
-  public void computeNodes(Collection inputSegStrings)
-  {
-    this.nodedSegStrings = inputSegStrings;
-    for (Iterator i0 = inputSegStrings.iterator(); i0.hasNext(); ) {
-      SegmentString edge0 = (SegmentString) i0.next();
-      for (Iterator i1 = inputSegStrings.iterator(); i1.hasNext(); ) {
-        SegmentString edge1 = (SegmentString) i1.next();
-        computeIntersects(edge0, edge1);
-      }
-    }
-  }
-
-  private void computeIntersects(SegmentString e0, SegmentString e1)
-  {
-    Coordinate[] pts0 = e0.getCoordinates();
-    Coordinate[] pts1 = e1.getCoordinates();
-    for (int i0 = 0; i0 < pts0.length - 1; i0++) {
-      for (int i1 = 0; i1 < pts1.length - 1; i1++) {
-        segInt.processIntersections(e0, i0, e1, i1);
-      }
-    }
-  }
-
-}
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.noding;
+
+import java.util.*;
+
+import com.vividsolutions.jts.geom.Coordinate;
+
+
+/**
+ * Intersects two sets of {@link SegmentStrings} using 
+ * brute-force comparasion.
+ *
+ * @version 1.7
+ */
+public class SimpleSegmentSetMutualIntersector
+    extends SegmentSetMutualIntersector
+{
+	private Collection baseSegStrings;
+
+  public SimpleSegmentSetMutualIntersector()
+  {
+  }
+  
+  public void setBaseSegments(Collection segStrings)
+  {
+  	this.baseSegStrings = segStrings;
+  }
+  
+  public void process(Collection segStrings)
+  {
+    for (Iterator i = baseSegStrings.iterator(); i.hasNext(); ) {
+    	SegmentString baseSS = (SegmentString) i.next();
+    	for (Iterator j = segStrings.iterator(); j.hasNext(); ) {
+      	SegmentString ss = (SegmentString) j.next();
+      	intersect(baseSS, ss);
+        if (segInt.isDone()) return;
+    	}
+    }
+  }
+
+  private void intersect(SegmentString ss0, SegmentString ss1)
+  {
+    Coordinate[] pts0 = ss0.getCoordinates();
+    Coordinate[] pts1 = ss1.getCoordinates();
+    for (int i0 = 0; i0 < pts0.length - 1; i0++) {
+      for (int i1 = 0; i1 < pts1.length - 1; i1++) {
+        segInt.processIntersections(ss0, i0, ss1, i1);
+        if (segInt.isDone()) return;
+      }
+    }
+
+  }
+
+}
diff --git a/src/com/vividsolutions/jts/noding/snapround/GeometryNoder.java b/src/com/vividsolutions/jts/noding/snapround/GeometryNoder.java
new file mode 100644
index 0000000..6b71cca
--- /dev/null
+++ b/src/com/vividsolutions/jts/noding/snapround/GeometryNoder.java
@@ -0,0 +1,87 @@
+package com.vividsolutions.jts.noding.snapround;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.util.*;
+import com.vividsolutions.jts.noding.*;
+import com.vividsolutions.jts.noding.snapround.*;
+
+/**
+ * Nodes a list of {@link Geometry}s using Snap Rounding
+ * 
+ */
+public class GeometryNoder
+{
+  private GeometryFactory geomFact;
+  private PrecisionModel pm;
+  private boolean isValidityChecked = false;
+
+  public GeometryNoder(PrecisionModel pm) {
+    this.pm = pm;
+  }
+
+  public void setValidate(boolean isValidityChecked)
+  {
+  	this.isValidityChecked = isValidityChecked;
+  }
+  
+  /**
+   * Nodes the linework of a set of Geometrys using SnapRounding. 
+   * 
+   * @param geoms a Collection of Geometrys of any type
+   * @return a List of LineStrings representing the noded linework of the input
+   */
+  public List node(Collection geoms)
+  {
+    // get geometry factory
+    Geometry geom0 = (Geometry) geoms.iterator().next();
+    geomFact = geom0.getFactory();
+
+    List segStrings = toSegmentStrings(extractLines(geoms));
+    //Noder sr = new SimpleSnapRounder(pm);
+    Noder sr = new MCIndexSnapRounder(pm);
+    sr.computeNodes(segStrings);
+    Collection nodedLines = sr.getNodedSubstrings();
+
+    if (isValidityChecked) {
+    	NodingValidator nv = new NodingValidator(nodedLines);
+    	nv.checkValid();
+    }
+
+    return toLineStrings(nodedLines);
+  }
+
+  private List toLineStrings(Collection segStrings)
+  {
+    List lines = new ArrayList();
+    for (Iterator it = segStrings.iterator(); it.hasNext(); ) {
+      SegmentString ss = (SegmentString) it.next();
+      // skip collapsed lines
+      if (ss.size() < 2)
+      	continue;
+      lines.add(geomFact.createLineString(ss.getCoordinates()));
+    }
+    return lines;
+  }
+
+  private List extractLines(Collection geoms)
+  {
+    List lines = new ArrayList();
+    LinearComponentExtracter lce = new LinearComponentExtracter(lines);
+    for (Iterator it = geoms.iterator(); it.hasNext(); ) {
+      Geometry geom = (Geometry) it.next();
+      geom.apply(lce);
+    }
+    return lines;
+  }
+
+  private List toSegmentStrings(Collection lines)
+  {
+    List segStrings = new ArrayList();
+    for (Iterator it = lines.iterator(); it.hasNext(); ) {
+      LineString line = (LineString) it.next();
+      segStrings.add(new NodedSegmentString(line.getCoordinates(), null));
+    }
+    return segStrings;
+  }
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/noding/snapround/HotPixel.java b/src/com/vividsolutions/jts/noding/snapround/HotPixel.java
index 76f929b..6c7a4f0 100644
--- a/src/com/vividsolutions/jts/noding/snapround/HotPixel.java
+++ b/src/com/vividsolutions/jts/noding/snapround/HotPixel.java
@@ -224,4 +224,31 @@ public class HotPixel
 
     return false;
   }
+  
+  /**
+   * Adds a new node (equal to the snap pt) to the specified segment
+   * if the segment passes through the hot pixel
+   *
+   * @param segStr
+   * @param segIndex
+   * @return true if a node was added to the segment
+   */
+  public boolean addSnappedNode(
+      NodedSegmentString segStr,
+      int segIndex
+      )
+  {
+    Coordinate p0 = segStr.getCoordinate(segIndex);
+    Coordinate p1 = segStr.getCoordinate(segIndex + 1);
+
+    if (intersects(p0, p1)) {
+      //System.out.println("snapped: " + snapPt);
+      //System.out.println("POINT (" + snapPt.x + " " + snapPt.y + ")");
+      segStr.addIntersection(getCoordinate(), segIndex);
+
+      return true;
+    }
+    return false;
+  }
+
 }
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.java b/src/com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.java
index e4ec76d..59afbd5 100644
--- a/src/com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.java
+++ b/src/com/vividsolutions/jts/noding/snapround/MCIndexPointSnapper.java
@@ -77,13 +77,14 @@ public class MCIndexPointSnapper
 
     public void select(MonotoneChain mc, int startIndex)
     {
-      SegmentString ss = (SegmentString) mc.getContext();
+    	NodedSegmentString ss = (NodedSegmentString) mc.getContext();
       // don't snap a vertex to itself
       if (parentEdge != null) {
         if (ss == parentEdge && startIndex == vertexIndex)
           return;
       }
-      isNodeAdded = SimpleSnapRounder.addSnappedNode(hotPixel, ss, startIndex);
+//      isNodeAdded = SimpleSnapRounder.addSnappedNode(hotPixel, ss, startIndex);
+      isNodeAdded = hotPixel.addSnappedNode(ss, startIndex);
     }
 
   }
diff --git a/src/com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.java b/src/com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.java
index 294bf01..b54c835 100644
--- a/src/com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.java
+++ b/src/com/vividsolutions/jts/noding/snapround/MCIndexSnapRounder.java
@@ -41,8 +41,8 @@ import com.vividsolutions.jts.noding.*;
 /**
  * Uses Snap Rounding to compute a rounded,
  * fully noded arrangement from a set of {@link SegmentString}s.
- * Implements the Snap Rounding technique described in Hobby, Guibas & Marimont,
- * and Goodrich et al.
+ * Implements the Snap Rounding technique described in 
+ * papers by Hobby, Guibas & Marimont, and Goodrich et al.
  * Snap Rounding assumes that all vertices lie on a uniform grid
  * (hence the precision model of the input must be fixed precision,
  * and all the input vertices must be rounded to that precision).
@@ -75,7 +75,7 @@ public class MCIndexSnapRounder
 
   public Collection getNodedSubstrings()
   {
-    return  SegmentString.getNodedSubstrings(nodedSegStrings);
+    return  NodedSegmentString.getNodedSubstrings(nodedSegStrings);
   }
 
   public void computeNodes(Collection inputSegmentStrings)
@@ -91,7 +91,7 @@ public class MCIndexSnapRounder
 
   private void checkCorrectness(Collection inputSegmentStrings)
   {
-    Collection resultSegStrings = SegmentString.getNodedSubstrings(inputSegmentStrings);
+    Collection resultSegStrings = NodedSegmentString.getNodedSubstrings(inputSegmentStrings);
     NodingValidator nv = new NodingValidator(resultSegStrings);
     try {
       nv.checkValid();
@@ -144,7 +144,7 @@ public class MCIndexSnapRounder
   public void computeVertexSnaps(Collection edges)
   {
     for (Iterator i0 = edges.iterator(); i0.hasNext(); ) {
-      SegmentString edge0 = (SegmentString) i0.next();
+      NodedSegmentString edge0 = (NodedSegmentString) i0.next();
       computeVertexSnaps(edge0);
     }
   }
@@ -153,7 +153,7 @@ public class MCIndexSnapRounder
    * Performs a brute-force comparison of every segment in each {@link SegmentString}.
    * This has n^2 performance.
    */
-  private void computeVertexSnaps(SegmentString e)
+  private void computeVertexSnaps(NodedSegmentString e)
   {
     Coordinate[] pts0 = e.getCoordinates();
     for (int i = 0; i < pts0.length - 1; i++) {
diff --git a/src/com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.java b/src/com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.java
index 2f8b664..d5947d4 100644
--- a/src/com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.java
+++ b/src/com/vividsolutions/jts/noding/snapround/SimpleSnapRounder.java
@@ -70,11 +70,18 @@ public class SimpleSnapRounder
     scaleFactor = pm.getScale();
   }
 
+  /**
+	 * @return a Collection of NodedSegmentStrings representing the substrings
+	 * 
+	 */
   public Collection getNodedSubstrings()
   {
-    return  SegmentString.getNodedSubstrings(nodedSegStrings);
+    return  NodedSegmentString.getNodedSubstrings(nodedSegStrings);
   }
 
+  /**
+   * @param inputSegmentStrings a Collection of NodedSegmentStrings
+   */
   public void computeNodes(Collection inputSegmentStrings)
   {
     this.nodedSegStrings = inputSegmentStrings;
@@ -86,7 +93,7 @@ public class SimpleSnapRounder
 
   private void checkCorrectness(Collection inputSegmentStrings)
   {
-    Collection resultSegStrings = SegmentString.getNodedSubstrings(inputSegmentStrings);
+    Collection resultSegStrings = NodedSegmentString.getNodedSubstrings(inputSegmentStrings);
     NodingValidator nv = new NodingValidator(resultSegStrings);
     try {
       nv.checkValid();
@@ -103,7 +110,7 @@ public class SimpleSnapRounder
 
   /**
    * Computes all interior intersections in the collection of {@link SegmentString}s,
-   * and returns their @link Coordinate}s.
+   * and returns their {@link Coordinate}s.
    *
    * Does NOT node the segStrings.
    *
@@ -126,18 +133,18 @@ public class SimpleSnapRounder
   private void computeSnaps(Collection segStrings, Collection snapPts)
   {
     for (Iterator i0 = segStrings.iterator(); i0.hasNext(); ) {
-      SegmentString ss = (SegmentString) i0.next();
+      NodedSegmentString ss = (NodedSegmentString) i0.next();
       computeSnaps(ss, snapPts);
     }
   }
 
-  private void computeSnaps(SegmentString ss, Collection snapPts)
+  private void computeSnaps(NodedSegmentString ss, Collection snapPts)
   {
     for (Iterator it = snapPts.iterator(); it.hasNext(); ) {
       Coordinate snapPt = (Coordinate) it.next();
       HotPixel hotPixel = new HotPixel(snapPt, scaleFactor, li);
       for (int i = 0; i < ss.size() - 1; i++) {
-        addSnappedNode(hotPixel, ss, i);
+      	hotPixel.addSnappedNode(ss, i);
       }
     }
   }
@@ -151,9 +158,9 @@ public class SimpleSnapRounder
   public void computeVertexSnaps(Collection edges)
   {
     for (Iterator i0 = edges.iterator(); i0.hasNext(); ) {
-      SegmentString edge0 = (SegmentString) i0.next();
+      NodedSegmentString edge0 = (NodedSegmentString) i0.next();
       for (Iterator i1 = edges.iterator(); i1.hasNext(); ) {
-        SegmentString edge1 = (SegmentString) i1.next();
+        NodedSegmentString edge1 = (NodedSegmentString) i1.next();
         computeVertexSnaps(edge0, edge1);
       }
     }
@@ -163,7 +170,7 @@ public class SimpleSnapRounder
    * Performs a brute-force comparison of every segment in each {@link SegmentString}.
    * This has n^2 performance.
    */
-  private void computeVertexSnaps(SegmentString e0, SegmentString e1)
+  private void computeVertexSnaps(NodedSegmentString e0, NodedSegmentString e1)
   {
     Coordinate[] pts0 = e0.getCoordinates();
     Coordinate[] pts1 = e1.getCoordinates();
@@ -175,7 +182,7 @@ public class SimpleSnapRounder
           if (i0 == i1) continue;
         }
         //System.out.println("trying " + pts0[i0] + " against " + pts1[i1] + pts1[i1 + 1]);
-        boolean isNodeAdded = addSnappedNode(hotPixel, e1, i1);
+        boolean isNodeAdded = hotPixel.addSnappedNode(e1, i1);
         // if a node is created for a vertex, that vertex must be noded too
         if (isNodeAdded) {
           e0.addIntersection(pts0[i0], i0);
@@ -184,32 +191,4 @@ public class SimpleSnapRounder
     }
   }
 
-  /**
-   * Adds a new node (equal to the snap pt) to the segment
-   * if the segment passes through the hot pixel
-   *
-   * @param hotPix
-   * @param segStr
-   * @param segIndex
-   * @return <code>true</code> if a node was added
-   */
-  public static boolean addSnappedNode(
-      HotPixel hotPix,
-      SegmentString segStr,
-      int segIndex
-      )
-  {
-    Coordinate p0 = segStr.getCoordinate(segIndex);
-    Coordinate p1 = segStr.getCoordinate(segIndex + 1);
-
-    if (hotPix.intersects(p0, p1)) {
-      //System.out.println("snapped: " + snapPt);
-      //System.out.println("POINT (" + snapPt.x + " " + snapPt.y + ")");
-      segStr.addIntersection(hotPix.getCoordinate(), segIndex);
-
-      return true;
-    }
-    return false;
-  }
-
 }
diff --git a/src/com/vividsolutions/jts/operation/BoundaryOp.java b/src/com/vividsolutions/jts/operation/BoundaryOp.java
new file mode 100644
index 0000000..9406621
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/BoundaryOp.java
@@ -0,0 +1,179 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.operation;
+
+import java.util.*;
+import com.vividsolutions.jts.algorithm.BoundaryNodeRule;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geomgraph.GeometryGraph;
+
+/**
+ * Computes the boundary of a {@link Geometry}.
+ * Allows specifying the {@link BoundaryNodeRule} to be used.
+ * This operation will always return a {@link Geometry} of the appropriate
+ * dimension for the boundary (even if the input geometry is empty).
+ * The boundary of zero-dimensional geometries (Points) is
+ * always the empty {@link GeometryCollection}.
+ *
+ * @author Martin Davis
+ * @version 1.7
+ */
+
+public class BoundaryOp
+{
+  private Geometry geom;
+  private GeometryFactory geomFact;
+  private BoundaryNodeRule bnRule;
+
+  public BoundaryOp(Geometry geom)
+  {
+    this(geom, BoundaryNodeRule.MOD2_BOUNDARY_RULE);
+  }
+
+  public BoundaryOp(Geometry geom, BoundaryNodeRule bnRule)
+  {
+    this.geom = geom;
+    geomFact = geom.getFactory();
+    this.bnRule = bnRule;
+  }
+
+  public Geometry getBoundary()
+  {
+    if (geom instanceof LineString) return boundaryLineString((LineString) geom);
+    if (geom instanceof MultiLineString) return boundaryMultiLineString((MultiLineString) geom);
+    return geom.getBoundary();
+  }
+
+  private MultiPoint getEmptyMultiPoint()
+  {
+    return geomFact.createMultiPoint((CoordinateSequence) null);
+  }
+
+  private Geometry boundaryMultiLineString(MultiLineString mLine)
+  {
+    if (geom.isEmpty()) {
+      return getEmptyMultiPoint();
+    }
+
+    Coordinate[] bdyPts = computeBoundaryCoordinates(mLine);
+
+    // return Point or MultiPoint
+    if (bdyPts.length == 1) {
+      return geomFact.createPoint(bdyPts[0]);
+    }
+    // this handles 0 points case as well
+    return geomFact.createMultiPoint(bdyPts);
+  }
+
+/*
+// MD - superseded
+  private Coordinate[] computeBoundaryFromGeometryGraph(MultiLineString mLine)
+  {
+    GeometryGraph g = new GeometryGraph(0, mLine, bnRule);
+    Coordinate[] bdyPts = g.getBoundaryPoints();
+    return bdyPts;
+  }
+*/
+
+  private Map endpointMap;
+
+  private Coordinate[] computeBoundaryCoordinates(MultiLineString mLine)
+  {
+    List bdyPts = new ArrayList();
+    endpointMap = new TreeMap();
+    for (int i = 0; i < mLine.getNumGeometries(); i++) {
+      LineString line = (LineString) mLine.getGeometryN(i);
+      if (line.getNumPoints() == 0)
+        continue;
+      addEndpoint(line.getCoordinateN(0));
+      addEndpoint(line.getCoordinateN(line.getNumPoints() - 1));
+    }
+
+    for (Iterator it = endpointMap.entrySet().iterator(); it.hasNext(); ) {
+      Map.Entry entry = (Map.Entry) it.next();
+      Counter counter = (Counter) entry.getValue();
+      int valence = counter.count;
+      if (bnRule.isInBoundary(valence)) {
+        bdyPts.add(entry.getKey());
+      }
+    }
+
+    return CoordinateArrays.toCoordinateArray(bdyPts);
+  }
+
+  private void addEndpoint(Coordinate pt)
+  {
+    Counter counter = (Counter) endpointMap.get(pt);
+    if (counter == null) {
+      counter = new Counter();
+      endpointMap.put(pt, counter);
+    }
+    counter.count++;
+  }
+
+  private Geometry boundaryLineString(LineString line)
+  {
+    if (geom.isEmpty()) {
+      return getEmptyMultiPoint();
+    }
+
+    if (line.isClosed()) {
+      // check whether endpoints of valence 2 are on the boundary or not
+      boolean closedEndpointOnBoundary = bnRule.isInBoundary(2);
+      if (closedEndpointOnBoundary) {
+        return line.getStartPoint();
+      }
+      else {
+        return geomFact.createMultiPoint((Coordinate[]) null);
+      }
+    }
+    return geomFact.createMultiPoint(new Point[]{
+                                     line.getStartPoint(),
+                                     line.getEndPoint()
+    });
+  }
+}
+
+/**
+ * Stores an integer count, for use as a Map entry.
+ *
+ * @author Martin Davis
+ * @version 1.7
+ */
+class Counter
+{
+  /**
+   * The value of the count
+   */
+  int count;
+}
diff --git a/src/com/vividsolutions/jts/operation/GeometryGraphOperation.java b/src/com/vividsolutions/jts/operation/GeometryGraphOperation.java
index f911f05..2bc62c6 100644
--- a/src/com/vividsolutions/jts/operation/GeometryGraphOperation.java
+++ b/src/com/vividsolutions/jts/operation/GeometryGraphOperation.java
@@ -34,23 +34,20 @@
  */
 package com.vividsolutions.jts.operation;
 
-import java.io.PrintStream;
-import java.util.*;
-import com.vividsolutions.jts.util.*;
 import com.vividsolutions.jts.algorithm.*;
 import com.vividsolutions.jts.geom.*;
 import com.vividsolutions.jts.geomgraph.GeometryGraph;
 
 /**
- * The base class for operations that require {@link GeometryGraph)s.
+ * The base class for operations that require {@link GeometryGraph}s.
  *
  * @version 1.7
  */
 public class GeometryGraphOperation
 {
-  protected final CGAlgorithms cga = new CGAlgorithms();
   protected final LineIntersector li = new RobustLineIntersector();
   protected PrecisionModel resultPrecisionModel;
+
   /**
    * The operation args into an array so they can be accessed by index
    */
@@ -58,6 +55,14 @@ public class GeometryGraphOperation
 
   public GeometryGraphOperation(Geometry g0, Geometry g1)
   {
+    this(g0, g1,
+         BoundaryNodeRule.OGC_SFS_BOUNDARY_RULE
+//         BoundaryNodeRule.ENDPOINT_BOUNDARY_RULE
+         );
+  }
+
+  public GeometryGraphOperation(Geometry g0, Geometry g1, BoundaryNodeRule boundaryNodeRule)
+  {
     // use the most precise model for the result
     if (g0.getPrecisionModel().compareTo(g1.getPrecisionModel()) >= 0)
       setComputationPrecision(g0.getPrecisionModel());
@@ -65,9 +70,10 @@ public class GeometryGraphOperation
       setComputationPrecision(g1.getPrecisionModel());
 
     arg = new GeometryGraph[2];
-    arg[0] = new GeometryGraph(0, g0);
-    arg[1] = new GeometryGraph(1, g1);
+    arg[0] = new GeometryGraph(0, g0, boundaryNodeRule);
+    arg[1] = new GeometryGraph(1, g1, boundaryNodeRule);
   }
+
   public GeometryGraphOperation(Geometry g0) {
     setComputationPrecision(g0.getPrecisionModel());
 
diff --git a/src/com/vividsolutions/jts/operation/IsSimpleOp.java b/src/com/vividsolutions/jts/operation/IsSimpleOp.java
index 45f8630..516d3eb 100644
--- a/src/com/vividsolutions/jts/operation/IsSimpleOp.java
+++ b/src/com/vividsolutions/jts/operation/IsSimpleOp.java
@@ -44,33 +44,118 @@ import com.vividsolutions.jts.geomgraph.index.SegmentIntersector;
  * Tests whether a <code>Geometry</code> is simple.
  * In general, the SFS specification of simplicity
  * follows the rule:
- *  <UL>
- *    <LI> A Geometry is simple iff the only self-intersections are at
+ * <ul>
+ *    <li> A Geometry is simple if and only if the only self-intersections are at
  *    boundary points.
- *  </UL>
+ * </ul>
+ * This definition relies on the definition of boundary points.
+ * The SFS uses the Mod-2 rule to determine which points are on the boundary of
+ * lineal geometries, but this class supports
+ * using other {@link BoundaryNodeRule}s as well.
+ * <p>
  * Simplicity is defined for each {@link Geometry} subclass as follows:
  * <ul>
  * <li>Valid polygonal geometries are simple by definition, so
  * <code>isSimple</code> trivially returns true.
+ * (Hint: in order to check if a polygonal geometry has self-intersections,
+ * use {@link Geometry#isValid}).
  * <li>Linear geometries are simple iff they do not self-intersect at points
- * other than boundary points.
+ * other than boundary points. 
+ * (Using the Mod-2 rule, this means that closed linestrings
+ * cannot be touched at their endpoints, since these are
+ * interior points, not boundary points).
  * <li>Zero-dimensional geometries (points) are simple iff they have no
  * repeated points.
  * <li>Empty <code>Geometry</code>s are always simple
- * <ul>
+ * </ul>
+ *
+ * @see BoundaryNodeRule
  *
  * @version 1.7
  */
-public class IsSimpleOp {
+public class IsSimpleOp
+{
+  private Geometry geom;
+  private boolean isClosedEndpointsInInterior = true;
+  private Coordinate nonSimpleLocation = null;
 
+  /**
+   * Creates a simplicity checker using the default SFS Mod-2 Boundary Node Rule
+   *
+   * @deprecated use IsSimpleOp(Geometry)
+   */
   public IsSimpleOp() {
   }
 
+  /**
+   * Creates a simplicity checker using the default SFS Mod-2 Boundary Node Rule
+   *
+   * @param geom the geometry to test
+   */
+  public IsSimpleOp(Geometry geom) {
+    this.geom = geom;
+  }
+
+  /**
+   * Creates a simplicity checker using a given {@link BoundaryNodeRule}
+   *
+   * @param geom the geometry to test
+   * @param boundaryNodeRule the rule to use.
+   */
+  public IsSimpleOp(Geometry geom, BoundaryNodeRule boundaryNodeRule)
+  {
+    this.geom = geom;
+    isClosedEndpointsInInterior = ! boundaryNodeRule.isInBoundary(2);
+  }
+
+  /**
+   * Tests whether the geometry is simple.
+   *
+   * @return true if the geometry is simple
+   */
+  public boolean isSimple()
+  {
+    nonSimpleLocation = null;
+    if (geom instanceof LineString) return isSimpleLinearGeometry(geom);
+    if (geom instanceof MultiLineString) return isSimpleLinearGeometry(geom);
+    if (geom instanceof MultiPoint) return isSimpleMultiPoint((MultiPoint) geom);
+    // all other geometry types are simple by definition
+    return true;
+  }
+
+  /**
+   * Gets a coordinate for the location where the geometry
+   * fails to be simple. 
+   * (i.e. where it has a non-boundary self-intersection).
+   * {@link #isSimple} must be called before this method is called.
+   *
+   * @return a coordinate for the location of the non-boundary self-intersection
+   * @return null if the geometry is simple
+   */
+  public Coordinate getNonSimpleLocation()
+  {
+    return nonSimpleLocation;
+  }
+
+  /**
+   * Reports whether a {@link LineString} is simple.
+   *
+   * @param geom the lineal geometry to test
+   * @return true if the geometry is simple
+   * @deprecated use isSimple()
+   */
   public boolean isSimple(LineString geom)
   {
     return isSimpleLinearGeometry(geom);
   }
 
+  /**
+   * Reports whether a {@link MultiLineString} geometry is simple.
+   *
+   * @param geom the lineal geometry to test
+   * @return true if the geometry is simple
+   * @deprecated use isSimple()
+   */
   public boolean isSimple(MultiLineString geom)
   {
     return isSimpleLinearGeometry(geom);
@@ -78,16 +163,24 @@ public class IsSimpleOp {
 
   /**
    * A MultiPoint is simple iff it has no repeated points
+   * @deprecated use isSimple()
    */
   public boolean isSimple(MultiPoint mp)
   {
+    return isSimpleMultiPoint(mp);
+  }
+
+  private boolean isSimpleMultiPoint(MultiPoint mp)
+  {
     if (mp.isEmpty()) return true;
     Set points = new TreeSet();
     for (int i = 0; i < mp.getNumGeometries(); i++) {
       Point pt = (Point) mp.getGeometryN(i);
       Coordinate p = pt.getCoordinate();
-      if (points.contains(p))
+      if (points.contains(p)) {
+        nonSimpleLocation = p;
         return false;
+      }
       points.add(p);
     }
     return true;
@@ -101,9 +194,14 @@ public class IsSimpleOp {
     SegmentIntersector si = graph.computeSelfNodes(li, true);
     // if no self-intersection, must be simple
     if (! si.hasIntersection()) return true;
-    if (si.hasProperIntersection()) return false;
+    if (si.hasProperIntersection()) {
+      nonSimpleLocation = si.getProperIntersectionPoint();
+      return false;
+    }
     if (hasNonEndpointIntersection(graph)) return false;
-    if (hasClosedEndpointIntersection(graph)) return false;
+    if (isClosedEndpointsInInterior) {
+      if (hasClosedEndpointIntersection(graph)) return false;
+    }
     return true;
   }
 
@@ -118,26 +216,30 @@ public class IsSimpleOp {
       int maxSegmentIndex = e.getMaximumSegmentIndex();
       for (Iterator eiIt = e.getEdgeIntersectionList().iterator(); eiIt.hasNext(); ) {
         EdgeIntersection ei = (EdgeIntersection) eiIt.next();
-        if (! ei.isEndPoint(maxSegmentIndex))
+        if (! ei.isEndPoint(maxSegmentIndex)) {
+          nonSimpleLocation = ei.getCoordinate();
           return true;
+        }
       }
     }
     return false;
   }
 
-  class EndpointInfo {
+  private static class EndpointInfo {
     Coordinate pt;
     boolean isClosed;
     int degree;
 
-    EndpointInfo(Coordinate pt)
+    public EndpointInfo(Coordinate pt)
     {
       this.pt = pt;
       isClosed = false;
       degree = 0;
     }
 
-    void addEndpoint(boolean isClosed)
+    public Coordinate getCoordinate() { return pt; }
+
+    public void addEndpoint(boolean isClosed)
     {
       degree++;
       this.isClosed |= isClosed;
@@ -145,9 +247,11 @@ public class IsSimpleOp {
   }
 
   /**
-   * Test that no edge intersection is the
-   * endpoint of a closed line.  To check this we compute the
-   * degree of each endpoint. The degree of endpoints of closed lines
+   * Tests that no edge intersection is the endpoint of a closed line.
+   * This ensures that closed lines are not touched at their endpoint,
+   * which is an interior point according to the Mod-2 rule
+   * To check this we compute the degree of each endpoint.
+   * The degree of endpoints of closed lines
    * must be exactly 2.
    */
   private boolean hasClosedEndpointIntersection(GeometryGraph graph)
@@ -165,8 +269,10 @@ public class IsSimpleOp {
 
     for (Iterator i = endPoints.values().iterator(); i.hasNext(); ) {
       EndpointInfo eiInfo = (EndpointInfo) i.next();
-      if (eiInfo.isClosed && eiInfo.degree != 2)
+      if (eiInfo.isClosed && eiInfo.degree != 2) {
+        nonSimpleLocation = eiInfo.getCoordinate();
         return true;
+      }
     }
     return false;
   }
diff --git a/src/com/vividsolutions/jts/operation/buffer/BufferBuilder.java b/src/com/vividsolutions/jts/operation/buffer/BufferBuilder.java
index 69c08cc..50418bf 100644
--- a/src/com/vividsolutions/jts/operation/buffer/BufferBuilder.java
+++ b/src/com/vividsolutions/jts/operation/buffer/BufferBuilder.java
@@ -45,7 +45,9 @@ import com.vividsolutions.jts.geomgraph.*;
 import com.vividsolutions.jts.operation.overlay.*;
 import com.vividsolutions.jts.noding.*;
 
-//import debug.*;
+import com.vividsolutions.jts.io.*;
+import com.vividsolutions.jts.util.*;
+
 
 /**
  * Builds the buffer geometry for a given input geometry and precision model.
@@ -76,10 +78,7 @@ public class BufferBuilder
     return 0;
   }
 
-  private final CGAlgorithms cga = new RobustCGAlgorithms();
-
-  private int quadrantSegments = OffsetCurveBuilder.DEFAULT_QUADRANT_SEGMENTS;
-  private int endCapStyle = BufferOp.CAP_ROUND;
+  private BufferParameters bufParams;
 
   private PrecisionModel workingPrecisionModel;
   private Noder workingNoder;
@@ -90,18 +89,9 @@ public class BufferBuilder
   /**
    * Creates a new BufferBuilder
    */
-  public BufferBuilder()
-  {
-  }
-
-  /**
-   * Sets the number of segments used to approximate a angle fillet
-   *
-   * @param quadrantSegments the number of segments in a fillet for a quadrant
-   */
-  public void setQuadrantSegments(int quadrantSegments)
+  public BufferBuilder(BufferParameters bufParams)
   {
-    this.quadrantSegments = quadrantSegments;
+    this.bufParams = bufParams;
   }
 
   /**
@@ -126,10 +116,6 @@ public class BufferBuilder
    */
   public void setNoder(Noder noder) { workingNoder = noder; }
 
-  public void setEndCapStyle(int endCapStyle)
-  {
-    this.endCapStyle = endCapStyle;
-  }
 
   public Geometry buffer(Geometry g, double distance)
   {
@@ -140,16 +126,15 @@ public class BufferBuilder
     // factory must be the same as the one used by the input
     geomFact = g.getFactory();
 
-    OffsetCurveBuilder curveBuilder = new OffsetCurveBuilder(precisionModel, quadrantSegments);
-    curveBuilder.setEndCapStyle(endCapStyle);
+    OffsetCurveBuilder curveBuilder = new OffsetCurveBuilder(precisionModel, bufParams);
+    
     OffsetCurveSetBuilder curveSetBuilder = new OffsetCurveSetBuilder(g, distance, curveBuilder);
 
     List bufferSegStrList = curveSetBuilder.getCurves();
 
     // short-circuit test
     if (bufferSegStrList.size() <= 0) {
-      Geometry emptyGeom = geomFact.createGeometryCollection(new Geometry[0]);
-      return emptyGeom;
+      return createEmptyResultGeometry();
     }
 
 //BufferDebug.runCount++;
@@ -158,16 +143,24 @@ public class BufferBuilder
 //BufferDebug.saveEdges(bufferEdgeList, filename);
 // DEBUGGING ONLY
 //WKTWriter wktWriter = new WKTWriter();
-//Debug.println("Rings: " + wktWriter.write(toLineStrings(bufferEdgeList.iterator())));
+//Debug.println("Rings: " + wktWriter.write(convertSegStrings(bufferSegStrList.iterator())));
+//wktWriter.setMaxCoordinatesPerLine(10);
+//System.out.println(wktWriter.writeFormatted(convertSegStrings(bufferSegStrList.iterator())));
+
     computeNodedEdges(bufferSegStrList, precisionModel);
     graph = new PlanarGraph(new OverlayNodeFactory());
     graph.addEdges(edgeList.getEdges());
 
     List subgraphList = createSubgraphs(graph);
-    PolygonBuilder polyBuilder = new PolygonBuilder(geomFact, cga);
+    PolygonBuilder polyBuilder = new PolygonBuilder(geomFact);
     buildSubgraphs(subgraphList, polyBuilder);
     List resultPolyList = polyBuilder.getPolygons();
 
+    // just in case...
+    if (resultPolyList.size() <= 0) {
+      return createEmptyResultGeometry();
+    }
+
     Geometry resultGeom = geomFact.buildGeometry(resultPolyList);
     return resultGeom;
   }
@@ -201,7 +194,7 @@ public class BufferBuilder
       SegmentString segStr = (SegmentString) i.next();
       Label oldLabel = (Label) segStr.getData();
       Edge edge = new Edge(segStr.getCoordinates(), new Label(oldLabel));
-      insertEdge(edge);
+      insertUniqueEdge(edge);
     }
     //saveEdges(edgeList.getEdges(), "run" + runCount + "_collapsedEdges");
   }
@@ -212,7 +205,7 @@ public class BufferBuilder
    * If so, the edge is not inserted, but its label is merged
    * with the existing edge.
    */
-  protected void insertEdge(Edge e)
+  protected void insertUniqueEdge(Edge e)
   {
 //<FIX> MD 8 Oct 03  speed up identical edge lookup
     // fast lookup
@@ -251,7 +244,7 @@ public class BufferBuilder
     for (Iterator i = graph.getNodes().iterator(); i.hasNext(); ) {
       Node node = (Node) i.next();
       if (! node.isVisited()) {
-        BufferSubgraph subgraph = new BufferSubgraph(cga);
+        BufferSubgraph subgraph = new BufferSubgraph();
         subgraph.create(node);
         subgraphList.add(subgraph);
       }
@@ -298,4 +291,29 @@ public class BufferBuilder
       polyBuilder.add(subgraph.getDirectedEdges(), subgraph.getNodes());
     }
   }
+  
+  private static Geometry convertSegStrings(Iterator it)
+  {
+  	GeometryFactory fact = new GeometryFactory();
+  	List lines = new ArrayList();
+  	while (it.hasNext()) {
+  		SegmentString ss = (SegmentString) it.next();
+  		LineString line = fact.createLineString(ss.getCoordinates());
+  		lines.add(line);
+  	}
+  	return fact.buildGeometry(lines);
+  }
+  
+  /**
+   * Gets the standard result for an empty buffer.
+   * Since buffer always returns a polygonal result,
+   * this is chosen to be an empty polygon.
+   * 
+   * @return the empty result geometry
+   */
+  private Geometry createEmptyResultGeometry()
+  {
+    Geometry emptyGeom = geomFact.createPolygon(null, null);
+    return emptyGeom;
+  }
 }
diff --git a/src/com/vividsolutions/jts/operation/buffer/BufferInputLineSimplifier.java b/src/com/vividsolutions/jts/operation/buffer/BufferInputLineSimplifier.java
new file mode 100644
index 0000000..7196a41
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/buffer/BufferInputLineSimplifier.java
@@ -0,0 +1,257 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.operation.buffer;
+
+import com.vividsolutions.jts.algorithm.CGAlgorithms;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Simplifies a buffer input line to 
+ * remove concavities with shallow depth.
+ * <p>
+ * The most important benefit of doing this
+ * is to reduce the number of points and the complexity of
+ * shape which will be buffered.
+ * It also reduces the risk of gores created by
+ * the quantized fillet arcs (although this issue
+ * should be eliminated in any case by the 
+ * offset curve generation logic).
+ * <p>
+ * A key aspect of the simplification is that it
+ * affects inside (concave or inward) corners only.  
+ * Convex (outward) corners are preserved, since they
+ * are required to ensure that the eventual buffer curve
+ * lies at the correct distance from the input geometry.
+ * <p>
+ * Another important heuristic used is that the end segments
+ * of the input are never simplified.  This ensures that
+ * the client buffer code is able to generate end caps consistently.
+ * <p>
+ * No attempt is made to avoid self-intersections in the output.
+ * This is acceptable for use for generating a buffer offset curve, 
+ * but means that this cannot be used as a general-purpose polygon simplification algorithm.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class BufferInputLineSimplifier 
+{
+  /**
+   * Simplify the input coordinate list.
+   * If the distance tolerance is positive, 
+   * concavities on the LEFT side of the line are simplified.
+   * If the supplied distance tolerance is negative,
+   * concavities on the RIGHT side of the line are simplified.
+   * 
+   * @param inputLine the coordinate list to simplify
+   * @param distanceTol simplification distance tolerance to use
+   * @return the simplified coordinate list
+   */
+  public static Coordinate[] simplify(Coordinate[] inputLine, double distanceTol)
+  {
+    BufferInputLineSimplifier simp = new BufferInputLineSimplifier(inputLine);
+    return simp.simplify(distanceTol);
+  }
+  
+  private static final int INIT = 0;
+  private static final int DELETE = 1;
+  private static final int KEEP = 1;
+  
+  
+  private Coordinate[] inputLine;
+  private double distanceTol;
+  private byte[] isDeleted;
+  private int angleOrientation = CGAlgorithms.COUNTERCLOCKWISE;
+  
+  public BufferInputLineSimplifier(Coordinate[] inputLine) {
+    this.inputLine = inputLine;
+  }
+
+  /**
+   * Simplify the input coordinate list.
+   * If the distance tolerance is positive, 
+   * concavities on the LEFT side of the line are simplified.
+   * If the supplied distance tolerance is negative,
+   * concavities on the RIGHT side of the line are simplified.
+   * 
+   * @param distanceTol simplification distance tolerance to use
+   * @return the simplified coordinate list
+   */
+  public Coordinate[] simplify(double distanceTol)
+  {
+    this.distanceTol = Math.abs(distanceTol);
+    if (distanceTol < 0)
+      angleOrientation = CGAlgorithms.CLOCKWISE;
+    
+    // rely on fact that boolean array is filled with false value
+    isDeleted = new byte[inputLine.length];
+    
+    boolean isChanged = false;
+    do {
+      isChanged = deleteShallowConcavities();
+    } while (isChanged);
+    
+    return collapseLine();
+  }
+  
+  /**
+   * Uses a sliding window containing 3 vertices to detect shallow angles
+   * in which the middle vertex can be deleted, since it does not
+   * affect the shape of the resulting buffer in a significant way.
+   * @return
+   */
+  private boolean deleteShallowConcavities()
+  {
+    /**
+     * Do not simplify end line segments of the line string.
+     * This ensures that end caps are generated consistently.
+     */
+    int index = 1;
+    int maxIndex = inputLine.length - 1;
+    
+    int midIndex = findNextNonDeletedIndex(index);
+    int lastIndex = findNextNonDeletedIndex(midIndex);
+    
+    boolean isChanged = false;
+    while (lastIndex < inputLine.length) {
+      // test triple for shallow concavity
+    	boolean isMiddleVertexDeleted = false;
+      if (isDeletable(index, midIndex, lastIndex, 
+          distanceTol)) {
+        isDeleted[midIndex] = DELETE;
+        isMiddleVertexDeleted = true;
+        isChanged = true;
+      }
+      // move simplification window forward
+      if (isMiddleVertexDeleted)
+      	index = lastIndex;
+      else 
+      	index = midIndex;
+      
+      midIndex = findNextNonDeletedIndex(index);
+      lastIndex = findNextNonDeletedIndex(midIndex);
+    }
+    return isChanged;
+  }
+  
+  /**
+   * Finds the next non-deleted index, or the end of the point array if none
+   * @param index
+   * @return the next non-deleted index, if any
+   * @return inputLine.length if there are no more non-deleted indices
+   */
+  private int findNextNonDeletedIndex(int index)
+  {
+    int next = index + 1;
+    while (next < inputLine.length && isDeleted[next] == DELETE)
+      next++;
+    return next;  
+  }
+  
+  private Coordinate[] collapseLine()
+  {
+    CoordinateList coordList = new CoordinateList();
+    for (int i = 0; i < inputLine.length; i++) {
+      if (isDeleted[i] != DELETE)
+        coordList.add(inputLine[i]);
+    }
+//    if (coordList.size() < inputLine.length)      System.out.println("Simplified " + (inputLine.length - coordList.size()) + " pts");
+    return coordList.toCoordinateArray();
+  }
+  
+  private boolean isDeletable(int i0, int i1, int i2, double distanceTol)
+  {
+  	Coordinate p0 = inputLine[i0];
+  	Coordinate p1 = inputLine[i1];
+  	Coordinate p2 = inputLine[i2];
+  	
+  	if (! isConcave(p0, p1, p2)) return false;
+  	if (! isShallow(p0, p1, p2, distanceTol)) return false;
+  	
+  	// MD - don't use this heuristic - it's too restricting 
+//  	if (p0.distance(p2) > distanceTol) return false;
+  	
+  	return isShallowSampled(p0, p1, i0, i2, distanceTol);
+  }
+
+  private boolean isShallowConcavity(Coordinate p0, Coordinate p1, Coordinate p2, double distanceTol)
+  {
+    int orientation = CGAlgorithms.computeOrientation(p0, p1, p2);
+    boolean isAngleToSimplify = (orientation == angleOrientation);
+    if (! isAngleToSimplify)
+      return false;
+    
+    double dist = CGAlgorithms.distancePointLine(p1, p0, p2);
+    return dist < distanceTol;
+  }
+  
+  private static final int NUM_PTS_TO_CHECK = 10;
+  
+  /**
+   * Checks for shallowness over a sample of points in the given section.
+   * This helps prevents the siplification from incrementally  
+   * "skipping" over points which are in fact non-shallow.
+   * 
+   * @param p0 start coordinate of section
+   * @param p2 end coordinate of section
+   * @param i0 start index of section
+   * @param i2 end index of section
+   * @param distanceTol distance tolerance
+   * @return
+   */
+  private boolean isShallowSampled(Coordinate p0, Coordinate p2, int i0, int i2, double distanceTol)
+  {
+    // check every n'th point to see if it is within tolerance
+  	int inc = (i2 - i0) / NUM_PTS_TO_CHECK;
+  	if (inc <= 0) inc = 1;
+  	
+  	for (int i = i0; i < i2; i += inc) {
+  		if (! isShallow(p0, p2, inputLine[i], distanceTol)) return false;
+  	}
+  	return true;
+  }
+  
+  private boolean isShallow(Coordinate p0, Coordinate p1, Coordinate p2, double distanceTol)
+  {
+    double dist = CGAlgorithms.distancePointLine(p1, p0, p2);
+    return dist < distanceTol;
+  }
+  
+  
+  private boolean isConcave(Coordinate p0, Coordinate p1, Coordinate p2)
+  {
+    int orientation = CGAlgorithms.computeOrientation(p0, p1, p2);
+    boolean isConcave = (orientation == angleOrientation);
+    return isConcave;
+  }
+}
diff --git a/src/com/vividsolutions/jts/operation/buffer/BufferOp.java b/src/com/vividsolutions/jts/operation/buffer/BufferOp.java
index 358a31d..396e80f 100644
--- a/src/com/vividsolutions/jts/operation/buffer/BufferOp.java
+++ b/src/com/vividsolutions/jts/operation/buffer/BufferOp.java
@@ -51,7 +51,8 @@ import com.vividsolutions.jts.noding.snapround.*;
  * In the CAD/CAM world buffers are known as </i>offset curves</i>.
  * In morphological analysis they are known as <i>erosion</i> and <i>dilation</i>
  * <p>
- * The negative buffer of lines and points is always empty geometry.
+ * The buffer operation always returns a polygonal result.
+ * The negative or zero-distance buffer of lines and points is always an empty {@link Polygon}.
  * <p>
  * Since true buffer curves may contain circular arcs,
  * computed buffer polygons can only be approximations to the true geometry.
@@ -61,9 +62,9 @@ import com.vividsolutions.jts.noding.snapround.*;
  * The <b>end cap style</b> of a linear buffer may be specified. The
  * following end cap styles are supported:
  * <ul
- * <li>{@link CAP_ROUND} - the usual round end caps
- * <li>{@link CAP_BUTT} - end caps are truncated flat at the line ends
- * <li>{@link CAP_SQUARE} - end caps are squared off at the buffer distance beyond the line ends
+ * <li>{@link #CAP_ROUND} - the usual round end caps
+ * <li>{@link #CAP_BUTT} - end caps are truncated flat at the line ends
+ * <li>{@link #CAP_SQUARE} - end caps are squared off at the buffer distance beyond the line ends
  * </ul>
  * <p>
  *
@@ -73,17 +74,32 @@ public class BufferOp
 {
   /**
    * Specifies a round line buffer end cap style.
+   * @deprecated use BufferParameters
    */
-  public static final int CAP_ROUND = 1;
+  public static final int CAP_ROUND = BufferParameters.CAP_ROUND;
   /**
    * Specifies a butt (or flat) line buffer end cap style.
+   * @deprecated use BufferParameters
    */
-  public static final int CAP_BUTT = 2;
+  public static final int CAP_BUTT = BufferParameters.CAP_FLAT;
+  
+  /**
+   * Specifies a butt (or flat) line buffer end cap style.
+   * @deprecated use BufferParameters
+   */
+  public static final int CAP_FLAT = BufferParameters.CAP_FLAT;
   /**
    * Specifies a square line buffer end cap style.
+   * @deprecated use BufferParameters
+   */
+  public static final int CAP_SQUARE = BufferParameters.CAP_SQUARE;
+  
+  /**
+   * A number of digits of precision which leaves some computational "headroom"
+   * for floating point operations.
+   * 
+   * This value should be less than the decimal precision of double-precision values (16).
    */
-  public static final int CAP_SQUARE = 3;
-
   private static int MAX_PRECISION_DIGITS = 12;
 
   /**
@@ -139,6 +155,23 @@ public class BufferOp
    *
    * @param g the geometry to buffer
    * @param distance the buffer distance
+   * @param params the buffer parameters to use
+   * @return the buffer of the input geometry
+   *
+   */
+  public static Geometry bufferOp(Geometry g, double distance, BufferParameters params)
+  {
+    BufferOp bufOp = new BufferOp(g, params);
+    Geometry geomBuf = bufOp.getResultGeometry(distance);
+    return geomBuf;
+  }
+  
+  /**
+   * Comutes the buffer for a geometry for a given buffer distance
+   * and accuracy of approximation.
+   *
+   * @param g the geometry to buffer
+   * @param distance the buffer distance
    * @param quadrantSegments the number of segments used to approximate a quarter circle
    * @return the buffer of the input geometry
    *
@@ -176,8 +209,8 @@ public class BufferOp
 
   private Geometry argGeom;
   private double distance;
-  private int quadrantSegments = OffsetCurveBuilder.DEFAULT_QUADRANT_SEGMENTS;
-  private int endCapStyle = BufferOp.CAP_ROUND;
+  
+  private BufferParameters bufParams = new BufferParameters();
 
   private Geometry resultGeometry = null;
   private RuntimeException saveException;   // debugging only
@@ -192,58 +225,48 @@ public class BufferOp
   }
 
   /**
-   * Specifies the end cap style of the generated buffer.
-   * The styles supported are {@link CAP_ROUND}, {@link CAP_BUTT}, and {@link CAP_SQUARE}.
-   * The default is CAP_ROUND.
+   * Initializes a buffer computation for the given geometry
+   * with the given set of parameters
    *
-   * @param endCapStyle the end cap style to specify
+   * @param g the geometry to buffer
+   * @param bufParams the buffer parameters to use
    */
-  public void setEndCapStyle(int endCapStyle)
-  {
-    this.endCapStyle = endCapStyle;
+  public BufferOp(Geometry g, BufferParameters bufParams) {
+    argGeom = g;
+    this.bufParams = bufParams;
   }
 
   /**
    * Specifies the end cap style of the generated buffer.
-   * The styles supported are {@link CAP_ROUND}, {@link CAP_BUTT}, and {@link CAP_SQUARE}.
+   * The styles supported are {@link #CAP_ROUND}, {@link #CAP_BUTT}, and {@link #CAP_SQUARE}.
    * The default is CAP_ROUND.
    *
    * @param endCapStyle the end cap style to specify
    */
-  public void setQuadrantSegments(int quadrantSegments)
+  public void setEndCapStyle(int endCapStyle)
   {
-    this.quadrantSegments = quadrantSegments;
+    bufParams.setEndCapStyle(endCapStyle);
   }
 
   /**
-   * Returns the buffer computed for a geometry for a given buffer distance.
+   * Sets the number of segments used to approximate a angle fillet
    *
-   * @param g the geometry to buffer
-   * @param distance the buffer distance
-   * @return the buffer of the input geometry
+   * @param quadrantSegments the number of segments in a fillet for a quadrant
    */
-  public Geometry getResultGeometry(double distance)
+  public void setQuadrantSegments(int quadrantSegments)
   {
-    this.distance = distance;
-    computeGeometry();
-    return resultGeometry;
+    bufParams.setQuadrantSegments(quadrantSegments);
   }
 
   /**
-   * Comutes the buffer for a geometry for a given buffer distance
-   * and accuracy of approximation.
+   * Returns the buffer computed for a geometry for a given buffer distance.
    *
-   * @param g the geometry to buffer
    * @param distance the buffer distance
-   * @param quadrantSegments the number of segments used to approximate a quarter circle
    * @return the buffer of the input geometry
-   *
-   * @deprecated use setQuadrantSegments instead
    */
-  public Geometry getResultGeometry(double distance, int quadrantSegments)
+  public Geometry getResultGeometry(double distance)
   {
     this.distance = distance;
-    setQuadrantSegments(quadrantSegments);
     computeGeometry();
     return resultGeometry;
   }
@@ -282,9 +305,7 @@ public class BufferOp
   {
     try {
       // use fast noding by default
-      BufferBuilder bufBuilder = new BufferBuilder();
-      bufBuilder.setQuadrantSegments(quadrantSegments);
-      bufBuilder.setEndCapStyle(endCapStyle);
+      BufferBuilder bufBuilder = new BufferBuilder(bufParams);
       resultGeometry = bufBuilder.buffer(argGeom, distance);
     }
     catch (RuntimeException ex) {
@@ -310,11 +331,9 @@ public class BufferOp
     Noder noder = new ScaledNoder(new MCIndexSnapRounder(new PrecisionModel(1.0)),
                                   fixedPM.getScale());
 
-    BufferBuilder bufBuilder = new BufferBuilder();
+    BufferBuilder bufBuilder = new BufferBuilder(bufParams);
     bufBuilder.setWorkingPrecisionModel(fixedPM);
     bufBuilder.setNoder(noder);
-    bufBuilder.setQuadrantSegments(quadrantSegments);
-    bufBuilder.setEndCapStyle(endCapStyle);
     // this may throw an exception, if robustness errors are encountered
     resultGeometry = bufBuilder.buffer(argGeom, distance);
   }
diff --git a/src/com/vividsolutions/jts/operation/buffer/BufferParameters.java b/src/com/vividsolutions/jts/operation/buffer/BufferParameters.java
new file mode 100644
index 0000000..f099f0e
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/buffer/BufferParameters.java
@@ -0,0 +1,294 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.operation.buffer;
+
+/**
+ * Contains the parameters which 
+ * describe how a buffer should be constructed.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class BufferParameters 
+{
+  /**
+   * Specifies a round line buffer end cap style.
+   */
+  public static final int CAP_ROUND = 1;
+  /**
+   * Specifies a flat line buffer end cap style.
+   */
+  public static final int CAP_FLAT = 2;
+  /**
+   * Specifies a square line buffer end cap style.
+   */
+  public static final int CAP_SQUARE = 3;
+  
+  /**
+   * Specifies a round join style.
+   */
+  public static final int JOIN_ROUND = 1;
+  /**
+   * Specifies a mitre join style.
+   */
+  public static final int JOIN_MITRE = 2;
+  /**
+   * Specifies a bevel join style.
+   */
+  public static final int JOIN_BEVEL = 3;
+
+  /**
+   * The default number of facets into which to divide a fillet of 90 degrees.
+   * A value of 8 gives less than 2% max error in the buffer distance.
+   * For a max error of < 1%, use QS = 12.
+   * For a max error of < 0.1%, use QS = 18.
+   */
+  public static final int DEFAULT_QUADRANT_SEGMENTS = 8;
+
+  /**
+   * The default mitre limit
+   * Allows fairly pointy mitres.
+   */
+  public static final double DEFAULT_MITRE_LIMIT = 5.0;
+  
+
+  private int quadrantSegments = DEFAULT_QUADRANT_SEGMENTS;
+  private int endCapStyle = CAP_ROUND;
+  private int joinStyle = JOIN_ROUND;
+  private double mitreLimit = DEFAULT_MITRE_LIMIT;
+
+  /**
+   * Creates a default set of parameters
+   *
+   */
+  public BufferParameters() {
+  }
+
+  /**
+   * Creates a set of parameters with the
+   * given quadrantSegments value.
+   * 
+   * @param quadrantSegments the number of quadrant segments to use
+   */
+  public BufferParameters(int quadrantSegments) 
+  {
+    setQuadrantSegments(quadrantSegments);
+  }
+
+  /**
+   * Creates a set of parameters with the
+   * given quadrantSegments and endCapStyle values.
+   * 
+   * @param quadrantSegments the number of quadrant segments to use
+   * @param endCapStyle the end cap style to use
+   */
+  public BufferParameters(int quadrantSegments,
+      int endCapStyle) 
+  {
+    setQuadrantSegments(quadrantSegments);
+    setEndCapStyle(endCapStyle);
+  }
+
+  /**
+   * Creates a set of parameters with the
+   * given parameter values.
+   * 
+   * @param quadrantSegments the number of quadrant segments to use
+   * @param endCapStyle the end cap style to use
+   * @param joinStyle the join style to use
+   * @param mitreLimit the mitre limit to use
+   */
+  public BufferParameters(int quadrantSegments,
+      int endCapStyle,
+      int joinStyle,
+      double mitreLimit) 
+  {
+    setQuadrantSegments(quadrantSegments);
+    setEndCapStyle(endCapStyle);
+    setJoinStyle(joinStyle);
+    setMitreLimit(mitreLimit);
+  }
+
+  /**
+   * Gets the number of quadrant segments which will be used
+   * 
+   * @return the number of quadrant segments
+   */
+  public int getQuadrantSegments()
+  {
+    return quadrantSegments;
+  }
+  
+  /**
+   * Sets the number of line segments used to approximate an angle fillet.
+   * <ul>
+   * <li>If <tt>quadSegs</tt> >= 1, joins are round, and <tt>quadSegs</tt> indicates the number of 
+   * segments to use to approximate a quarter-circle.
+   * <li>If <tt>quadSegs</tt> = 0, joins are bevelled (flat)
+   * <li>If <tt>quadSegs</tt> < 0, joins are mitred, and the value of qs
+   * indicates the mitre ration limit as
+   * <pre>
+   * mitreLimit = |<tt>quadSegs</tt>|
+   * </pre>
+   * </ul>
+   * For round joins, <tt>quadSegs</tt> determines the maximum
+   * error in the approximation to the true buffer curve.
+   * The default value of 8 gives less than 2% max error in the buffer distance.
+   * For a max error of < 1%, use QS = 12.
+   * For a max error of < 0.1%, use QS = 18.
+   * The error is always less than the buffer distance 
+   * (in other words, the computed buffer curve is always inside the true
+   * curve).
+   * 
+   * @param quadrantSegments the number of segments in a fillet for a quadrant
+   */
+  public void setQuadrantSegments(int quadSegs)
+  {
+    quadrantSegments = quadSegs;
+    
+    /** 
+     * Indicates how to construct fillets.
+     * If qs >= 1, fillet is round, and qs indicates number of 
+     * segments to use to approximate a quarter-circle.
+     * If qs = 0, fillet is bevelled flat (i.e. no filleting is performed)
+     * If qs < 0, fillet is mitred, and absolute value of qs
+     * indicates maximum length of mitre according to
+     * 
+     * mitreLimit = |qs|
+     */
+    if (quadrantSegments == 0)
+      joinStyle = JOIN_BEVEL;
+    if (quadrantSegments < 0) {
+      joinStyle = JOIN_MITRE;
+      mitreLimit = Math.abs(quadrantSegments);
+    }
+    
+    if (quadSegs <= 0) {
+      quadrantSegments = 1;
+    }
+    
+    /**
+     * If join style was set by the quadSegs value,
+     * use the default for the actual quadrantSegments value.
+     */
+    if (joinStyle != JOIN_ROUND) {
+      quadrantSegments = DEFAULT_QUADRANT_SEGMENTS;
+    }
+  }
+
+  /**
+   * Computes the maximum distance error due to a given level
+   * of approximation to a true arc.
+   * 
+   * @param quadSegs the number of segments used to approximate a quarter-circle
+   * @return the error of approximation
+   */
+  public static double bufferDistanceError(int quadSegs)
+  {
+    double alpha = Math.PI / 2.0 / quadSegs;
+    return 1 - Math.cos(alpha / 2.0);
+  }
+  
+  /**
+   * Gets the end cap style.
+   * 
+   * @return the end cap style
+   */
+  public int getEndCapStyle()
+  {
+    return endCapStyle;
+  }
+  
+  /**
+   * Specifies the end cap style of the generated buffer.
+   * The styles supported are {@link #CAP_ROUND}, {@link #CAP_BUTT}, and {@link #CAP_SQUARE}.
+   * The default is CAP_ROUND.
+   *
+   * @param endCapStyle the end cap style to specify
+   */
+  public void setEndCapStyle(int endCapStyle)
+  {
+    this.endCapStyle = endCapStyle;
+  }
+  
+  /**
+   * Gets the join style
+   * 
+   * @return the join style code
+   */
+  public int getJoinStyle()
+  {
+    return joinStyle;
+  }
+  
+  /**
+   * Sets the join style for outside (reflex) corners between line segments.
+   * Allowable values are {@link JOIN_ROUND} (which is the default),
+   * {@link JOIN_MITRE} and {link JOIN_BEVEL}.
+   * 
+   * @param joinStyle the code for the join style
+   */
+  public void setJoinStyle(int joinStyle)
+  {
+    this.joinStyle = joinStyle;
+  }
+  
+  /**
+   * Gets the mitre ratio limit.
+   * 
+   * @return the limit value
+   */
+  public double getMitreLimit()
+  {
+    return mitreLimit;
+  }
+  
+  /**
+   * Sets the limit on the mitre ratio used for very sharp corners.
+   * The mitre ratio is the ratio of the distance from the corner
+   * to the end of the mitred offset corner.
+   * When two line segments meet at a sharp angle, 
+   * a miter join will extend far beyond the original geometry.
+   * (and in the extreme case will be infinitely far.)
+   * To prevent unreasonable geometry, the mitre limit 
+   * allows controlling the maximum length of the join corner.
+   * Corners with a ratio which exceed the limit will be beveled.
+   *
+   * @param mitreLimit the mitre ratio limit
+   */
+  public void setMitreLimit(double mitreLimit)
+  {
+    this.mitreLimit = mitreLimit;
+  }
+
+}
diff --git a/src/com/vividsolutions/jts/operation/buffer/BufferSubgraph.java b/src/com/vividsolutions/jts/operation/buffer/BufferSubgraph.java
index e716796..a80c3dd 100644
--- a/src/com/vividsolutions/jts/operation/buffer/BufferSubgraph.java
+++ b/src/com/vividsolutions/jts/operation/buffer/BufferSubgraph.java
@@ -47,7 +47,7 @@ import com.vividsolutions.jts.util.*;
 
 /**
  * A connected subset of the graph of
- * {@link DirectedEdges} and {@link Node}s.
+ * {@link DirectedEdge}s and {@link Node}s.
  * Its edges will generate either
  * <ul>
  * <li> a single polygon in the complete buffer, with zero or more holes, or
@@ -66,9 +66,9 @@ public class BufferSubgraph
   private Coordinate rightMostCoord = null;
   private Envelope env = null;
 
-  public BufferSubgraph(CGAlgorithms cga)
+  public BufferSubgraph()
   {
-    finder = new RightmostEdgeFinder(cga);
+    finder = new RightmostEdgeFinder();
   }
 
   public List getDirectedEdges() { return dirEdgeList; }
@@ -229,7 +229,10 @@ public class BufferSubgraph
     }
     // MD - testing  Result: breaks algorithm
     //if (startEdge == null) return;
-    Assert.isTrue(startEdge != null, "unable to find edge to compute depths at " + n.getCoordinate());
+    
+    // only compute string append if assertion would fail
+    if (startEdge == null)
+    	throw new TopologyException("unable to find edge to compute depths at " + n.getCoordinate());
 
     ((DirectedEdgeStar) n.getEdges()).computeDepths(startEdge);
 
diff --git a/src/com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.java b/src/com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.java
index 05ed33c..b4dd832 100644
--- a/src/com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.java
+++ b/src/com/vividsolutions/jts/operation/buffer/OffsetCurveBuilder.java
@@ -48,59 +48,88 @@ import com.vividsolutions.jts.geomgraph.*;
  *
  * @version 1.7
  */
-public class OffsetCurveBuilder {
-
-  private static double PI_OVER_2 = Math.PI / 2.0;
-
-  /**
-   * The default number of facets into which to divide a fillet of 90 degrees.
-   * A value of 8 gives less than 2% max error in the buffer distance.
-   * For a max error of < 1%, use QS = 12
-   */
-  public static final int DEFAULT_QUADRANT_SEGMENTS = 8;
-
-  private static final Coordinate[] arrayTypeCoordinate = new Coordinate[0];
-  private CGAlgorithms cga = new RobustCGAlgorithms();
-  private LineIntersector li;
-
+public class OffsetCurveBuilder 
+{  
   /**
    * The angle quantum with which to approximate a fillet curve
    * (based on the input # of quadrant segments)
    */
   private double filletAngleQuantum;
+  
   /**
-   * the max error of approximation between a quad segment and the true fillet curve
+   * the max error of approximation (distance) between a quad segment and the true fillet curve
    */
   private double maxCurveSegmentError = 0.0;
-  private ArrayList ptList;
+  
+  /**
+   * Factor which controls how close curve vertices can be to be snapped
+   */
+  private static final double CURVE_VERTEX_SNAP_DISTANCE_FACTOR = 1.0E-6;
+  
+  /**
+   * Factor which controls how close offset segments can be to
+   * skip adding a filler or mitre.
+   */
+  private static final double OFFSET_SEGMENT_SEPARATION_FACTOR = 1.0E-3;
+  
+  /**
+   * Factor which controls how close curve vertices on inside turns can be to be snapped 
+   */
+  private static final double INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR = 1.0E-3;
+    
+  /**
+   * Factor which determines how short closing segs can be for round buffers
+   */
+  private static final int MAX_CLOSING_SEG_FRACTION = 80;
+  
   private double distance = 0.0;
   private PrecisionModel precisionModel;
-  private int endCapStyle = BufferOp.CAP_ROUND;
-  private int joinStyle;
-
-  public OffsetCurveBuilder(
-                PrecisionModel precisionModel)
-  {
-    this(precisionModel, DEFAULT_QUADRANT_SEGMENTS);
-  }
-
+  
+  private BufferParameters bufParams;
+  
+  /**
+   * The Closing Segment Factor controls how long
+   * "closing segments" are.  Closing segments are added
+   * at the middle of inside corners to ensure a smoother
+   * boundary for the buffer offset curve. 
+   * In some cases (particularly for round joins with default-or-better
+   * quantization) the closing segments can be made quite short.
+   * This substantially improves performance (due to fewer intersections being created).
+   * 
+   * A closingSegFactor of 0 results in lines to the corner vertex
+   * A closingSegFactor of 1 results in lines halfway to the corner vertex
+   * A closingSegFactor of 80 results in lines 1/81 of the way to the corner vertex
+   * (this option is reasonable for the very common default situation of round joins
+   * and quadrantSegs >= 8)
+   * 
+   */
+  private int closingSegFactor = 1;
+  private OffsetCurveVertexList vertexList;
+  private LineIntersector li;
+  
   public OffsetCurveBuilder(
                 PrecisionModel precisionModel,
-                int quadrantSegments)
+                BufferParameters bufParams
+                )
   {
     this.precisionModel = precisionModel;
+    this.bufParams = bufParams;
+    
     // compute intersections in full precision, to provide accuracy
     // the points are rounded as they are inserted into the curve line
     li = new RobustLineIntersector();
-
-    int limitedQuadSegs = quadrantSegments < 1 ? 1 : quadrantSegments;
-    filletAngleQuantum = Math.PI / 2.0 / limitedQuadSegs;
+    filletAngleQuantum = Math.PI / 2.0 / bufParams.getQuadrantSegments();
+    
+    /**
+     * Non-round joins cause issues with short closing segments,
+     * so don't use them.  In any case, non-round joins 
+     * only really make sense for relatively small buffer distances.
+     */
+    if (bufParams.getQuadrantSegments() >= 8 
+        && bufParams.getJoinStyle() == BufferParameters.JOIN_ROUND)
+      closingSegFactor = MAX_CLOSING_SEG_FRACTION;
   }
 
-  public void setEndCapStyle(int endCapStyle)
-  {
-    this.endCapStyle = endCapStyle;
-  }
   /**
    * This method handles single points as well as lines.
    * Lines are assumed to <b>not</b> be closed (the function will not
@@ -116,11 +145,11 @@ public class OffsetCurveBuilder {
 
     init(distance);
     if (inputPts.length <= 1) {
-      switch (endCapStyle) {
-        case BufferOp.CAP_ROUND:
+      switch (bufParams.getEndCapStyle()) {
+        case BufferParameters.CAP_ROUND:
           addCircle(inputPts[0], distance);
           break;
-        case BufferOp.CAP_SQUARE:
+        case BufferParameters.CAP_SQUARE:
           addSquare(inputPts[0], distance);
           break;
           // default is for buffer to be empty (e.g. for a butt line cap);
@@ -128,7 +157,10 @@ public class OffsetCurveBuilder {
     }
     else
       computeLineBufferCurve(inputPts);
-    Coordinate[] lineCoord = getCoordinates();
+    
+//System.out.println(vertexList);
+    
+    Coordinate[] lineCoord = vertexList.getCoordinates();
     lineList.add(lineCoord);
     return lineList;
   }
@@ -152,7 +184,7 @@ public class OffsetCurveBuilder {
       return lineList;
     }
     computeRingBufferCurve(inputPts, side);
-    lineList.add(getCoordinates());
+    lineList.add(vertexList.getCoordinates());
     return lineList;
   }
 
@@ -164,29 +196,84 @@ public class OffsetCurveBuilder {
     }
     return copy;
   }
+  
   private void init(double distance)
   {
     this.distance = distance;
     maxCurveSegmentError = distance * (1 - Math.cos(filletAngleQuantum / 2.0));
-    ptList = new ArrayList();
+    vertexList = new OffsetCurveVertexList();
+    vertexList.setPrecisionModel(precisionModel);
+    /**
+     * Choose the min vertex separation as a small fraction of the offset distance.
+     */
+    vertexList.setMinimumVertexDistance(distance * CURVE_VERTEX_SNAP_DISTANCE_FACTOR);
+  }
+  
+  /**
+   * Use a value which results in a potential distance error which is
+   * significantly less than the error due to 
+   * the quadrant segment discretization.
+   * For QS = 8 a value of 100 is reasonable.
+   * This should produce a maximum of 1% distance error.
+   */
+  private static final double SIMPLIFY_FACTOR = 100.0;
+  
+  /**
+   * Computes the distance tolerance to use during input
+   * line simplification.
+   * 
+   * @param distance the buffer distance
+   * @return the simplification tolerance
+   */
+  private double simplifyTolerance(double bufDistance)
+  {
+    return bufDistance / SIMPLIFY_FACTOR;
   }
-  private Coordinate[] getCoordinates()
+  
+  private void computeLineBufferCurve(Coordinate[] inputPts)
   {
-    // check that points are a ring - add the startpoint again if they are not
-    if (ptList.size() > 1) {
-      Coordinate start  = (Coordinate) ptList.get(0);
-      Coordinate end    = (Coordinate) ptList.get(1);
-      if (! start.equals(end) ) addPt(start);
+    double distTol = simplifyTolerance(distance);
+    
+    //--------- compute points for left side of line
+    // Simplify the appropriate side of the line before generating
+    Coordinate[] simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol);
+    // MD - used for testing only (to eliminate simplification)
+//    Coordinate[] simp1 = inputPts;
+    
+    int n1 = simp1.length - 1;
+
+
+    initSideSegments(simp1[0], simp1[1], Position.LEFT);
+    for (int i = 2; i <= n1; i++) {
+      addNextSegment(simp1[i], true);
+    }
+    addLastSegment();
+    // add line cap for end of line
+    addLineEndCap(simp1[n1 - 1], simp1[n1]);
+    
+    //---------- compute points for right side of line
+    // Simplify the appropriate side of the line before generating
+    Coordinate[] simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol);
+    // MD - used for testing only (to eliminate simplification)
+//    Coordinate[] simp2 = inputPts;
+    int n2 = simp2.length - 1;
+   
+    // since we are traversing line in opposite order, offset position is still LEFT
+    initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT);
+    for (int i = n2 - 2; i >= 0; i--) {
+      addNextSegment(simp2[i], true);
     }
+    addLastSegment();
+    // add line cap for start of line
+    addLineEndCap(simp2[1], simp2[0]);
 
-    Coordinate[] coord = (Coordinate[]) ptList.toArray(arrayTypeCoordinate);
-    return coord;
+    vertexList.closeRing();
   }
 
-  private void computeLineBufferCurve(Coordinate[] inputPts)
+  private void OLDcomputeLineBufferCurve(Coordinate[] inputPts)
   {
     int n = inputPts.length - 1;
-
+    
     // compute points for left side of line
     initSideSegments(inputPts[0], inputPts[1], Position.LEFT);
     for (int i = 2; i <= n; i++) {
@@ -205,43 +292,26 @@ public class OffsetCurveBuilder {
     // add line cap for start of line
     addLineEndCap(inputPts[1], inputPts[0]);
 
-    closePts();
+    vertexList.closeRing();
   }
 
   private void computeRingBufferCurve(Coordinate[] inputPts, int side)
   {
-    int n = inputPts.length - 1;
-    initSideSegments(inputPts[n - 1], inputPts[0], side);
+    // simplify input line to improve performance
+    double distTol = simplifyTolerance(distance);
+    // ensure that correct side is simplified
+    if (side == Position.RIGHT)
+      distTol = -distTol;
+    Coordinate[] simp = BufferInputLineSimplifier.simplify(inputPts, distTol);
+//    Coordinate[] simp = inputPts;
+    
+    int n = simp.length - 1;
+    initSideSegments(simp[n - 1], simp[0], side);
     for (int i = 1; i <= n; i++) {
       boolean addStartPoint = i != 1;
-      addNextSegment(inputPts[i], addStartPoint);
+      addNextSegment(simp[i], addStartPoint);
     }
-    closePts();
-  }
-
-  private void addPt(Coordinate pt)
-  {
-    Coordinate bufPt = new Coordinate(pt);
-    precisionModel.makePrecise(bufPt);
-    // don't add duplicate points
-    Coordinate lastPt = null;
-    if (ptList.size() >= 1)
-      lastPt = (Coordinate) ptList.get(ptList.size() - 1);
-    if (lastPt != null && bufPt.equals(lastPt)) return;
-
-    ptList.add(bufPt);
-//System.out.println(bufPt);
-  }
-  private void closePts()
-  {
-    if (ptList.size() < 1) return;
-    Coordinate startPt = new Coordinate((Coordinate) ptList.get(0));
-    Coordinate lastPt = (Coordinate) ptList.get(ptList.size() - 1);
-    Coordinate last2Pt = null;
-    if (ptList.size() >= 2)
-      last2Pt = (Coordinate) ptList.get(ptList.size() - 2);
-    if (startPt.equals(lastPt)) return;
-    ptList.add(startPt);
+    vertexList.closeRing();
   }
 
   private Coordinate s0, s1, s2;
@@ -276,81 +346,173 @@ public class OffsetCurveBuilder {
     // do nothing if points are equal
     if (s1.equals(s2)) return;
 
-    int orientation = cga.computeOrientation(s0, s1, s2);
+    int orientation = CGAlgorithms.computeOrientation(s0, s1, s2);
     boolean outsideTurn =
           (orientation == CGAlgorithms.CLOCKWISE        && side == Position.LEFT)
       ||  (orientation == CGAlgorithms.COUNTERCLOCKWISE && side == Position.RIGHT);
 
     if (orientation == 0) { // lines are collinear
-      li.computeIntersection( s0, s1,
-                              s1, s2  );
-      int numInt = li.getIntersectionNum();
-      /**
-       * if numInt is < 2, the lines are parallel and in the same direction.
-       * In this case the point can be ignored, since the offset lines will also be
-       * parallel.
-       */
-      if (numInt >= 2) {
-      /**
-       * segments are collinear but reversing.  Have to add an "end-cap" fillet
-       * all the way around to other direction
-       * This case should ONLY happen for LineStrings, so the orientation is always CW.
-       * (Polygons can never have two consecutive segments which are parallel but reversed,
-       * because that would be a self intersection.
-       */
-        addFillet(s1, offset0.p1, offset1.p0, CGAlgorithms.CLOCKWISE, distance);
-      }
+    	addCollinear(addStartPoint);
+		}
+    else if (outsideTurn) 
+		{
+			addOutsideTurn(orientation, addStartPoint);
+		}
+    else { // inside turn
+			addInsideTurn(orientation, addStartPoint);
     }
-    else if (outsideTurn) {
-        // add a fillet to connect the endpoints of the offset segments
-        if (addStartPoint) addPt(offset0.p1);
-        // TESTING - comment out to produce beveled joins
-        addFillet(s1, offset0.p1, offset1.p0, orientation, distance);
-        addPt(offset1.p0);
+  }
+  
+  private void addCollinear(boolean addStartPoint)
+  {
+  	/**
+  	 * This test could probably be done more efficiently,
+  	 * but the situation of exact collinearity should be fairly rare.
+  	 */
+		li.computeIntersection(s0, s1, s1, s2);
+		int numInt = li.getIntersectionNum();
+		/**
+		 * if numInt is < 2, the lines are parallel and in the same direction. In
+		 * this case the point can be ignored, since the offset lines will also be
+		 * parallel.
+		 */
+		if (numInt >= 2) {
+			/**
+			 * segments are collinear but reversing. 
+			 * Add an "end-cap" fillet
+			 * all the way around to other direction This case should ONLY happen
+			 * for LineStrings, so the orientation is always CW. (Polygons can never
+			 * have two consecutive segments which are parallel but reversed,
+			 * because that would be a self intersection.
+			 * 
+			 */
+			if (bufParams.getJoinStyle() == BufferParameters.JOIN_BEVEL 
+					|| bufParams.getJoinStyle() == BufferParameters.JOIN_MITRE) {
+				if (addStartPoint) vertexList.addPt(offset0.p1);
+				vertexList.addPt(offset1.p0);
+			}
+			else {
+				addFillet(s1, offset0.p1, offset1.p0, CGAlgorithms.CLOCKWISE, distance);
+			}
+		}
+  }
+  
+  /**
+   * Adds the offset points for an outside (convex) turn
+   * 
+   * @param orientation
+   * @param addStartPoint
+   */
+  private void addOutsideTurn(int orientation, boolean addStartPoint)
+  {
+  	/**
+  	 * Heuristic: If offset endpoints are very close together, 
+  	 * just use one of them as the corner vertex.
+  	 * This avoids problems with computing mitre corners in the case
+  	 * where the two segments are almost parallel 
+  	 * (which is hard to compute a robust intersection for).
+  	 */
+    if (offset0.p1.distance(offset1.p0) < distance * OFFSET_SEGMENT_SEPARATION_FACTOR) {
+    	vertexList.addPt(offset0.p1);
+    	return;
     }
-    else { // inside turn
+  	
+		if (bufParams.getJoinStyle() == BufferParameters.JOIN_MITRE) {
+			addMitreJoin(s1, offset0, offset1, distance);
+		}
+		else if (bufParams.getJoinStyle() == BufferParameters.JOIN_BEVEL){
+			addBevelJoin(offset0, offset1);
+		}
+		else {
+		// add a circular fillet connecting the endpoints of the offset segments
+		 if (addStartPoint) vertexList.addPt(offset0.p1);
+      // TESTING - comment out to produce beveled joins
+      addFillet(s1, offset0.p1, offset1.p0, orientation, distance);
+      vertexList.addPt(offset1.p0);
+		}
+  }
+  
+  /**
+   * Adds the offset points for an inside (concave) turn.
+   * 
+   * @param orientation
+   * @param addStartPoint
+   */
+  private void addInsideTurn(int orientation, boolean addStartPoint) {
+    /**
+     * add intersection point of offset segments (if any)
+     */
+    li.computeIntersection(offset0.p0, offset0.p1, offset1.p0, offset1.p1);
+    if (li.hasIntersection()) {
+      vertexList.addPt(li.getIntersection(0));
+    }
+    else {
       /**
-       * add intersection point of offset segments (if any)
+       * If no intersection is detected, it means the angle is so small and/or the offset so
+       * large that the offsets segments don't intersect. In this case we must
+       * add a "closing segment" to make sure the buffer curve is continuous,
+       * fairly smooth (e.g. no sharp reversals in direction)
+       * and tracks the buffer correctly around the corner. The curve connects
+       * the endpoints of the segment offsets to points
+       * which lie toward the centre point of the corner.
+       * The joining curve will not appear in the final buffer outline, since it
+       * is completely internal to the buffer polygon.
+       * 
+       * In complex buffer cases the closing segment may cut across many other
+       * segments in the generated offset curve.  In order to improve the 
+       * performance of the noding, the closing segment should be kept as short as possible.
+       * (But not too short, since that would defeat it's purpose).
+       * This is the purpose of the closingSegFactor heuristic value.
+       */ 
+    	
+       /** 
+       * The intersection test above is vulnerable to robustness errors; i.e. it
+       * may be that the offsets should intersect very close to their endpoints,
+       * but aren't reported as such due to rounding. To handle this situation
+       * appropriately, we use the following test: If the offset points are very
+       * close, don't add closing segments but simply use one of the offset
+       * points
        */
-        li.computeIntersection( offset0.p0, offset0.p1,
-                              offset1.p0, offset1.p1  );
-        if (li.hasIntersection()) {
-          addPt(li.getIntersection(0));
+      if (offset0.p1.distance(offset1.p0) < distance
+          * INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR) {
+        vertexList.addPt(offset0.p1);
+      } else {
+        // add endpoint of this segment offset
+        vertexList.addPt(offset0.p1);
+        
+        /**
+         * Add "closing segment" of required length.
+         */
+        if (closingSegFactor > 0) {
+          Coordinate mid0 = new Coordinate((closingSegFactor * offset0.p1.x + s1.x)/(closingSegFactor + 1), 
+              (closingSegFactor*offset0.p1.y + s1.y)/(closingSegFactor + 1));
+          vertexList.addPt(mid0);
+          Coordinate mid1 = new Coordinate((closingSegFactor*offset1.p0.x + s1.x)/(closingSegFactor + 1), 
+             (closingSegFactor*offset1.p0.y + s1.y)/(closingSegFactor + 1));
+          vertexList.addPt(mid1);
         }
         else {
-      /**
-       * If no intersection, it means the angle is so small and/or the offset so large
-       * that the offsets segments don't intersect.
-       * In this case we must add a offset joining curve to make sure the buffer line
-       * is continuous and tracks the buffer correctly around the corner.
-       * Note that the joining curve won't appear in the final buffer.
-       *
-       * The intersection test above is vulnerable to robustness errors;
-       * i.e. it may be that the offsets should intersect very close to their
-       * endpoints, but don't due to rounding.  To handle this situation
-       * appropriately, we use the following test:
-       * If the offset points are very close, don't add a joining curve
-       * but simply use one of the offset points
-       */
-            if (offset0.p1.distance(offset1.p0) < distance / 1000.0) {
-              addPt(offset0.p1);
-            }
-            else {
-              // add endpoint of this segment offset
-              addPt(offset0.p1);
-// <FIX> MD - add in centre point of corner, to make sure offset closer lines have correct topology
-              addPt(s1);
-              addPt(offset1.p0);
-            }
+          /**
+           * This branch is not expected to be used except for testing purposes.
+           * It is equivalent to the JTS 1.9 logic for closing segments
+           * (which results in very poor performance for large buffer distances)
+           */
+          vertexList.addPt(s1);
         }
+        
+        //*/  
+        // add start point of next segment offset
+        vertexList.addPt(offset1.p0);
+      }
     }
   }
+  
   /**
    * Add last offset point
    */
   private void addLastSegment()
   {
-    addPt(offset1.p1);
+  	vertexList.addPt(offset1.p1);
   }
 
   /**
@@ -393,19 +555,19 @@ public class OffsetCurveBuilder {
     double dy = p1.y - p0.y;
     double angle = Math.atan2(dy, dx);
 
-    switch (endCapStyle) {
-      case BufferOp.CAP_ROUND:
+    switch (bufParams.getEndCapStyle()) {
+      case BufferParameters.CAP_ROUND:
         // add offset seg points with a fillet between them
-        addPt(offsetL.p1);
+      	vertexList.addPt(offsetL.p1);
         addFillet(p1, angle + Math.PI / 2, angle - Math.PI / 2, CGAlgorithms.CLOCKWISE, distance);
-        addPt(offsetR.p1);
+        vertexList.addPt(offsetR.p1);
         break;
-      case BufferOp.CAP_BUTT:
+      case BufferParameters.CAP_FLAT:
         // only offset segment points are added
-        addPt(offsetL.p1);
-        addPt(offsetR.p1);
+      	vertexList.addPt(offsetL.p1);
+      	vertexList.addPt(offsetR.p1);
         break;
-      case BufferOp.CAP_SQUARE:
+      case BufferParameters.CAP_SQUARE:
         // add a square defined by extensions of the offset segment endpoints
         Coordinate squareCapSideOffset = new Coordinate();
         squareCapSideOffset.x = Math.abs(distance) * Math.cos(angle);
@@ -417,18 +579,146 @@ public class OffsetCurveBuilder {
         Coordinate squareCapROffset = new Coordinate(
             offsetR.p1.x + squareCapSideOffset.x,
             offsetR.p1.y + squareCapSideOffset.y);
-        addPt(squareCapLOffset);
-        addPt(squareCapROffset);
+        vertexList.addPt(squareCapLOffset);
+        vertexList.addPt(squareCapROffset);
         break;
 
     }
   }
   /**
+   * Adds a mitre join connecting the two reflex offset segments.
+   * The mitre will be beveled if it exceeds the mitre ratio limit.
+   * 
+   * @param offset0 the first offset segment
+   * @param offset1 the second offset segment
+   * @param distance the offset distance
+   */
+  private void addMitreJoin(Coordinate p, 
+  		LineSegment offset0, 
+  		LineSegment offset1,
+  		double distance)
+  {
+  	boolean isMitreWithinLimit = true;
+  	Coordinate intPt = null;
+  
+  	/**
+  	 * This computation is unstable if the offset segments are nearly collinear.
+  	 * Howver, this situation should have been eliminated earlier by the check for 
+  	 * whether the offset segment endpoints are almost coincident
+  	 */
+  	try {
+  	 intPt = HCoordinate.intersection(offset0.p0, 
+  			offset0.p1, offset1.p0, offset1.p1);
+  	 
+  	 double mitreRatio = distance <= 0.0 ? 1.0
+  			 : intPt.distance(p) / Math.abs(distance);
+  	 
+  	 if (mitreRatio > bufParams.getMitreLimit())
+  		 isMitreWithinLimit = false;
+  	}
+  	catch (NotRepresentableException ex) {
+  		intPt = new Coordinate(0,0);
+  		isMitreWithinLimit = false;
+  	}
+  	
+  	if (isMitreWithinLimit) {
+  		vertexList.addPt(intPt);
+  	}
+  	else {
+  		addLimitedMitreJoin(offset0, offset1, distance, bufParams.getMitreLimit());
+//  		addBevelJoin(offset0, offset1);
+  	}
+  }
+  
+  
+  /**
+   * Adds a limited mitre join connecting the two reflex offset segments.
+   * A limited mitre is a mitre which is beveled at the distance
+   * determined by the mitre ratio limit.
+   * 
+   * @param offset0 the first offset segment
+   * @param offset1 the second offset segment
+   * @param distance the offset distance
+   * @param mitreLimit the mitre limit ratio
+   */
+  private void addLimitedMitreJoin( 
+  		LineSegment offset0, 
+  		LineSegment offset1,
+  		double distance,
+  		double mitreLimit)
+  {
+  	Coordinate basePt = seg0.p1;
+  	
+  	double ang0 = Angle.angle(basePt, seg0.p0);
+  	double ang1 = Angle.angle(basePt, seg1.p1);
+  	
+  	// oriented angle between segments
+  	double angDiff = Angle.angleBetweenOriented(seg0.p0, basePt, seg1.p1);
+  	// half of the interior angle
+  	double angDiffHalf = angDiff / 2;
+  
+  	// angle for bisector of the interior angle between the segments
+  	double midAng = Angle.normalize(ang0 + angDiffHalf);
+  	// rotating this by PI gives the bisector of the reflex angle
+  	double mitreMidAng = Angle.normalize(midAng + Math.PI);
+  	
+  	// the miterLimit determines the distance to the mitre bevel
+  	double mitreDist = mitreLimit * distance;
+  	// the bevel delta is the difference between the buffer distance
+  	// and half of the length of the bevel segment
+  	double bevelDelta = mitreDist * Math.abs(Math.sin(angDiffHalf));
+  	double bevelHalfLen = distance - bevelDelta;
+
+  	// compute the midpoint of the bevel segment
+  	double bevelMidX = basePt.x + mitreDist * Math.cos(mitreMidAng);
+  	double bevelMidY = basePt.y + mitreDist * Math.sin(mitreMidAng);
+  	Coordinate bevelMidPt = new Coordinate(bevelMidX, bevelMidY);
+  	
+  	// compute the mitre midline segment from the corner point to the bevel segment midpoint
+  	LineSegment mitreMidLine = new LineSegment(basePt, bevelMidPt);
+  	
+  	// finally the bevel segment endpoints are computed as offsets from 
+    // the mitre midline
+  	Coordinate bevelEndLeft = mitreMidLine.pointAlongOffset(1.0, bevelHalfLen);
+  	Coordinate bevelEndRight = mitreMidLine.pointAlongOffset(1.0, -bevelHalfLen);
+  	
+  	if (side == Position.LEFT) {
+  		vertexList.addPt(bevelEndLeft);
+  		vertexList.addPt(bevelEndRight);
+  	}
+  	else {
+  		vertexList.addPt(bevelEndRight);
+  		vertexList.addPt(bevelEndLeft);  		
+  	}
+  }
+  
+  /**
+   * Adds a bevel join connecting the two offset segments
+   * around a reflex corner.
+   * 
+   * @param offset0 the first offset segment
+   * @param offset1 the second offset segment
+   */
+  private void addBevelJoin( 
+  		LineSegment offset0, 
+  		LineSegment offset1)
+  {
+		 vertexList.addPt(offset0.p1);
+     vertexList.addPt(offset1.p0);				
+  }
+  
+  
+  /**
+   * Add points for a circular fillet around a reflex corner.
+   * Adds the start and end points
+   * 
    * @param p base point of curve
    * @param p0 start point of fillet curve
    * @param p1 endpoint of fillet curve
+   * @param direction the orientation of the fillet
+   * @param radius the radius of the fillet
    */
-  private void addFillet(Coordinate p, Coordinate p0, Coordinate p1, int direction, double distance)
+  private void addFillet(Coordinate p, Coordinate p0, Coordinate p1, int direction, double radius)
   {
     double dx0 = p0.x - p.x;
     double dy0 = p0.y - p.y;
@@ -443,18 +733,21 @@ public class OffsetCurveBuilder {
     else {    // direction == COUNTERCLOCKWISE
       if (startAngle >= endAngle) startAngle -= 2.0 * Math.PI;
     }
-    addPt(p0);
-    addFillet(p, startAngle, endAngle, direction, distance);
-    addPt(p1);
+    vertexList.addPt(p0);
+    addFillet(p, startAngle, endAngle, direction, radius);
+    vertexList.addPt(p1);
   }
 
   /**
-   * Adds points for a fillet.  The start and end point for the fillet are not added -
+   * Adds points for a circular fillet arc
+   * between two specified angles.  
+   * The start and end point for the fillet are not added -
    * the caller must add them if required.
    *
    * @param direction is -1 for a CW angle, 1 for a CCW angle
+   * @param radius the radius of the fillet
    */
-  private void addFillet(Coordinate p, double startAngle, double endAngle, int direction, double distance)
+  private void addFillet(Coordinate p, double startAngle, double endAngle, int direction, double radius)
   {
     int directionFactor = direction == CGAlgorithms.CLOCKWISE ? -1 : 1;
 
@@ -473,9 +766,9 @@ public class OffsetCurveBuilder {
     Coordinate pt = new Coordinate();
     while (currAngle < totalAngle) {
       double angle = startAngle + directionFactor * currAngle;
-      pt.x = p.x + distance * Math.cos(angle);
-      pt.y = p.y + distance * Math.sin(angle);
-      addPt(pt);
+      pt.x = p.x + radius * Math.cos(angle);
+      pt.y = p.y + radius * Math.sin(angle);
+      vertexList.addPt(pt);
       currAngle += currAngleInc;
     }
   }
@@ -488,7 +781,7 @@ public class OffsetCurveBuilder {
   {
     // add start point
     Coordinate pt = new Coordinate(p.x + distance, p.y);
-    addPt(pt);
+    vertexList.addPt(pt);
     addFillet(p, 0.0, 2.0 * Math.PI, -1, distance);
   }
 
@@ -498,10 +791,10 @@ public class OffsetCurveBuilder {
   private void addSquare(Coordinate p, double distance)
   {
     // add start point
-    addPt(new Coordinate(p.x + distance, p.y + distance));
-    addPt(new Coordinate(p.x + distance, p.y - distance));
-    addPt(new Coordinate(p.x - distance, p.y - distance));
-    addPt(new Coordinate(p.x - distance, p.y + distance));
-    addPt(new Coordinate(p.x + distance, p.y + distance));
+  	vertexList.addPt(new Coordinate(p.x + distance, p.y + distance));
+  	vertexList.addPt(new Coordinate(p.x + distance, p.y - distance));
+  	vertexList.addPt(new Coordinate(p.x - distance, p.y - distance));
+  	vertexList.addPt(new Coordinate(p.x - distance, p.y + distance));
+  	vertexList.addPt(new Coordinate(p.x + distance, p.y + distance));
   }
 }
diff --git a/src/com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.java b/src/com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.java
index 2ca64b7..9d16fa9 100644
--- a/src/com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.java
+++ b/src/com/vividsolutions/jts/operation/buffer/OffsetCurveSetBuilder.java
@@ -42,7 +42,7 @@ import java.util.*;
 import com.vividsolutions.jts.geom.*;
 import com.vividsolutions.jts.algorithm.*;
 import com.vividsolutions.jts.geomgraph.*;
-import com.vividsolutions.jts.noding.SegmentString;
+import com.vividsolutions.jts.noding.*;
 
 /**
  * Creates all the raw offset curves for a buffer of a {@link Geometry}.
@@ -52,7 +52,6 @@ import com.vividsolutions.jts.noding.SegmentString;
  */
 public class OffsetCurveSetBuilder {
 
-  private CGAlgorithms cga = new RobustCGAlgorithms();
 
   private Geometry inputGeom;
   private double distance;
@@ -105,7 +104,7 @@ public class OffsetCurveSetBuilder {
     // don't add null curves!
     if (coord.length < 2) return;
     // add the edge for a coordinate list which is a raw offset curve
-    SegmentString e = new SegmentString(coord,
+    SegmentString e = new NodedSegmentString(coord,
                         new Label(0, Location.BOUNDARY, leftLoc, rightLoc));
     curveList.add(e);
   }
@@ -165,6 +164,9 @@ public class OffsetCurveSetBuilder {
     // if the polygon would be completely eroded
     if (distance < 0.0 && isErodedCompletely(shell, distance))
         return;
+    // don't attemtp to buffer a polygon with too few distinct vertices
+    if (distance <= 0.0 && shellCoord.length < 3)
+    	return;
 
     addPolygonRing(
             shellCoord,
@@ -212,7 +214,7 @@ public class OffsetCurveSetBuilder {
     //Coordinate[] coord = CoordinateArrays.removeRepeatedPoints(lr.getCoordinates());
     int leftLoc  = cwLeftLoc;
     int rightLoc = cwRightLoc;
-    if (cga.isCCW(coord)) {
+    if (CGAlgorithms.isCCW(coord)) {
       leftLoc = cwRightLoc;
       rightLoc = cwLeftLoc;
       side = Position.opposite(side);
@@ -294,7 +296,7 @@ public class OffsetCurveSetBuilder {
   {
     Triangle tri = new Triangle(triangleCoord[0], triangleCoord[1], triangleCoord[2]);
     Coordinate inCentre = tri.inCentre();
-    double distToCentre = cga.distancePointLine(inCentre, tri.p0, tri.p1);
+    double distToCentre = CGAlgorithms.distancePointLine(inCentre, tri.p0, tri.p1);
     return distToCentre < Math.abs(bufferDistance);
   }
 
diff --git a/src/com/vividsolutions/jts/operation/buffer/OffsetCurveVertexList.java b/src/com/vividsolutions/jts/operation/buffer/OffsetCurveVertexList.java
new file mode 100644
index 0000000..0fec142
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/buffer/OffsetCurveVertexList.java
@@ -0,0 +1,133 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.operation.buffer;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * A list of the vertices in a constructed offset curve.
+ * Automatically removes close adjacent vertices.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class OffsetCurveVertexList 
+{
+  private static final Coordinate[] COORDINATE_ARRAY_TYPE = new Coordinate[0];
+
+  private ArrayList ptList;
+  private PrecisionModel precisionModel = null;
+  
+  /**
+   * The distance below which two adjacent points on the curve 
+   * are considered to be coincident.
+   * This is chosen to be a small fraction of the offset distance.
+   */
+  private double minimimVertexDistance = 0.0;
+
+  public OffsetCurveVertexList()
+  {
+  	ptList = new ArrayList();
+  }
+  
+  public void setPrecisionModel(PrecisionModel precisionModel)
+  {
+  	this.precisionModel = precisionModel;
+  }
+  
+  public void setMinimumVertexDistance(double minimimVertexDistance)
+  {
+  	this.minimimVertexDistance = minimimVertexDistance;
+  }
+  
+  public void addPt(Coordinate pt)
+  {
+    Coordinate bufPt = new Coordinate(pt);
+    precisionModel.makePrecise(bufPt);
+    // don't add duplicate (or near-duplicate) points
+    if (isDuplicate(bufPt))
+    		return;
+    ptList.add(bufPt);
+//System.out.println(bufPt);
+  }
+  
+  /**
+   * Tests whether the given point duplicates the previous
+   * point in the list (up to tolerance)
+   * 
+   * @param pt
+   * @return true if the point duplicates the previous point
+   */
+  private boolean isDuplicate(Coordinate pt)
+  {
+    if (ptList.size() < 1)
+    	return false;
+    Coordinate lastPt = (Coordinate) ptList.get(ptList.size() - 1);
+    double ptDist = pt.distance(lastPt);
+    if (ptDist < minimimVertexDistance)
+    	return true;
+    return false;
+  }
+  
+  public void closeRing()
+  {
+    if (ptList.size() < 1) return;
+    Coordinate startPt = new Coordinate((Coordinate) ptList.get(0));
+    Coordinate lastPt = (Coordinate) ptList.get(ptList.size() - 1);
+    Coordinate last2Pt = null;
+    if (ptList.size() >= 2)
+      last2Pt = (Coordinate) ptList.get(ptList.size() - 2);
+    if (startPt.equals(lastPt)) return;
+    ptList.add(startPt);
+  }
+
+  public Coordinate[] getCoordinates()
+  {
+    // check that points are a ring - add the startpoint again if they are not
+    if (ptList.size() > 1) {
+      Coordinate start  = (Coordinate) ptList.get(0);
+      Coordinate end    = (Coordinate) ptList.get(ptList.size() - 1);
+      if (! start.equals(end) ) addPt(start);
+    }
+    Coordinate[] coord = (Coordinate[]) ptList.toArray(COORDINATE_ARRAY_TYPE);
+    return coord;
+  }
+
+  public String toString()
+  {
+  	GeometryFactory fact = new GeometryFactory();
+  	LineString line = fact.createLineString(getCoordinates());
+  	return line.toString();
+  }
+}
diff --git a/src/com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.java b/src/com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.java
index 5fcd6e1..ea043b7 100644
--- a/src/com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.java
+++ b/src/com/vividsolutions/jts/operation/buffer/RightmostEdgeFinder.java
@@ -52,8 +52,6 @@ import com.vividsolutions.jts.util.*;
  */
 public class RightmostEdgeFinder {
 
-  private CGAlgorithms cga;
-
   //private Coordinate extremeCoord;
   private int minIndex = -1;
   private Coordinate minCoord = null;
@@ -63,10 +61,10 @@ public class RightmostEdgeFinder {
    * A RightmostEdgeFinder finds the DirectedEdge with the rightmost coordinate.
    * The DirectedEdge returned is guaranteed to have the R of the world on its RHS.
    */
-  public RightmostEdgeFinder(CGAlgorithms cga)
+  public RightmostEdgeFinder()
   {
-    this.cga = cga;
   }
+  
   public DirectedEdge getEdge()  {    return orientedDe;  }
   public Coordinate getCoordinate()  {    return minCoord;  }
 
@@ -127,7 +125,7 @@ public class RightmostEdgeFinder {
       Assert.isTrue(minIndex > 0 && minIndex < pts.length, "rightmost point expected to be interior vertex of edge");
       Coordinate pPrev = pts[minIndex - 1];
       Coordinate pNext = pts[minIndex + 1];
-      int orientation = cga.computeOrientation(minCoord, pNext, pPrev);
+      int orientation = CGAlgorithms.computeOrientation(minCoord, pNext, pPrev);
       boolean usePrev = false;
         // both segments are below min point
       if (pPrev.y < minCoord.y && pNext.y < minCoord.y
diff --git a/src/com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.java b/src/com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.java
index 24468db..35dbcc2 100644
--- a/src/com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.java
+++ b/src/com/vividsolutions/jts/operation/buffer/SubgraphDepthLocater.java
@@ -50,7 +50,7 @@ public class SubgraphDepthLocater
 {
   private Collection subgraphs;
   private LineSegment seg = new LineSegment();
-  private CGAlgorithms cga = new RobustCGAlgorithms();
+  private CGAlgorithms cga = new CGAlgorithms();
 
   public SubgraphDepthLocater(List subgraphs)
   {
@@ -150,7 +150,7 @@ public class SubgraphDepthLocater
         continue;
 
       // skip if stabbing ray is right of the segment
-      if (cga.computeOrientation(seg.p0, seg.p1, stabbingRayLeftPt)
+      if (CGAlgorithms.computeOrientation(seg.p0, seg.p1, stabbingRayLeftPt)
           == CGAlgorithms.RIGHT)
         continue;
 
diff --git a/src/com/vividsolutions/jts/operation/buffer/validate/BufferCurveMaximumDistanceFinder.java b/src/com/vividsolutions/jts/operation/buffer/validate/BufferCurveMaximumDistanceFinder.java
new file mode 100644
index 0000000..b379855
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/buffer/validate/BufferCurveMaximumDistanceFinder.java
@@ -0,0 +1,143 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.operation.buffer.validate;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Finds the approximate maximum distance from a buffer curve to
+ * the originating geometry.
+ * This is similar to the Discrete Oriented Hausdorff distance
+ * from the buffer curve to the input.
+ * <p>
+ * The approximate maximum distance is determined by testing
+ * all vertices in the buffer curve, as well
+ * as midpoints of the curve segments.
+ * Due to the way buffer curves are constructed, this
+ * should be a very close approximation.
+ * 
+ * @author mbdavis
+ *
+ */
+public class BufferCurveMaximumDistanceFinder 
+{
+	private Geometry inputGeom;
+  private PointPairDistance maxPtDist = new PointPairDistance();
+
+	public BufferCurveMaximumDistanceFinder(Geometry inputGeom)
+	{
+		this.inputGeom = inputGeom;
+	}
+	
+	public double findDistance(Geometry bufferCurve)
+	{
+    computeMaxVertexDistance(bufferCurve);
+    computeMaxMidpointDistance(bufferCurve);
+    return maxPtDist.getDistance();
+	}
+	
+	public PointPairDistance getDistancePoints()
+	{
+		return maxPtDist;
+	}
+	private void computeMaxVertexDistance(Geometry curve)
+	{
+    MaxPointDistanceFilter distFilter = new MaxPointDistanceFilter(inputGeom);
+    curve.apply(distFilter);
+    maxPtDist.setMaximum(distFilter.getMaxPointDistance());
+	}
+	
+	private void computeMaxMidpointDistance(Geometry curve)
+	{
+    MaxMidpointDistanceFilter distFilter = new MaxMidpointDistanceFilter(inputGeom);
+    curve.apply(distFilter);
+    maxPtDist.setMaximum(distFilter.getMaxPointDistance());
+	}
+	
+  public static class MaxPointDistanceFilter implements CoordinateFilter {
+		private PointPairDistance maxPtDist = new PointPairDistance();
+		private PointPairDistance minPtDist = new PointPairDistance();
+		private Geometry geom;
+
+		public MaxPointDistanceFilter(Geometry geom) {
+			this.geom = geom;
+		}
+
+		public void filter(Coordinate pt) {
+			minPtDist.initialize();
+			DistanceToPointFinder.computeDistance(geom, pt, minPtDist);
+			maxPtDist.setMaximum(minPtDist);
+		}
+
+		public PointPairDistance getMaxPointDistance() {
+			return maxPtDist;
+		}
+	}
+
+  public static class MaxMidpointDistanceFilter 
+  	implements CoordinateSequenceFilter 
+  	{
+		private PointPairDistance maxPtDist = new PointPairDistance();
+		private PointPairDistance minPtDist = new PointPairDistance();
+		private Geometry geom;
+
+		public MaxMidpointDistanceFilter(Geometry geom) {
+			this.geom = geom;
+		}
+
+		public void filter(CoordinateSequence seq, int index) 
+		{
+			if (index == 0)
+				return;
+			
+			Coordinate p0 = seq.getCoordinate(index - 1);
+			Coordinate p1 = seq.getCoordinate(index);
+			Coordinate midPt = new Coordinate(
+					(p0.x + p1.x)/2,
+					(p0.y + p1.y)/2);
+			
+			minPtDist.initialize();
+			DistanceToPointFinder.computeDistance(geom, midPt, minPtDist);
+			maxPtDist.setMaximum(minPtDist);
+		}
+
+		public boolean isGeometryChanged() { return false; }
+		
+		public boolean isDone() { return false; }
+		
+		public PointPairDistance getMaxPointDistance() {
+			return maxPtDist;
+		}
+	}
+
+}
diff --git a/src/com/vividsolutions/jts/operation/buffer/validate/BufferDistanceValidator.java b/src/com/vividsolutions/jts/operation/buffer/validate/BufferDistanceValidator.java
new file mode 100644
index 0000000..9d71570
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/buffer/validate/BufferDistanceValidator.java
@@ -0,0 +1,235 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.operation.buffer.validate;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.io.*;
+import com.vividsolutions.jts.geom.util.*;
+import com.vividsolutions.jts.operation.distance.*;
+import com.vividsolutions.jts.algorithm.distance.*;
+
+/**
+ * Validates that a given buffer curve lies an appropriate distance
+ * from the input generating it. 
+ * Useful only for round buffers (cap and join).
+ * Can be used for either positive or negative distances.
+ * <p>
+ * This is a heuristic test, and may return false positive results
+ * (I.e. it may fail to detect an invalid result.)
+ * It should never return a false negative result, however
+ * (I.e. it should never report a valid result as invalid.)
+ * 
+ * @author mbdavis
+ *
+ */
+public class BufferDistanceValidator 
+{
+  private static boolean VERBOSE = false;
+	/**
+	 * Maximum allowable fraction of buffer distance the 
+	 * actual distance can differ by.
+	 * 1% sometimes causes an error - 1.2% should be safe.
+	 */
+	private static final double MAX_DISTANCE_DIFF_FRAC = .012;
+
+  private Geometry input;
+  private double bufDistance;
+  private Geometry result;
+  
+  private double minValidDistance;
+  private double maxValidDistance;
+  
+  private double minDistanceFound;
+  private double maxDistanceFound;
+  
+  private boolean isValid = true;
+  private String errMsg = null;
+  private Coordinate errorLocation = null;
+  
+  public BufferDistanceValidator(Geometry input, double bufDistance, Geometry result)
+  {
+  	this.input = input;
+  	this.bufDistance = bufDistance;
+  	this.result = result;
+  }
+  
+  public boolean isValid()
+  {
+  	double posDistance = Math.abs(bufDistance);
+  	double distDelta = MAX_DISTANCE_DIFF_FRAC * posDistance;
+  	minValidDistance = posDistance - distDelta;
+  	maxValidDistance = posDistance + distDelta;
+  	
+  	// can't use this test if either is empty
+  	if (input.isEmpty() || result.isEmpty())
+  		return true;
+  	
+  	if (bufDistance > 0.0) {
+  		checkPositiveValid();
+  	}
+  	else {
+  		checkNegativeValid();
+  	}
+    if (VERBOSE) {
+      System.out.println("Min Dist= " + minDistanceFound + "  err= " 
+        + (1.0 - minDistanceFound / bufDistance) 
+        + "  Max Dist= " + maxDistanceFound + "  err= " 
+        + (maxDistanceFound / bufDistance - 1.0)
+        );
+    }
+  	return isValid;
+  }
+  
+  public String getErrorMessage()
+  { 
+  	return errMsg;
+  }
+  
+  public Coordinate getErrorLocation()
+  {
+  	return errorLocation;
+  }
+  
+  private void checkPositiveValid()
+  {
+  	Geometry bufCurve = result.getBoundary();
+  	checkMinimumDistance(input, bufCurve, minValidDistance);
+  	if (! isValid) return;
+  	
+  	checkMaximumDistance(input, bufCurve, maxValidDistance);
+  }
+  
+  private void checkNegativeValid()
+  {
+  	// Assert: only polygonal inputs can be checked for negative buffers
+  	
+  	// MD - could generalize this to handle GCs too
+  	if (! (input instanceof Polygon 
+  			|| input instanceof MultiPolygon
+  			|| input instanceof GeometryCollection
+  			)) {
+  		return;
+  	}
+  	Geometry inputCurve = getPolygonLines(input);
+  	checkMinimumDistance(inputCurve, result, minValidDistance);
+  	if (! isValid) return;
+  	
+  	checkMaximumDistance(inputCurve, result, maxValidDistance);
+  }
+  
+  private Geometry getPolygonLines(Geometry g)
+  {
+  	List lines = new ArrayList();
+  	LinearComponentExtracter lineExtracter = new LinearComponentExtracter(lines);
+  	List polys = PolygonExtracter.getPolygons(g);
+  	for (Iterator i = polys.iterator(); i.hasNext(); ) {
+  		Polygon poly = (Polygon) i.next();
+  		poly.apply(lineExtracter);
+  	}
+  	return g.getFactory().buildGeometry(lines);
+  }
+  
+  /**
+   * Checks that two geometries are at least a minumum distance apart.
+   * 
+   * @param g1 a geometry
+   * @param g2 a geometry
+   * @param minDist the minimum distance the geometries should be separated by
+   */
+  private void checkMinimumDistance(Geometry g1, Geometry g2, double minDist)
+  {
+  	DistanceOp distOp = new DistanceOp(g1, g2, minDist);
+  	minDistanceFound = distOp.distance();
+    
+    
+  	if (minDistanceFound < minDist) {
+  		isValid = false;
+  		Coordinate[] pts = distOp.nearestPoints();
+  		errorLocation = distOp.nearestPoints()[1];
+  		errMsg = "Distance between buffer curve and input is too small "
+  			+ "(" + minDistanceFound
+  			+ " at " + WKTWriter.toLineString(pts[0], pts[1]) +" )";
+  	}
+  }
+  
+  /**
+   * Checks that the furthest distance from the buffer curve to the input
+   * is less than the given maximum distance.
+   * This uses the Oriented Hausdorff distance metric.
+   * It corresponds to finding
+   * the point on the buffer curve which is furthest from <i>some</i> point on the input.
+   * 
+   * @param input a geometry
+   * @param bufCurve a geometry
+   * @param maxDist the maximum distance that a buffer result can be from the input
+   */
+  private void checkMaximumDistance(Geometry input, Geometry bufCurve, double maxDist)
+  {
+//    BufferCurveMaximumDistanceFinder maxDistFinder = new BufferCurveMaximumDistanceFinder(input);
+//    maxDistanceFound = maxDistFinder.findDistance(bufCurve);
+    
+    DiscreteHausdorffDistance haus = new DiscreteHausdorffDistance(bufCurve, input);
+    haus.setDensifyFraction(0.25);
+    maxDistanceFound = haus.orientedDistance();
+    
+    if (maxDistanceFound > maxDist) {
+      isValid = false;
+      Coordinate[] pts = haus.getCoordinates();
+      errorLocation = pts[1];
+      errMsg = "Distance between buffer curve and input is too large "
+        + "(" + maxDistanceFound
+        + " at " + WKTWriter.toLineString(pts[0], pts[1]) +")";
+    }
+  }
+  
+  /*
+  private void OLDcheckMaximumDistance(Geometry input, Geometry bufCurve, double maxDist)
+  {
+    BufferCurveMaximumDistanceFinder maxDistFinder = new BufferCurveMaximumDistanceFinder(input);
+    maxDistanceFound = maxDistFinder.findDistance(bufCurve);
+    
+    
+    if (maxDistanceFound > maxDist) {
+      isValid = false;
+      PointPairDistance ptPairDist = maxDistFinder.getDistancePoints();
+      errorLocation = ptPairDist.getCoordinate(1);
+      errMsg = "Distance between buffer curve and input is too large "
+        + "(" + ptPairDist.getDistance()
+        + " at " + ptPairDist.toString() +")";
+    }
+  }
+  */
+  
+  
+}
diff --git a/src/com/vividsolutions/jts/operation/buffer/validate/BufferResultValidator.java b/src/com/vividsolutions/jts/operation/buffer/validate/BufferResultValidator.java
new file mode 100644
index 0000000..8eaafb3
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/buffer/validate/BufferResultValidator.java
@@ -0,0 +1,205 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.operation.buffer.validate;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Validates that the result of a buffer operation
+ * is geometrically correct, within a computed tolerance.
+ * <p>
+ * This is a heuristic test, and may return false positive results
+ * (I.e. it may fail to detect an invalid result.)
+ * It should never return a false negative result, however
+ * (I.e. it should never report a valid result as invalid.)
+ * <p>
+ * This test may be (much) more expensive than the original
+ * buffer computation.
+ *
+ * @author Martin Davis
+ */
+public class BufferResultValidator 
+{
+  private static boolean VERBOSE = false;
+  
+	/**
+	 * Maximum allowable fraction of buffer distance the 
+	 * actual distance can differ by.
+	 * 1% sometimes causes an error - 1.2% should be safe.
+	 */
+	private static final double MAX_ENV_DIFF_FRAC = .012;
+
+  public static boolean isValid(Geometry g, double distance, Geometry result)
+  {
+  	BufferResultValidator validator = new BufferResultValidator(g, distance, result);
+    if (validator.isValid())
+    	return true;
+    return false;
+  }
+
+  /**
+   * Checks whether the geometry buffer is valid, 
+   * and returns an error message if not.
+   * 
+   * @param g
+   * @param distance
+   * @param result
+   * @return an appropriate error message
+   * @return null if the buffer is valid
+   */
+  public static String isValidMsg(Geometry g, double distance, Geometry result)
+  {
+  	BufferResultValidator validator = new BufferResultValidator(g, distance, result);
+    if (! validator.isValid())
+    	return validator.getErrorMessage();
+    return null;
+  }
+
+  private Geometry input;
+  private double distance;
+  private Geometry result;
+  private boolean isValid = true;
+  private String errorMsg = null;
+  private Coordinate errorLocation = null;
+  
+  public BufferResultValidator(Geometry input, double distance, Geometry result)
+  {
+  	this.input = input;
+  	this.distance = distance;
+  	this.result = result;
+  }
+  
+  public boolean isValid()
+  {
+  	checkPolygonal();
+  	if (! isValid) return isValid;
+  	checkExpectedEmpty();
+  	if (! isValid) return isValid;
+  	checkEnvelope();
+  	if (! isValid) return isValid;
+  	checkArea();
+  	if (! isValid) return isValid;
+  	checkDistance();
+  	return isValid;
+  }
+  
+  public String getErrorMessage()
+  {
+  	return errorMsg;
+  }
+  
+  public Coordinate getErrorLocation()
+  {
+  	return errorLocation;
+  }
+  
+  private void report(String checkName)
+  {
+    if (! VERBOSE) return;
+    System.out.println("Check " + checkName + ": " 
+        + (isValid ? "passed" : "FAILED"));
+  }
+  
+  private void checkPolygonal()
+  {
+  	if (! (result instanceof Polygon 
+  			|| result instanceof MultiPolygon))
+  	isValid = false;
+  	errorMsg = "Result is not polygonal";
+    report("Polygonal");
+  }
+  
+  private void checkExpectedEmpty()
+  {
+  	// can't check areal features
+  	if (input.getDimension() >= 2) return;
+  	// can't check positive distances
+  	if (distance > 0.0) return;
+  		
+  	// at this point can expect an empty result
+  	if (! result.isEmpty()) {
+  		isValid = false;
+  		errorMsg = "Result is non-empty";
+  	}
+    report("ExpectedEmpty");
+  }
+  
+  private void checkEnvelope()
+  {
+  	if (distance < 0.0) return;
+  	
+  	double padding = distance * MAX_ENV_DIFF_FRAC;
+  	if (padding == 0.0) padding = 0.001;
+
+  	Envelope expectedEnv = new Envelope(input.getEnvelopeInternal());
+  	expectedEnv.expandBy(distance);
+  	
+  	Envelope bufEnv = new Envelope(result.getEnvelopeInternal());
+  	bufEnv.expandBy(padding);
+
+  	if (! bufEnv.contains(expectedEnv)) {
+  		isValid = false;
+  		errorMsg = "Buffer envelope is incorrect";
+  	}
+    report("Envelope");
+  }
+  
+  private void checkArea()
+  {
+  	double inputArea = input.getArea();
+  	double resultArea = result.getArea();
+  	
+  	if (distance > 0.0
+  			&& inputArea > resultArea) {
+  		isValid = false;
+  		errorMsg = "Area of positive buffer is smaller than input";
+  	}
+  	if (distance < 0.0
+  			&& inputArea < resultArea) {
+  		isValid = false;
+  		errorMsg = "Area of negative buffer is larger than input";
+  	}
+    report("Area");
+  }
+  
+  private void checkDistance()
+  {
+  	BufferDistanceValidator distValid = new BufferDistanceValidator(input, distance, result);
+  	if (! distValid.isValid()) {
+  		isValid = false;
+  		errorMsg = distValid.getErrorMessage();
+  		errorLocation = distValid.getErrorLocation();
+  	}
+    report("Distance");
+  }
+}
diff --git a/src/com/vividsolutions/jts/operation/buffer/validate/DistanceToPointFinder.java b/src/com/vividsolutions/jts/operation/buffer/validate/DistanceToPointFinder.java
new file mode 100644
index 0000000..bec28d5
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/buffer/validate/DistanceToPointFinder.java
@@ -0,0 +1,92 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.operation.buffer.validate;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Computes the Euclidean distance (L2 metric) from a Point to a Geometry.
+ * Also computes two points which are separated by the distance.
+ */
+public class DistanceToPointFinder {
+
+  // used for point-line distance calculation
+  private static LineSegment tempSegment = new LineSegment();
+
+  public DistanceToPointFinder() {
+  }
+
+  public static void computeDistance(Geometry geom, Coordinate pt, PointPairDistance ptDist)
+  {
+    if (geom instanceof LineString) {
+      computeDistance((LineString) geom, pt, ptDist);
+    }
+    else if (geom instanceof Polygon) {
+      computeDistance((Polygon) geom, pt, ptDist);
+    }
+    else if (geom instanceof GeometryCollection) {
+      GeometryCollection gc = (GeometryCollection) geom;
+      for (int i = 0; i < gc.getNumGeometries(); i++) {
+        Geometry g = gc.getGeometryN(i);
+        computeDistance(g, pt, ptDist);
+      }
+    }
+    else { // assume geom is Point
+      ptDist.setMinimum(geom.getCoordinate(), pt);
+    }
+  }
+  public static void computeDistance(LineString line, Coordinate pt, PointPairDistance ptDist)
+  {
+    Coordinate[] coords = line.getCoordinates();
+    for (int i = 0; i < coords.length - 1; i++) {
+      tempSegment.setCoordinates(coords[i], coords[i + 1]);
+      // this is somewhat inefficient - could do better
+      Coordinate closestPt = tempSegment.closestPoint(pt);
+      ptDist.setMinimum(closestPt, pt);
+    }
+  }
+
+  public static void computeDistance(LineSegment segment, Coordinate pt, PointPairDistance ptDist)
+  {
+    Coordinate closestPt = segment.closestPoint(pt);
+    ptDist.setMinimum(closestPt, pt);
+  }
+
+  public static void computeDistance(Polygon poly, Coordinate pt, PointPairDistance ptDist)
+  {
+    computeDistance(poly.getExteriorRing(), pt, ptDist);
+    for (int i = 0; i < poly.getNumInteriorRing(); i++) {
+      computeDistance(poly.getInteriorRingN(i), pt, ptDist);
+    }
+  }
+}
diff --git a/src/com/vividsolutions/jts/operation/buffer/validate/PointPairDistance.java b/src/com/vividsolutions/jts/operation/buffer/validate/PointPairDistance.java
new file mode 100644
index 0000000..acdb9c7
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/buffer/validate/PointPairDistance.java
@@ -0,0 +1,113 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.operation.buffer.validate;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Contains a pair of points and the distance between them.
+ * Provides methods to update with a new point pair with
+ * either maximum or minimum distance.
+ */
+public class PointPairDistance {
+
+  private Coordinate[] pt = { new Coordinate(), new Coordinate() };
+  private double distance = Double.NaN;
+  private boolean isNull = true;
+
+  public PointPairDistance()
+  {
+  }
+
+  public void initialize() { isNull = true; }
+
+  public void initialize(Coordinate p0, Coordinate p1)
+  {
+    pt[0].setCoordinate(p0);
+    pt[1].setCoordinate(p1);
+    distance = p0.distance(p1);
+    isNull = false;
+  }
+
+  /**
+   * Initializes the points, avoiding recomputing the distance.
+   * @param p0
+   * @param p1
+   * @param distance the distance between p0 and p1
+   */
+  private void initialize(Coordinate p0, Coordinate p1, double distance)
+  {
+    pt[0].setCoordinate(p0);
+    pt[1].setCoordinate(p1);
+    this.distance = distance;
+    isNull = false;
+  }
+
+  public double getDistance() { return distance; }
+
+  public Coordinate[] getCoordinates() { return pt; }
+
+  public Coordinate getCoordinate(int i) { return pt[i]; }
+
+  public void setMaximum(PointPairDistance ptDist)
+  {
+    setMaximum(ptDist.pt[0], ptDist.pt[1]);
+  }
+
+  public void setMaximum(Coordinate p0, Coordinate p1)
+  {
+    if (isNull) {
+      initialize(p0, p1);
+      return;
+    }
+    double dist = p0.distance(p1);
+    if (dist > distance)
+      initialize(p0, p1, dist);
+  }
+
+  public void setMinimum(PointPairDistance ptDist)
+  {
+    setMinimum(ptDist.pt[0], ptDist.pt[1]);
+  }
+
+  public void setMinimum(Coordinate p0, Coordinate p1)
+  {
+    if (isNull) {
+      initialize(p0, p1);
+      return;
+    }
+    double dist = p0.distance(p1);
+    if (dist < distance)
+      initialize(p0, p1, dist);
+  }
+}
diff --git a/src/com/vividsolutions/jts/operation/buffer/validate/package.html b/src/com/vividsolutions/jts/operation/buffer/validate/package.html
new file mode 100644
index 0000000..a85ceaf
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/buffer/validate/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Classes to perform validation of the results of buffer operations.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/operation/distance/DistanceOp.java b/src/com/vividsolutions/jts/operation/distance/DistanceOp.java
index 3570ff4..c39f0ff 100644
--- a/src/com/vividsolutions/jts/operation/distance/DistanceOp.java
+++ b/src/com/vividsolutions/jts/operation/distance/DistanceOp.java
@@ -38,25 +38,27 @@ import com.vividsolutions.jts.geom.util.*;
 import com.vividsolutions.jts.algorithm.*;
 
 /**
- * Computes the distance and
- * closest points between two {@link Geometry}s.
+ * Find two points on two {@link Geometry}s which lie
+ * within a given distance, or else are the nearest points
+ * on the geometries (in which case this also
+ * provides the distance between the geometries).
  * <p>
- * The distance computation finds a pair of points in the input geometries
- * which have minimum distance between them.  These points may
- * not be vertices of the geometries, but may lie in the interior of
- * a line segment. In this case the coordinate computed is a close
+ * The distance computation also finds a pair of points in the input geometries
+ * which have the minimum distance between them.
+ * If a point lies in the interior of a line segment,
+ * the coordinate computed is a close
  * approximation to the exact point.
  * <p>
  * The algorithms used are straightforward O(n^2)
  * comparisons.  This worst-case performance could be improved on
- * by using Voronoi techniques.
+ * by using Voronoi techniques or spatial indexes.
  *
  * @version 1.7
  */
-public class DistanceOp {
-
+public class DistanceOp
+{
   /**
-   * Compute the distance between the closest points of two geometries.
+   * Compute the distance between the nearest points of two geometries.
    * @param g0 a {@link Geometry}
    * @param g1 another {@link Geometry}
    * @return the distance between the geometries
@@ -68,78 +70,145 @@ public class DistanceOp {
   }
 
   /**
+   * Test whether two geometries lie within a given distance of each other.
+   * @param g0 a {@link Geometry}
+   * @param g1 another {@link Geometry}
+   * @param distance the distance to test
+   * @return true if g0.distance(g1) <= distance
+   */
+  public static boolean isWithinDistance(Geometry g0, Geometry g1, double distance)
+  {
+    DistanceOp distOp = new DistanceOp(g0, g1, distance);
+    return distOp.distance() <= distance;
+  }
+
+  /**
+   * Compute the the nearest points of two geometries.
+   * The points are presented in the same order as the input Geometries.
+   *
+   * @param g0 a {@link Geometry}
+   * @param g1 another {@link Geometry}
+   * @return the nearest points in the geometries
+   */
+  public static Coordinate[] nearestPoints(Geometry g0, Geometry g1)
+  {
+    DistanceOp distOp = new DistanceOp(g0, g1);
+    return distOp.nearestPoints();
+  }
+
+  /**
    * Compute the the closest points of two geometries.
    * The points are presented in the same order as the input Geometries.
    *
    * @param g0 a {@link Geometry}
    * @param g1 another {@link Geometry}
    * @return the closest points in the geometries
+   * @deprecated renamed to nearestPoints
    */
   public static Coordinate[] closestPoints(Geometry g0, Geometry g1)
   {
     DistanceOp distOp = new DistanceOp(g0, g1);
-    return distOp.closestPoints();
+    return distOp.nearestPoints();
   }
 
-  private PointLocator ptLocator = new PointLocator();
+  // input
   private Geometry[] geom;
+  private double terminateDistance = 0.0;
+  // working
+  private PointLocator ptLocator = new PointLocator();
   private GeometryLocation[] minDistanceLocation;
   private double minDistance = Double.MAX_VALUE;
 
   /**
-   * Constructs a DistanceOp that computes the distance and closest points between
+   * Constructs a DistanceOp that computes the distance and nearest points between
    * the two specified geometries.
+   * @param g0 a Geometry
+   * @param g1 a Geometry
    */
   public DistanceOp(Geometry g0, Geometry g1)
   {
+    this(g0, g1, 0.0);
+  }
+
+  /**
+   * Constructs a DistanceOp that computes the distance and nearest points between
+   * the two specified geometries.
+   * @param g0 a Geometry
+   * @param g1 a Geometry
+   * @param terminateDistance the distance on which to terminate the search
+   */
+  public DistanceOp(Geometry g0, Geometry g1, double terminateDistance)
+  {
     this.geom = new Geometry[2];
     geom[0] = g0;
     geom[1] = g1;
+    this.terminateDistance = terminateDistance;
   }
 
   /**
-   * Report the distance between the closest points on the input geometries.
+   * Report the distance between the nearest points on the input geometries.
    *
    * @return the distance between the geometries
+   * @return 0 if either input geometry is empty
+   * @throws IllegalArgumentException if either input geometry is null
    */
   public double distance()
   {
+  	if (geom[0] == null || geom[1] == null)
+  		throw new IllegalArgumentException("null geometries are not supported");
+  	if (geom[0].isEmpty() || geom[1].isEmpty()) 
+  		return 0.0;
+  	
     computeMinDistance();
     return minDistance;
   }
 
   /**
-   * Report the coordinates of the closest points in the input geometries.
+   * Report the coordinates of the nearest points in the input geometries.
    * The points are presented in the same order as the input Geometries.
    *
-   * @return a pair of {@link Coordinate}s of the closest points
+   * @return a pair of {@link Coordinate}s of the nearest points
    */
-  public Coordinate[] closestPoints()
+  public Coordinate[] nearestPoints()
   {
     computeMinDistance();
-    Coordinate[] closestPts
+    Coordinate[] nearestPts
         = new Coordinate[] {
           minDistanceLocation[0].getCoordinate(),
           minDistanceLocation[1].getCoordinate() };
-    return closestPts;
+    return nearestPts;
+  }
+  
+  /**
+   * 
+   * @return
+   * @deprecated renamed to nearestPoints
+   */
+  public Coordinate[] closestPoints()
+  {
+    return nearestPoints();
   }
 
   /**
-   * Report the locations of the closest points in the input geometries.
+   * Report the locations of the nearest points in the input geometries.
    * The locations are presented in the same order as the input Geometries.
    *
-   * @return a pair of {@link GeometryLocation}s for the closest points
+   * @return a pair of {@link GeometryLocation}s for the nearest points
    */
-  public GeometryLocation[] closestLocations()
+  public GeometryLocation[] nearestLocations()
   {
     computeMinDistance();
     return minDistanceLocation;
   }
 
-  private void updateMinDistance(double dist)
+  /**
+   * 
+   * @return
+   * @deprecated renamed to nearestLocations
+   */
+  public GeometryLocation[] closestLocations()
   {
-    if (dist < minDistance)
-      minDistance = dist;
+    return nearestLocations();
   }
 
   private void updateMinDistance(GeometryLocation[] locGeom, boolean flip)
@@ -159,70 +228,71 @@ public class DistanceOp {
 
   private void computeMinDistance()
   {
+    // only compute once!
     if (minDistanceLocation != null) return;
 
     minDistanceLocation = new GeometryLocation[2];
     computeContainmentDistance();
-    if (minDistance <= 0.0) return;
-    computeLineDistance();
+    if (minDistance <= terminateDistance) return;
+    computeFacetDistance();
   }
 
   private void computeContainmentDistance()
   {
-    List polys0 = PolygonExtracter.getPolygons(geom[0]);
-    List polys1 = PolygonExtracter.getPolygons(geom[1]);
-
     GeometryLocation[] locPtPoly = new GeometryLocation[2];
-    // test if either geometry is wholely inside the other
-    if (polys1.size() > 0) {
-      List insideLocs0 = ConnectedElementLocationFilter.getLocations(geom[0]);
-      computeInside(insideLocs0, polys1, locPtPoly);
-      if (minDistance <= 0.0) {
-        minDistanceLocation[0] = locPtPoly[0];
-        minDistanceLocation[1] = locPtPoly[1];
-        return;
-      }
-    }
-    if (polys0.size() > 0) {
-      List insideLocs1 = ConnectedElementLocationFilter.getLocations(geom[1]);
-      computeInside(insideLocs1, polys0, locPtPoly);
-      if (minDistance <= 0.0) {
-        // flip locations, since we are testing geom 1 VS geom 0
-        minDistanceLocation[0] = locPtPoly[1];
-        minDistanceLocation[1] = locPtPoly[0];
+    // test if either geometry has a vertex inside the other
+    computeContainmentDistance(0, locPtPoly);
+    if (minDistance <= terminateDistance) return;
+    computeContainmentDistance(1, locPtPoly);
+  }
+  
+  private void computeContainmentDistance(int polyGeomIndex, GeometryLocation[] locPtPoly)
+  {
+  	int locationsIndex = 1 - polyGeomIndex;
+    List polys = PolygonExtracter.getPolygons(geom[polyGeomIndex]);
+    if (polys.size() > 0) {
+      List insideLocs = ConnectedElementLocationFilter.getLocations(geom[locationsIndex]);
+      computeContainmentDistance(insideLocs, polys, locPtPoly);
+      if (minDistance <= terminateDistance) {
+      	// this assigment is determined by the order of the args in the computeInside call above
+        minDistanceLocation[locationsIndex] = locPtPoly[0];
+        minDistanceLocation[polyGeomIndex] 	= locPtPoly[1];
         return;
       }
-    }
+    }	
   }
-  private void computeInside(List locs, List polys, GeometryLocation[] locPtPoly)
+  
+  private void computeContainmentDistance(List locs, List polys, GeometryLocation[] locPtPoly)
   {
     for (int i = 0; i < locs.size(); i++) {
       GeometryLocation loc = (GeometryLocation) locs.get(i);
       for (int j = 0; j < polys.size(); j++) {
-        Polygon poly = (Polygon) polys.get(j);
-        computeInside(loc, poly, locPtPoly);
-        if (minDistance <= 0.0) {
-          return;
-        }
+      	computeContainmentDistance(loc, (Polygon) polys.get(j), locPtPoly);
+        if (minDistance <= terminateDistance) return;
       }
     }
   }
 
-  private void computeInside(GeometryLocation ptLoc,
+  private void computeContainmentDistance(GeometryLocation ptLoc,
       Polygon poly,
       GeometryLocation[] locPtPoly)
   {
     Coordinate pt = ptLoc.getCoordinate();
+    // if pt is not in exterior, distance to geom is 0
     if (Location.EXTERIOR != ptLocator.locate(pt, poly)) {
       minDistance = 0.0;
       locPtPoly[0] = ptLoc;
-      GeometryLocation locPoly = new GeometryLocation(poly, pt);
-      locPtPoly[1] = locPoly;
+      locPtPoly[1] = new GeometryLocation(poly, pt);;
       return;
     }
   }
 
-  private void computeLineDistance()
+  /**
+   * Computes distance between facets (lines and points)
+   * of input geometries.
+   *
+   */
+  private void computeFacetDistance()
   {
     GeometryLocation[] locGeom = new GeometryLocation[2];
 
@@ -236,22 +306,22 @@ public class DistanceOp {
     List pts0 = PointExtracter.getPoints(geom[0]);
     List pts1 = PointExtracter.getPoints(geom[1]);
 
-    // bail whenever minDistance goes to zero, since it can't get any less
+    // exit whenever minDistance goes LE than terminateDistance
     computeMinDistanceLines(lines0, lines1, locGeom);
     updateMinDistance(locGeom, false);
-    if (minDistance <= 0.0) return;
+    if (minDistance <= terminateDistance) return;
 
     locGeom[0] = null;
     locGeom[1] = null;
     computeMinDistanceLinesPoints(lines0, pts1, locGeom);
     updateMinDistance(locGeom, false);
-    if (minDistance <= 0.0) return;
+    if (minDistance <= terminateDistance) return;
 
     locGeom[0] = null;
     locGeom[1] = null;
     computeMinDistanceLinesPoints(lines1, pts0, locGeom);
     updateMinDistance(locGeom, true);
-    if (minDistance <= 0.0) return;
+    if (minDistance <= terminateDistance) return;
 
     locGeom[0] = null;
     locGeom[1] = null;
@@ -266,7 +336,7 @@ public class DistanceOp {
       for (int j = 0; j < lines1.size(); j++) {
         LineString line1 = (LineString) lines1.get(j);
         computeMinDistance(line0, line1, locGeom);
-        if (minDistance <= 0.0) return;
+        if (minDistance <= terminateDistance) return;
       }
     }
   }
@@ -280,11 +350,10 @@ public class DistanceOp {
         double dist = pt0.getCoordinate().distance(pt1.getCoordinate());
         if (dist < minDistance) {
           minDistance = dist;
-          // this is wrong - need to determine closest points on both segments!!!
           locGeom[0] = new GeometryLocation(pt0, 0, pt0.getCoordinate());
           locGeom[1] = new GeometryLocation(pt1, 0, pt1.getCoordinate());
         }
-        if (minDistance <= 0.0) return;
+        if (minDistance <= terminateDistance) return;
       }
     }
   }
@@ -297,7 +366,7 @@ public class DistanceOp {
       for (int j = 0; j < points.size(); j++) {
         Point pt = (Point) points.get(j);
         computeMinDistance(line, pt, locGeom);
-        if (minDistance <= 0.0) return;
+        if (minDistance <= terminateDistance) return;
       }
     }
   }
@@ -324,7 +393,7 @@ public class DistanceOp {
           locGeom[0] = new GeometryLocation(line0, i, closestPt[0]);
           locGeom[1] = new GeometryLocation(line1, j, closestPt[1]);
         }
-        if (minDistance <= 0.0) return;
+        if (minDistance <= terminateDistance) return;
       }
     }
   }
@@ -348,7 +417,7 @@ public class DistanceOp {
           locGeom[0] = new GeometryLocation(line, i, segClosestPoint);
           locGeom[1] = new GeometryLocation(pt, 0, coord);
         }
-        if (minDistance <= 0.0) return;
+        if (minDistance <= terminateDistance) return;
 
     }
   }
diff --git a/src/com/vividsolutions/jts/operation/distance/GeometryLocation.java b/src/com/vividsolutions/jts/operation/distance/GeometryLocation.java
index dbe0f56..1ec5a7c 100644
--- a/src/com/vividsolutions/jts/operation/distance/GeometryLocation.java
+++ b/src/com/vividsolutions/jts/operation/distance/GeometryLocation.java
@@ -37,20 +37,22 @@ import com.vividsolutions.jts.geom.*;
 
 /**
  * Represents the location of a point on a Geometry.
- * Maintains both the actual point location (which of course
- * may not be exact) as well as information about the component
+ * Maintains both the actual point location 
+ * (which may not be exact, if the point is not a vertex) 
+ * as well as information about the component
  * and segment index where the point occurs.
  * Locations inside area Geometrys will not have an associated segment index,
- * so in this case the segment index will have the sentinel value of INSIDE_AREA.
+ * so in this case the segment index will have the sentinel value of 
+ * {@link #INSIDE_AREA}.
  *
  * @version 1.7
  */
 public class GeometryLocation
 {
-  
   /**
-   * Special value of segment-index for locations inside area geometries. These
-   * locations do not have an associated segment index.
+   * A special value of segmentIndex used for locations inside area geometries. 
+   * These locations are not located on a segment, 
+   * and thus do not have an associated segment index.
    */
   public static final int INSIDE_AREA = -1;
 
@@ -60,7 +62,12 @@ public class GeometryLocation
 
   /**
    * Constructs a GeometryLocation specifying a point on a geometry, as well as the 
-   * segment that the point is on (or INSIDE_AREA if the point is not on a segment).
+   * segment that the point is on 
+   * (or {@link INSIDE_AREA} if the point is not on a segment).
+   * 
+   * @param component the component of the geometry containing the point
+   * @param segIndex the segment index of the location, or INSIDE_AREA
+   * @param the coordinate of the location
    */
   public GeometryLocation(Geometry component, int segIndex, Coordinate pt)
   {
@@ -71,6 +78,9 @@ public class GeometryLocation
 
   /**
    * Constructs a GeometryLocation specifying a point inside an area geometry.
+   * 
+   * @param component the component of the geometry containing the point
+   * @param the coordinate of the location
    */  
   public GeometryLocation(Geometry component,Coordinate pt)
   {
@@ -78,22 +88,25 @@ public class GeometryLocation
   }
 
   /**
-   * Returns the geometry associated with this location.
+   * Returns the geometry component on (or in) which this location occurs.
    */
   public Geometry getGeometryComponent() { return component; }
+  
   /**
    * Returns the segment index for this location. If the location is inside an
-   * area, the index will have the value INSIDE_AREA;
+   * area, the index will have the value {@link INSIDE_AREA};
    *
    * @return the segment index for the location, or INSIDE_AREA
    */
   public int getSegmentIndex() { return segIndex; }
+  
   /**
-   * Returns the location.
+   * Returns the {@link Coordinate} of this location.
    */
   public Coordinate getCoordinate() { return pt; }
+  
   /**
-   * Returns whether this GeometryLocation represents a point inside an area geometry.
+   * Tests whether this location represents a point inside an area geometry.
    */
   public boolean isInsideArea() { return segIndex == INSIDE_AREA; }
 }
diff --git a/src/com/vividsolutions/jts/operation/linemerge/LineMerger.java b/src/com/vividsolutions/jts/operation/linemerge/LineMerger.java
index 076c281..9067ba9 100644
--- a/src/com/vividsolutions/jts/operation/linemerge/LineMerger.java
+++ b/src/com/vividsolutions/jts/operation/linemerge/LineMerger.java
@@ -41,6 +41,7 @@ import com.vividsolutions.jts.geom.Geometry;
 import com.vividsolutions.jts.geom.GeometryComponentFilter;
 import com.vividsolutions.jts.geom.GeometryFactory;
 import com.vividsolutions.jts.geom.LineString;
+import com.vividsolutions.jts.planargraph.GraphComponent;
 import com.vividsolutions.jts.planargraph.Node;
 import com.vividsolutions.jts.util.Assert;
 
@@ -55,24 +56,17 @@ import com.vividsolutions.jts.util.Assert;
  * form the edges. The edges must be correctly noded; that is, they must only meet
  * at their endpoints.  The LineMerger will still run on incorrectly noded input
  * but will not form polygons from incorrected noded edges.
+ * <p>
+ * <b>NOTE:</b>once merging has been performed, no more 
  *
  * @version 1.7
  */
-public class LineMerger {
-  /**
-   * Adds a collection of Geometries to be processed. May be called multiple times.
-   * Any dimension of Geometry may be added; the constituent linework will be
-   * extracted.
-   */
-  public void add(Collection geometries) {
-    for (Iterator i = geometries.iterator(); i.hasNext(); ) {
-      Geometry geometry = (Geometry) i.next();
-      add(geometry);
-    }
-  }
+public class LineMerger 
+{
   private LineMergeGraph graph = new LineMergeGraph();
   private Collection mergedLineStrings = null;
   private GeometryFactory factory = null;
+  
   /**
    * Adds a Geometry to be processed. May be called multiple times.
    * Any dimension of Geometry may be added; the constituent linework will be
@@ -87,15 +81,36 @@ public class LineMerger {
       }      
     });
   }
+  /**
+   * Adds a collection of Geometries to be processed. May be called multiple times.
+   * Any dimension of Geometry may be added; the constituent linework will be
+   * extracted.
+   */
+  public void add(Collection geometries) 
+  {
+  	mergedLineStrings = null;
+    for (Iterator i = geometries.iterator(); i.hasNext(); ) {
+      Geometry geometry = (Geometry) i.next();
+      add(geometry);
+    }
+  }
   private void add(LineString lineString) {
     if (factory == null) {
       this.factory = lineString.getFactory();
     }
     graph.addEdge(lineString);
   }
+  
   private Collection edgeStrings = null;
-  private void merge() {
+  
+  private void merge() 
+  {
     if (mergedLineStrings != null) { return; }
+    
+    // reset marks (this allows incremental processing)
+    GraphComponent.setMarked(graph.nodeIterator(), false);
+    GraphComponent.setMarked(graph.edgeIterator(), false);
+    
     edgeStrings = new ArrayList();
     buildEdgeStringsForObviousStartNodes();
     buildEdgeStringsForIsolatedLoops();
@@ -105,12 +120,15 @@ public class LineMerger {
       mergedLineStrings.add(edgeString.toLineString());
     }    
   }
+  
   private void buildEdgeStringsForObviousStartNodes() {
     buildEdgeStringsForNonDegree2Nodes();
   }
+  
   private void buildEdgeStringsForIsolatedLoops() {
     buildEdgeStringsForUnprocessedNodes();
   }  
+  
   private void buildEdgeStringsForUnprocessedNodes() {
     for (Iterator i = graph.getNodes().iterator(); i.hasNext(); ) {
       Node node = (Node) i.next();
@@ -137,6 +155,7 @@ public class LineMerger {
       edgeStrings.add(buildEdgeStringStartingWith(directedEdge));
     }
   }
+  
   private EdgeString buildEdgeStringStartingWith(LineMergeDirectedEdge start) {    
     EdgeString edgeString = new EdgeString(factory);
     LineMergeDirectedEdge current = start;
@@ -147,6 +166,7 @@ public class LineMerger {
     } while (current != null && current != start);
     return edgeString;
   }
+  
   /**
    * Returns the LineStrings built by the merging process.
    */
diff --git a/src/com/vividsolutions/jts/operation/linemerge/LineSequencer.java b/src/com/vividsolutions/jts/operation/linemerge/LineSequencer.java
index c974dcd..e6ddaf5 100644
--- a/src/com/vividsolutions/jts/operation/linemerge/LineSequencer.java
+++ b/src/com/vividsolutions/jts/operation/linemerge/LineSequencer.java
@@ -80,7 +80,7 @@ public class LineSequencer
 {
   /**
    * Tests whether a {@link Geometry} is sequenced correctly.
-   * {@llink LineString}s are trivially sequenced.
+   * {@link LineString}s are trivially sequenced.
    * {@link MultiLineString}s are checked for correct sequencing.
    * Otherwise, <code>isSequenced</code> is defined
    * to be <code>true</code> for geometries that are not lineal.
diff --git a/src/com/vividsolutions/jts/operation/linemerge/package.html b/src/com/vividsolutions/jts/operation/linemerge/package.html
new file mode 100644
index 0000000..4dab325
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/linemerge/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Classes to perform line merging.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.java b/src/com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.java
new file mode 100644
index 0000000..3b02caf
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/overlay/ConsistentPolygonRingChecker.java
@@ -0,0 +1,127 @@
+package com.vividsolutions.jts.operation.overlay;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.util.*;
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.geomgraph.*;
+import com.vividsolutions.jts.geomgraph.index.SegmentIntersector;
+import com.vividsolutions.jts.operation.GeometryGraphOperation;
+
+/**
+ * Tests whether the polygon rings in a {@link GeometryGraph}
+ * are consistent.
+ * Used for checking if Topology errors are present after noding.
+ *
+ * @author Martin Davis
+ * @version 1.7
+ */
+public class ConsistentPolygonRingChecker
+{
+  private PlanarGraph graph;
+
+  public ConsistentPolygonRingChecker(PlanarGraph graph) {
+    this.graph = graph;
+  }
+
+  public void checkAll()
+  {
+    check(OverlayOp.INTERSECTION);
+    check(OverlayOp.DIFFERENCE);
+    check(OverlayOp.UNION);
+    check(OverlayOp.SYMDIFFERENCE);
+  }
+
+  /**
+   * Tests whether the result geometry is consistent
+   *
+   * @throws TopologyException if inconsistent topology is found
+   */
+  public void check(int opCode)
+  {
+    for (Iterator nodeit = graph.getNodeIterator(); nodeit.hasNext(); ) {
+      Node node = (Node) nodeit.next();
+      testLinkResultDirectedEdges((DirectedEdgeStar) node.getEdges(), opCode);
+    }
+  }
+
+  private List getPotentialResultAreaEdges(DirectedEdgeStar deStar, int opCode)
+  {
+//print(System.out);
+    List resultAreaEdgeList = new ArrayList();
+    for (Iterator it = deStar.iterator(); it.hasNext(); ) {
+      DirectedEdge de = (DirectedEdge) it.next();
+      if (isPotentialResultAreaEdge(de, opCode) || isPotentialResultAreaEdge(de.getSym(), opCode) )
+        resultAreaEdgeList.add(de);
+    }
+    return resultAreaEdgeList;
+  }
+
+  private boolean isPotentialResultAreaEdge(DirectedEdge de, int opCode)
+  {
+    // mark all dirEdges with the appropriate label
+    Label label = de.getLabel();
+    if (label.isArea()
+        && ! de.isInteriorAreaEdge()
+        && OverlayOp.isResultOfOp(
+        label.getLocation(0, Position.RIGHT),
+        label.getLocation(1, Position.RIGHT),
+        opCode)
+      ) {
+        return true;
+//Debug.print("in result "); Debug.println(de);
+      }
+      return false;
+    }
+
+  private final int SCANNING_FOR_INCOMING = 1;
+  private final int LINKING_TO_OUTGOING = 2;
+
+  private void testLinkResultDirectedEdges(DirectedEdgeStar deStar, int opCode)
+  {
+    // make sure edges are copied to resultAreaEdges list
+    List ringEdges = getPotentialResultAreaEdges(deStar, opCode);
+    // find first area edge (if any) to start linking at
+    DirectedEdge firstOut = null;
+    DirectedEdge incoming = null;
+    int state = SCANNING_FOR_INCOMING;
+    // link edges in CCW order
+    for (int i = 0; i < ringEdges.size(); i++) {
+      DirectedEdge nextOut = (DirectedEdge) ringEdges.get(i);
+      DirectedEdge nextIn = nextOut.getSym();
+
+      // skip de's that we're not interested in
+      if (! nextOut.getLabel().isArea()) continue;
+
+      // record first outgoing edge, in order to link the last incoming edge
+      if (firstOut == null
+          && isPotentialResultAreaEdge(nextOut, opCode))
+        firstOut = nextOut;
+      // assert: sym.isInResult() == false, since pairs of dirEdges should have been removed already
+
+      switch (state) {
+      case SCANNING_FOR_INCOMING:
+        if (! isPotentialResultAreaEdge(nextIn, opCode)) continue;
+        incoming = nextIn;
+        state = LINKING_TO_OUTGOING;
+        break;
+      case LINKING_TO_OUTGOING:
+        if (! isPotentialResultAreaEdge(nextOut, opCode)) continue;
+        //incoming.setNext(nextOut);
+        state = SCANNING_FOR_INCOMING;
+        break;
+      }
+    }
+//Debug.print(this);
+    if (state == LINKING_TO_OUTGOING) {
+//Debug.print(firstOut == null, this);
+      if (firstOut == null)
+        throw new TopologyException("no outgoing dirEdge found", deStar.getCoordinate());
+    }
+
+  }
+
+
+
+
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.java b/src/com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.java
index 9c96c9e..fa857c7 100644
--- a/src/com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.java
+++ b/src/com/vividsolutions/jts/operation/overlay/MaximalEdgeRing.java
@@ -40,8 +40,8 @@ import com.vividsolutions.jts.algorithm.*;
 import com.vividsolutions.jts.geomgraph.*;
 
 /**
- * A ring of {@link edges} which may contain nodes of degree > 2.
- * A MaximalEdgeRing may represent two different spatial entities:
+ * A ring of {@link DirectedEdge}s which may contain nodes of degree > 2.
+ * A <tt>MaximalEdgeRing</tt> may represent two different spatial entities:
  * <ul>
  * <li>a single polygon possibly containing inversions (if the ring is oriented CW)
  * <li>a single hole possibly containing exversions (if the ring is oriented CCW)
@@ -50,7 +50,7 @@ import com.vividsolutions.jts.geomgraph.*;
  * the interior of the polygon is strongly connected.
  * <p>
  * These are the form of rings used to define polygons under some spatial data models.
- * However, under the OGC SFS model, {@link MinimalEdgeRings} are required.
+ * However, under the OGC SFS model, {@link MinimalEdgeRing}s are required.
  * A MaximalEdgeRing can be converted to a list of MinimalEdgeRings using the
  * {@link #buildMinimalRings() } method.
  *
@@ -61,8 +61,8 @@ public class MaximalEdgeRing
   extends EdgeRing
 {
 
-  public MaximalEdgeRing(DirectedEdge start, GeometryFactory geometryFactory, CGAlgorithms cga) {
-    super(start, geometryFactory, cga);
+  public MaximalEdgeRing(DirectedEdge start, GeometryFactory geometryFactory) {
+    super(start, geometryFactory);
   }
 
   public DirectedEdge getNext(DirectedEdge de)
@@ -78,7 +78,7 @@ public class MaximalEdgeRing
    * For all nodes in this EdgeRing,
    * link the DirectedEdges at the node to form minimalEdgeRings
    */
-  void linkDirectedEdgesForMinimalEdgeRings()
+  public void linkDirectedEdgesForMinimalEdgeRings()
   {
     DirectedEdge de = startDe;
     do {
@@ -88,13 +88,13 @@ public class MaximalEdgeRing
     } while (de != startDe);
   }
 
-  List buildMinimalRings()
+  public List buildMinimalRings()
   {
     List minEdgeRings = new ArrayList();
     DirectedEdge de = startDe;
     do {
       if (de.getMinEdgeRing() == null) {
-        EdgeRing minEr = new MinimalEdgeRing(de, geometryFactory, cga);
+        EdgeRing minEr = new MinimalEdgeRing(de, geometryFactory);
         minEdgeRings.add(minEr);
       }
       de = de.getNext();
diff --git a/src/com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.java b/src/com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.java
index 339342a..5860758 100644
--- a/src/com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.java
+++ b/src/com/vividsolutions/jts/operation/overlay/MinimalEdgeRing.java
@@ -50,8 +50,8 @@ public class MinimalEdgeRing
   extends EdgeRing
 {
 
-  public MinimalEdgeRing(DirectedEdge start, GeometryFactory geometryFactory, CGAlgorithms cga) {
-    super(start, geometryFactory, cga);
+  public MinimalEdgeRing(DirectedEdge start, GeometryFactory geometryFactory) {
+    super(start, geometryFactory);
   }
 
   public DirectedEdge getNext(DirectedEdge de)
diff --git a/src/com/vividsolutions/jts/operation/overlay/OverlayOp.java b/src/com/vividsolutions/jts/operation/overlay/OverlayOp.java
index 0b4278f..8e5f724 100644
--- a/src/com/vividsolutions/jts/operation/overlay/OverlayOp.java
+++ b/src/com/vividsolutions/jts/operation/overlay/OverlayOp.java
@@ -39,8 +39,8 @@ import com.vividsolutions.jts.geom.*;
 import com.vividsolutions.jts.util.*;
 import com.vividsolutions.jts.algorithm.*;
 import com.vividsolutions.jts.geomgraph.*;
-import com.vividsolutions.jts.geomgraph.index.SegmentIntersector;
 import com.vividsolutions.jts.operation.GeometryGraphOperation;
+import com.vividsolutions.jts.noding.*;
 
 /**
  * Computes the overlay of two {@link Geometry}s.  The overlay
@@ -157,9 +157,17 @@ public class OverlayOp
 
 //Debug.println(edgeList);
 
-    // debugging only
-    //NodingValidator nv = new NodingValidator(edgeList.getEdges());
-    //nv.checkValid();
+    /**
+     * Check that the noding completed correctly.
+     * 
+     * This test is slow, but necessary in order to catch robustness failure 
+     * situations.
+     * If an exception is thrown because of a noding failure, 
+     * then snapping will be performed, which will hopefully avoid the problem.
+     * In the future hopefully a faster check can be developed.  
+     * 
+     */
+    EdgeNodingValidator.checkValid(edgeList.getEdges());
 
     graph.addEdges(edgeList.getEdges());
     computeLabelling();
@@ -176,7 +184,8 @@ public class OverlayOp
      */
     findResultAreaEdges(opCode);
     cancelDuplicateResultEdges();
-    PolygonBuilder polyBuilder = new PolygonBuilder(geomFact, cga);
+
+    PolygonBuilder polyBuilder = new PolygonBuilder(geomFact);
     polyBuilder.add(graph);
     resultPolyList = polyBuilder.getPolygons();
 
@@ -187,7 +196,7 @@ public class OverlayOp
     resultPointList = pointBuilder.build(opCode);
 
     // gather the results from all calculations into a single Geometry for the result set
-    resultGeom = computeGeometry(resultPointList, resultLineList, resultPolyList);
+    resultGeom = computeGeometry(resultPointList, resultLineList, resultPolyList, opCode);
   }
 
   private void insertUniqueEdges(List edges)
@@ -410,10 +419,12 @@ public class OverlayOp
    */
   private void labelIncompleteNodes()
   {
+  	int nodeCount = 0;
     for (Iterator ni = graph.getNodes().iterator(); ni.hasNext(); ) {
       Node n = (Node) ni.next();
       Label label = n.getLabel();
       if (n.isIsolated()) {
+      	nodeCount++;
         if (label.isNull(0))
           labelIncompleteNode(n, 0);
         else
@@ -423,6 +434,13 @@ public class OverlayOp
       ((DirectedEdgeStar) n.getEdges()).updateLabelling(label);
 //n.print(System.out);
     }
+    /*
+    int nPoly0 = arg[0].getGeometry().getNumGeometries();
+    int nPoly1 = arg[1].getGeometry().getNumGeometries();
+    System.out.println("# isolated nodes= " + nodeCount 
+    		+ "   # poly[0] = " + nPoly0
+    		+ "   # poly[1] = " + nPoly1);
+    */
   }
 
   /**
@@ -431,6 +449,9 @@ public class OverlayOp
   private void labelIncompleteNode(Node n, int targetIndex)
   {
     int loc = ptLocator.locate(n.getCoordinate(), arg[targetIndex].getGeometry());
+  	
+  	// MD - 2008-10-24 - experimental for now
+//    int loc = arg[targetIndex].locate(n.getCoordinate());
     n.getLabel().setLocation(targetIndex, loc);
   }
 
@@ -514,15 +535,64 @@ public class OverlayOp
 
   private Geometry computeGeometry( List resultPointList,
                                         List resultLineList,
-                                        List resultPolyList)
+                                        List resultPolyList,
+                                        int opcode)
   {
     List geomList = new ArrayList();
     // element geometries of the result are always in the order P,L,A
     geomList.addAll(resultPointList);
     geomList.addAll(resultLineList);
     geomList.addAll(resultPolyList);
+    
+    /*
+    if (geomList.isEmpty())
+    	return createEmptyResult(opcode);
+    */
+    
     // build the most specific geometry possible
     return geomFact.buildGeometry(geomList);
   }
 
+  private Geometry createEmptyResult(int opCode)
+  {
+  	Geometry result = null;
+  	switch (resultDimension(opCode, arg[0].getGeometry(), arg[1].getGeometry())) {
+  	case -1:
+  		result = geomFact.createGeometryCollection(new Geometry[0]);
+  		break;
+  	case 0:
+  		result =  geomFact.createPoint((Coordinate) null);
+  		break;
+  	case 1:
+  		result =  geomFact.createLineString((Coordinate[]) null);
+  		break;
+  	case 2:
+  		result =  geomFact.createPolygon(null, null);
+  		break;
+  	}
+		return result;
+  }
+  
+  private int resultDimension(int opCode, Geometry g0, Geometry g1)
+  {
+  	int dim0 = g0.getDimension();
+  	int dim1 = g1.getDimension();
+  	
+  	int resultDimension = -1;
+  	switch (opCode) {
+  	case INTERSECTION: 
+  		resultDimension = Math.min(dim0, dim1);
+  		break;
+  	case UNION: 
+  		resultDimension = Math.max(dim0, dim1);
+  		break;
+  	case DIFFERENCE: 
+  		resultDimension = dim0;
+  		break;
+  	case SYMDIFFERENCE: 
+  		resultDimension = Math.max(dim0, dim1);
+  		break;
+  	}
+  	return resultDimension;
+  }
 }
diff --git a/src/com/vividsolutions/jts/operation/overlay/PolygonBuilder.java b/src/com/vividsolutions/jts/operation/overlay/PolygonBuilder.java
index 7f177e6..bd2ec6f 100644
--- a/src/com/vividsolutions/jts/operation/overlay/PolygonBuilder.java
+++ b/src/com/vividsolutions/jts/operation/overlay/PolygonBuilder.java
@@ -48,15 +48,13 @@ import com.vividsolutions.jts.util.*;
 public class PolygonBuilder {
 
   private GeometryFactory geometryFactory;
-  private CGAlgorithms cga;
   //private List dirEdgeList;
   //private NodeMap nodes;
   private List shellList        = new ArrayList();
 
-  public PolygonBuilder(GeometryFactory geometryFactory, CGAlgorithms cga)
+  public PolygonBuilder(GeometryFactory geometryFactory)
   {
     this.geometryFactory = geometryFactory;
-    this.cga = cga;
   }
 
   /**
@@ -103,7 +101,7 @@ public class PolygonBuilder {
       if (de.isInResult() && de.getLabel().isArea() ) {
         // if this edge has not yet been processed
         if (de.getEdgeRing() == null) {
-          MaximalEdgeRing er = new MaximalEdgeRing(de, geometryFactory, cga);
+          MaximalEdgeRing er = new MaximalEdgeRing(de, geometryFactory);
           maxEdgeRings.add(er);
           er.setInResult();
 //System.out.println("max node degree = " + er.getMaxDegree());
@@ -212,6 +210,8 @@ public class PolygonBuilder {
    * properly contained (i.e. are connected to their
    * parent shell) would have formed part of a MaximalEdgeRing
    * and been handled in a previous step).
+   *
+   * @throws TopologyException if a hole cannot be assigned to a shell
    */
   private void placeFreeHoles(List shellList, List freeHoleList)
   {
@@ -220,11 +220,14 @@ public class PolygonBuilder {
       // only place this hole if it doesn't yet have a shell
       if (hole.getShell() == null) {
         EdgeRing shell = findEdgeRingContaining(hole, shellList);
-        Assert.isTrue(shell != null, "unable to assign hole to a shell");
+        if (shell == null)
+          throw new TopologyException("unable to assign hole to a shell", hole.getCoordinate(0));
+//        Assert.isTrue(shell != null, "unable to assign hole to a shell");
         hole.setShell(shell);
       }
     }
   }
+
   /**
    * Find the innermost enclosing shell EdgeRing containing the argument EdgeRing, if any.
    * The innermost enclosing ring is the <i>smallest</i> enclosing ring.
diff --git a/src/com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.java b/src/com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.java
new file mode 100644
index 0000000..5122cd1
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/overlay/snap/GeometrySnapper.java
@@ -0,0 +1,177 @@
+package com.vividsolutions.jts.operation.overlay.snap;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.util.GeometryTransformer;
+
+/**
+ * Snaps the vertices and segments of a {@link Geometry} to another Geometry's vertices.
+ * Improves robustness for overlay operations, by eliminating
+ * nearly parallel edges (which cause problems during noding and intersection calculation).
+ *
+ * @author Martin Davis
+ * @version 1.7
+ */
+public class GeometrySnapper
+{
+  private static final double SNAP_PRECISION_FACTOR = 10e-10;
+
+  /**
+   * Estimates the snap tolerance for a Geometry, taking into account its precision model.
+   * 
+   * @param g a Geometry
+   * @return the estimated snap tolerance
+   */
+  public static double computeOverlaySnapTolerance(Geometry g)
+  {
+		double snapTolerance = computeSizeBasedSnapTolerance(g);
+		
+		/**
+		 * Overlay is carried out in the precision model 
+		 * of the two inputs.  
+		 * If this precision model is of type FIXED, then the snap tolerance
+		 * must reflect the precision grid size.  
+		 * Specifically, the snap tolerance should be at least 
+		 * the distance from a corner of a precision grid cell
+		 * to the centre point of the cell.  
+		 */
+		PrecisionModel pm = g.getPrecisionModel();
+		if (pm.getType() == PrecisionModel.FIXED) {
+			double fixedSnapTol = (1 / pm.getScale()) * 2 / 1.415;
+			if (fixedSnapTol > snapTolerance)
+				snapTolerance = fixedSnapTol;
+		}
+		return snapTolerance;
+  }
+
+  public static double computeSizeBasedSnapTolerance(Geometry g)
+  {
+    Envelope env = g.getEnvelopeInternal();
+    double minDimension = Math.min(env.getHeight(), env.getWidth());
+    double snapTol = minDimension * SNAP_PRECISION_FACTOR;
+    return snapTol;
+  }
+
+  public static double computeOverlaySnapTolerance(Geometry g0, Geometry g1)
+  {
+    return Math.min(computeOverlaySnapTolerance(g0), computeOverlaySnapTolerance(g1));
+  }
+
+  /**
+   * Snaps two geometries together with a given tolerance.
+   * 
+   * @param g0 a geometry to snap
+   * @param g1 a geometry to snap
+   * @param snapTolerance the tolerance to use
+   * @return the snapped geometries
+   */
+  public static Geometry[] snap(Geometry g0, Geometry g1, double snapTolerance)
+  {
+    Geometry[] snapGeom = new Geometry[2];
+    GeometrySnapper snapper0 = new GeometrySnapper(g0);
+    snapGeom[0] = snapper0.snapTo(g1, snapTolerance);
+
+    GeometrySnapper snapper1 = new GeometrySnapper(g1);
+    /**
+     * Snap the second geometry to the snapped first geometry
+     * (this strategy minimizes the number of possible different points in the result)
+     */
+    snapGeom[1] = snapper1.snapTo(snapGeom[0], snapTolerance);
+
+//    System.out.println(snap[0]);
+//    System.out.println(snap[1]);
+    return snapGeom;
+  }
+  
+  private Geometry srcGeom;
+
+  /**
+   * Creates a new snapper acting on the given geometry
+   * 
+   * @param srcGeom the geometry to snap
+   */
+  public GeometrySnapper(Geometry srcGeom)
+  {
+    this.srcGeom = srcGeom;
+  }
+
+  /**
+   * Computes the snap tolerance based on the input geometries.
+   *
+   * @param ringPts
+   * @return
+   */
+  private double computeSnapTolerance(Coordinate[] ringPts)
+  {
+    double minSegLen = computeMinimumSegmentLength(ringPts);
+    // use a small percentage of this to be safe
+    double snapTol = minSegLen / 10;
+    return snapTol;
+  }
+
+  private double computeMinimumSegmentLength(Coordinate[] pts)
+  {
+    double minSegLen = Double.MAX_VALUE;
+    for (int i = 0; i < pts.length - 1; i++) {
+      double segLen = pts[i].distance(pts[i + 1]);
+      if (segLen < minSegLen)
+        minSegLen = segLen;
+    }
+    return minSegLen;
+  }
+
+  /**
+   * Snaps the vertices in the component {@link LineString}s
+   * of the source geometry
+   * to the vertices of the given snap geometry.
+   *
+   * @param snapGeom a geometry to snap the source to
+   * @return a new snapped Geometry
+   */
+  public Geometry snapTo(Geometry snapGeom, double snapTolerance)
+  {
+    Coordinate[] snapPts = extractTargetCoordinates(snapGeom);
+
+    SnapTransformer snapTrans = new SnapTransformer(snapTolerance, snapPts);
+    return snapTrans.transform(srcGeom);
+  }
+
+  public Coordinate[] extractTargetCoordinates(Geometry g)
+  {
+    // TODO: should do this more efficiently.  Use CoordSeq filter to get points, KDTree for uniqueness & queries
+    Set ptSet = new TreeSet();
+    Coordinate[] pts = g.getCoordinates();
+    for (int i = 0; i < pts.length; i++) {
+      ptSet.add(pts[i]);
+    }
+    return (Coordinate[]) ptSet.toArray(new Coordinate[0]);
+  }
+}
+
+class SnapTransformer
+    extends GeometryTransformer
+{
+  double snapTolerance;
+  Coordinate[] snapPts;
+
+  SnapTransformer(double snapTolerance, Coordinate[] snapPts)
+  {
+    this.snapTolerance = snapTolerance;
+    this.snapPts = snapPts;
+  }
+
+  protected CoordinateSequence transformCoordinates(CoordinateSequence coords, Geometry parent)
+  {
+    Coordinate[] srcPts = coords.toCoordinateArray();
+    Coordinate[] newPts = snapLine(srcPts, snapPts);
+    return factory.getCoordinateSequenceFactory().create(newPts);
+  }
+
+  private Coordinate[] snapLine(Coordinate[] srcPts, Coordinate[] snapPts)
+  {
+    LineStringSnapper snapper = new LineStringSnapper(srcPts, snapTolerance);
+    return snapper.snapTo(snapPts);
+  }
+}
+
+
diff --git a/src/com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.java b/src/com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.java
new file mode 100644
index 0000000..397090a
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/overlay/snap/LineStringSnapper.java
@@ -0,0 +1,171 @@
+package com.vividsolutions.jts.operation.overlay.snap;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Snaps the vertices and segments of a {@link LineString} to a set of target snap vertices.
+ * A snapping distance tolerance is used to control where snapping is performed.
+ *
+ * @author Martin Davis
+ * @version 1.7
+ */
+public class LineStringSnapper
+{
+  private double snapTolerance = 0.0;
+
+  private Coordinate[] srcPts;
+  private LineSegment seg = new LineSegment(); // for reuse during snapping
+  private boolean isClosed = false;
+
+  /**
+   * Creates a new snapper using the points in the given {@link LineString}
+   * as source snap points.
+   * 
+   * @param srcLline a LineString to snap
+   * @param snapTolerance the snap tolerance to use
+   */
+  public LineStringSnapper(LineString srcLline, double snapTolerance)
+  {
+    this(srcLline.getCoordinates(), snapTolerance);
+  }
+
+  /**
+   * Creates a new snapper using the given points
+   * as source points to be snapped.
+   * 
+   * @param srcPts the points to snap 
+   * @param snapTolerance the snap tolerance to use
+   */
+  public LineStringSnapper(Coordinate[] srcPts, double snapTolerance)
+  {
+    this.srcPts = srcPts;
+    isClosed = srcPts[0].equals2D(srcPts[srcPts.length - 1]);
+    this.snapTolerance = snapTolerance;
+  }
+
+  /**
+   * Snaps the vertices and segments of the source LineString 
+   * to the given set of target snap points.
+   * 
+   * @param snapPts the vertices to snap to
+   * @return a list of the snapped points
+   */
+  public Coordinate[] snapTo(Coordinate[] snapPts)
+  {
+    CoordinateList coordList = new CoordinateList(srcPts);
+
+    snapVertices(coordList, snapPts);
+    snapSegments(coordList, snapPts);
+
+    Coordinate[] newPts = coordList.toCoordinateArray();
+    return newPts;
+  }
+
+  /**
+   * Snap source vertices to vertices in the target.
+   * 
+   * @param srcCoords the points to snap
+   * @param snapPts the points to snap to
+   */
+  private void snapVertices(CoordinateList srcCoords, Coordinate[] snapPts)
+  {
+    // try snapping vertices
+    // assume src list has a closing point (is a ring)
+    for (int i = 0; i < srcCoords.size() - 1; i++) {
+      Coordinate srcPt = (Coordinate) srcCoords.get(i);
+      Coordinate snapVert = findSnapForVertex(srcPt, snapPts);
+      if (snapVert != null) {
+        // update src with snap pt
+        srcCoords.set(i, new Coordinate(snapVert));
+        // keep final closing point in synch (rings only)
+        if (i == 0 && isClosed)
+          srcCoords.set(srcCoords.size() - 1, new Coordinate(snapVert));
+      }
+    }
+  }
+
+  private Coordinate findSnapForVertex(Coordinate pt, Coordinate[] snapPts)
+  {
+    for (int i = 0; i < snapPts.length; i++) {
+      // if point is already equal to a src pt, don't snap
+      if (pt.equals2D(snapPts[i]))
+        return null;
+      if (pt.distance(snapPts[i]) < snapTolerance)
+        return snapPts[i];
+    }
+    return null;
+  }
+
+  /**
+   * Snap segments of the source to nearby snap vertices.
+   * Source segments are "cracked" at a snap vertex, and further
+   * snapping takes place on the modified list of segments.
+   * For each distinct snap vertex, at most one source segment
+   * is snapped to.  This prevents "cracking" multiple segments 
+   * at the same point, which would almost certainly cause the result to be invalid.
+   * 
+   * @param srcCoords
+   * @param snapPts
+   */
+  private void snapSegments(CoordinateList srcCoords, Coordinate[] snapPts)
+  {
+    int distinctPtCount = snapPts.length;
+
+    // check for duplicate snap pts.  
+    // Need to do this better - need to check all points for dups (using a Set?)
+    if (snapPts[0].equals2D(snapPts[snapPts.length - 1]))
+        distinctPtCount = snapPts.length - 1;
+
+    for (int i = 0; i < distinctPtCount; i++) {
+      Coordinate snapPt = snapPts[i];
+      int index = findSegmentIndexToSnap(snapPt, srcCoords);
+      /**
+       * If a segment to snap to was found, "crack" it at the snap pt.
+       * The new pt is inserted immediately into the src segment list,
+       * so that subsequent snapping will take place on the latest segments.
+       * Duplicate points are not added.
+       */
+      if (index >= 0) {
+        srcCoords.add(index + 1, new Coordinate(snapPt), false);
+      }
+    }
+  }
+
+
+  /**
+   * Finds a src segment which snaps to (is close to) the given snap point
+   * Only one segment is determined - this is to prevent
+   * snapping to multiple segments, which would almost certainly cause invalid geometry
+   * to be created.
+   * (The heuristic approach of snapping is really only appropriate when
+   * snap pts snap to a unique spot on the src geometry.)
+   *
+   * @param snapPt the point to snap to
+   * @param srcCoords the source segment coordinates
+   * @return the index of the snapped segment
+   * @return -1 if no segment snaps
+   */
+  private int findSegmentIndexToSnap(Coordinate snapPt, CoordinateList srcCoords)
+  {
+    double minDist = Double.MAX_VALUE;
+    int snapIndex = -1;
+    for (int i = 0; i < srcCoords.size() - 1; i++) {
+      seg.p0 = (Coordinate) srcCoords.get(i);
+      seg.p1 = (Coordinate) srcCoords.get(i + 1);
+
+      /**
+       * If the snap pt is already in the src list, don't snap
+       */
+      if (seg.p0.equals2D(snapPt) || seg.p1.equals2D(snapPt))
+        return -1;
+
+      double dist = seg.distance(snapPt);
+      if (dist < snapTolerance && dist < minDist) {
+        minDist = dist;
+        snapIndex = i;
+      }
+    }
+    return snapIndex;
+  }
+
+}
diff --git a/src/com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.java b/src/com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.java
new file mode 100644
index 0000000..6221738
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/overlay/snap/SnapIfNeededOverlayOp.java
@@ -0,0 +1,80 @@
+package com.vividsolutions.jts.operation.overlay.snap;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.operation.overlay.OverlayOp;
+import com.vividsolutions.jts.operation.overlay.validate.OverlayResultValidator;
+
+
+/**
+ * Performs an overlay operation using snapping and enhanced precision
+ * to improve the robustness of the result.
+ * This class only uses snapping
+ * if an error is detected when running the standard JTS overlay code.
+ * Errors detected include thrown exceptions 
+ * (in particular, {@link TopologyException})
+ * and invalid overlay computations.
+ *     
+ * @author Martin Davis
+ * @version 1.7
+ */
+public class SnapIfNeededOverlayOp
+{
+  public static Geometry overlayOp(Geometry g0, Geometry g1, int opCode)
+  {
+  	SnapIfNeededOverlayOp op = new SnapIfNeededOverlayOp(g0, g1);
+  	return op.getResultGeometry(opCode);
+  }
+
+  public static Geometry intersection(Geometry g0, Geometry g1)
+  {
+     return overlayOp(g0, g1, OverlayOp.INTERSECTION);
+  }
+
+  public static Geometry union(Geometry g0, Geometry g1)
+  {
+     return overlayOp(g0, g1, OverlayOp.UNION);
+  }
+
+  public static Geometry difference(Geometry g0, Geometry g1)
+  {
+     return overlayOp(g0, g1, OverlayOp.DIFFERENCE);
+  }
+
+  public static Geometry symDifference(Geometry g0, Geometry g1)
+  {
+     return overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE);
+  }
+  
+  private Geometry[] geom = new Geometry[2];
+
+  public SnapIfNeededOverlayOp(Geometry g1, Geometry g2)
+  {
+    geom[0] = g1;
+    geom[1] = g2;
+  }
+
+  public Geometry getResultGeometry(int opCode)
+  {
+    Geometry result = null;
+    boolean isSuccess = false;
+    try {
+      result = OverlayOp.overlayOp(geom[0], geom[1], opCode); 
+      boolean isValid = true;
+      // not needed if noding validation is used
+//      boolean isValid = OverlayResultValidator.isValid(geom[0], geom[1], OverlayOp.INTERSECTION, result);
+      if (isValid)
+      	isSuccess = true;
+    
+    }
+    catch (Exception ex) {
+    	// ignore this exception, since the operation will be rerun
+//    	System.out.println(ex.getMessage());
+//    	ex.printStackTrace();
+    }
+    if (! isSuccess) {
+    	// this may still throw an exception - just let it go if it does
+      result = SnapOverlayOp.overlayOp(geom[0], geom[1], opCode);
+    }
+    return result;
+  }
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.java b/src/com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.java
new file mode 100644
index 0000000..dc83574
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/overlay/snap/SnapOverlayOp.java
@@ -0,0 +1,116 @@
+package com.vividsolutions.jts.operation.overlay.snap;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.operation.overlay.OverlayOp;
+import com.vividsolutions.jts.precision.CommonBitsRemover;
+
+/**
+ * Performs an overlay operation using snapping and enhanced precision
+ * to improve the robustness of the result.
+ * This class <i>always</i> uses snapping.  
+ * This is less performant than the standard JTS overlay code, 
+ * and may even introduce errors which were not present in the original data.
+ * For this reason, this class should only be used 
+ * if the standard overlay code fails to produce a correct result. 
+ *  
+ * @author Martin Davis
+ * @version 1.7
+ */
+public class SnapOverlayOp
+{
+  public static Geometry overlayOp(Geometry g0, Geometry g1, int opCode)
+  {
+  	SnapOverlayOp op = new SnapOverlayOp(g0, g1);
+  	return op.getResultGeometry(opCode);
+  }
+
+  public static Geometry intersection(Geometry g0, Geometry g1)
+  {
+     return overlayOp(g0, g1, OverlayOp.INTERSECTION);
+  }
+
+  public static Geometry union(Geometry g0, Geometry g1)
+  {
+     return overlayOp(g0, g1, OverlayOp.UNION);
+  }
+
+  public static Geometry difference(Geometry g0, Geometry g1)
+  {
+     return overlayOp(g0, g1, OverlayOp.DIFFERENCE);
+  }
+
+  public static Geometry symDifference(Geometry g0, Geometry g1)
+  {
+     return overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE);
+  }
+  
+
+  private Geometry[] geom = new Geometry[2];
+  private double snapTolerance;
+
+  public SnapOverlayOp(Geometry g1, Geometry g2)
+  {
+    geom[0] = g1;
+    geom[1] = g2;
+    computeSnapTolerance();
+  }
+  private void computeSnapTolerance() 
+  {
+		snapTolerance = GeometrySnapper.computeOverlaySnapTolerance(geom[0], geom[1]);
+
+		// System.out.println("Snap tol = " + snapTolerance);
+	}
+
+  public Geometry getResultGeometry(int opCode)
+  {
+    Geometry[] prepGeom = snap();
+    Geometry result = OverlayOp.overlayOp(prepGeom[0], prepGeom[1], opCode);
+    return prepareResult(result);	
+  }
+  
+  private Geometry[] snap()
+  {
+    Geometry[] remGeom = removeCommonBits(geom);
+  	
+  	// MD - testing only
+//  	Geometry[] remGeom = geom;
+    
+    Geometry[] snapGeom = GeometrySnapper.snap(remGeom[0], remGeom[1], snapTolerance);
+    // MD - may want to do this at some point, but it adds cycles
+//    checkValid(snapGeom[0]);
+//    checkValid(snapGeom[1]);
+
+    /*
+    System.out.println("Snapped geoms: ");
+    System.out.println(snapGeom[0]);
+    System.out.println(snapGeom[1]);
+    */
+    return snapGeom;
+  }
+
+  private Geometry prepareResult(Geometry geom)
+  {
+    cbr.addCommonBits(geom);
+    return geom;
+  }
+
+  private CommonBitsRemover cbr;
+
+  private Geometry[] removeCommonBits(Geometry[] geom)
+  {
+    cbr = new CommonBitsRemover();
+    cbr.add(geom[0]);
+    cbr.add(geom[1]);
+    Geometry remGeom[] = new Geometry[2];
+    remGeom[0] = cbr.removeCommonBits((Geometry) geom[0].clone());
+    remGeom[1] = cbr.removeCommonBits((Geometry) geom[1].clone());
+    return remGeom;
+  }
+  
+  private void checkValid(Geometry g)
+  {
+  	if (! g.isValid()) {
+  		System.out.println("Snapped geometry is invalid");
+  	}
+  }
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/operation/overlay/snap/package.html b/src/com/vividsolutions/jts/operation/overlay/snap/package.html
new file mode 100644
index 0000000..e1a2bef
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/overlay/snap/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Classes to perform snapping on geometries to prepare them for overlay operations.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.java b/src/com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.java
new file mode 100644
index 0000000..6b78876
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/overlay/validate/FuzzyPointLocator.java
@@ -0,0 +1,118 @@
+package com.vividsolutions.jts.operation.overlay.validate;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.algorithm.*;
+
+/**
+ * Finds the most likely {@link Location} of a point relative to
+ * the polygonal components of a geometry, using a tolerance value.
+ * If a point is not clearly in the Interior or Exterior,
+ * it is considered to be on the Boundary.
+ * In other words, if the point is within the tolerance of the Boundary,
+ * it is considered to be on the Boundary; otherwise, 
+ * whether it is Interior or Exterior is determined directly.
+ *
+ * @author Martin Davis
+ * @version 1.7
+ */
+public class FuzzyPointLocator
+{
+  private Geometry g;
+  private double boundaryDistanceTolerance;
+  private MultiLineString linework;
+  private PointLocator ptLocator = new PointLocator();
+  private LineSegment seg = new LineSegment();
+  
+  public FuzzyPointLocator(Geometry g, double boundaryDistanceTolerance)
+  {
+    this.g = g;
+    this.boundaryDistanceTolerance = boundaryDistanceTolerance;
+    linework = extractLinework(g);
+  }
+
+  public int getLocation(Coordinate pt)
+  {
+    if (isWithinToleranceOfBoundary(pt))
+    		return Location.BOUNDARY;
+    /*
+    double dist = linework.distance(point);
+
+    // if point is close to boundary, it is considered to be on the boundary
+    if (dist < tolerance)
+      return Location.BOUNDARY;
+     */
+    
+    // now we know point must be clearly inside or outside geometry, so return actual location value
+    return ptLocator.locate(pt, g);
+  }
+
+  /**
+   * Extracts linework for polygonal components.
+   * 
+   * @param g the geometry from which to extract
+   * @return a lineal geometry containing the extracted linework
+   */
+  private MultiLineString extractLinework(Geometry g)
+  {
+  	PolygonalLineworkExtracter extracter = new PolygonalLineworkExtracter();
+  	g.apply(extracter);
+  	List linework = extracter.getLinework();
+  	LineString[] lines = GeometryFactory.toLineStringArray(linework);
+  	return g.getFactory().createMultiLineString(lines);
+  }
+  
+  private boolean isWithinToleranceOfBoundary(Coordinate pt)
+  {
+  	for (int i = 0; i < linework.getNumGeometries(); i++) {
+  		LineString line = (LineString) linework.getGeometryN(i);
+  		CoordinateSequence seq = line.getCoordinateSequence();
+  		for (int j = 0; j < seq.size() - 1; j++) {
+   			seq.getCoordinate(j, seg.p0);
+   			seq.getCoordinate(j + 1, seg.p1);
+   			double dist = seg.distance(pt);
+   			if (dist <= boundaryDistanceTolerance)
+   				return true;
+  		}
+  	}
+  	return false;
+  }
+}
+
+/**
+ * Extracts the LineStrings in the boundaries 
+ * of all the polygonal elements in the target {@link Geometry}.
+ * 
+ * @author Martin Davis
+ */
+class PolygonalLineworkExtracter 
+	implements GeometryFilter
+{
+	private List linework; 
+	
+	public PolygonalLineworkExtracter()
+	{
+		linework = new ArrayList();
+	}
+	
+	/**
+	 * Filters out all linework for polygonal elements
+	 */
+	public void filter(Geometry g)
+	{
+		if (g instanceof Polygon) {
+			Polygon poly = (Polygon) g;
+			linework.add(poly.getExteriorRing());
+			for (int i = 0; i < poly.getNumInteriorRing(); i++) {
+				linework.add(poly.getInteriorRingN(i));
+			}
+		}
+	}
+	
+	/**
+	 * Gets the list of polygonal linework.
+	 * 
+	 * @return a List of LineStrings
+	 */
+	public List getLinework() { return linework; }
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.java b/src/com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.java
new file mode 100644
index 0000000..833c8d7
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/overlay/validate/OffsetPointGenerator.java
@@ -0,0 +1,100 @@
+package com.vividsolutions.jts.operation.overlay.validate;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.util.*;
+
+/**
+ * Generates points offset by a given distance 
+ * from both sides of the midpoint of
+ * all segments in a {@link Geometry}.
+ * Can be used to generate probe points for
+ * determining whether a polygonal overlay result
+ * is incorrect.
+ * The input geometry may have any orientation for its rings,
+ * but {@link #setSidesToGenerate(boolean, boolean)} is
+ * only meaningful if the orientation is known.
+ *
+ * @author Martin Davis
+ * @version 1.7
+ */
+public class OffsetPointGenerator
+{
+  private Geometry g;
+  private boolean doLeft = true; 
+  private boolean doRight = true;
+  
+  public OffsetPointGenerator(Geometry g)
+  {
+    this.g = g;
+  }
+
+  /**
+   * Set the sides on which to generate offset points.
+   * 
+   * @param doLeft
+   * @param doRight
+   */
+  public void setSidesToGenerate(boolean doLeft, boolean doRight)
+  {
+    this.doLeft = doLeft;
+    this.doRight = doRight;
+  }
+  
+  /**
+   * Gets the computed offset points.
+   *
+   * @return List<Coordinate>
+   */
+  public List getPoints(double offsetDistance)
+  {
+    List offsetPts = new ArrayList();
+    List lines = LinearComponentExtracter.getLines(g);
+    for (Iterator i = lines.iterator(); i.hasNext(); ) {
+      LineString line = (LineString) i.next();
+      extractPoints(line, offsetDistance, offsetPts);
+    }
+    //System.out.println(toMultiPoint(offsetPts));
+    return offsetPts;
+  }
+
+  private void extractPoints(LineString line, double offsetDistance, List offsetPts)
+  {
+    Coordinate[] pts = line.getCoordinates();
+    for (int i = 0; i < pts.length - 1; i++) {
+    	computeOffsetPoints(pts[i], pts[i + 1], offsetDistance, offsetPts);
+    }
+  }
+
+  /**
+   * Generates the two points which are offset from the 
+   * midpoint of the segment <tt>(p0, p1)</tt> by the
+   * <tt>offsetDistance</tt>.
+   * 
+   * @param p0 the first point of the segment to offset from
+   * @param p1 the second point of the segment to offset from
+   */
+  private void computeOffsetPoints(Coordinate p0, Coordinate p1, double offsetDistance, List offsetPts)
+  {
+    double dx = p1.x - p0.x;
+    double dy = p1.y - p0.y;
+    double len = Math.sqrt(dx * dx + dy * dy);
+    // u is the vector that is the length of the offset, in the direction of the segment
+    double ux = offsetDistance * dx / len;
+    double uy = offsetDistance * dy / len;
+
+    double midX = (p1.x + p0.x) / 2;
+    double midY = (p1.y + p0.y) / 2;
+
+    if (doLeft) {
+      Coordinate offsetLeft = new Coordinate(midX - uy, midY + ux);
+      offsetPts.add(offsetLeft);
+    }
+    
+    if (doRight) {
+      Coordinate offsetRight = new Coordinate(midX + uy, midY - ux);
+      offsetPts.add(offsetRight);
+    }
+  }
+
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.java b/src/com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.java
new file mode 100644
index 0000000..3b15e07
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/overlay/validate/OverlayResultValidator.java
@@ -0,0 +1,182 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.operation.overlay.validate;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.operation.overlay.OverlayOp;
+import com.vividsolutions.jts.operation.overlay.snap.GeometrySnapper;
+
+/**
+ * Validates that the result of an overlay operation is
+ * geometrically correct, within a determined tolerance.
+ * Uses fuzzy point location to find points which are 
+ * definitely in either the interior or exterior of the result
+ * geometry, and compares these results with the expected ones.
+ * <p>
+ * This algorithm is only useful where the inputs are polygonal.
+ * This is a heuristic test, and may return false positive results
+ * (I.e. it may fail to detect an invalid result.)
+ * It should never return a false negative result, however
+ * (I.e. it should never report a valid result as invalid.)
+ *
+ * @author Martin Davis
+ * @version 1.7
+ * @see OverlayOp
+ */
+public class OverlayResultValidator
+{
+  public static boolean isValid(Geometry a, Geometry b, int overlayOp, Geometry result)
+  {
+    OverlayResultValidator validator = new OverlayResultValidator(a, b, result);
+    return validator.isValid(overlayOp);
+  }
+
+  private static double computeBoundaryDistanceTolerance(Geometry g0, Geometry g1)
+  {
+  	return Math.min(GeometrySnapper.computeSizeBasedSnapTolerance(g0),
+  			GeometrySnapper.computeSizeBasedSnapTolerance(g1));
+  }
+  
+  private static final double TOLERANCE = 0.000001;
+
+  private Geometry[] geom;
+  private FuzzyPointLocator[] locFinder;
+  private int[] location = new int[3] ;
+  private Coordinate invalidLocation = null;
+  private double boundaryDistanceTolerance = TOLERANCE;
+
+  private List testCoords = new ArrayList();
+
+  public OverlayResultValidator(Geometry a, Geometry b, Geometry result) 
+  {
+  	/**
+  	 * The tolerance to use needs to depend on the size of the geometries.
+  	 * It should not be more precise than double-precision can support. 
+  	 */
+    boundaryDistanceTolerance = computeBoundaryDistanceTolerance(a, b);
+    geom = new Geometry[] { a, b, result };
+    locFinder = new FuzzyPointLocator[] {
+      new FuzzyPointLocator(geom[0], boundaryDistanceTolerance),
+      new FuzzyPointLocator(geom[1], boundaryDistanceTolerance),
+      new FuzzyPointLocator(geom[2], boundaryDistanceTolerance)
+      };
+  }
+
+  public boolean isValid(int overlayOp)
+  {
+    addTestPts(geom[0]);
+    addTestPts(geom[1]);
+    boolean isValid = checkValid(overlayOp);
+
+    /*
+    System.out.println("OverlayResultValidator: " + isValid);
+    System.out.println("G0");
+    System.out.println(geom[0]);
+    System.out.println("G1");
+    System.out.println(geom[1]);
+    System.out.println("Result");
+    System.out.println(geom[2]);
+    */
+    
+    return isValid;
+  }
+
+  public Coordinate getInvalidLocation() { return invalidLocation; }
+
+  private void addTestPts(Geometry g)
+  {
+    OffsetPointGenerator ptGen = new OffsetPointGenerator(g);
+    testCoords.addAll(ptGen.getPoints(5 * boundaryDistanceTolerance));
+  }
+
+  private boolean checkValid(int overlayOp)
+  {
+    for (int i = 0; i < testCoords.size(); i++) {
+      Coordinate pt = (Coordinate) testCoords.get(i);
+      if (! checkValid(overlayOp, pt)) {
+        invalidLocation = pt;
+        return false;
+      }
+    }
+    return true;
+  }
+
+  private boolean checkValid(int overlayOp, Coordinate pt)
+  {
+    location[0] = locFinder[0].getLocation(pt);
+    location[1] = locFinder[1].getLocation(pt);
+    location[2] = locFinder[2].getLocation(pt);
+
+    /**
+     * If any location is on the Boundary, can't deduce anything, so just return true
+     */
+    if (hasLocation(location, Location.BOUNDARY))
+      return true;
+
+    return isValidResult(overlayOp, location);
+  }
+
+  private static boolean hasLocation(int[] location, int loc)
+  {
+    for (int i = 0; i < 3; i ++) {
+      if (location[i] == loc)
+        return true;
+    }
+    return false;
+  }
+
+  private boolean isValidResult(int overlayOp, int[] location)
+  {
+    boolean expectedInterior = OverlayOp.isResultOfOp(location[0], location[1], overlayOp);
+
+    boolean resultInInterior = (location[2] == Location.INTERIOR);
+    // MD use simpler: boolean isValid = (expectedInterior == resultInInterior);
+    boolean isValid = ! (expectedInterior ^ resultInInterior);
+    
+    if (! isValid) reportResult(overlayOp, location, expectedInterior);
+    
+    return isValid;
+ }
+
+  private void reportResult(int overlayOp, int[] location, boolean expectedInterior)
+  {
+  	System.out.println(
+  			"Overlay result invalid - A:" + Location.toLocationSymbol(location[0])
+  			+ " B:" + Location.toLocationSymbol(location[1])
+  			+ " expected:" + (expectedInterior ? 'i' : 'e')
+  			+ " actual:" + Location.toLocationSymbol(location[2])
+  			);
+  }
+}
+
diff --git a/src/com/vividsolutions/jts/operation/overlay/validate/package.html b/src/com/vividsolutions/jts/operation/overlay/validate/package.html
new file mode 100644
index 0000000..597d5e9
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/overlay/validate/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Classes to validate the results of overlay operations.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/operation/polygonize/EdgeRing.java b/src/com/vividsolutions/jts/operation/polygonize/EdgeRing.java
index 1d4ab06..80309c7 100644
--- a/src/com/vividsolutions/jts/operation/polygonize/EdgeRing.java
+++ b/src/com/vividsolutions/jts/operation/polygonize/EdgeRing.java
@@ -80,9 +80,10 @@ public class EdgeRing {
       if (tryEnv.equals(testEnv))
         continue;
 
-      testPt = ptNotInList(testRing.getCoordinates(), tryRing.getCoordinates());
+//      testPt = ptNotInList(testRing.getCoordinates(), tryRing.getCoordinates());
+      testPt = CoordinateArrays.ptNotInList(testRing.getCoordinates(), tryRing.getCoordinates());
       if (tryEnv.contains(testEnv)
-          && cga.isPointInRing(testPt, tryRing.getCoordinates()) )
+          && CGAlgorithms.isPointInRing(testPt, tryRing.getCoordinates()) )
         isContained = true;
       // check if this new containing ring is smaller than the current minimum ring
       if (isContained) {
@@ -99,14 +100,14 @@ public class EdgeRing {
    * Finds a point in a list of points which is not contained in another list of points
    * @param testPts the {@link Coordinate}s to test
    * @param pts an array of {@link Coordinate}s to test the input points against
-   * @return a {@link Coordinate} from <code>testPts</code> which is not in <code>pts</code>, '
-   * or <code>null</code>
+   * @return a {@link Coordinate} from <code>testPts</code> which is not in <code>pts</code>,
+   * @return null if there is no coordinate not in the list
    */
   public static Coordinate ptNotInList(Coordinate[] testPts, Coordinate[] pts)
   {
     for (int i = 0; i < testPts.length; i++) {
       Coordinate testPt = testPts[i];
-      if (isInList(testPt, pts))
+      if (! isInList(testPt, pts))
           return testPt;
     }
     return null;
@@ -124,12 +125,11 @@ public class EdgeRing {
   {
     for (int i = 0; i < pts.length; i++) {
         if (pt.equals(pts[i]))
-            return false;
+            return true;
     }
-    return true;
+    return false;
   }
   private GeometryFactory factory;
-  private static CGAlgorithms cga = new CGAlgorithms();
 
 
   private List deList = new ArrayList();
@@ -163,7 +163,7 @@ public class EdgeRing {
   public boolean isHole()
   {
     LinearRing ring = getRing();
-    return cga.isCCW(ring.getCoordinates());
+    return CGAlgorithms.isCCW(ring.getCoordinates());
   }
 
   /**
@@ -177,7 +177,7 @@ public class EdgeRing {
   }
 
   /**
-   * Computes the {@link Polygon formed by this ring and any contained holes.
+   * Computes the {@link Polygon} formed by this ring and any contained holes.
    *
    * @return the {@link Polygon} formed by this ring and its holes.
    */
@@ -196,7 +196,8 @@ public class EdgeRing {
 
   /**
    * Tests if the {@link LinearRing} ring formed by this edge ring is topologically valid.
-   * @return
+   * 
+   * @return true if the ring is valid
    */
   public boolean isValid()
   {
diff --git a/src/com/vividsolutions/jts/operation/polygonize/PolygonizeGraph.java b/src/com/vividsolutions/jts/operation/polygonize/PolygonizeGraph.java
index 2e4097a..4ba52bd 100644
--- a/src/com/vividsolutions/jts/operation/polygonize/PolygonizeGraph.java
+++ b/src/com/vividsolutions/jts/operation/polygonize/PolygonizeGraph.java
@@ -94,7 +94,7 @@ class PolygonizeGraph
   private GeometryFactory factory;
 
   //private List labelledRings;
-
+ 
   /**
    * Create a new polygonization graph.
    */
@@ -111,6 +111,9 @@ class PolygonizeGraph
   {
     if (line.isEmpty()) { return; }
     Coordinate[] linePts = CoordinateArrays.removeRepeatedPoints(line.getCoordinates());
+    
+    if (linePts.length < 2) { return; }
+    
     Coordinate startPt = linePts[0];
     Coordinate endPt = linePts[linePts.length - 1];
 
@@ -194,7 +197,7 @@ class PolygonizeGraph
   }
 
   /**
-   * Computes the EdgeRings formed by the edges in this graph.
+   * Computes the minimal EdgeRings formed by the edges in this graph.
    * @return a list of the {@link EdgeRing}s found by the polygonization process.
    */
   public List getEdgeRings()
@@ -207,7 +210,7 @@ class PolygonizeGraph
     List maximalRings = findLabeledEdgeRings(dirEdges);
     convertMaximalToMinimalEdgeRings(maximalRings);
 
-    // find all edgerings
+    // find all edgerings (which will now be minimal ones, as required)
     List edgeRingList = new ArrayList();
     for (Iterator i = dirEdges.iterator(); i.hasNext(); ) {
       PolygonizeDirectedEdge de = (PolygonizeDirectedEdge) i.next();
@@ -221,7 +224,10 @@ class PolygonizeGraph
   }
 
   /**
-   *
+   * Finds and labels all edgerings in the graph.
+   * The edge rings are labelling with unique integers.
+   * The labelling allows detecting cut edges.
+   * 
    * @param dirEdges a List of the DirectedEdges in the graph
    * @return a List of DirectedEdges, one for each edge ring found
    */
@@ -354,7 +360,7 @@ class PolygonizeGraph
   }
 
   /**
-   * Traverse a ring of DirectedEdges, accumulating them into a list.
+   * Traverses a ring of DirectedEdges, accumulating them into a list.
    * This assumes that all dangling directed edges have been removed
    * from the graph, so that there is always a next dirEdge.
    *
@@ -435,4 +441,34 @@ class PolygonizeGraph
     }
     return dangleLines;
   }
+  
+  /**
+   * Traverses the polygonized edge rings in the graph
+   * and computes the depth parity (odd or even)
+   * relative to the exterior of the graph.
+   * If the client has requested that the output
+   * be polygonally valid, only odd polygons will be constructed. 
+   *
+   */
+  public void computeDepthParity()
+  {
+    while (true) {
+      PolygonizeDirectedEdge de = null; //findLowestDirEdge();
+      if (de == null)
+        return;
+      computeDepthParity(de);
+    }
+  }
+  
+  /**
+   * Traverses all connected edges, computing the depth parity
+   * of the associated polygons.
+   * 
+   * @param de
+   */
+  private void computeDepthParity(PolygonizeDirectedEdge de)
+  {
+    
+  }
+  
 }
diff --git a/src/com/vividsolutions/jts/operation/polygonize/Polygonizer.java b/src/com/vividsolutions/jts/operation/polygonize/Polygonizer.java
index cf476bc..976b843 100644
--- a/src/com/vividsolutions/jts/operation/polygonize/Polygonizer.java
+++ b/src/com/vividsolutions/jts/operation/polygonize/Polygonizer.java
@@ -37,13 +37,14 @@ import java.util.*;
 import com.vividsolutions.jts.geom.*;
 
 /**
- * Polygonizes a set of Geometrys which contain linework that
+ * Polygonizes a set of {@link Geometry}s which contain linework that
  * represents the edges of a planar graph.
- * Any dimension of Geometry is handled - the constituent linework is extracted
- * to form the edges.
- * The edges must be correctly noded; that is, they must only meet
- * at their endpoints.  The Polygonizer will still run on incorrectly noded input
- * but will not form polygons from incorrected noded edges.
+ * All types of Geometry are accepted as input;  
+ * the constituent linework is extracted as the edges to be polygonized.
+ * The processed edges must be correctly noded; that is, they must only meet
+ * at their endpoints.  The Polygonizer will run on incorrectly noded input
+ * but will not form polygons from non-noded edges, 
+ * and will report them as errors.
  * <p>
  * The Polygonizer reports the follow kinds of errors:
  * <ul>
@@ -59,7 +60,7 @@ public class Polygonizer
 {
 
   /**
-   * Add every linear element in a geometry into the polygonizer graph.
+   * Adds every linear element in a {@link Geometry} into the polygonizer graph.
    */
   private class LineStringAdder
       implements GeometryComponentFilter
@@ -92,10 +93,10 @@ public class Polygonizer
   }
 
   /**
-   * Add a collection of geometries to be polygonized.
+   * Adds a collection of geometries to the edges to be polygonized.
    * May be called multiple times.
    * Any dimension of Geometry may be added;
-   * the constituent linework will be extracted and used
+   * the constituent linework will be extracted and used.
    *
    * @param geomList a list of {@link Geometry}s with linework to be polygonized
    */
@@ -108,7 +109,7 @@ public class Polygonizer
   }
 
   /**
-   * Add a geometry to the linework to be polygonized.
+   * Add a {@link Geometry} to the edges to be polygonized.
    * May be called multiple times.
    * Any dimension of Geometry may be added;
    * the constituent linework will be extracted and used
@@ -121,7 +122,7 @@ public class Polygonizer
   }
 
   /**
-   * Add a linestring to the graph of polygon edges.
+   * Adds a linestring to the graph of polygon edges.
    *
    * @param line the {@link LineString} to add
    */
@@ -135,7 +136,7 @@ public class Polygonizer
 
   /**
    * Gets the list of polygons formed by the polygonization.
-   * @return a collection of {@link Polygons}
+   * @return a collection of {@link Polygon}s
    */
   public Collection getPolygons()
   {
@@ -144,8 +145,8 @@ public class Polygonizer
   }
 
   /**
-   * Get the list of dangling lines found during polygonization.
-   * @return a collection of the input {@LineStrings} which are dangles
+   * Gets the list of dangling lines found during polygonization.
+   * @return a collection of the input {@link LineString}s which are dangles
    */
   public Collection getDangles()
   {
@@ -154,8 +155,8 @@ public class Polygonizer
   }
 
   /**
-   * Get the list of cut edges found during polygonization.
-   * @return a collection of the input {@LineStrings} which are cut edges
+   * Gets the list of cut edges found during polygonization.
+   * @return a collection of the input {@link LineString}s which are cut edges
    */
   public Collection getCutEdges()
   {
@@ -164,8 +165,8 @@ public class Polygonizer
   }
 
   /**
-   * Get the list of lines forming invalid rings found during polygonization.
-   * @return a collection of the input {@LineStrings} which form invalid rings
+   * Gets the list of lines forming invalid rings found during polygonization.
+   * @return a collection of the input {@link LineString}s which form invalid rings
    */
   public Collection getInvalidRingLines()
   {
@@ -174,7 +175,7 @@ public class Polygonizer
   }
 
   /**
-   * Perform the polygonization, if it has not already been carried out.
+   * Performs the polygonization, if it has not already been carried out.
    */
   private void polygonize()
   {
@@ -182,7 +183,7 @@ public class Polygonizer
     if (polyList != null) return;
     polyList = new ArrayList();
 
-    // if no geometries were supplied it's possible graph could be null
+    // if no geometries were supplied it's possible that graph is null
     if (graph == null) return;
 
     dangles = graph.deleteDangles();
diff --git a/src/com/vividsolutions/jts/operation/polygonize/package.html b/src/com/vividsolutions/jts/operation/polygonize/package.html
new file mode 100644
index 0000000..cff5d28
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/polygonize/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+An API for polygonizing sets of lines.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/operation/predicate/RectangleContains.java b/src/com/vividsolutions/jts/operation/predicate/RectangleContains.java
index d28181a..6131230 100644
--- a/src/com/vividsolutions/jts/operation/predicate/RectangleContains.java
+++ b/src/com/vividsolutions/jts/operation/predicate/RectangleContains.java
@@ -63,20 +63,30 @@ public class RectangleContains {
     return isPointContainedInBoundary(point.getCoordinate());
   }
 
+  /**
+   * Tests if a point is contained in the boundary of the target rectangle.
+   * 
+   * @param pt the point to test
+   * @return true if the point is contained in the boundary
+   */
   private boolean isPointContainedInBoundary(Coordinate pt)
   {
-    // we already know that the point is contained in the rectangle envelope
-
-    if (! (pt.x == rectEnv.getMinX() ||
-           pt.x == rectEnv.getMaxX()) )
-      return false;
-    if (! (pt.y == rectEnv.getMinY() ||
-           pt.y == rectEnv.getMaxY()) )
-      return false;
-
-    return true;
+    /**
+     * contains = false iff the point is properly contained in the rectangle.
+     * 
+     * This code assumes that the point lies in the rectangle envelope
+     */ 
+    return pt.x == rectEnv.getMinX() 
+    		|| pt.x == rectEnv.getMaxX()
+    		|| pt.y == rectEnv.getMinY()
+    		|| pt.y == rectEnv.getMaxY();
   }
 
+  /**
+   * Tests if a linestring is completely contained in the boundary of the target rectangle.
+   * @param line the linestring to test
+   * @return true if the linestring is contained in the boundary
+   */
   private boolean isLineStringContainedInBoundary(LineString line)
   {
     CoordinateSequence seq = line.getCoordinateSequence();
@@ -92,6 +102,12 @@ public class RectangleContains {
     return true;
   }
 
+  /**
+   * Tests if a line segment is contained in the boundary of the target rectangle.
+   * @param p0 an endpoint of the segment
+   * @param p1 an endpoint of the segment
+   * @return true if the line segment is contained in the boundary
+   */
   private boolean isLineSegmentContainedInBoundary(Coordinate p0, Coordinate p1)
   {
     if (p0.equals(p1))
diff --git a/src/com/vividsolutions/jts/operation/predicate/RectangleIntersects.java b/src/com/vividsolutions/jts/operation/predicate/RectangleIntersects.java
index 71e2637..b4ecb02 100644
--- a/src/com/vividsolutions/jts/operation/predicate/RectangleIntersects.java
+++ b/src/com/vividsolutions/jts/operation/predicate/RectangleIntersects.java
@@ -3,6 +3,7 @@ package com.vividsolutions.jts.operation.predicate;
 import java.util.*;
 import com.vividsolutions.jts.geom.*;
 import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.algorithm.locate.SimplePointInAreaLocator;
 import com.vividsolutions.jts.geom.util.*;
 
 /**
diff --git a/src/com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.java b/src/com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.java
index 7920c1f..53b2607 100644
--- a/src/com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.java
+++ b/src/com/vividsolutions/jts/operation/predicate/SegmentIntersectionTester.java
@@ -5,8 +5,8 @@ import com.vividsolutions.jts.algorithm.*;
 import com.vividsolutions.jts.geom.*;
 
 /**
- * Tests if any line segments in two sets of CoordinateSequences intersect.
- * Optimized for small geometry size.
+ * Tests if any line segments in two sets of {@link CoordinateSequence}s intersect.
+ * Optimized for use when at least one input is of small size.
  * Short-circuited to return as soon an intersection is found.
  *
  * @version 1.7
diff --git a/src/com/vividsolutions/jts/operation/predicate/package.html b/src/com/vividsolutions/jts/operation/predicate/package.html
new file mode 100644
index 0000000..a5a72f2
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/predicate/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Classes which implement topological predicates optimized for particular kinds of geometries.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/operation/relate/EdgeEndBundle.java b/src/com/vividsolutions/jts/operation/relate/EdgeEndBundle.java
index 52982c4..2737ff7 100644
--- a/src/com/vividsolutions/jts/operation/relate/EdgeEndBundle.java
+++ b/src/com/vividsolutions/jts/operation/relate/EdgeEndBundle.java
@@ -35,32 +35,40 @@
  */
 package com.vividsolutions.jts.operation.relate;
 
-/**
- * A collection of EdgeStubs which obey the following invariant:
- * They originate at the same node and have the same direction.
- * @version 1.7
- */
 import java.io.PrintStream;
 import java.util.*;
 import com.vividsolutions.jts.geom.*;
 import com.vividsolutions.jts.geomgraph.*;
 import com.vividsolutions.jts.util.Assert;
-
+import com.vividsolutions.jts.algorithm.BoundaryNodeRule;
 
 /**
- * Contains all {@link EdgeEnd}s which start at the same point and are parallel.
+ * A collection of {@link EdgeEnd}s which obey the following invariant:
+ * They originate at the same node and have the same direction.
  *
  * @version 1.7
  */
 public class EdgeEndBundle
   extends EdgeEnd
 {
+//  private BoundaryNodeRule boundaryNodeRule;
   private List edgeEnds = new ArrayList();
 
-  public EdgeEndBundle(EdgeEnd e)
+  public EdgeEndBundle(BoundaryNodeRule boundaryNodeRule, EdgeEnd e)
   {
     super(e.getEdge(), e.getCoordinate(), e.getDirectedCoordinate(), new Label(e.getLabel()));
     insert(e);
+    /*
+    if (boundaryNodeRule != null)
+      this.boundaryNodeRule = boundaryNodeRule;
+    else
+      boundaryNodeRule = BoundaryNodeRule.OGC_SFS_BOUNDARY_RULE;
+    */
+  }
+
+  public EdgeEndBundle(EdgeEnd e)
+  {
+    this(null, e);
   }
 
   public Label getLabel() { return label; }
@@ -78,7 +86,7 @@ public class EdgeEndBundle
    * edges in this EdgeStubBundle.  It essentially merges
    * the ON and side labels for each edge.  These labels must be compatible
    */
-  public void computeLabel()
+  public void computeLabel(BoundaryNodeRule boundaryNodeRule)
   {
     // create the label.  If any of the edges belong to areas,
     // the label must be an area label
@@ -94,23 +102,23 @@ public class EdgeEndBundle
 
     // compute the On label, and the side labels if present
     for (int i = 0; i < 2; i++) {
-      computeLabelOn(i);
+      computeLabelOn(i, boundaryNodeRule);
       if (isArea)
         computeLabelSides(i);
     }
-
   }
+
   /**
    * Compute the overall ON location for the list of EdgeStubs.
    * (This is essentially equivalent to computing the self-overlay of a single Geometry)
    * edgeStubs can be either on the boundary (eg Polygon edge)
    * OR in the interior (e.g. segment of a LineString)
    * of their parent Geometry.
-   * In addition, GeometryCollections use the mod-2 rule to determine
+   * In addition, GeometryCollections use a {@link BoundaryNodeRule} to determine
    * whether a segment is on the boundary or not.
-   * Finally, in GeometryCollections it can still occur that an edge is both
+   * Finally, in GeometryCollections it can occur that an edge is both
    * on the boundary and in the interior (e.g. a LineString segment lying on
-   * top of a Polygon edge.) In this case as usual the Boundary is given precendence.
+   * top of a Polygon edge.) In this case the Boundary is given precendence.
    * <br>
    * These observations result in the following rules for computing the ON location:
    * <ul>
@@ -120,7 +128,7 @@ public class EdgeEndBundle
    * <li> otherwise, the attribute is NULL.
    * </ul>
    */
-  private void computeLabelOn(int geomIndex)
+  private void computeLabelOn(int geomIndex, BoundaryNodeRule boundaryNodeRule)
   {
     // compute the ON location value
     int boundaryCount = 0;
@@ -135,7 +143,7 @@ public class EdgeEndBundle
     int loc = Location.NONE;
     if (foundInterior)  loc = Location.INTERIOR;
     if (boundaryCount > 0) {
-        loc = GeometryGraph.determineBoundary(boundaryCount);
+      loc = GeometryGraph.determineBoundary(boundaryNodeRule, boundaryCount);
     }
     label.setLocation(geomIndex, loc);
 
diff --git a/src/com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.java b/src/com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.java
index c8f8d9b..c7dbd6b 100644
--- a/src/com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.java
+++ b/src/com/vividsolutions/jts/operation/relate/EdgeEndBundleStar.java
@@ -46,12 +46,15 @@ import com.vividsolutions.jts.util.Assert;
  * An ordered list of {@link EdgeEndBundle}s around a {@link RelateNode}.
  * They are maintained in CCW order (starting with the positive x-axis) around the node
  * for efficient lookup and topology building.
+ *
  * @version 1.7
  */
 public class EdgeEndBundleStar
   extends EdgeEndStar
 {
-
+  /**
+   * Creates a new empty EdgeEndBundleStar
+   */
   public EdgeEndBundleStar() {
   }
 
diff --git a/src/com/vividsolutions/jts/operation/relate/RelateOp.java b/src/com/vividsolutions/jts/operation/relate/RelateOp.java
index d2db31c..65c0268 100644
--- a/src/com/vividsolutions/jts/operation/relate/RelateOp.java
+++ b/src/com/vividsolutions/jts/operation/relate/RelateOp.java
@@ -39,33 +39,92 @@ package com.vividsolutions.jts.operation.relate;
  * @version 1.7
  */
 
+import com.vividsolutions.jts.algorithm.BoundaryNodeRule;
 import com.vividsolutions.jts.geomgraph.*;
 import com.vividsolutions.jts.geom.*;
 import com.vividsolutions.jts.operation.GeometryGraphOperation;
 import java.util.*;
 
 /**
- * Implements the relate() operation on {@link Geometry}s.
+ * Implements the SFS <tt>relate()</tt> operation on two {@link Geometry}s.
+ * This class supports specifying a custom {@link BoundaryNodeRule}
+ * to be used during the relate computation.
+ * <p>
+ * <b>Note:</b> custom Boundary Node Rules do not (currently)
+ * affect the results of other Geometry methods (such
+ * as {@link Geometry#getBoundary}.  The results of
+ * these methods may not be consistent with the relationship computed by
+ * a custom Boundary Node Rule.
  *
  * @version 1.7
  */
 public class RelateOp
   extends GeometryGraphOperation
 {
+  /**
+   * Computes the {@link IntersectionMatrix} for the spatial relationship
+   * between two {@link Geometry}s, using the default (OGC SFS) Boundary Node Rule
+   *
+   * @param a a Geometry to test
+   * @param b a Geometry to test
+   * @return the IntersectonMatrix for the spatial relationship between the geometries
+   */
   public static IntersectionMatrix relate(Geometry a, Geometry b)
   {
-      RelateOp relOp = new RelateOp(a, b);
-      IntersectionMatrix im = relOp.getIntersectionMatrix();
-      return im;
+    RelateOp relOp = new RelateOp(a, b);
+    IntersectionMatrix im = relOp.getIntersectionMatrix();
+    return im;
+  }
+
+  /**
+   * Computes the {@link IntersectionMatrix} for the spatial relationship
+   * between two {@link Geometry}s using a specified Boundary Node Rule.
+   *
+   * @param a a Geometry to test
+   * @param b a Geometry to test
+   * @param boundaryNodeRule the Boundary Node Rule to use
+   * @return the IntersectonMatrix for the spatial relationship between the input geometries
+   */
+  public static IntersectionMatrix relate(Geometry a, Geometry b, BoundaryNodeRule boundaryNodeRule)
+  {
+    RelateOp relOp = new RelateOp(a, b, boundaryNodeRule);
+    IntersectionMatrix im = relOp.getIntersectionMatrix();
+    return im;
   }
 
   private RelateComputer relate;
 
-  public RelateOp(Geometry g0, Geometry g1) {
+  /**
+   * Creates a new Relate operation, using the default (OGC SFS) Boundary Node Rule.
+   *
+   * @param g0 a Geometry to relate
+   * @param g1 another Geometry to relate
+   */
+  public RelateOp(Geometry g0, Geometry g1)
+  {
     super(g0, g1);
     relate = new RelateComputer(arg);
   }
 
+  /**
+   * Creates a new Relate operation with a specified Boundary Node Rule.
+   *
+   * @param g0 a Geometry to relate
+   * @param g1 another Geometry to relate
+   * @param boundaryNodeRule the Boundary Node Rule to use
+   */
+  public RelateOp(Geometry g0, Geometry g1, BoundaryNodeRule boundaryNodeRule)
+  {
+    super(g0, g1, boundaryNodeRule);
+    relate = new RelateComputer(arg);
+  }
+
+  /**
+   * Gets the IntersectionMatrix for the spatial relationship
+   * between the input geometries.
+   *
+   * @return the IntersectonMatrix for the spatial relationship between the input geometries
+   */
   public IntersectionMatrix getIntersectionMatrix()
   {
     return relate.computeIM();
diff --git a/src/com/vividsolutions/jts/operation/union/CascadedPolygonUnion.java b/src/com/vividsolutions/jts/operation/union/CascadedPolygonUnion.java
new file mode 100644
index 0000000..14e4f6b
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/union/CascadedPolygonUnion.java
@@ -0,0 +1,371 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.operation.union;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.util.*;
+import com.vividsolutions.jts.index.strtree.STRtree;
+
+
+/**
+ * Provides an efficient method of unioning a collection of 
+ * {@link Polygonal} geometrys.
+ * This algorithm is faster and likely more robust than
+ * the simple iterated approach of 
+ * repeatedly unioning each polygon to a result geometry.
+ * <p>
+ * The <tt>buffer(0)</tt> trick is sometimes faster, but can be less robust and 
+ * can sometimes take an exceptionally long time to complete.
+ * This is particularly the case where there is a high degree of overlap
+ * between the polygons.  In this case, <tt>buffer(0)</tt> is forced to compute
+ * with <i>all</i> line segments from the outset, 
+ * whereas cascading can eliminate many segments
+ * at each stage of processing.
+ * The best case for buffer(0) is the trivial case
+ * where there is <i>no</i> overlap between the input geometries. 
+ * However, this case is likely rare in practice.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class CascadedPolygonUnion 
+{
+	/**
+	 * Computes the union of
+	 * a collection of {@link Polygonal} {@link Geometry}s.
+	 * 
+	 * @param polys a collection of {@link Polygonal} {@link Geometry}s
+	 */
+	public static Geometry union(Collection polys)
+	{
+		CascadedPolygonUnion op = new CascadedPolygonUnion(polys);
+		return op.union();
+	}
+	
+	private Collection inputPolys;
+	private GeometryFactory geomFactory = null;
+	
+	/**
+	 * Creates a new instance to union
+	 * the given collection of {@link Geometry}s.
+	 * 
+	 * @param geoms a collection of {@link Polygonal} {@link Geometry}s
+	 */
+	public CascadedPolygonUnion(Collection polys)
+	{
+		this.inputPolys = polys;
+	}
+	
+  /**
+   * The effectiveness of the index is somewhat sensitive
+   * to the node capacity.  
+   * Testing indicates that a smaller capacity is better.
+   * For an STRtree, 4 is probably a good number (since
+   * this produces 2x2 "squares").
+   */
+  private static final int STRTREE_NODE_CAPACITY = 4;
+  
+	/**
+	 * Computes the union of the input geometries.
+	 * 
+	 * @return the union of the input geometries
+	 * @return null if no input geometries were provided
+	 */
+	public Geometry union()
+	{
+		if (inputPolys.isEmpty())
+			return null;
+		geomFactory = ((Geometry) inputPolys.iterator().next()).getFactory();
+		
+		/**
+		 * A spatial index to organize the collection
+		 * into groups of close geometries.
+		 * This makes unioning more efficient, since vertices are more likely 
+		 * to be eliminated on each round.
+		 */
+//    STRtree index = new STRtree();
+    STRtree index = new STRtree(STRTREE_NODE_CAPACITY);
+    for (Iterator i = inputPolys.iterator(); i.hasNext(); ) {
+      Geometry item = (Geometry) i.next();
+      index.insert(item.getEnvelopeInternal(), item);
+    }
+    List itemTree = index.itemsTree();
+
+//    printItemEnvelopes(itemTree);
+    
+    Geometry unionAll = unionTree(itemTree);
+    return unionAll;
+	}
+	
+  private Geometry unionTree(List geomTree)
+  {
+    /**
+     * Recursively unions all subtrees in the list into single geometries.
+     * The result is a list of Geometrys only
+     */
+    List geoms = reduceToGeometries(geomTree);
+//    Geometry union = bufferUnion(geoms);
+    Geometry union = binaryUnion(geoms);
+    
+    // print out union (allows visualizing hierarchy)
+//    System.out.println(union);
+    
+    return union;
+//    return repeatedUnion(geoms);
+//    return buffer0Union(geoms);
+    
+  }
+
+  //========================================================
+  /*
+   * The following methods are for experimentation only
+   */
+  
+  private Geometry repeatedUnion(List geoms)
+  {
+  	Geometry union = null;
+  	for (Iterator i = geoms.iterator(); i.hasNext(); ) {
+  		Geometry g = (Geometry) i.next();
+  		if (union == null)
+  			union = (Geometry) g.clone();
+  		else
+  			union = union.union(g);
+  	}
+  	return union;
+  }
+  
+  private Geometry bufferUnion(List geoms)
+  {
+  	GeometryFactory factory = ((Geometry) geoms.get(0)).getFactory();
+  	Geometry gColl = factory.buildGeometry(geoms);
+  	Geometry unionAll = gColl.buffer(0.0);
+    return unionAll;
+  }
+  
+  private Geometry bufferUnion(Geometry g0, Geometry g1)
+  {
+  	GeometryFactory factory = g0.getFactory();
+  	Geometry gColl = factory.createGeometryCollection(new Geometry[] { g0, g1 } );
+  	Geometry unionAll = gColl.buffer(0.0);
+    return unionAll;
+  }
+  
+  //=======================================
+
+  /**
+   * Unions a list of geometries 
+   * by treating the list as a flattened binary tree,
+   * and performing a cascaded union on the tree.
+   */
+  private Geometry binaryUnion(List geoms)
+  {
+  	return binaryUnion(geoms, 0, geoms.size());
+  }
+  
+  /**
+   * Unions a section of a list using a recursive binary union on each half
+   * of the section.
+   * 
+   * @param geoms
+   * @param start
+   * @param end
+   * @return the union of the list section
+   */
+  private Geometry binaryUnion(List geoms, int start, int end)
+  {
+  	if (end - start <= 1) {
+  		Geometry g0 = getGeometry(geoms, start);
+  		return unionSafe(g0, null);
+  	}
+  	else if (end - start == 2) {
+  		return unionSafe(getGeometry(geoms, start), getGeometry(geoms, start + 1));
+  	}
+  	else {
+  		// recurse on both halves of the list
+  		int mid = (end + start) / 2;
+  		Geometry g0 = binaryUnion(geoms, start, mid);
+  		Geometry g1 = binaryUnion(geoms, mid, end);
+  		return unionSafe(g0, g1);
+  	}
+  }
+  
+  private static Geometry getGeometry(List list, int index)
+  {
+  	if (index >= list.size()) return null;
+  	return (Geometry) list.get(index);
+  }
+  
+  /**
+   * Reduces a tree of geometries to a list of geometries
+   * by recursively unioning the subtrees in the list.
+   * 
+   * @param geomTree a tree-structured list of geometries
+   * @return a list of Geometrys
+   */
+  private List reduceToGeometries(List geomTree)
+  {
+    List geoms = new ArrayList();
+    for (Iterator i = geomTree.iterator(); i.hasNext(); ) {
+      Object o = i.next();
+      Geometry geom = null;
+      if (o instanceof List) {
+        geom = unionTree((List) o);
+      }
+      else if (o instanceof Geometry) {
+        geom = (Geometry) o;
+      }
+      geoms.add(geom);
+    }
+    return geoms;
+  }
+  
+  /**
+   * Computes the union of two geometries, 
+   * either of both of which may be null.
+   * 
+   * @param g0 a Geometry
+   * @param g1 a Geometry
+   * @return the union of the input(s)
+   * @return null if both inputs are null
+   */
+  private Geometry unionSafe(Geometry g0, Geometry g1)
+  {
+  	if (g0 == null && g1 == null)
+  		return null;
+
+  	if (g0 == null)
+  		return (Geometry) g1.clone();
+  	if (g1 == null)
+  		return (Geometry) g0.clone();
+  	
+  	// what if both are null?  Maybe return empty GC?
+  	
+  	return unionOptimized(g0, g1);
+  }
+  
+  private Geometry unionOptimized(Geometry g0, Geometry g1)
+  {
+  	Envelope g0Env = g0.getEnvelopeInternal();
+  	Envelope g1Env = g1.getEnvelopeInternal();
+  	//*
+  	if (! g0Env.intersects(g1Env))
+  	{
+  		Geometry combo = GeometryCombiner.combine(g0, g1);
+//   		System.out.println("Combined");
+//  		System.out.println(combo);
+  		return combo;
+  	}
+  	//*/
+//  	System.out.println(g0.getNumGeometries() + ", " + g1.getNumGeometries());
+  	
+  	if (g0.getNumGeometries() <= 1 && g1.getNumGeometries() <= 1)
+  		return unionActual(g0, g1);
+  	
+  	// for testing...
+//  	if (true) return g0.union(g1);
+  	
+  	Envelope commonEnv = g0Env.intersection(g1Env);
+  	return unionUsingEnvelopeIntersection(g0, g1, commonEnv);
+  	
+//  	return UnionInteracting.union(g0, g1);
+  }
+  
+  
+  
+  /**
+   * Unions two polygonal geometries.
+   * The case of MultiPolygons is optimized to union only 
+   * the polygons which lie in the intersection of the two geometry's envelopes.
+   * Polygons outside this region can simply be combined with the union result,
+   * which is potentially much faster.
+   * This case is likely to occur often during cascaded union, and may also
+   * occur in real world data (such as unioning data for parcels on different street blocks).
+   * 
+   * @param g0 a polygonal geometry
+   * @param g1 a polygonal geometry
+   * @param common the intersection of the envelopes of the inputs
+   * @return the union of the inputs
+   */
+  private Geometry unionUsingEnvelopeIntersection(Geometry g0, Geometry g1, Envelope common)
+  {
+  	List disjointPolys = new ArrayList();
+  	
+  	Geometry g0Int = extractByEnvelope(common, g0, disjointPolys);
+  	Geometry g1Int = extractByEnvelope(common, g1, disjointPolys);
+  	
+//  	System.out.println("# geoms in common: " + intersectingPolys.size());
+  	Geometry union = unionActual(g0Int, g1Int);
+  	
+  	disjointPolys.add(union);
+  	Geometry overallUnion = GeometryCombiner.combine(disjointPolys);
+  	
+  	return overallUnion;
+  }
+  
+  private Geometry extractByEnvelope(Envelope env, Geometry geom, 
+  		List disjointGeoms)
+  {
+  	List intersectingGeoms = new ArrayList();
+  	for (int i = 0; i < geom.getNumGeometries(); i++) { 
+  		Geometry elem = geom.getGeometryN(i);
+  		if (elem.getEnvelopeInternal().intersects(env))
+  			intersectingGeoms.add(elem);
+  		else
+  			disjointGeoms.add(elem);
+  	}
+  	return geomFactory.buildGeometry(intersectingGeoms);
+  }
+  
+  /**
+   * Encapsulates the actual unioning of two polygonal geometries.
+   * 
+   * @param g0
+   * @param g1
+   * @return
+   */
+  private Geometry unionActual(Geometry g0, Geometry g1)
+  {
+  	/*
+  	System.out.println(g0.getNumGeometries() + ", " + g1.getNumGeometries());
+ 	
+  	if (g0.getNumGeometries() > 5) {
+  		System.out.println(g0);
+  		System.out.println(g1);
+  	}
+  	*/
+  	
+  	//return bufferUnion(g0, g1);
+  	return g0.union(g1);
+  }
+}
diff --git a/src/com/vividsolutions/jts/operation/union/PointGeometryUnion.java b/src/com/vividsolutions/jts/operation/union/PointGeometryUnion.java
new file mode 100644
index 0000000..e6c96b3
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/union/PointGeometryUnion.java
@@ -0,0 +1,66 @@
+package com.vividsolutions.jts.operation.union;
+
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.util.*;
+import java.util.*;
+
+/**
+ * Computes the union of a {@link Puntal} geometry with 
+ * another arbitrary {@link Geometry}.
+ * Does not copy any component geometries.
+ * 
+ * @author mbdavis
+ *
+ */
+public class PointGeometryUnion 
+{
+	public static Geometry union(Puntal pointGeom, Geometry otherGeom)
+	{
+		PointGeometryUnion unioner = new PointGeometryUnion(pointGeom, otherGeom);
+		return unioner.union();
+	}
+	
+	private Geometry pointGeom;
+	private Geometry otherGeom;
+	private GeometryFactory geomFact;
+	
+	public PointGeometryUnion(Puntal pointGeom, Geometry otherGeom)
+	{
+		this.pointGeom = (Geometry) pointGeom;
+		this.otherGeom = otherGeom;
+		geomFact = otherGeom.getFactory();
+	}
+	
+	public Geometry union()
+	{
+		PointLocator locater = new PointLocator();
+		// use a set to eliminate duplicates, as required for union
+		Set exteriorCoords = new TreeSet();
+		
+		for (int i =0 ; i < pointGeom.getNumGeometries(); i++) {
+			Point point = (Point) pointGeom.getGeometryN(i);
+			Coordinate coord = point.getCoordinate();
+			int loc = locater.locate(coord, otherGeom);
+			if (loc == Location.EXTERIOR)
+				exteriorCoords.add(coord);
+		}
+		
+		// if no points are in exterior, return the other geom
+		if (exteriorCoords.size() == 0)
+			return otherGeom;
+		
+		// make a puntal geometry of appropriate size
+		Geometry ptComp = null;
+		Coordinate[] coords = CoordinateArrays.toCoordinateArray(exteriorCoords);
+		if (coords.length == 1) {
+			ptComp = geomFact.createPoint(coords[0]);
+		}
+		else {
+			ptComp = geomFact.createMultiPoint(coords);
+		}
+		
+		// add point component to the other geometry
+		return GeometryCombiner.combine(ptComp, otherGeom);
+	}
+}
diff --git a/src/com/vividsolutions/jts/operation/union/UnaryUnionOp.java b/src/com/vividsolutions/jts/operation/union/UnaryUnionOp.java
new file mode 100644
index 0000000..a0353c3
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/union/UnaryUnionOp.java
@@ -0,0 +1,233 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.operation.union;
+
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.util.*;
+import com.vividsolutions.jts.operation.overlay.OverlayOp;
+
+/**
+ * Unions a collection of Geometry or a single Geometry 
+ * (which may be a collection) together.
+ * By using this special-purpose operation over a collection of geometries
+ * it is possible to take advantage of various optimizations to improve performance.
+ * Heterogeneous {@link GeometryCollection}s are fully supported.
+ * <p>
+ * The result obeys the following contract:
+ * <ul>
+ * <li>Unioning a set of overlapping {@link Polygons}s has the effect of
+ * merging the areas (i.e. the same effect as 
+ * iteratively unioning all individual polygons together).
+ * 
+ * <li>Unioning a set of {@link LineString}s has the effect of <b>fully noding</b> 
+ * and <b>dissolving</b> the input linework.
+ * In this context "fully noded" means that there will be a node or endpoint in the output 
+ * for every endpoint or line segment crossing in the input.
+ * "Dissolved" means that any duplicate (e.g. coincident) line segments or portions
+ * of line segments will be reduced to a single line segment in the output.  
+ * This is consistent with the semantics of the 
+ * {@link Geometry#union(Geometry)} operation.
+ * If <b>merged</b> linework is required, the {@link LineMerger} class can be used.
+ * 
+ * <li>Unioning a set of {@link Points}s has the effect of merging
+ * al identical points (producing a set with no duplicates).
+ * </ul>
+ * 
+ * <tt>UnaryUnion</tt> always operates on the individual components of MultiGeometries.
+ * So it is possible to use it to "clean" invalid self-intersecting MultiPolygons
+ * (although the polygon components must all still be individually valid.)
+ * 
+ * @author mbdavis
+ *
+ */
+public class UnaryUnionOp 
+{
+	public static Geometry union(Collection geoms)
+	{
+		UnaryUnionOp op = new UnaryUnionOp(geoms);
+		return op.union();
+	}
+	
+	public static Geometry union(Collection geoms, GeometryFactory geomFact)
+	{
+		UnaryUnionOp op = new UnaryUnionOp(geoms, geomFact);
+		return op.union();
+	}
+	
+	public static Geometry union(Geometry geom)
+	{
+		UnaryUnionOp op = new UnaryUnionOp(geom);
+		return op.union();
+	}
+	
+	private List polygons = new ArrayList();
+	private List lines = new ArrayList();
+	private List points = new ArrayList();
+	
+	private GeometryFactory geomFact = null;
+	
+	public UnaryUnionOp(Collection geoms, GeometryFactory geomFact)
+	{
+		this.geomFact = geomFact;
+		extract(geoms);
+	}
+	
+	public UnaryUnionOp(Collection geoms)
+	{
+		extract(geoms);
+	}
+	
+	public UnaryUnionOp(Geometry geom)
+	{
+		extract(geom);
+	}
+	
+	private void extract(Collection geoms)
+	{
+		for (Iterator i = geoms.iterator(); i.hasNext();) {
+			Geometry geom = (Geometry) i.next();
+			extract(geom);
+		}
+	}
+	
+	private void extract(Geometry geom)
+	{
+		if (geomFact == null)
+			geomFact = geom.getFactory();
+		
+		/*
+		PolygonExtracter.getPolygons(geom, polygons);
+		LineStringExtracter.getLines(geom, lines);
+		PointExtracter.getPoints(geom, points);
+		*/
+		GeometryExtracter.extract(geom, Polygon.class, polygons);
+		GeometryExtracter.extract(geom, LineString.class, lines);
+		GeometryExtracter.extract(geom, Point.class, points);
+	}
+
+	/**
+	 * Gets the union of the input geometries.
+	 * If no input geometries were provided, a POINT EMPTY is returned.
+	 * 
+	 * @return a Geometry containing the union
+	 * @return an empty GEOMETRYCOLLECTION if no geometries were provided in the input
+	 */
+	public Geometry union()
+	{
+		if (geomFact == null) {
+			return null;
+		}
+		
+		/**
+		 * For points and lines, only a single union operation is 
+		 * required, since the OGC model allowings self-intersecting 
+		 * MultiPoint and MultiLineStrings.
+		 * This is not the case for polygons, so Cascaded Union is required.
+		 */
+		Geometry unionPoints = null;
+		if (points.size() > 0) {
+			Geometry ptGeom = geomFact.buildGeometry(points);
+			unionPoints = unionNoOpt(ptGeom);
+		}
+		
+		Geometry unionLines = null;
+		if (lines.size() > 0) {
+			Geometry lineGeom = geomFact.buildGeometry(lines);
+			unionLines = unionNoOpt(lineGeom);
+		}
+		
+		Geometry unionPolygons = null;
+		if (polygons.size() > 0) {
+			unionPolygons = CascadedPolygonUnion.union(polygons);
+		}
+		
+    /**
+     * Performing two unions is somewhat inefficient,
+     * but is mitigated by unioning lines and points first
+     */
+		Geometry unionLA = unionWithNull(unionLines, unionPolygons);
+		Geometry union = null;
+		if (unionPoints == null)
+			union = unionLA;
+		else if (unionLA == null)
+			union = unionPoints;
+		else 
+			union = PointGeometryUnion.union((Puntal) unionPoints, unionLA);
+		
+		if (union == null)
+			return geomFact.createGeometryCollection(null);
+		
+		return union;
+	}
+	
+  /**
+   * Computes the union of two geometries, 
+   * either of both of which may be null.
+   * 
+   * @param g0 a Geometry
+   * @param g1 a Geometry
+   * @return the union of the input(s)
+   * @return null if both inputs are null
+   */
+  private Geometry unionWithNull(Geometry g0, Geometry g1)
+  {
+  	if (g0 == null && g1 == null)
+  		return null;
+
+  	if (g1 == null)
+  		return g0;
+  	if (g0 == null)
+  		return g1;
+  	
+  	return g0.union(g1);
+  }
+
+  /**
+   * Computes a unary union with no extra optimization,
+   * and no short-circuiting.
+   * Due to the way the overlay operations 
+   * are implemented, this is still efficient in the case of linear 
+   * and puntal geometries.
+   * 
+   * @param g0 a geometry
+   * @return the union of the input geometry
+   */
+	private Geometry unionNoOpt(Geometry g0)
+	{
+    Geometry empty = geomFact.createPoint((Coordinate) null);
+		return OverlayOp.overlayOp(g0, empty, OverlayOp.UNION);
+	}
+	
+}
diff --git a/src/com/vividsolutions/jts/operation/union/UnionInteracting.java b/src/com/vividsolutions/jts/operation/union/UnionInteracting.java
new file mode 100644
index 0000000..165fe09
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/union/UnionInteracting.java
@@ -0,0 +1,119 @@
+package com.vividsolutions.jts.operation.union;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.util.GeometryCombiner;
+
+/**
+ * Experimental code to union MultiPolygons
+ * with processing limited to the elements which actually interact.
+ * 
+ * Not currently used, since it doesn't seem to offer much of a performance advantage.
+ * 
+ * @author mbdavis
+ *
+ */
+public class UnionInteracting 
+{
+	public static Geometry union(Geometry g0, Geometry g1)
+	{
+		UnionInteracting uue = new UnionInteracting(g0, g1);
+		return uue.union();
+	}
+
+	
+	private GeometryFactory geomFactory;
+	
+	private Geometry g0;
+	private Geometry g1;
+	
+	private boolean[] interacts0;
+	private boolean[] interacts1;
+	
+	public UnionInteracting(Geometry g0, Geometry g1)
+	{
+		this.g0 = g0;
+		this.g1 = g1;
+		geomFactory = g0.getFactory();
+		interacts0 = new boolean[g0.getNumGeometries()];
+		interacts1 = new boolean[g1.getNumGeometries()];
+	}
+	
+	public Geometry union()
+	{
+		computeInteracting();
+		
+		// check for all interacting or none interacting!
+		
+		Geometry int0 = extractElements(g0, interacts0, true);
+		Geometry int1 = extractElements(g1, interacts1, true);
+		
+//		System.out.println(int0);
+//		System.out.println(int1);
+
+		if (int0.isEmpty() || int1.isEmpty()) {
+			System.out.println("found empty!");
+//			computeInteracting();
+		}
+//		if (! int0.isValid()) {
+			//System.out.println(int0);
+			//throw new RuntimeException("invalid geom!");
+//		}
+		
+		Geometry union = int0.union(int1);
+		//Geometry union = bufferUnion(int0, int1);
+		
+		Geometry disjoint0 = extractElements(g0, interacts0, false);
+		Geometry disjoint1 = extractElements(g1, interacts1, false);
+		
+  	Geometry overallUnion = GeometryCombiner.combine(union, disjoint0, disjoint1);
+  	
+  	return overallUnion;
+
+	}
+	
+  private Geometry bufferUnion(Geometry g0, Geometry g1)
+  {
+  	GeometryFactory factory = g0.getFactory();
+  	Geometry gColl = factory.createGeometryCollection(new Geometry[] { g0, g1 } );
+  	Geometry unionAll = gColl.buffer(0.0);
+    return unionAll;
+  }
+
+	private void computeInteracting()
+	{
+		for (int i = 0; i < g0.getNumGeometries(); i++) {
+			Geometry elem = g0.getGeometryN(i);
+			interacts0[i] = computeInteracting(elem);
+		}
+	}
+	
+	private boolean computeInteracting(Geometry elem0)
+	{
+		boolean interactsWithAny = false;
+		for (int i = 0; i < g1.getNumGeometries(); i++) {
+			Geometry elem1 = g1.getGeometryN(i);
+			boolean interacts = elem1.getEnvelopeInternal().intersects(elem0.getEnvelopeInternal());
+			if (interacts) interacts1[i] = true;
+			if (interacts) 
+				interactsWithAny = true;
+		}
+		return interactsWithAny;
+	}
+	
+  private Geometry extractElements(Geometry geom, 
+  		boolean[] interacts, boolean isInteracting)
+  {
+  	List extractedGeoms = new ArrayList();
+  	for (int i = 0; i < geom.getNumGeometries(); i++) { 
+  		Geometry elem = geom.getGeometryN(i);
+  		if (interacts[i] == isInteracting)
+  			extractedGeoms.add(elem);
+  	}
+  	return geomFactory.buildGeometry(extractedGeoms);
+  }
+
+	
+}
diff --git a/src/com/vividsolutions/jts/operation/union/package.html b/src/com/vividsolutions/jts/operation/union/package.html
new file mode 100644
index 0000000..4714a4d
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/union/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Classes to perform efficent unioning of collections of geometries.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.java b/src/com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.java
index ff9f95c..42c3e18 100644
--- a/src/com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.java
+++ b/src/com/vividsolutions/jts/operation/valid/ConnectedInteriorTester.java
@@ -67,7 +67,6 @@ public class ConnectedInteriorTester {
   }
 
   private GeometryFactory geometryFactory = new GeometryFactory();
-  private CGAlgorithms cga = new CGAlgorithms();
 
   private GeometryGraph geomGraph;
   // save a coordinate for any disconnected interior found
@@ -87,11 +86,11 @@ public class ConnectedInteriorTester {
     List splitEdges = new ArrayList();
     geomGraph.computeSplitEdges(splitEdges);
 
-    // polygonize the edges
+    // form the edges into rings
     PlanarGraph graph = new PlanarGraph(new OverlayNodeFactory());
     graph.addEdges(splitEdges);
-    setAllEdgesInResult(graph);
-    graph.linkAllDirectedEdges();
+    setInteriorEdgesInResult(graph);
+    graph.linkResultDirectedEdges();
     List edgeRings = buildEdgeRings(graph.getEdgeEnds());
 
     /**
@@ -110,16 +109,20 @@ public class ConnectedInteriorTester {
     return ! hasUnvisitedShellEdge(edgeRings);
   }
 
-  private void setAllEdgesInResult(PlanarGraph graph)
+  private void setInteriorEdgesInResult(PlanarGraph graph)
   {
     for (Iterator it = graph.getEdgeEnds().iterator(); it.hasNext(); ) {
       DirectedEdge de = (DirectedEdge) it.next();
-      de.setInResult(true);
+      if (de.getLabel().getLocation(0, Position.RIGHT) == Location.INTERIOR) {
+        de.setInResult(true);
+      }
     }
   }
 
   /**
-   * for all DirectedEdges in result, form them into EdgeRings
+   * Form DirectedEdges in graph into Minimal EdgeRings.
+   * (Minimal Edgerings must be used, because only they are guaranteed to provide
+   * a correct isHole computation)
    */
   private List buildEdgeRings(Collection dirEdges)
   {
@@ -127,9 +130,13 @@ public class ConnectedInteriorTester {
     for (Iterator it = dirEdges.iterator(); it.hasNext(); ) {
       DirectedEdge de = (DirectedEdge) it.next();
       // if this edge has not yet been processed
-      if (de.getEdgeRing() == null) {
-        EdgeRing er = new MaximalEdgeRing(de, geometryFactory, cga);
-        edgeRings.add(er);
+      if (de.isInResult()
+         && de.getEdgeRing() == null) {
+        MaximalEdgeRing er = new MaximalEdgeRing(de, geometryFactory);
+
+        er.linkDirectedEdgesForMinimalEdgeRings();
+        List minEdgeRings = er.buildMinimalRings();
+        edgeRings.addAll(minEdgeRings);
       }
     }
     return edgeRings;
@@ -137,7 +144,9 @@ public class ConnectedInteriorTester {
 
   /**
    * Mark all the edges for the edgeRings corresponding to the shells
-   * of the input polygons.  Note only ONE ring gets marked for each shell.
+   * of the input polygons.
+   * Only ONE ring gets marked for each shell - if there are others which remain unmarked
+   * this indicates a disconnected interior.
    */
   private void visitShellInteriors(Geometry g, PlanarGraph graph)
   {
@@ -176,16 +185,15 @@ public class ConnectedInteriorTester {
 
     visitLinkedDirectedEdges(intDe);
   }
+
   protected void visitLinkedDirectedEdges(DirectedEdge start)
   {
     DirectedEdge startDe = start;
     DirectedEdge de = start;
-//Debug.println(de);
     do {
       Assert.isTrue(de != null, "found null Directed Edge");
       de.setVisited(true);
       de = de.getNext();
-//Debug.println(de);
     } while (de != startDe);
   }
 
@@ -203,14 +211,19 @@ public class ConnectedInteriorTester {
   {
     for (int i = 0; i < edgeRings.size(); i++) {
       EdgeRing er = (EdgeRing) edgeRings.get(i);
-      if (er.isHole()) continue;
+      // don't check hole rings
+      if (er.isHole())
+        continue;
       List edges = er.getEdges();
       DirectedEdge de = (DirectedEdge) edges.get(0);
       // don't check CW rings which are holes
+      // (MD - this check may now be irrelevant)
       if (de.getLabel().getLocation(0, Position.RIGHT) != Location.INTERIOR) continue;
 
-      // must have a CW ring which surrounds the INT of the area, so check all
-      // edges have been visited
+      /**
+       * the edgeRing is CW ring which surrounds the INT of the area, so check all
+       * edges have been visited.  If any are unvisited, this is a disconnected part of the interior
+       */
       for (int j = 0; j < edges.size(); j++) {
         de = (DirectedEdge) edges.get(j);
 //Debug.print("visted? "); Debug.println(de);
diff --git a/src/com/vividsolutions/jts/operation/valid/ConsistentAreaTester.java b/src/com/vividsolutions/jts/operation/valid/ConsistentAreaTester.java
index fe358bb..c838a9c 100644
--- a/src/com/vividsolutions/jts/operation/valid/ConsistentAreaTester.java
+++ b/src/com/vividsolutions/jts/operation/valid/ConsistentAreaTester.java
@@ -119,7 +119,7 @@ public class ConsistentAreaTester {
   {
     for (Iterator nodeIt = nodeGraph.getNodeIterator(); nodeIt.hasNext(); ) {
       RelateNode node = (RelateNode) nodeIt.next();
-      if (! node.getEdges().isAreaLabelsConsistent()) {
+      if (! node.getEdges().isAreaLabelsConsistent(geomGraph)) {
         invalidPoint = (Coordinate) node.getCoordinate().clone();
         return false;
       }
diff --git a/src/com/vividsolutions/jts/operation/valid/IndexedNestedRingTester.java b/src/com/vividsolutions/jts/operation/valid/IndexedNestedRingTester.java
new file mode 100644
index 0000000..ac3b211
--- /dev/null
+++ b/src/com/vividsolutions/jts/operation/valid/IndexedNestedRingTester.java
@@ -0,0 +1,115 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.operation.valid;
+
+import java.util.*;
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geomgraph.*;
+import com.vividsolutions.jts.index.SpatialIndex;
+import com.vividsolutions.jts.index.strtree.STRtree;
+import com.vividsolutions.jts.util.*;
+
+/**
+ * Tests whether any of a set of {@link LinearRing}s are
+ * nested inside another ring in the set, using a spatial
+ * index to speed up the comparisons.
+ *
+ * @version 1.7
+ */
+public class IndexedNestedRingTester
+{
+  private GeometryGraph graph;  // used to find non-node vertices
+  private List rings = new ArrayList();
+  private Envelope totalEnv = new Envelope();
+  private SpatialIndex index;
+  private Coordinate nestedPt;
+
+  public IndexedNestedRingTester(GeometryGraph graph)
+  {
+    this.graph = graph;
+  }
+
+  public Coordinate getNestedPoint() { return nestedPt; }
+
+  public void add(LinearRing ring)
+  {
+    rings.add(ring);
+    totalEnv.expandToInclude(ring.getEnvelopeInternal());
+  }
+
+  public boolean isNonNested()
+  {
+    buildIndex();
+
+    for (int i = 0; i < rings.size(); i++) {
+      LinearRing innerRing = (LinearRing) rings.get(i);
+      Coordinate[] innerRingPts = innerRing.getCoordinates();
+
+      List results = index.query(innerRing.getEnvelopeInternal());
+//System.out.println(results.size());
+      for (int j = 0; j < results.size(); j++) {
+        LinearRing searchRing = (LinearRing) results.get(j);
+        Coordinate[] searchRingPts = searchRing.getCoordinates();
+
+        if (innerRing == searchRing)
+          continue;
+
+        if (! innerRing.getEnvelopeInternal().intersects(searchRing.getEnvelopeInternal()))
+          continue;
+
+        Coordinate innerRingPt = IsValidOp.findPtNotNode(innerRingPts, searchRing, graph);
+        Assert.isTrue(innerRingPt != null, "Unable to find a ring point not a node of the search ring");
+        //Coordinate innerRingPt = innerRingPts[0];
+
+        boolean isInside = CGAlgorithms.isPointInRing(innerRingPt, searchRingPts);
+        if (isInside) {
+          nestedPt = innerRingPt;
+          return false;
+        }
+      }
+    }
+    return true;
+  }
+
+  private void buildIndex()
+  {
+    index = new STRtree();
+
+    for (int i = 0; i < rings.size(); i++) {
+      LinearRing ring = (LinearRing) rings.get(i);
+      Envelope env = ring.getEnvelopeInternal();
+      index.insert(env, ring);
+    }
+  }
+}
diff --git a/src/com/vividsolutions/jts/operation/valid/IsValidOp.java b/src/com/vividsolutions/jts/operation/valid/IsValidOp.java
index bbbdb61..791490f 100644
--- a/src/com/vividsolutions/jts/operation/valid/IsValidOp.java
+++ b/src/com/vividsolutions/jts/operation/valid/IsValidOp.java
@@ -49,7 +49,6 @@ import com.vividsolutions.jts.util.*;
  */
 public class IsValidOp
 {
-
   /**
    * Checks whether a coordinate is valid for processing.
    * Coordinates are valid iff their x and y ordinates are in the
@@ -441,26 +440,6 @@ public class IsValidOp
     }
   }
 
-  /*
-  private void OLDcheckHolesInShell(Polygon p)
-  {
-    LinearRing shell =  (LinearRing) p.getExteriorRing();
-    Coordinate[] shellPts = shell.getCoordinates();
-    for (int i = 0; i < p.getNumInteriorRing(); i++) {
-      Coordinate holePt = findPtNotNode(p.getInteriorRingN(i).getCoordinates(), shell, arg[0]);
-      Assert.isTrue(holePt != null, "Unable to find a hole point not a vertex of the shell");
-      boolean onBdy = cga.isOnLine(holePt, shellPts);
-      boolean inside = cga.isPointInRing(holePt, shellPts);
-      boolean outside = ! (onBdy || inside);
-      if ( outside ) {
-        validErr = new TopologyValidationError(
-                          TopologyValidationError.HOLE_OUTSIDE_SHELL,
-                          holePt);
-        return;
-      }
-    }
-  }
-  */
   /**
    * Tests that no hole is nested inside another hole.
    * This routine assumes that the holes are disjoint.
@@ -475,7 +454,7 @@ public class IsValidOp
    */
   private void checkHolesNotNested(Polygon p, GeometryGraph graph)
   {
-    QuadtreeNestedRingTester nestedTester = new QuadtreeNestedRingTester(graph);
+    IndexedNestedRingTester nestedTester = new IndexedNestedRingTester(graph);
     //SimpleNestedRingTester nestedTester = new SimpleNestedRingTester(arg[0]);
     //SweeplineNestedRingTester nestedTester = new SweeplineNestedRingTester(arg[0]);
 
@@ -491,36 +470,6 @@ public class IsValidOp
     }
   }
 
-  /*
-  private void SLOWcheckHolesNotNested(Polygon p)
-  {
-    for (int i = 0; i < p.getNumInteriorRing(); i++) {
-      LinearRing innerHole = (LinearRing) p.getInteriorRingN(i);
-      Coordinate[] innerHolePts = innerHole.getCoordinates();
-      for (int j = 0; j < p.getNumInteriorRing(); j++) {
-        // don't test hole against itself!
-        if (i == j) continue;
-
-        LinearRing searchHole = (LinearRing) p.getInteriorRingN(j);
-
-        // if envelopes don't overlap, holes are not nested
-        if (! innerHole.getEnvelopeInternal().overlaps(searchHole.getEnvelopeInternal()))
-          continue;
-
-        Coordinate[] searchHolePts = searchHole.getCoordinates();
-        Coordinate innerholePt = findPtNotNode(innerHolePts, searchHole, arg[0]);
-        Assert.isTrue(innerholePt != null, "Unable to find a hole point not a node of the search hole");
-        boolean inside = cga.isPointInRing(innerholePt, searchHolePts);
-        if ( inside ) {
-          validErr = new TopologyValidationError(
-                            TopologyValidationError.NESTED_HOLES,
-                            innerholePt);
-          return;
-        }
-      }
-    }
-  }
-  */
   /**
    * Tests that no element polygon is wholly in the interior of another element polygon.
    * <p>
diff --git a/src/com/vividsolutions/jts/operation/valid/TopologyValidationError.java b/src/com/vividsolutions/jts/operation/valid/TopologyValidationError.java
index 47f0f2c..1580b12 100644
--- a/src/com/vividsolutions/jts/operation/valid/TopologyValidationError.java
+++ b/src/com/vividsolutions/jts/operation/valid/TopologyValidationError.java
@@ -34,7 +34,7 @@
  */
 package com.vividsolutions.jts.operation.valid;
 
-import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.*;
 
 /**
  * Contains information about the nature and location of a {@link Geometry}
@@ -102,7 +102,7 @@ public class TopologyValidationError {
 
   /**
    * Indicates that the <code>X</code> or <code>Y</code> ordinate of
-   * a Coordinate is not a valid numeric value (e.g. {@link Double.Nan} )
+   * a Coordinate is not a valid numeric value (e.g. {@link Double#NaN} )
    */
   public static final int INVALID_COORDINATE      = 10;
 
@@ -140,7 +140,8 @@ public class TopologyValidationError {
   public TopologyValidationError(int errorType, Coordinate pt)
   {
     this.errorType = errorType;
-    this.pt = (Coordinate) pt.clone();
+    if (pt != null)
+      this.pt = (Coordinate) pt.clone();
   }
 
   /**
diff --git a/src/com/vividsolutions/jts/planargraph/DirectedEdge.java b/src/com/vividsolutions/jts/planargraph/DirectedEdge.java
index aaf7c37..72f0ca0 100644
--- a/src/com/vividsolutions/jts/planargraph/DirectedEdge.java
+++ b/src/com/vividsolutions/jts/planargraph/DirectedEdge.java
@@ -65,8 +65,6 @@ public class DirectedEdge
     return edges;
   }
 
-  protected static final CGAlgorithms cga = new CGAlgorithms();
-
   protected Edge parentEdge;
   protected Node from;
   protected Node to;
@@ -183,7 +181,7 @@ public class DirectedEdge
    * <li>first compare the quadrants. If the quadrants are different, it it
    * trivial to determine which vector is "greater".
    * <li>if the vectors lie in the same quadrant, the robust
-   * {@link RobustCGAlgorithms#computeOrientation(Coordinate, Coordinate, Coordinate)}
+   * {@link CGAlgorithms#computeOrientation(Coordinate, Coordinate, Coordinate)}
    * function can be used to decide the relative orientation of the vectors.
    * </ul>
    */
@@ -204,7 +202,7 @@ public class DirectedEdge
    * <li>first compare the quadrants. If the quadrants are different, it it
    * trivial to determine which vector is "greater".
    * <li>if the vectors lie in the same quadrant, the robust
-   * {@link RobustCGAlgorithms#computeOrientation(Coordinate, Coordinate, Coordinate)}
+   * {@link CGAlgorithms#computeOrientation(Coordinate, Coordinate, Coordinate)}
    * function can be used to decide the relative orientation of the vectors.
    * </ul>
    */
diff --git a/src/com/vividsolutions/jts/planargraph/Edge.java b/src/com/vividsolutions/jts/planargraph/Edge.java
index e1d5481..c30d916 100644
--- a/src/com/vividsolutions/jts/planargraph/Edge.java
+++ b/src/com/vividsolutions/jts/planargraph/Edge.java
@@ -49,7 +49,7 @@ public class Edge
 
   /**
    * The two DirectedEdges associated with this Edge.
-   * 0 is forward, 1 is reverse
+   * Index 0 is forward, 1 is reverse.
    */
   protected DirectedEdge[] dirEdge;
 
diff --git a/src/com/vividsolutions/jts/planargraph/Node.java b/src/com/vividsolutions/jts/planargraph/Node.java
index 38ba3f4..368803f 100644
--- a/src/com/vividsolutions/jts/planargraph/Node.java
+++ b/src/com/vividsolutions/jts/planargraph/Node.java
@@ -116,6 +116,15 @@ public class Node
   }
 
   /**
+   * Removes a {@link DirectedEdge} incident on this node.
+   * Does not change the state of the directed edge.
+   */
+  public void remove(DirectedEdge de)
+  {
+    deStar.remove(de);
+  }
+
+  /**
    * Removes this node from its containing graph.
    */
   void remove() {
diff --git a/src/com/vividsolutions/jts/planargraph/PlanarGraph.java b/src/com/vividsolutions/jts/planargraph/PlanarGraph.java
index 6afa24e..2b3bb01 100644
--- a/src/com/vividsolutions/jts/planargraph/PlanarGraph.java
+++ b/src/com/vividsolutions/jts/planargraph/PlanarGraph.java
@@ -117,7 +117,7 @@ public abstract class PlanarGraph
   /**
    * Tests whether this graph contains the given {@link Edge}
    *
-   * @param de the edge to query
+   * @param e the edge to query
    * @return <code>true</code> if the graph contains the edge
    */
   public boolean contains(Edge e)
@@ -176,16 +176,16 @@ public abstract class PlanarGraph
   }
 
   /**
-   * Removes DirectedEdge from its from-Node and from this PlanarGraph.
-   * This method does not remove the Nodes associated with the DirectedEdge,
-   * even if the removal of the DirectedEdge reduces the degree of a Node to
-   * zero.
+   * Removes a {@link DirectedEdge} from its from-{@link Node} and from this graph.
+   * This method does not remove the {@link Node}s associated with the DirectedEdge,
+   * even if the removal of the DirectedEdge reduces the degree of a Node to zero.
    */
   public void remove(DirectedEdge de)
   {
     DirectedEdge sym = de.getSym();
     if (sym != null) sym.setSym(null);
-    de.getFromNode().getOutEdges().remove(de);
+    
+    de.getFromNode().remove(de);
     de.remove();
     dirEdges.remove(de);
   }
diff --git a/src/com/vividsolutions/jts/planargraph/Subgraph.java b/src/com/vividsolutions/jts/planargraph/Subgraph.java
index 51ca21d..85723d0 100644
--- a/src/com/vividsolutions/jts/planargraph/Subgraph.java
+++ b/src/com/vividsolutions/jts/planargraph/Subgraph.java
@@ -4,7 +4,7 @@ import java.util.*;
 
 /**
  * A subgraph of a {@link PlanarGraph}.
- * A subgraph may contain any subset of {@link Edges}
+ * A subgraph may contain any subset of {@link Edge}s
  * from the parent graph.
  * It will also automatically contain all {@link DirectedEdge}s
  * and {@link Node}s associated with those edges.
@@ -76,7 +76,7 @@ public class Subgraph
   public Iterator edgeIterator()  {    return edges.iterator();  }
 
   /**
-   * Returns an {@link Iterator} over the {@link Nodes} in this graph.
+   * Returns an {@link Iterator} over the {@link Node}s in this graph.
    * @return an iterator over the nodes
    */
   public Iterator nodeIterator()  {    return nodeMap.iterator();  }
diff --git a/src/com/vividsolutions/jts/planargraph/algorithm/package.html b/src/com/vividsolutions/jts/planargraph/algorithm/package.html
new file mode 100644
index 0000000..eb8a48e
--- /dev/null
+++ b/src/com/vividsolutions/jts/planargraph/algorithm/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Classes which implement graph algorithms on planar graphs.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/polygonize/package.html b/src/com/vividsolutions/jts/polygonize/package.html
deleted file mode 100644
index 0eb78d8..0000000
--- a/src/com/vividsolutions/jts/polygonize/package.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<!--
-
--->
-</head>
-<body bgcolor="white">
-
-Contains classes to implement a polygonization algorithm.
-This package can be used to create polygons from fully noded linework.
-
-</body>
-</html>
diff --git a/src/com/vividsolutions/jts/precision/CommonBits.java b/src/com/vividsolutions/jts/precision/CommonBits.java
index b4a6815..b12de8d 100644
--- a/src/com/vividsolutions/jts/precision/CommonBits.java
+++ b/src/com/vividsolutions/jts/precision/CommonBits.java
@@ -47,6 +47,7 @@ public class CommonBits {
   /**
    * Computes the bit pattern for the sign and exponent of a
    * double-precision number.
+   * 
    * @param num
    * @return the bit pattern for the sign and exponent
    */
@@ -61,7 +62,9 @@ public class CommonBits {
  * It does not count the hidden bit, which is always 1.
  * It does not determine whether the numbers have the same exponent - if they do
  * not, the value computed by this function is meaningless.
- * @param db
+ * 
+ * @param num1 the first number
+ * @param num2 the second number
  * @return the number of common most-significant mantissa bits
  */
   public static int numCommonMostSigMantissaBits(long num1, long num2)
@@ -78,8 +81,8 @@ public class CommonBits {
 
   /**
    * Zeroes the lower n bits of a bitstring.
+   * 
    * @param bits the bitstring to alter
-   * @param i the number of bits to zero
    * @return the zeroed bitstring
    */
   public static long zeroLowerBits(long bits, int nBits)
@@ -92,6 +95,7 @@ public class CommonBits {
 
   /**
    * Extracts the i'th bit of a bitstring.
+   * 
    * @param bits the bitstring to extract from
    * @param i the bit to extract
    * @return the value of the extracted bit
diff --git a/src/com/vividsolutions/jts/precision/CoordinatePrecisionReducerFilter.java b/src/com/vividsolutions/jts/precision/CoordinatePrecisionReducerFilter.java
new file mode 100644
index 0000000..a81313c
--- /dev/null
+++ b/src/com/vividsolutions/jts/precision/CoordinatePrecisionReducerFilter.java
@@ -0,0 +1,53 @@
+package com.vividsolutions.jts.precision;
+
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Reduces the precision of the {@link Coordinate}s in a
+ * {@link CoordinateSequence} to match the supplied {@link PrecisionModel}.
+ * Uses {@link PrecisionModel#makePrecise(double)}.
+ * The input is modified in-place, so
+ * it should be cloned beforehand if the
+ * original should not be modified.
+ * 
+ * @author mbdavis
+ *
+ */
+public class CoordinatePrecisionReducerFilter
+	implements CoordinateSequenceFilter
+{
+	private PrecisionModel precModel;
+	
+	/**
+	 * Creates a new precision reducer filter.
+	 * 
+	 * @param precModel the PrecisionModel to use 
+	 */
+	public CoordinatePrecisionReducerFilter(PrecisionModel precModel)
+	{
+		this.precModel = precModel;
+	}
+	
+	/**
+	 * Rounds the Coordinates in the sequence to match the PrecisionModel
+	 */
+	public void filter(CoordinateSequence seq, int i)
+	{
+		seq.setOrdinate(i, 0, precModel.makePrecise(seq.getOrdinate(i, 0)));
+		seq.setOrdinate(i, 1, precModel.makePrecise(seq.getOrdinate(i, 1)));
+	}
+  
+	/**
+	 * Always runs over all geometry components.
+	 *  
+	 * @return false
+	 */
+  public boolean isDone()  {  	return false;  }
+  
+  /**
+   * Always reports that the geometry has changed
+   * 
+   * @return true
+   */
+  public boolean isGeometryChanged() { return true;   }
+}
diff --git a/src/com/vividsolutions/jts/precision/EnhancedPrecisionOp.java b/src/com/vividsolutions/jts/precision/EnhancedPrecisionOp.java
index 8589c0b..f907752 100644
--- a/src/com/vividsolutions/jts/precision/EnhancedPrecisionOp.java
+++ b/src/com/vividsolutions/jts/precision/EnhancedPrecisionOp.java
@@ -189,7 +189,7 @@ public class EnhancedPrecisionOp
    * This method should no longer be necessary, since the buffer algorithm
    * now is highly robust.
    *
-   * @param geom0 the first Geometry
+   * @param geom the first Geometry
    * @param distance the buffer distance
    * @return the Geometry representing the buffer of the input Geometry.
    */
diff --git a/src/com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.java b/src/com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.java
index e02cf8e..bf9461a 100644
--- a/src/com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.java
+++ b/src/com/vividsolutions/jts/precision/SimpleGeometryPrecisionReducer.java
@@ -52,6 +52,20 @@ import com.vividsolutions.jts.geom.util.*;
  */
 public class SimpleGeometryPrecisionReducer
 {
+	/**
+	 * Convenience method for doing precision reduction on a single geometry,
+	 * with collapses removed and keeping the geometry precision model the same.
+	 * 
+	 * @param g
+	 * @param precModel
+	 * @return the reduced geometry
+	 */
+	public static Geometry reduce(Geometry g, PrecisionModel precModel)
+	{
+		SimpleGeometryPrecisionReducer reducer = new SimpleGeometryPrecisionReducer(precModel);
+		return reducer.reduce(g);
+	}
+	
   private PrecisionModel newPrecisionModel;
   private boolean removeCollapsed = true;
   private boolean changePrecisionModel = false;
diff --git a/src/com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.java b/src/com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.java
index 01feb54..69545e9 100644
--- a/src/com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.java
+++ b/src/com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.java
@@ -30,7 +30,8 @@ public class DouglasPeuckerSimplifier
 
   private Geometry inputGeom;
   private double distanceTolerance;
-
+  private boolean isEnsureValidTopology = true;
+  
   public DouglasPeuckerSimplifier(Geometry inputGeom)
   {
     this.inputGeom = inputGeom;
@@ -40,8 +41,7 @@ public class DouglasPeuckerSimplifier
    * Sets the distance tolerance for the simplification.
    * All vertices in the simplified geometry will be within this
    * distance of the original geometry.
-   * The tolerance value must be non-negative.  A tolerance value
-   * of zero is effectively a no-op.
+   * The tolerance value must be non-negative. 
    *
    * @param distanceTolerance the approximation tolerance to use
    */
@@ -51,14 +51,40 @@ public class DouglasPeuckerSimplifier
     this.distanceTolerance = distanceTolerance;
   }
 
+  /**
+   * Controls whether simplified polygons will be "fixed"
+   * to have valid topology.
+   * The caller may choose to disable this because:
+   * <ul>
+   * <li>valid topology is not required
+   * <li>fixing topology is a relative expensive operation
+   * <li>in some pathological cases the topology fixing operation may either fail or run for too long
+   * </ul>
+   * 
+   * The default is to fix polygon topology.
+   * 
+   * @param isEnsureValidTopology
+   */
+  public void setEnsureValid(boolean isEnsureValidTopology)
+  {
+  	this.isEnsureValidTopology = isEnsureValidTopology;
+  }
+  
   public Geometry getResultGeometry()
   {
-    return (new DPTransformer()).transform(inputGeom);
+    return (new DPTransformer(isEnsureValidTopology)).transform(inputGeom);
   }
 
 class DPTransformer
     extends GeometryTransformer
 {
+  private boolean isEnsureValidTopology = true;
+
+	public DPTransformer(boolean isEnsureValidTopology)
+	{
+		this.isEnsureValidTopology = isEnsureValidTopology;
+	}
+	
   protected CoordinateSequence transformCoordinates(CoordinateSequence coords, Geometry parent)
   {
     Coordinate[] inputPts = coords.toCoordinateArray();
@@ -66,18 +92,39 @@ class DPTransformer
     return factory.getCoordinateSequenceFactory().create(newPts);
   }
 
+  /**
+   * Simplifies a polygon, fixing it if required.
+   */
   protected Geometry transformPolygon(Polygon geom, Geometry parent) {
-    Geometry roughGeom = super.transformPolygon(geom, parent);
+    Geometry rawGeom = super.transformPolygon(geom, parent);
     // don't try and correct if the parent is going to do this
     if (parent instanceof MultiPolygon) {
-      return roughGeom;
+      return rawGeom;
     }
-    return createValidArea(roughGeom);
+    return createValidArea(rawGeom);
   }
 
+  /**
+   * Simplifies a LinearRing.  If the simplification results 
+   * in a degenerate ring, remove the component.
+   * 
+   * @return null if the simplification results in a degenerate ring
+   */
+  protected Geometry transformLinearRing(LinearRing geom, Geometry parent) 
+  {
+  	boolean removeDegenerateRings = parent instanceof Polygon;
+  	Geometry simpResult = super.transformLinearRing(geom, parent);
+  	if (removeDegenerateRings && ! (simpResult instanceof LinearRing))
+  		return null;;
+  	return simpResult;
+  }
+  
+  /**
+   * Simplifies a MultiPolygon, fixing it if required.
+   */
   protected Geometry transformMultiPolygon(MultiPolygon geom, Geometry parent) {
-    Geometry roughGeom = super.transformMultiPolygon(geom, parent);
-    return createValidArea(roughGeom);
+    Geometry rawGeom = super.transformMultiPolygon(geom, parent);
+    return createValidArea(rawGeom);
   }
 
   /**
@@ -90,12 +137,14 @@ class DPTransformer
    * areas.  This also may return empty geometries, if the input
    * has no actual area.
    *
-   * @param roughAreaGeom an area geometry possibly containing self-intersections
+   * @param rawAreaGeom an area geometry possibly containing self-intersections
    * @return a valid area geometry
    */
-  private Geometry createValidArea(Geometry roughAreaGeom)
+  private Geometry createValidArea(Geometry rawAreaGeom)
   {
-    return roughAreaGeom.buffer(0.0);
+  	if ( isEnsureValidTopology)
+  		return rawAreaGeom.buffer(0.0);
+  	return rawAreaGeom;
   }
 }
 
diff --git a/src/com/vividsolutions/jts/simplify/LineSegmentIndex.java b/src/com/vividsolutions/jts/simplify/LineSegmentIndex.java
index e298dc0..a6a0b4d 100644
--- a/src/com/vividsolutions/jts/simplify/LineSegmentIndex.java
+++ b/src/com/vividsolutions/jts/simplify/LineSegmentIndex.java
@@ -6,7 +6,10 @@ import com.vividsolutions.jts.index.*;
 import com.vividsolutions.jts.index.quadtree.Quadtree;
 
 /**
- * An index of {@link LineSegments}.
+ * An spatial index on a set of {@link LineSegment}s.
+ * Supports adding and removing items.
+ *
+ * @author Martin Davis
  */
 public class LineSegmentIndex
 {
@@ -18,7 +21,7 @@ public class LineSegmentIndex
 
   public void add(TaggedLineString line) {
     TaggedLineSegment[] segs = line.getSegments();
-    for (int i = 0; i < segs.length - 1; i++) {
+    for (int i = 0; i < segs.length; i++) {
       TaggedLineSegment seg = segs[i];
       add(seg);
     }
diff --git a/src/com/vividsolutions/jts/simplify/TaggedLineSegment.java b/src/com/vividsolutions/jts/simplify/TaggedLineSegment.java
index e0e498d..f6ab3d9 100644
--- a/src/com/vividsolutions/jts/simplify/TaggedLineSegment.java
+++ b/src/com/vividsolutions/jts/simplify/TaggedLineSegment.java
@@ -3,7 +3,7 @@ package com.vividsolutions.jts.simplify;
 import com.vividsolutions.jts.geom.*;
 
 /**
- * A {@link LineSegment} which is tagged with its location in a {@link Geometry}.
+ * A {@link LineSegment} which is tagged with its location in a parent {@link Geometry}.
  * Used to index the segments in a geometry and recover the segment locations
  * from the index.
  */
diff --git a/src/com/vividsolutions/jts/simplify/TaggedLineString.java b/src/com/vividsolutions/jts/simplify/TaggedLineString.java
index d45a9f2..d582d85 100644
--- a/src/com/vividsolutions/jts/simplify/TaggedLineString.java
+++ b/src/com/vividsolutions/jts/simplify/TaggedLineString.java
@@ -4,9 +4,15 @@ import java.util.*;
 import com.vividsolutions.jts.geom.*;
 
 /**
+ * Represents a {@link LineString} which can be modified to a simplified shape.  
+ * Every line segment in the parent LineString is represented as a {@link TaggedLineSegment}.
+ * This class provides an attribute which specifies the minimum allowable length
+ * for the modified result.
+ * 
  * @version 1.7
  */
-public class TaggedLineString {
+public class TaggedLineString
+{
 
   private LineString parentLine;
   private TaggedLineSegment[] segs;
diff --git a/src/com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.java b/src/com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.java
index 6228485..3e5ccb8 100644
--- a/src/com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.java
+++ b/src/com/vividsolutions/jts/simplify/TaggedLineStringSimplifier.java
@@ -10,6 +10,7 @@ import com.vividsolutions.jts.util.Debug;
  * (in the sense that no new intersections are introduced).
  * Uses the recursive Douglas-Peucker algorithm.
  *
+ * @author Martin Davis
  * @version 1.7
  */
 public class TaggedLineStringSimplifier
@@ -24,7 +25,6 @@ public class TaggedLineStringSimplifier
   public TaggedLineStringSimplifier(LineSegmentIndex inputIndex,
                                      LineSegmentIndex outputIndex)
   {
-    this.line = line;
     this.inputIndex = inputIndex;
     this.outputIndex = outputIndex;
   }
diff --git a/src/com/vividsolutions/jts/simplify/TaggedLinesSimplifier.java b/src/com/vividsolutions/jts/simplify/TaggedLinesSimplifier.java
index 7fbc9d0..6bceb90 100644
--- a/src/com/vividsolutions/jts/simplify/TaggedLinesSimplifier.java
+++ b/src/com/vividsolutions/jts/simplify/TaggedLinesSimplifier.java
@@ -4,8 +4,10 @@ import java.util.*;
 import com.vividsolutions.jts.algorithm.*;
 
 /**
- * Simplifies a collection of TaggedLineStrings, preserving topology
+ * Simplifies a collection of {@link TaggedLineString}s, preserving topology
  * (in the sense that no new intersections are introduced).
+ * This class is essentially just a container for the common
+ * indexes used by {@link TaggedLineStringSimplifier}.
  */
 public class TaggedLinesSimplifier
 {
diff --git a/src/com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.java b/src/com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.java
index 6edbec1..97b3ff2 100644
--- a/src/com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.java
+++ b/src/com/vividsolutions/jts/simplify/TopologyPreservingSimplifier.java
@@ -13,14 +13,19 @@ import com.vividsolutions.jts.util.Debug;
  * similar to the one used in the Douglas-Peucker algorithm.
  * <p>
  * In particular, if the input is an areal geometry
- * ( {@link Polygon} or {@link MultiPolygon} )
+ * ( {@link Polygon} or {@link MultiPolygon} ):
  * <ul>
  * <li>The result has the same number of shells and holes (rings) as the input,
  * in the same order
  * <li>The result rings touch at <b>no more</b> than the number of touching point in the input
- * (although they may touch at fewer points)
+ * (although they may touch at fewer points).  
+ * (The key implication of this constraint is that the 
+ * output will be topologically valid if the input was.) 
  * </ul>
  *
+ * @author Martin Davis
+ * @see DouglasPeuckerSimplifier
+ *
  */
 public class TopologyPreservingSimplifier
 {
@@ -38,9 +43,7 @@ public class TopologyPreservingSimplifier
   public TopologyPreservingSimplifier(Geometry inputGeom)
   {
     this.inputGeom = inputGeom;
-    //TESTING: slightly faster, but probably not enough to bother with
-    //inputIndex = new LineSegmentIndex(new STRtree());
-  }
+ }
 
   /**
    * Sets the distance tolerance for the simplification.
@@ -70,6 +73,7 @@ public class TopologyPreservingSimplifier
   {
     protected CoordinateSequence transformCoordinates(CoordinateSequence coords, Geometry parent)
     {
+    	// for linear components (including rings), simplify the linestring
       if (parent instanceof LineString) {
         TaggedLineString taggedLine = (TaggedLineString) linestringMap.get(parent);
         return createCoordinateSequence(taggedLine.getResultCoordinates());
diff --git a/src/com/vividsolutions/jts/simplify/package.html b/src/com/vividsolutions/jts/simplify/package.html
new file mode 100644
index 0000000..4a9d794
--- /dev/null
+++ b/src/com/vividsolutions/jts/simplify/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Classes which implement algorithms for simplifying or generalizing geometries.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/triangulate/ConformingDelaunayTriangulationBuilder.java b/src/com/vividsolutions/jts/triangulate/ConformingDelaunayTriangulationBuilder.java
new file mode 100644
index 0000000..3988bfe
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/ConformingDelaunayTriangulationBuilder.java
@@ -0,0 +1,197 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.triangulate;
+
+import java.util.*;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.util.*;
+import com.vividsolutions.jts.triangulate.quadedge.*;
+
+/**
+ * A utility class which creates Conforming Delaunay Trianglulations
+ * from collections of points and linear constraints, and extract the resulting 
+ * triangulation edges or triangles as geometries. 
+ * 
+ * @author Martin Davis
+ *
+ */
+public class ConformingDelaunayTriangulationBuilder 
+{
+	private Collection siteCoords;
+	private Geometry constraintLines;
+	private double tolerance = 0.0;
+	private QuadEdgeSubdivision subdiv = null;
+
+	private Map vertexMap = new TreeMap();
+	
+	public ConformingDelaunayTriangulationBuilder()
+	{
+	}
+	
+	/**
+	 * Sets the sites (point or vertices) which will be triangulated.
+	 * All vertices of the given geometry will be used as sites.
+	 * 
+	 * @param geom the geometry from which the sites will be extracted.
+	 */
+	public void setSites(Geometry geom)
+	{
+		siteCoords = DelaunayTriangulationBuilder.extractUniqueCoordinates(geom);
+	}
+
+	/**
+	 * Sets the linear constraints to be conformed to.
+	 * All linear components in the input will be used as constraints.
+	 * 
+	 * @param constraintLines the lines to constraint to
+	 */
+	public void setConstraints(Geometry constraintLines)
+	{
+		this.constraintLines = constraintLines;
+	}
+	
+	/**
+	 * Sets the snapping tolerance which will be used
+	 * to improved the robustness of the triangulation computation.
+	 * A tolerance of 0.0 specifies that no snapping will take place.
+	 * 
+	 * @param tolerance the tolerance distance to use
+	 */
+	public void setTolerance(double tolerance)
+	{
+		this.tolerance = tolerance;
+	}
+	
+	
+	private void create()
+	{
+		if (subdiv != null) return;
+
+		Envelope siteEnv = DelaunayTriangulationBuilder.envelope(siteCoords);
+		
+		List sites = createConstraintVertices(siteCoords);
+		
+		List segments = new ArrayList();
+		if (constraintLines != null) {
+			siteEnv.expandToInclude(constraintLines.getEnvelopeInternal());
+			createVertices(constraintLines);
+			segments = createConstraintSegments(constraintLines);
+		}
+		
+		ConformingDelaunayTriangulator cdt = new ConformingDelaunayTriangulator(sites, tolerance);
+		
+		cdt.setConstraints(segments, new ArrayList(vertexMap.values()));
+		
+		cdt.formInitialDelaunay();
+		cdt.enforceConstraints();
+		subdiv = cdt.getSubdivision();
+	}
+	
+	private static List createConstraintVertices(Collection coords)
+	{
+		List verts = new ArrayList();
+		for (Iterator i = coords.iterator(); i.hasNext(); ) {
+			Coordinate coord = (Coordinate) i.next();
+			verts.add(new ConstraintVertex(coord));
+		}
+		return verts;
+	}
+
+	private void createVertices(Geometry geom)
+	{
+		Coordinate[] coords = geom.getCoordinates();
+		for (int i = 0; i < coords.length; i++) {
+			Vertex v = new ConstraintVertex(coords[i]);
+			vertexMap.put(coords[i], v);
+		}
+	}
+	
+	private static List createConstraintSegments(Geometry geom)
+	{
+		List lines = LinearComponentExtracter.getLines(geom);
+		List constraintSegs = new ArrayList();
+		for (Iterator i = lines.iterator(); i.hasNext(); ) {
+			LineString line = (LineString) i.next();
+			createConstraintSegments(line, constraintSegs);
+		}
+		return constraintSegs;
+	}
+	
+	private static void createConstraintSegments(LineString line, List constraintSegs)
+	{
+		Coordinate[] coords = line.getCoordinates();
+		for (int i = 1; i < coords.length; i++) {
+			constraintSegs.add(new Segment(coords[i-1], coords[i]));
+		}
+	}
+
+	/**
+	 * Gets the QuadEdgeSubdivision which models the computed triangulation.
+	 * 
+	 * @return the subdivision containing the triangulation
+	 */
+	public QuadEdgeSubdivision getSubdivision()
+	{
+		create();
+		return subdiv;
+	}
+	
+	/**
+	 * Gets the edges of the computed triangulation as a {@link MultiLineString}.
+	 * 
+	 * @param geomFact the geometry factory to use to create the output
+	 * @return the edges of the triangulation
+	 */
+	public Geometry getEdges(GeometryFactory geomFact)
+	{
+		create();
+		return subdiv.getEdges(geomFact);
+	}
+	
+	/**
+	 * Gets the faces of the computed triangulation as a {@link GeometryCollection} 
+	 * of {@link Polygon}.
+	 * 
+	 * @param geomFact the geometry factory to use to create the output
+	 * @return the faces of the triangulation
+	 */
+	public Geometry getTriangles(GeometryFactory geomFact)
+	{
+		create();
+		return subdiv.getTriangles(geomFact);
+	}
+
+}
+
+
diff --git a/src/com/vividsolutions/jts/triangulate/ConformingDelaunayTriangulator.java b/src/com/vividsolutions/jts/triangulate/ConformingDelaunayTriangulator.java
new file mode 100644
index 0000000..2d64754
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/ConformingDelaunayTriangulator.java
@@ -0,0 +1,563 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.triangulate;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import com.vividsolutions.jts.algorithm.ConvexHull;
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.util.Debug;
+import com.vividsolutions.jts.index.kdtree.KdNode;
+import com.vividsolutions.jts.index.kdtree.KdTree;
+import com.vividsolutions.jts.triangulate.quadedge.LastFoundQuadEdgeLocator;
+import com.vividsolutions.jts.triangulate.quadedge.QuadEdgeSubdivision;
+import com.vividsolutions.jts.triangulate.quadedge.Vertex;
+
+/**
+ * Computes a Conforming Delaunay Triangulation over a set of sites and a set of
+ * linear constraints.
+ * <p>
+ * A conforming Delaunay triangulation is a true Delaunay triangulation. In it
+ * each constraint segment is present as a union of one or more triangulation
+ * edges. Constraint segments may be subdivided into two or more triangulation
+ * edges by the insertion of additional sites. The additional sites are called
+ * Steiner points, and are necessary to allow the segments to be faithfully
+ * reflected in the triangulation while maintaining the Delaunay property.
+ * Another way of stating this is that in a conforming Delaunay triangulation
+ * every constraint segment will be the union of a subset of the triangulation
+ * edges (up to tolerance).
+ * <p>
+ * A Conforming Delaunay triangulation is distinct from a Constrained Delaunay triangulation.
+ * A Constrained Delaunay triangulation is not necessarily fully Delaunay, 
+ * and it contains the constraint segments exactly as edges of the triangulation.
+ * <p>
+ * A typical usage pattern for the triangulator is:
+ * <pre>
+ * 	 ConformingDelaunayTriangulator cdt = new ConformingDelaunayTriangulator(sites, tolerance);
+ * 
+ *   // optional	
+ *   cdt.setSplitPointFinder(splitPointFinder);
+ *   cdt.setVertexFactory(vertexFactory);
+ *   
+ *	 cdt.setConstraints(segments, new ArrayList(vertexMap.values()));
+ *	 cdt.formInitialDelaunay();
+ *	 cdt.enforceConstraints();
+ *	 subdiv = cdt.getSubdivision();
+ * </pre>
+ * 
+ * @author David Skea
+ * @author Martin Davis
+ */
+public class ConformingDelaunayTriangulator 
+{
+	private static Envelope computeVertexEnvelope(Collection vertices) {
+		Envelope env = new Envelope();
+		for (Iterator i = vertices.iterator(); i.hasNext();) {
+			Vertex v = (Vertex) i.next();
+			env.expandToInclude(v.getCoordinate());
+		}
+		return env;
+	}
+
+	private List initialVertices; // List<Vertex>
+	private List segVertices; // List<Vertex>
+
+	// MD - using a Set doesn't seem to be much faster
+	// private Set segments = new HashSet();
+	private List segments = new ArrayList(); // List<Segment>
+	private QuadEdgeSubdivision subdiv = null;
+	private IncrementalDelaunayTriangulator incDel;
+	private Geometry convexHull;
+	private ConstraintSplitPointFinder splitFinder = new NonEncroachingSplitPointFinder();
+	private KdTree kdt = null;
+	private ConstraintVertexFactory vertexFactory = null;
+
+	// allPointsEnv expanded by a small buffer
+	private Envelope computeAreaEnv;
+	// records the last split point computed, for error reporting
+	private Coordinate splitPt = null;
+
+	private double tolerance; // defines if two sites are the same.
+
+	/**
+	 * Creates a Conforming Delaunay Triangulation based on the given
+	 * unconstrained initial vertices. The initial vertex set should not contain
+	 * any vertices which appear in the constraint set.
+	 * 
+	 * @param initialVertices
+	 *          a collection of {@link ConstraintVertex}
+	 * @param tolerance
+	 *          the distance tolerance below which points are considered identical
+	 */
+	public ConformingDelaunayTriangulator(Collection initialVertices,
+			double tolerance) {
+		this.initialVertices = new ArrayList(initialVertices);
+		this.tolerance = tolerance;
+		kdt = new KdTree(tolerance);
+	}
+
+	/**
+	 * Sets the constraints to be conformed to by the computed triangulation.
+	 * The unique set of vertices (as {@link ConstraintVertex}es) 
+	 * forming the constraints must also be supplied.
+	 * Supplying it explicitly allows the ConstraintVertexes to be initialized
+	 * appropriately(e.g. with external data), and avoids re-computing the unique set
+	 * if it is already available.
+	 * 
+	 * @param segments a list of the constraint {@link Segment}s
+	 * @param segVertices the set of unique {@link ConstraintVertex}es referenced by the segments
+	 */
+	public void setConstraints(List segments, List segVertices) {
+		this.segments = segments;
+		this.segVertices = segVertices;
+	}
+
+	/**
+	 * Sets the {@link ConstraintSplitPointFinder} to be
+	 * used during constraint enforcement.
+	 * Different splitting strategies may be appropriate
+	 * for special situations. 
+	 * 
+	 * @param splitFinder the ConstraintSplitPointFinder to be used
+	 */
+	public void setSplitPointFinder(ConstraintSplitPointFinder splitFinder) {
+		this.splitFinder = splitFinder;
+	}
+
+	/**
+	 * Gets the tolerance value used to construct the triangulation.
+	 * 
+	 * @return a tolerance value
+	 */
+	public double getTolerance()
+	{
+		return tolerance;
+	}
+	
+	/**
+	 * Gets the <tt>ConstraintVertexFactory</tt> used to create new constraint vertices at split points.
+	 * 
+	 * @return
+	 */
+	public ConstraintVertexFactory getVertexFactory() {
+		return vertexFactory;
+	}
+
+	/**
+	 * Sets a custom {@link ConstraintVertexFactory} to be used
+	 * to allow vertices carrying extra information to be created.
+	 * 
+	 * @param vertexFactory the ConstraintVertexFactory to be used
+	 */
+	public void setVertexFactory(ConstraintVertexFactory vertexFactory) {
+		this.vertexFactory = vertexFactory;
+	}
+
+	/**
+	 * Gets the {@link QuadEdgeSubdivision} which represents the triangulation.
+	 * 
+	 * @return a subdivision
+	 */
+	public QuadEdgeSubdivision getSubdivision() {
+		return subdiv;
+	}
+
+	/**
+	 * Gets the {@link KdTree} which contains the vertices of the triangulation.
+	 * 
+	 * @return a KdTree
+	 */
+	public KdTree getKDT() {
+		return kdt;
+	}
+
+	/** 
+	 * Gets the sites (vertices) used to initialize the triangulation.
+	 *  
+	 * @return a List of Vertex
+	 */
+	public List getInitialVertices() {
+		return initialVertices;
+	}
+
+	/**
+	 * Gets the {@link Segment}s which represent the constraints.
+	 * 
+	 * @return a collection of Segments
+	 */
+	public Collection getConstraintSegments() {
+		return segments;
+	}
+
+	/**
+	 * Gets the convex hull of all the sites in the triangulation,
+	 * including constraint vertices.
+	 * Only valid after the constraints have been enforced.
+	 * 
+	 * @return the convex hull of the sites
+	 */
+	public Geometry getConvexHull() {
+		return convexHull;
+	}
+
+	// ==================================================================
+
+	private void computeBoundingBox() {
+		Envelope vertexEnv = computeVertexEnvelope(initialVertices);
+		Envelope segEnv = computeVertexEnvelope(segVertices);
+
+		Envelope allPointsEnv = new Envelope(vertexEnv);
+		allPointsEnv.expandToInclude(segEnv);
+
+		double deltaX = allPointsEnv.getWidth() * 0.2;
+		double deltaY = allPointsEnv.getHeight() * 0.2;
+
+		double delta = Math.max(deltaX, deltaY);
+
+		computeAreaEnv = new Envelope(allPointsEnv);
+		computeAreaEnv.expandBy(delta);
+	}
+
+	private void computeConvexHull() {
+		GeometryFactory fact = new GeometryFactory();
+		Coordinate[] coords = getPointArray();
+		ConvexHull hull = new ConvexHull(coords, fact);
+		convexHull = hull.getConvexHull();
+	}
+
+	// /**
+	// * Adds the segments in the Convex Hull of all sites in the input data as
+	// linear constraints.
+	// * This is required if TIN Refinement is performed. The hull segments are
+	// flagged with a
+	// unique
+	// * data object to allow distinguishing them.
+	// *
+	// * @param convexHullSegmentData the data object to attach to each convex
+	// hull segment
+	// */
+	// private void addConvexHullToConstraints(Object convexHullSegmentData) {
+	// Coordinate[] coords = convexHull.getCoordinates();
+	// for (int i = 1; i < coords.length; i++) {
+	// Segment s = new Segment(coords[i - 1], coords[i], convexHullSegmentData);
+	// addConstraintIfUnique(s);
+	// }
+	// }
+
+	// private void addConstraintIfUnique(Segment r) {
+	// boolean exists = false;
+	// Iterator it = segments.iterator();
+	// Segment s = null;
+	// while (it.hasNext()) {
+	// s = (Segment) it.next();
+	// if (r.equalsTopo(s)) {
+	// exists = true;
+	// }
+	// }
+	// if (!exists) {
+	// segments.add((Object) r);
+	// }
+	// }
+
+	private Coordinate[] getPointArray() {
+		Coordinate[] pts = new Coordinate[initialVertices.size()
+				+ segVertices.size()];
+		int index = 0;
+		for (Iterator i = initialVertices.iterator(); i.hasNext();) {
+			Vertex v = (Vertex) i.next();
+			pts[index++] = v.getCoordinate();
+		}
+		for (Iterator i2 = segVertices.iterator(); i2.hasNext();) {
+			Vertex v = (Vertex) i2.next();
+			pts[index++] = v.getCoordinate();
+		}
+		return pts;
+	}
+
+	private ConstraintVertex createVertex(Coordinate p) {
+		ConstraintVertex v = null;
+		if (vertexFactory != null)
+			v = vertexFactory.createVertex(p, null);
+		else
+			v = new ConstraintVertex(p);
+		return v;
+	}
+
+	/**
+	 * Creates a vertex on a constraint segment
+	 * 
+	 * @param p the location of the vertex to create
+	 * @param seg the constraint segment it lies on
+	 * @return the new constraint vertex
+	 */
+	private ConstraintVertex createVertex(Coordinate p, Segment seg) {
+		ConstraintVertex v = null;
+		if (vertexFactory != null)
+			v = vertexFactory.createVertex(p, seg);
+		else
+			v = new ConstraintVertex(p);
+		v.setOnConstraint(true);
+		return v;
+	}
+
+	/**
+	 * Inserts all sites in a collection
+	 * 
+	 * @param vertices a collection of ConstraintVertex
+	 */
+	private void insertSites(Collection vertices) {
+		Debug.println("Adding sites: " + vertices.size());
+		for (Iterator i = vertices.iterator(); i.hasNext();) {
+			ConstraintVertex v = (ConstraintVertex) i.next();
+			insertSite(v);
+		}
+	}
+
+	private ConstraintVertex insertSite(ConstraintVertex v) {
+		KdNode kdnode = kdt.insert(v.getCoordinate(), v);
+		if (!kdnode.isRepeated()) {
+			incDel.insertSite(v);
+		} else {
+			ConstraintVertex snappedV = (ConstraintVertex) kdnode.getData();
+			snappedV.merge(v);
+			return snappedV;
+			// testing
+			// if ( v.isOnConstraint() && ! currV.isOnConstraint()) {
+			// System.out.println(v);
+			// }
+		}
+		return v;
+	}
+
+	/**
+	 * Inserts a site into the triangulation, maintaining the conformal Delaunay property.
+	 * This can be used to further refine the triangulation if required
+	 * (e.g. to approximate the medial axis of the constraints,
+	 * or to improve the grading of the triangulation).
+	 * 
+	 * @param p the location of the site to insert
+	 */
+	public void insertSite(Coordinate p) {
+		insertSite(createVertex(p));
+	}
+
+	// ==================================================================
+
+	/**
+	 * Computes the Delaunay triangulation of the initial sites.
+	 */
+	public void formInitialDelaunay() {
+		computeBoundingBox();
+		subdiv = new QuadEdgeSubdivision(computeAreaEnv, tolerance);
+		subdiv.setLocator(new LastFoundQuadEdgeLocator(subdiv));
+		incDel = new IncrementalDelaunayTriangulator(subdiv);
+		insertSites(initialVertices);
+	}
+
+	// ==================================================================
+
+	private final static int MAX_SPLIT_ITER = 99;
+
+	/**
+	 * Enforces the supplied constraints into the triangulation.
+	 * 
+	 * @throws ConstraintEnforcementException
+	 *           if the constraints cannot be enforced
+	 */
+	public void enforceConstraints() {
+		addConstraintVertices();
+		// if (true) return;
+
+		int count = 0;
+		int splits = 0;
+		do {
+			splits = enforceGabriel(segments);
+
+			count++;
+			Debug.println("Iter: " + count + "   Splits: " + splits
+					+ "   Current # segments = " + segments.size());
+		} while (splits > 0 && count < MAX_SPLIT_ITER);
+		if (count == MAX_SPLIT_ITER) {
+			Debug.println("ABORTED! Too many iterations while enforcing constraints");
+			if (!Debug.isDebugging())
+				throw new ConstraintEnforcementException(
+						"Too many splitting iterations while enforcing constraints.  Last split point was at: ",
+						splitPt);
+		}
+	}
+
+	private void addConstraintVertices() {
+		computeConvexHull();
+		// insert constraint vertices as sites
+		insertSites(segVertices);
+	}
+
+	/*
+	 * private List findMissingConstraints() { List missingSegs = new ArrayList();
+	 * for (int i = 0; i < segments.size(); i++) { Segment s = (Segment)
+	 * segments.get(i); QuadEdge q = subdiv.locate(s.getStart(), s.getEnd()); if
+	 * (q == null) missingSegs.add(s); } return missingSegs; }
+	 */
+
+	private int enforceGabriel(Collection segsToInsert) {
+		List newSegments = new ArrayList();
+		int splits = 0;
+		List segsToRemove = new ArrayList();
+
+		/**
+		 * On each iteration must always scan all constraint (sub)segments, since
+		 * some constraints may be rebroken by Delaunay triangle flipping caused by
+		 * insertion of another constraint. However, this process must converge
+		 * eventually, with no splits remaining to find.
+		 */
+		for (Iterator i = segsToInsert.iterator(); i.hasNext();) {
+			Segment seg = (Segment) i.next();
+			// System.out.println(seg);
+
+			Coordinate encroachPt = findNonGabrielPoint(seg);
+			// no encroachment found - segment must already be in subdivision
+			if (encroachPt == null)
+				continue;
+
+			// compute split point
+			splitPt = splitFinder.findSplitPoint(seg, encroachPt);
+			ConstraintVertex splitVertex = createVertex(splitPt, seg);
+
+			// DebugFeature.addLineSegment(DEBUG_SEG_SPLIT, encroachPt, splitPt, "");
+			// Debug.println(WKTWriter.toLineString(encroachPt, splitPt));
+
+			/**
+			 * Check whether the inserted point still equals the split pt. This will
+			 * not be the case if the split pt was too close to an existing site. If
+			 * the point was snapped, the triangulation will not respect the inserted
+			 * constraint - this is a failure. This can be caused by:
+			 * <ul>
+			 * <li>An initial site that lies very close to a constraint segment The
+			 * cure for this is to remove any initial sites which are close to
+			 * constraint segments in a preprocessing phase.
+			 * <li>A narrow constraint angle which causing repeated splitting until
+			 * the split segments are too small. The cure for this is to either choose
+			 * better split points or "guard" narrow angles by cracking the segments
+			 * equidistant from the corner.
+			 * </ul>
+			 */
+			ConstraintVertex insertedVertex = insertSite(splitVertex);
+			if (!insertedVertex.getCoordinate().equals2D(splitPt)) {
+				Debug.println("Split pt snapped to: " + insertedVertex);
+				// throw new ConstraintEnforcementException("Split point snapped to
+				// existing point
+				// (tolerance too large or constraint interior narrow angle?)",
+				// splitPt);
+			}
+
+			// split segment and record the new halves
+			Segment s1 = new Segment(seg.getStartX(), seg.getStartY(), seg
+					.getStartZ(), splitVertex.getX(), splitVertex.getY(), splitVertex
+					.getZ(), seg.getData());
+			Segment s2 = new Segment(splitVertex.getX(), splitVertex.getY(),
+					splitVertex.getZ(), seg.getEndX(), seg.getEndY(), seg.getEndZ(), seg
+							.getData());
+			newSegments.add(s1);
+			newSegments.add(s2);
+			segsToRemove.add(seg);
+
+			splits = splits + 1;
+		}
+		segsToInsert.removeAll(segsToRemove);
+		segsToInsert.addAll(newSegments);
+
+		return splits;
+	}
+
+//	public static final String DEBUG_SEG_SPLIT = "C:\\proj\\CWB\\test\\segSplit.jml";
+
+	/**
+	 * Given a set of points stored in the kd-tree and a line segment defined by
+	 * two points in this set, finds a {@link Coordinate} in the circumcircle of
+	 * the line segment, if one exists. This is called the Gabriel point - if none
+	 * exists then the segment is said to have the Gabriel condition. Uses the
+	 * heuristic of finding the non-Gabriel point closest to the midpoint of the
+	 * segment.
+	 * 
+	 * @param p
+	 *          start of the line segment
+	 * @param q
+	 *          end of the line segment
+	 * @return a point which is non-Gabriel
+	 * @return null if no point is non-Gabriel
+	 */
+	private Coordinate findNonGabrielPoint(Segment seg) {
+		Coordinate p = seg.getStart();
+		Coordinate q = seg.getEnd();
+		// Find the mid point on the line and compute the radius of enclosing circle
+		Coordinate midPt = new Coordinate((p.x + q.x) / 2.0, (p.y + q.y) / 2.0);
+		double segRadius = p.distance(midPt);
+
+		// compute envelope of circumcircle
+		Envelope env = new Envelope(midPt);
+		env.expandBy(segRadius);
+		// Find all points in envelope
+		List result = kdt.query(env);
+
+		// For each point found, test if it falls strictly in the circle
+		// find closest point
+		Coordinate closestNonGabriel = null;
+		double minDist = Double.MAX_VALUE;
+		for (Iterator i = result.iterator(); i.hasNext();) {
+			KdNode nextNode = (KdNode) i.next();
+			Coordinate testPt = nextNode.getCoordinate();
+			// ignore segment endpoints
+			if (testPt.equals2D(p) || testPt.equals2D(q))
+				continue;
+
+			double testRadius = midPt.distance(testPt);
+			if (testRadius < segRadius) {
+				// double testDist = seg.distance(testPt);
+				double testDist = testRadius;
+				if (closestNonGabriel == null || testDist < minDist) {
+					closestNonGabriel = testPt;
+					minDist = testDist;
+				}
+			}
+		}
+		return closestNonGabriel;
+	}
+
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/triangulate/ConstraintEnforcementException.java b/src/com/vividsolutions/jts/triangulate/ConstraintEnforcementException.java
new file mode 100644
index 0000000..77f2750
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/ConstraintEnforcementException.java
@@ -0,0 +1,85 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.triangulate;
+
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.io.WKTWriter;
+
+/**
+ * Indicates a failure during constraint enforcement.
+ * 
+ * @author Martin Davis
+ * @version 1.0
+ */
+public class ConstraintEnforcementException extends RuntimeException {
+
+    private static final long serialVersionUID = 386496846550080140L;
+
+    private static String msgWithCoord(String msg, Coordinate pt) {
+        if (pt != null)
+            return msg + " [ " + WKTWriter.toPoint(pt) + " ]";
+        return msg;
+    }
+
+    private Coordinate pt = null;
+
+    /**
+     * Creates a new instance with a given message.
+     * 
+     * @param msg a string
+     */
+    public ConstraintEnforcementException(String msg) {
+        super(msg);
+    }
+
+    /**
+     * Creates a new instance with a given message and approximate location.
+     * 
+     * @param msg a string
+     * @param pt the location of the error
+     */
+    public ConstraintEnforcementException(String msg, Coordinate pt) {
+        super(msgWithCoord(msg, pt));
+        this.pt = new Coordinate(pt);
+    }
+
+    /**
+     * Gets the approximate location of this error.
+     * 
+     * @return a location
+     */
+    public Coordinate getCoordinate() {
+        return pt;
+    }
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/algorithm/PointInRing.java b/src/com/vividsolutions/jts/triangulate/ConstraintSplitPointFinder.java
similarity index 52%
copy from src/com/vividsolutions/jts/algorithm/PointInRing.java
copy to src/com/vividsolutions/jts/triangulate/ConstraintSplitPointFinder.java
index 7950ecd..2a6b944 100644
--- a/src/com/vividsolutions/jts/algorithm/PointInRing.java
+++ b/src/com/vividsolutions/jts/triangulate/ConstraintSplitPointFinder.java
@@ -1,4 +1,3 @@
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -31,17 +30,30 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.algorithm;
+
+package com.vividsolutions.jts.triangulate;
+
 
 import com.vividsolutions.jts.geom.Coordinate;
 
 /**
- * An interface for classes which test whether a {@link Coordinate} lies inside
- * a ring.
- *
- * @version 1.7
+ * An interface for strategies for determining the location of split points on constraint segments.
+ * The location of split points has a large effect on the performance and robustness of enforcing a
+ * constrained Delaunay triangulation. Poorly chosen split points can cause repeated splitting,
+ * especially at narrow constraint angles, since the split point will end up encroaching on the
+ * segment containing the original encroaching point. With detailed knowledge of the geometry of the
+ * constraints, it is sometimes possible to choose better locations for splitting.
+ * 
+ * @author mbdavis
  */
-public interface PointInRing {
-
-  boolean isInside(Coordinate pt);
+public interface ConstraintSplitPointFinder {
+    /**
+     * Finds a point at which to split an encroached segment to allow the original segment to appear
+     * as edges in a constrained Delaunay triangulation.
+     * 
+     * @param seg the encroached segment
+     * @param encroachPt the encroaching point
+     * @return the point at which to split the encroached segment
+     */
+    Coordinate findSplitPoint(Segment seg, Coordinate encroachPt);
 }
diff --git a/src/com/vividsolutions/jts/triangulate/ConstraintVertex.java b/src/com/vividsolutions/jts/triangulate/ConstraintVertex.java
new file mode 100644
index 0000000..66ee493
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/ConstraintVertex.java
@@ -0,0 +1,109 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.triangulate;
+
+
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.triangulate.quadedge.Vertex;
+
+/**
+ * A vertex in a Constrained Delaunay Triangulation.
+ * The vertex may or may not lie on a constraint.
+ * If it does it may carry extra information about the original constraint.
+ * 
+ * @author Martin Davis
+ */
+public class ConstraintVertex extends Vertex {
+    private boolean isOnConstraint;
+    private Object  constraint = null;
+
+    /**
+     * Creates a new constraint vertex
+     * 
+     * @param p the location of the vertex
+     */
+    public ConstraintVertex(Coordinate p) {
+        super(p);
+    }
+
+    /**
+     * Sets whether this vertex lies on a constraint.
+     * 
+     * @param isOnConstraint true if this vertex lies on a constraint
+     */
+    public void setOnConstraint(boolean isOnConstraint) {
+        this.isOnConstraint = isOnConstraint;
+    }
+
+    /**
+     * Tests whether this vertex lies on a constraint.
+     * 
+     * @return true if the vertex lies on a constraint
+     */
+    public boolean isOnConstraint() {
+        return isOnConstraint;
+    }
+
+    /**
+     * Sets the external constraint information
+     * 
+     * @param constraint an object which carries information about the constraint this vertex lies on
+     */
+    public void setConstraint(Object constraint) {
+        isOnConstraint = true;
+        this.constraint = constraint;
+    }
+
+    /**
+     * Gets the external constraint object
+     * 
+     * @return the external constraint object
+     */
+    public Object getConstraint() {
+        return constraint;
+    }
+
+    /**
+     * Merges the constraint data in the vertex <tt>other</tt> into this vertex. 
+     * This method is called when an inserted vertex is
+     * very close to an existing vertex in the triangulation.
+     * 
+     * @param other the constraint vertex to merge
+     */
+    protected void merge(ConstraintVertex other) {
+        if (other.isOnConstraint) {
+            isOnConstraint = true;
+            constraint = other.constraint;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/algorithm/PointInRing.java b/src/com/vividsolutions/jts/triangulate/ConstraintVertexFactory.java
similarity index 77%
copy from src/com/vividsolutions/jts/algorithm/PointInRing.java
copy to src/com/vividsolutions/jts/triangulate/ConstraintVertexFactory.java
index 7950ecd..ee26be2 100644
--- a/src/com/vividsolutions/jts/algorithm/PointInRing.java
+++ b/src/com/vividsolutions/jts/triangulate/ConstraintVertexFactory.java
@@ -1,4 +1,3 @@
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -31,17 +30,18 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.algorithm;
+
+package com.vividsolutions.jts.triangulate;
+
 
 import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.triangulate.quadedge.Vertex;
 
 /**
- * An interface for classes which test whether a {@link Coordinate} lies inside
- * a ring.
- *
- * @version 1.7
+ * An interface for factories which create a {@link ConstraintVertex}
+ * 
+ * @author Martin Davis
  */
-public interface PointInRing {
-
-  boolean isInside(Coordinate pt);
-}
+public interface ConstraintVertexFactory {
+    ConstraintVertex createVertex(Coordinate p, Segment constraintSeg);
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/triangulate/DelaunayTriangulationBuilder.java b/src/com/vividsolutions/jts/triangulate/DelaunayTriangulationBuilder.java
new file mode 100644
index 0000000..d0f31d5
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/DelaunayTriangulationBuilder.java
@@ -0,0 +1,196 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.triangulate;
+
+import java.util.*;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.triangulate.quadedge.*;
+
+/**
+ * A utility class which creates Delaunay Trianglulations
+ * from collections of points and extract the resulting 
+ * triangulation edges or triangles as geometries. 
+ * 
+ * @author Martin Davis
+ *
+ */
+public class DelaunayTriangulationBuilder 
+{
+	/**
+	 * Extracts the unique {@link Coordinate}s from the given {@link Geometry}.
+	 * @param geom the geometry to extract from
+	 * @return a List of the unique Coordinates
+	 */
+	public static CoordinateList extractUniqueCoordinates(Geometry geom)
+	{
+		if (geom == null)
+			return new CoordinateList();
+		
+		Coordinate[] coords = geom.getCoordinates();
+		return unique(coords);
+	}
+	
+	public static CoordinateList unique(Coordinate[] coords)
+	{
+		Arrays.sort(coords);
+		CoordinateList coordList = new CoordinateList(coords, false);
+		return coordList;
+	}
+	
+	/**
+	 * Converts all {@link Coordinate}s in a collection to {@link Vertex}es.
+	 * @param coords the coordinates to convert
+	 * @return a List of Vertex objects
+	 */
+	public static List toVertices(Collection coords)
+	{
+		List verts = new ArrayList();
+		for (Iterator i = coords.iterator(); i.hasNext(); ) {
+			Coordinate coord = (Coordinate) i.next();
+			verts.add(new Vertex(coord));
+		}
+		return verts;
+	}
+
+	/**
+	 * Computes the {@link Envelope} of a collection of {@link Coordinate}s.
+	 * 
+	 * @param coords a List of Coordinates
+	 * @return the envelope of the set of coordinates
+	 */
+	public static Envelope envelope(Collection coords)
+	{
+		Envelope env = new Envelope();
+		for (Iterator i = coords.iterator(); i.hasNext(); ) {
+			Coordinate coord = (Coordinate) i.next();
+			env.expandToInclude(coord);
+		}
+		return env;
+	}
+	
+	private Collection siteCoords;
+	private double tolerance = 0.0;
+	private QuadEdgeSubdivision subdiv = null;
+	
+	/**
+	 * Creates a new triangulation builder.
+	 *
+	 */
+	public DelaunayTriangulationBuilder()
+	{
+	}
+	
+	/**
+	 * Sets the sites (point or vertices) which will be triangulated.
+	 * All vertices of the given geometry will be used as sites.
+	 * 
+	 * @param geom the geometry from which the sites will be extracted.
+	 */
+	public void setSites(Geometry geom)
+	{
+		// remove any duplicate points (they will cause the triangulation to fail)
+		siteCoords = extractUniqueCoordinates(geom);
+	}
+	
+	/**
+	 * Sets the sites (point or vertices) which will be triangulated
+	 * from a collection of {@link Coordinate}s.
+	 * 
+	 * @param geom a collection of Coordinates.
+	 */
+	public void setSites(Collection coords)
+	{
+		// remove any duplicate points (they will cause the triangulation to fail)
+		siteCoords = unique(CoordinateArrays.toCoordinateArray(coords));
+	}
+	
+	/**
+	 * Sets the snapping tolerance which will be used
+	 * to improved the robustness of the triangulation computation.
+	 * A tolerance of 0.0 specifies that no snapping will take place.
+	 * 
+	 * @param tolerance the tolerance distance to use
+	 */
+	public void setTolerance(double tolerance)
+	{
+		this.tolerance = tolerance;
+	}
+	
+	private void create()
+	{
+		if (subdiv != null) return;
+		
+		Envelope siteEnv = envelope(siteCoords);
+		List vertices = toVertices(siteCoords);
+		subdiv = new QuadEdgeSubdivision(siteEnv, tolerance);
+		IncrementalDelaunayTriangulator triangulator = new IncrementalDelaunayTriangulator(subdiv);
+		triangulator.insertSites(vertices);
+	}
+	
+	/**
+	 * Gets the {@link QuadEdgeSubdivision} which models the computed triangulation.
+	 * 
+	 * @return the subdivision containing the triangulation
+	 */
+	public QuadEdgeSubdivision getSubdivision()
+	{
+		create();
+		return subdiv;
+	}
+	
+	/**
+	 * Gets the edges of the computed triangulation as a {@link MultiLineString}.
+	 * 
+	 * @param geomFact the geometry factory to use to create the output
+	 * @return the edges of the triangulation
+	 */
+	public Geometry getEdges(GeometryFactory geomFact)
+	{
+		create();
+		return subdiv.getEdges(geomFact);
+	}
+	
+	/**
+	 * Gets the faces of the computed triangulation as a {@link GeometryCollection} 
+	 * of {@link Polygon}.
+	 * 
+	 * @param geomFact the geometry factory to use to create the output
+	 * @return the faces of the triangulation
+	 */
+	public Geometry getTriangles(GeometryFactory geomFact)
+	{
+		create();
+		return subdiv.getTriangles(geomFact);
+	}
+}
diff --git a/src/com/vividsolutions/jts/triangulate/IncrementalDelaunayTriangulator.java b/src/com/vividsolutions/jts/triangulate/IncrementalDelaunayTriangulator.java
new file mode 100644
index 0000000..14f104b
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/IncrementalDelaunayTriangulator.java
@@ -0,0 +1,143 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.triangulate;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import com.vividsolutions.jts.triangulate.quadedge.LocateFailureException;
+import com.vividsolutions.jts.triangulate.quadedge.QuadEdge;
+import com.vividsolutions.jts.triangulate.quadedge.QuadEdgeSubdivision;
+import com.vividsolutions.jts.triangulate.quadedge.Vertex;
+
+/**
+ * Computes a Delauanay Triangulation of a set of {@link Vertex}es, using an
+ * incrementatal insertion algorithm.
+ * 
+ * @author Martin Davis
+ * @version 1.0
+ */
+public class IncrementalDelaunayTriangulator 
+{
+	private QuadEdgeSubdivision subdiv;
+	private boolean isUsingTolerance = false;
+
+	/**
+	 * Creates a new triangulator using the given {@link QuadEdgeSubdivision}.
+	 * The triangulator uses the tolerance of the supplied subdivision.
+	 * 
+	 * @param subdiv
+	 *          a subdivision in which to build the TIN
+	 */
+	public IncrementalDelaunayTriangulator(QuadEdgeSubdivision subdiv) {
+		this.subdiv = subdiv;
+		isUsingTolerance = subdiv.getTolerance() > 0.0;
+		
+	}
+
+	/**
+	 * Inserts all sites in a collection. The inserted vertices <b>MUST</b> be
+	 * unique up to the provided tolerance value. (i.e. no two vertices should be
+	 * closer than the provided tolerance value). They do not have to be rounded
+	 * to the tolerance grid, however.
+	 * 
+	 * @param vertices a Collection of Vertex
+	 * 
+   * @throws LocateFailureException if the location algorithm fails to converge in a reasonable number of iterations
+	 */
+	public void insertSites(Collection vertices) {
+		for (Iterator i = vertices.iterator(); i.hasNext();) {
+			Vertex v = (Vertex) i.next();
+			insertSite(v);
+		}
+	}
+
+	/**
+	 * Inserts a new point into a subdivision representing a Delaunay
+	 * triangulation, and fixes the affected edges so that the result is still a
+	 * Delaunay triangulation.
+	 * <p>
+	 * 
+	 * @return a quadedge containing the inserted vertex
+	 */
+	public QuadEdge insertSite(Vertex v) {
+
+		/**
+		 * This code is based on Guibas and Stolfi (1985), with minor modifications
+		 * and a bug fix from Dani Lischinski (Graphic Gems 1993). (The modification
+		 * I believe is the test for the inserted site falling exactly on an
+		 * existing edge. Without this test zero-width triangles have been observed
+		 * to be created)
+		 */
+		QuadEdge e = subdiv.locate(v);
+
+		if (subdiv.isVertexOfEdge(e, v)) {
+			// point is already in subdivision.
+			return e; 
+		} 
+		else if (subdiv.isOnEdge(e, v.getCoordinate())) {
+			// the point lies exactly on an edge, so delete the edge 
+			// (it will be replaced by a pair of edges which have the point as a vertex)
+			e = e.oPrev();
+			subdiv.delete(e.oNext());
+		}
+
+		/**
+		 * Connect the new point to the vertices of the containing triangle 
+		 * (or quadrilateral, if the new point fell on an existing edge.)
+		 */
+		QuadEdge base = subdiv.makeEdge(e.orig(), v);
+		QuadEdge.splice(base, e);
+		QuadEdge startEdge = base;
+		do {
+			base = subdiv.connect(e, base.sym());
+			e = base.oPrev();
+		} while (e.lNext() != startEdge);
+
+		// Examine suspect edges to ensure that the Delaunay condition
+		// is satisfied.
+		do {
+			QuadEdge t = e.oPrev();
+			if (t.dest().rightOf(e) && v.inCircle(e.orig(), t.dest(), e.dest())) {
+				QuadEdge.swap(e);
+				e = e.oPrev();
+			} else if (e.oNext() == startEdge) {
+				return base; // no more suspect edges.
+			} else {
+				e = e.oNext().lPrev();
+			}
+		} while (true);
+	}
+
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/algorithm/PointInRing.java b/src/com/vividsolutions/jts/triangulate/MidpointSplitPointFinder.java
similarity index 54%
copy from src/com/vividsolutions/jts/algorithm/PointInRing.java
copy to src/com/vividsolutions/jts/triangulate/MidpointSplitPointFinder.java
index 7950ecd..83f1218 100644
--- a/src/com/vividsolutions/jts/algorithm/PointInRing.java
+++ b/src/com/vividsolutions/jts/triangulate/MidpointSplitPointFinder.java
@@ -1,4 +1,3 @@
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -31,17 +30,33 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.algorithm;
+
+package com.vividsolutions.jts.triangulate;
+
 
 import com.vividsolutions.jts.geom.Coordinate;
 
 /**
- * An interface for classes which test whether a {@link Coordinate} lies inside
- * a ring.
- *
- * @version 1.7
+ * A simple split point finder which returns the midpoint of the split segment. This is a default
+ * strategy only. Usually a more sophisticated strategy is required to prevent repeated splitting.
+ * Other points which could be used are:
+ * <ul>
+ * <li>The projection of the encroaching point on the segment
+ * <li>A point on the segment which will produce two segments which will not be further encroached
+ * <li>The point on the segment which is the same distance from an endpoint as the encroaching
+ * point
+ * </ul>
+ * 
+ * @author Martin Davis
  */
-public interface PointInRing {
+public class MidpointSplitPointFinder implements ConstraintSplitPointFinder {
+    /**
+     * Gets the midpoint of the split segment
+     */
+    public Coordinate findSplitPoint(Segment seg, Coordinate encroachPt) {
+        Coordinate p0 = seg.getStart();
+        Coordinate p1 = seg.getEnd();
+        return new Coordinate((p0.x + p1.x) / 2, (p0.y + p1.y) / 2);
+    }
 
-  boolean isInside(Coordinate pt);
 }
diff --git a/src/com/vividsolutions/jts/triangulate/NonEncroachingSplitPointFinder.java b/src/com/vividsolutions/jts/triangulate/NonEncroachingSplitPointFinder.java
new file mode 100644
index 0000000..7639051
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/NonEncroachingSplitPointFinder.java
@@ -0,0 +1,94 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.triangulate;
+
+
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.LineSegment;
+
+/**
+ * A strategy for finding constraint split points which attempts to maximise the length of the split
+ * segments while preventing further encroachment. (This is not always possible for narrow angles).
+ * 
+ * @author Martin Davis
+ */
+public class NonEncroachingSplitPointFinder implements ConstraintSplitPointFinder {
+
+    public NonEncroachingSplitPointFinder() {}
+
+    /**
+     * A basic strategy for finding split points when nothing extra is known about the geometry of
+     * the situation.
+     * 
+     * @param seg the encroached segment
+     * @param encroachPt the encroaching point
+     * @return the point at which to split the encroached segment
+     */
+    public Coordinate findSplitPoint(Segment seg, Coordinate encroachPt) {
+        LineSegment lineSeg = seg.getLineSegment();
+        double segLen = lineSeg.getLength();
+        double midPtLen = segLen / 2;
+        SplitSegment splitSeg = new SplitSegment(lineSeg);
+
+        Coordinate projPt = projectedSplitPoint(seg, encroachPt);
+        /**
+         * Compute the largest diameter (length) that will produce a split segment which is not
+         * still encroached upon by the encroaching point (The length is reduced slightly by a
+         * safety factor)
+         */
+        double nonEncroachDiam = projPt.distance(encroachPt) * 2 * 0.8; // .99;
+        double maxSplitLen = nonEncroachDiam;
+        if (maxSplitLen > midPtLen) {
+            maxSplitLen = midPtLen;
+        }
+        splitSeg.setMinimumLength(maxSplitLen);
+
+        splitSeg.splitAt(projPt);
+
+        return splitSeg.getSplitPoint();
+    }
+
+    /**
+     * Computes a split point which is the projection of the encroaching point on the segment
+     * 
+     * @param seg
+     * @param encroachPt
+     * @return
+     */
+    public static Coordinate projectedSplitPoint(Segment seg, Coordinate encroachPt) {
+        LineSegment lineSeg = seg.getLineSegment();
+        Coordinate projPt = lineSeg.project(encroachPt);
+        return projPt;
+    }
+}
diff --git a/src/com/vividsolutions/jts/triangulate/Segment.java b/src/com/vividsolutions/jts/triangulate/Segment.java
new file mode 100644
index 0000000..9374d66
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/Segment.java
@@ -0,0 +1,222 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.triangulate;
+
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.LineSegment;
+
+/**
+ * Models a constraint segment in a triangulation.
+ * A constraint segment is an oriented straight line segment between a start point
+ * and an end point.
+ * 
+ * @author David Skea
+ * @author Martin Davis
+ */
+public class Segment 
+{
+    private LineSegment ls;
+    private Object data = null;
+
+    /** 
+     * Creates a new instance for the given ordinates.
+     */
+    public Segment(double x1, double y1, double z1, double x2, double y2, double z2) {
+      this(new Coordinate(x1, y1, z1), new Coordinate(x2, y2, z2));
+    }
+
+    /** 
+     * Creates a new instance for the given ordinates,  with associated external data. 
+     */
+    public Segment(double x1, double y1, double z1, double x2, double y2, double z2, Object data) {
+      this(new Coordinate(x1, y1, z1), new Coordinate(x2, y2, z2), data);
+    }
+
+    /** 
+     * Creates a new instance for the given points, with associated external data.
+     * 
+     * @param p0 the start point
+     * @param p1 the end point
+     * @param data an external data object
+     */
+    public Segment(Coordinate p0, Coordinate p1, Object data) {
+        ls = new LineSegment(p0, p1);
+        this.data = data;
+    }
+
+    /** 
+     * Creates a new instance for the given points.
+     * 
+     * @param p0 the start point
+     * @param p1 the end point
+     */
+    public Segment(Coordinate p0, Coordinate p1) {
+        ls = new LineSegment(p0, p1);
+    }
+
+    /**
+     * Gets the start coordinate of the segment
+     * 
+     * @return a Coordinate
+     */
+    public Coordinate getStart() {
+        return ls.getCoordinate(0);
+    }
+
+    /**
+     * Gets the end coordinate of the segment
+     * 
+     * @return a Coordinate
+     */
+    public Coordinate getEnd() {
+        return ls.getCoordinate(1);
+    }
+
+    /**
+     * Gets the start X ordinate of the segment
+     * 
+     * @return the X ordinate value
+     */
+    public double getStartX() {
+        Coordinate p = ls.getCoordinate(0);
+        return p.x;
+    }
+
+    /**
+     * Gets the start Y ordinate of the segment
+     * 
+     * @return the Y ordinate value
+     */
+    public double getStartY() {
+        Coordinate p = ls.getCoordinate(0);
+        return p.y;
+    }
+
+    /**
+     * Gets the start Z ordinate of the segment
+     * 
+     * @return the Z ordinate value
+     */
+    public double getStartZ() {
+        Coordinate p = ls.getCoordinate(0);
+        return p.z;
+    }
+
+    /**
+     * Gets the end X ordinate of the segment
+     * 
+     * @return the X ordinate value
+     */
+    public double getEndX() {
+        Coordinate p = ls.getCoordinate(1);
+        return p.x;
+    }
+
+    /**
+     * Gets the end Y ordinate of the segment
+     * 
+     * @return the Y ordinate value
+     */
+    public double getEndY() {
+        Coordinate p = ls.getCoordinate(1);
+        return p.y;
+    }
+
+    /**
+     * Gets the end Z ordinate of the segment
+     * 
+     * @return the Z ordinate value
+     */
+    public double getEndZ() {
+        Coordinate p = ls.getCoordinate(1);
+        return p.z;
+    }
+
+    /**
+     * Gets a <tt>LineSegment</tt> modelling this segment.
+     * 
+     * @return a LineSegment
+     */
+    public LineSegment getLineSegment() {
+        return ls;
+    }
+
+    /**
+     * Gets the external data associated with this segment
+     * 
+     * @return a data object
+     */
+    public Object getData() {
+        return data;
+    }
+    
+    /**
+     * Sets the external data to be associated with this segment
+     * 
+     * @param data a data object
+     */
+    public void setData(Object data) {
+        this.data = data;
+    }
+
+    /**
+     * Determines whether two segments are topologically equal.
+     * I.e. equal up to orientation.
+     * 
+     * @param s a segment
+     * @return true if the segments are topologically equal
+     */
+    public boolean equalsTopo(Segment s) {
+        return ls.equalsTopo(s.getLineSegment());
+    }
+
+    /**
+     * Computes the intersection point between this segment and another one.
+     * 
+     * @param s a segment
+     * @return the intersection point, or <code>null</code> if there is none
+     */
+    public Coordinate intersection(Segment s) {
+        return ls.intersection(s.getLineSegment());
+    }
+
+    /**
+     * Computes a string representation of this segment.
+     * 
+     * @return a string
+     */
+    public String toString() {
+        return ls.toString();
+    }
+}
diff --git a/src/com/vividsolutions/jts/triangulate/SplitSegment.java b/src/com/vividsolutions/jts/triangulate/SplitSegment.java
new file mode 100644
index 0000000..fd5a8b1
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/SplitSegment.java
@@ -0,0 +1,110 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.triangulate;
+
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.LineSegment;
+
+/**
+ * Models a constraint segment which can be split in two in various ways, 
+ * according to certain geometric constraints.
+ * 
+ * @author Martin Davis
+ */
+public class SplitSegment {
+    /**
+     * Computes the {@link Coordinate} that lies a given fraction along the line defined by the
+     * reverse of the given segment. A fraction of <code>0.0</code> returns the end point of the
+     * segment; a fraction of <code>1.0</code> returns the start point of the segment.
+     * 
+     * @param seg the LineSegment
+     * @param segmentLengthFraction the fraction of the segment length along the line
+     * @return the point at that distance
+     */
+    private static Coordinate pointAlongReverse(LineSegment seg, double segmentLengthFraction) {
+        Coordinate coord = new Coordinate();
+        coord.x = seg.p1.x - segmentLengthFraction * (seg.p1.x - seg.p0.x);
+        coord.y = seg.p1.y - segmentLengthFraction * (seg.p1.y - seg.p0.y);
+        return coord;
+    }
+
+    private LineSegment seg;
+    private double      segLen;
+    private Coordinate  splitPt;
+    private double      minimumLen = 0.0;
+
+    public SplitSegment(LineSegment seg) {
+        this.seg = seg;
+        segLen = seg.getLength();
+    }
+
+    public void setMinimumLength(double minLen) {
+        minimumLen = minLen;
+    }
+
+    public Coordinate getSplitPoint() {
+        return splitPt;
+    }
+
+    public void splitAt(double length, Coordinate endPt) {
+        double actualLen = getConstrainedLength(length);
+        double frac = actualLen / segLen;
+        if (endPt.equals2D(seg.p0))
+            splitPt = seg.pointAlong(frac);
+        else
+            splitPt = pointAlongReverse(seg, frac);
+    }
+
+    public void splitAt(Coordinate pt) {
+        // check that given pt doesn't violate min length
+        double minFrac = minimumLen / segLen;
+        if (pt.distance(seg.p0) < minimumLen) {
+            splitPt = seg.pointAlong(minFrac);
+            return;
+        }
+        if (pt.distance(seg.p1) < minimumLen) {
+            splitPt = pointAlongReverse(seg, minFrac);
+            return;
+        }
+        // passes minimum distance check - use provided point as split pt
+        splitPt = pt;
+    }
+
+    private double getConstrainedLength(double len) {
+        if (len < minimumLen)
+            return minimumLen;
+        return len;
+    }
+
+}
diff --git a/src/com/vividsolutions/jts/triangulate/VertexTaggedGeometryDataMapper.java b/src/com/vividsolutions/jts/triangulate/VertexTaggedGeometryDataMapper.java
new file mode 100644
index 0000000..94b75f7
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/VertexTaggedGeometryDataMapper.java
@@ -0,0 +1,75 @@
+package com.vividsolutions.jts.triangulate;
+
+import java.util.*;
+import com.vividsolutions.jts.geom.*;
+
+/**
+ * Creates a map between the vertex {@link Coordinate}s of a 
+ * set of {@link Geometry}s,
+ * and the parent geometry, and transfers the source geometry
+ * data objects to geometry components tagged with the coordinates.
+ * <p>
+ * This class can be used in conjunction with {@link VoronoiDiagramBuilder}
+ * to transfer data objects from the input site geometries
+ * to the constructed Voronou polygons.
+ * 
+ * @author Martin Davis
+ * @see VoronoiDiagramBuilder
+ *
+ */
+public class VertexTaggedGeometryDataMapper 
+{
+	private Map coordDataMap = new TreeMap();
+	
+	public VertexTaggedGeometryDataMapper()
+	{
+		
+	}
+	
+	public void loadSourceGeometries(Collection geoms)
+	{
+		for (Iterator i = geoms.iterator(); i.hasNext(); ) {
+			Geometry geom = (Geometry) i.next();
+			loadVertices(geom.getCoordinates(), geom.getUserData());
+		}
+	}
+	
+	public void loadSourceGeometries(Geometry geomColl)
+	{
+		for (int i = 0; i < geomColl.getNumGeometries(); i++) {
+			Geometry geom = geomColl.getGeometryN(i);
+			loadVertices(geom.getCoordinates(), geom.getUserData());
+		}
+	}
+	
+	private void loadVertices(Coordinate[] pts, Object data)
+	{
+		for (int i = 0; i < pts.length; i++) {
+			coordDataMap.put(pts[i], data);
+		}
+	}
+	
+	public List getCoordinates()
+	{
+		return new ArrayList(coordDataMap.keySet());
+	}
+	
+	/**
+	 * Input is assumed to be a multiGeometry
+	 * in which every component has its userData
+	 * set to be a Coordinate which is the key to the output data.
+	 * The Coordinate is used to determine
+	 * the output data object to be written back into the component. 
+	 * 
+	 * @param targetGeom
+	 */
+	public void transferData(Geometry targetGeom)
+	{
+		for (int i = 0; i < targetGeom.getNumGeometries(); i++) {
+			Geometry geom = targetGeom.getGeometryN(i);
+			Coordinate vertexKey = (Coordinate) geom.getUserData();
+			if (vertexKey == null) continue;
+			geom.setUserData(coordDataMap.get(vertexKey));
+		}
+	}
+}
diff --git a/src/com/vividsolutions/jts/triangulate/VoronoiDiagramBuilder.java b/src/com/vividsolutions/jts/triangulate/VoronoiDiagramBuilder.java
new file mode 100644
index 0000000..dbc9d08
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/VoronoiDiagramBuilder.java
@@ -0,0 +1,180 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.triangulate;
+
+import java.util.*;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.triangulate.quadedge.*;
+
+/**
+ * A utility class which creates Voronoi Diagrams
+ * from collections of points.
+ * The diagram is returned as a {@link GeometryCollection} of {@link Polygon}s,
+ * clipped to the larger of a supplied envelope or to an envelope determined
+ * by the input sites.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class VoronoiDiagramBuilder 
+{
+	private Collection siteCoords;
+	private double tolerance = 0.0;
+	private QuadEdgeSubdivision subdiv = null;
+	private Envelope clipEnv = null;
+	private Envelope diagramEnv = null; 
+	
+	/**
+	 * Creates a new Voronoi diagram builder.
+	 *
+	 */
+	public VoronoiDiagramBuilder()
+	{
+	}
+	
+	/**
+	 * Sets the sites (point or vertices) which will be diagrammed.
+	 * All vertices of the given geometry will be used as sites.
+	 * 
+	 * @param geom the geometry from which the sites will be extracted.
+	 */
+	public void setSites(Geometry geom)
+	{
+		// remove any duplicate points (they will cause the triangulation to fail)
+		siteCoords = DelaunayTriangulationBuilder.extractUniqueCoordinates(geom);
+	}
+	
+	/**
+	 * Sets the sites (point or vertices) which will be diagrammed
+	 * from a collection of {@link Coordinate}s.
+	 * 
+	 * @param geom a collection of Coordinates.
+	 */
+	public void setSites(Collection coords)
+	{
+		// remove any duplicate points (they will cause the triangulation to fail)
+		siteCoords = DelaunayTriangulationBuilder.unique(CoordinateArrays.toCoordinateArray(coords));
+	}
+	
+	/**
+	 * Sets the envelope to clip the diagram to.
+	 * The diagram will be clipped to the larger
+	 * of this envelope or an envelope surrounding the sites.
+	 * 
+	 * @param clipEnv the clip envelope.
+	 */
+	public void setClipEnvelope(Envelope clipEnv)
+	{
+		this.clipEnv = clipEnv;
+	}
+	/**
+	 * Sets the snapping tolerance which will be used
+	 * to improved the robustness of the triangulation computation.
+	 * A tolerance of 0.0 specifies that no snapping will take place.
+	 * 
+	 * @param tolerance the tolerance distance to use
+	 */
+	public void setTolerance(double tolerance)
+	{
+		this.tolerance = tolerance;
+	}
+	
+	private void create()
+	{
+		if (subdiv != null) return;
+		
+		Envelope siteEnv = DelaunayTriangulationBuilder.envelope(siteCoords);
+		diagramEnv = siteEnv;
+		// add a buffer around the final envelope
+		double expandBy = Math.max(diagramEnv.getWidth(), diagramEnv.getHeight());
+		diagramEnv.expandBy(expandBy);
+		if (clipEnv != null)
+			diagramEnv.expandToInclude(clipEnv);
+		
+		List vertices = DelaunayTriangulationBuilder.toVertices(siteCoords);
+		subdiv = new QuadEdgeSubdivision(siteEnv, tolerance);
+		IncrementalDelaunayTriangulator triangulator = new IncrementalDelaunayTriangulator(subdiv);
+		triangulator.insertSites(vertices);
+	}
+	
+	/**
+	 * Gets the {@link QuadEdgeSubdivision} which models the computed diagram.
+	 * 
+	 * @return the subdivision containing the triangulation
+	 */
+	public QuadEdgeSubdivision getSubdivision()
+	{
+		create();
+		return subdiv;
+	}
+	
+	/**
+	 * Gets the faces of the computed diagram as a {@link GeometryCollection} 
+	 * of {@link Polygon}s, clipped as specified.
+	 * 
+	 * @param geomFact the geometry factory to use to create the output
+	 * @return the faces of the diagram
+	 */
+	public Geometry getDiagram(GeometryFactory geomFact)
+	{
+		create();
+		Geometry polys = subdiv.getVoronoiDiagram(geomFact);
+		
+		// clip polys to diagramEnv
+		return clipGeometryCollection(polys, diagramEnv);
+	}
+	
+	private static Geometry clipGeometryCollection(Geometry geom, Envelope clipEnv)
+	{
+		Geometry clipPoly = geom.getFactory().toGeometry(clipEnv);
+		List clipped = new ArrayList();
+		for (int i = 0; i < geom.getNumGeometries(); i++) {
+			Geometry g = geom.getGeometryN(i);
+			Geometry result = null;
+			// don't clip unless necessary
+			if (clipEnv.contains(g.getEnvelopeInternal()))
+					result = g;
+			else if (clipEnv.intersects(g.getEnvelopeInternal())) {
+				result = clipPoly.intersection(g);
+				// keep vertex key info
+				result.setUserData(g.getUserData());
+			}
+
+			if (result != null && ! result.isEmpty()) {
+				clipped.add(result);
+			}
+		}
+		return geom.getFactory().createGeometryCollection(GeometryFactory.toGeometryArray(clipped));
+	}
+}
diff --git a/src/com/vividsolutions/jts/triangulate/package.html b/src/com/vividsolutions/jts/triangulate/package.html
new file mode 100644
index 0000000..0f96046
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/package.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Classes to compute Delaunay triangulations.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/triangulate/quadedge/EdgeConnectedTriangleTraversal.java b/src/com/vividsolutions/jts/triangulate/quadedge/EdgeConnectedTriangleTraversal.java
new file mode 100644
index 0000000..69a826e
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/quadedge/EdgeConnectedTriangleTraversal.java
@@ -0,0 +1,94 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.triangulate.quadedge;
+
+import java.util.Collection;
+import java.util.LinkedList;
+
+/**
+ * A framework to visit sets of edge-connected {@link QuadEdgeTriangle}s in breadth-first order
+ * 
+ * @author Martin Davis
+ * @version 1.0
+ */
+public class EdgeConnectedTriangleTraversal {
+    private LinkedList triQueue = new LinkedList();
+
+    public EdgeConnectedTriangleTraversal() {}
+
+    public void init(QuadEdgeTriangle tri) {
+        triQueue.addLast(tri);
+    }
+
+    /**
+     * Called to initialize the traversal queue with a given set of {@link QuadEdgeTriangle}s
+     * 
+     * @param tris a collection of QuadEdgeTriangle
+     */
+    public void init(Collection tris) {
+        triQueue.addAll(tris);
+    }
+
+    /**
+     * Subclasses can call this method to add a triangle to the end of the queue. This is useful for
+     * initializing the queue to a chosen set of triangles.
+     * 
+     * @param tri a triangle
+     */
+    /*
+     * protected void addLast(QuadEdgeTriangle tri) { triQueue.addLast(tri); }
+     */
+
+    /**
+     * Subclasses call this method to perform the visiting process.
+     */
+    public void visitAll(TraversalVisitor visitor) {
+        while (!triQueue.isEmpty()) {
+            QuadEdgeTriangle tri = (QuadEdgeTriangle) triQueue.removeFirst();
+            process(tri, visitor);
+        }
+    }
+
+    private void process(QuadEdgeTriangle currTri, TraversalVisitor visitor) {
+        currTri.getNeighbours();
+        for (int i = 0; i < 3; i++) {
+            QuadEdgeTriangle neighTri = (QuadEdgeTriangle) currTri.getEdge(i).sym().getData();
+            if (neighTri == null)
+                continue;
+            if (visitor.visit(currTri, i, neighTri))
+                triQueue.addLast(neighTri);
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/triangulate/quadedge/LastFoundQuadEdgeLocator.java b/src/com/vividsolutions/jts/triangulate/quadedge/LastFoundQuadEdgeLocator.java
new file mode 100644
index 0000000..32cf813
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/quadedge/LastFoundQuadEdgeLocator.java
@@ -0,0 +1,77 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.triangulate.quadedge;
+
+import java.util.Collection;
+
+/**
+ * Locates {@link QuadEdge}s in a {@link QuadEdgeSubdivision},
+ * optimizing the search by starting in the
+ * locality of the last edge found.
+ * 
+ * @author Martin Davis
+ */
+public class LastFoundQuadEdgeLocator implements QuadEdgeLocator {
+    private QuadEdgeSubdivision subdiv;
+    private QuadEdge            lastEdge = null;
+
+    public LastFoundQuadEdgeLocator(QuadEdgeSubdivision subdiv) {
+        this.subdiv = subdiv;
+        init();
+    }
+
+    private void init() {
+        lastEdge = findEdge();
+    }
+
+    private QuadEdge findEdge() {
+        Collection edges = subdiv.getEdges();
+        // assume there is an edge - otherwise will get an exception
+        return (QuadEdge) edges.iterator().next();
+    }
+
+    /**
+     * Locates an edge e, such that either v is on e, or e is an edge of a triangle containing v.
+     * The search starts from the last located edge amd proceeds on the general direction of v.
+     */
+    public QuadEdge locate(Vertex v) {
+        if (! lastEdge.isLive()) {
+            init();
+        }
+
+        QuadEdge e = subdiv.locateFromEdge(v, lastEdge);
+        lastEdge = e;
+        return e;
+    }
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/operation/relate/RelateOp.java b/src/com/vividsolutions/jts/triangulate/quadedge/LocateFailureException.java
similarity index 59%
copy from src/com/vividsolutions/jts/operation/relate/RelateOp.java
copy to src/com/vividsolutions/jts/triangulate/quadedge/LocateFailureException.java
index d2db31c..f59314e 100644
--- a/src/com/vividsolutions/jts/operation/relate/RelateOp.java
+++ b/src/com/vividsolutions/jts/triangulate/quadedge/LocateFailureException.java
@@ -1,6 +1,3 @@
-
-
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -33,42 +30,40 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.operation.relate;
-
-/**
- * @version 1.7
- */
+package com.vividsolutions.jts.triangulate.quadedge;
 
-import com.vividsolutions.jts.geomgraph.*;
 import com.vividsolutions.jts.geom.*;
-import com.vividsolutions.jts.operation.GeometryGraphOperation;
-import java.util.*;
 
-/**
- * Implements the relate() operation on {@link Geometry}s.
- *
- * @version 1.7
- */
-public class RelateOp
-  extends GeometryGraphOperation
+public class LocateFailureException 
+	extends RuntimeException 
 {
-  public static IntersectionMatrix relate(Geometry a, Geometry b)
-  {
-      RelateOp relOp = new RelateOp(a, b);
-      IntersectionMatrix im = relOp.getIntersectionMatrix();
-      return im;
-  }
+	private static String msgWithSpatial(String msg, LineSegment seg) {
+		if (seg != null)
+			return msg + " [ " + seg + " ]";
+		return msg;
+	}
+
+	private LineSegment seg = null;
+
+	public LocateFailureException(String msg) {
+		super(msg);
+	}
 
-  private RelateComputer relate;
+	public LocateFailureException(String msg, LineSegment seg) {
+		super(msgWithSpatial(msg, seg));
+		this.seg = new LineSegment(seg);
+	}
 
-  public RelateOp(Geometry g0, Geometry g1) {
-    super(g0, g1);
-    relate = new RelateComputer(arg);
-  }
+	public LocateFailureException(LineSegment seg) {
+		super(
+				"Locate failed to converge (at edge: "
+						+ seg
+						+ ").  Possible causes include invalid Subdivision topology or very close sites");
+		this.seg = new LineSegment(seg);
+	}
 
-  public IntersectionMatrix getIntersectionMatrix()
-  {
-    return relate.computeIM();
-  }
+	public LineSegment getSegment() {
+		return seg;
+	}
 
 }
diff --git a/src/com/vividsolutions/jts/triangulate/quadedge/QuadEdge.java b/src/com/vividsolutions/jts/triangulate/quadedge/QuadEdge.java
new file mode 100644
index 0000000..c94fb5e
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/quadedge/QuadEdge.java
@@ -0,0 +1,434 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.triangulate.quadedge;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.io.WKTWriter;
+
+/**
+ * A class that represents the edge data structure which implements the quadedge algebra. 
+ * The quadedge algebra was described in a well-known paper by Guibas and Stolfi,
+ * "Primitives for the manipulation of general subdivisions and the computation of Voronoi diagrams", 
+ * <i>ACM Transactions on Graphics</i>, 4(2), 1985, 75-123.
+ * <p>
+ * Each edge object is part of a quartet of 4 edges,
+ * linked via their <tt>rot</tt> references.
+ * Any edge in the group may be accessed using a series of {@link #rot()} operations.
+ * Quadedges in a subdivision are linked together via their <tt>next</tt> references.
+ * The linkage between the quadedge quartets determines the topology
+ * of the subdivision. 
+ * <p>
+ * The edge class does not contain separate information for vertice or faces; a vertex is implicitly
+ * defined as a ring of edges (created using the <tt>next</tt> field).
+ * 
+ * @author David Skea
+ * @author Martin Davis
+ */
+public class QuadEdge 
+{
+    /**
+     * Creates a new QuadEdge quartet from {@link Vertex} o to {@link Vertex} d.
+     * 
+     * @param o
+     *          the origin Vertex
+     * @param d
+     *          the destination Vertex
+     * @return the new QuadEdge quartet
+     */
+  public static QuadEdge makeEdge(Vertex o, Vertex d) {
+    QuadEdge q0 = new QuadEdge();
+    QuadEdge q1 = new QuadEdge();
+    QuadEdge q2 = new QuadEdge();
+    QuadEdge q3 = new QuadEdge();
+
+    q0.rot = q1;
+    q1.rot = q2;
+    q2.rot = q3;
+    q3.rot = q0;
+
+    q0.setNext(q0);
+    q1.setNext(q3);
+    q2.setNext(q2);
+    q3.setNext(q1);
+
+    QuadEdge base = q0;
+    base.setOrig(o);
+    base.setDest(d);
+    return base;
+  }
+
+    /**
+     * Creates a new QuadEdge connecting the destination of a to the origin of
+     * b, in such a way that all three have the same left face after the
+     * connection is complete. Additionally, the data pointers of the new edge
+     * are set.
+     * 
+     * @return the connected edge.
+     */
+    public static QuadEdge connect(QuadEdge a, QuadEdge b) {
+        QuadEdge e = makeEdge(a.dest(), b.orig());
+        splice(e, a.lNext());
+        splice(e.sym(), b);
+        return e;
+    }
+
+    /**
+     * Splices two edges together or apart.
+     * Splice affects the two edge rings around the origins of a and b, and, independently, the two
+     * edge rings around the left faces of <tt>a</tt> and <tt>b</tt>. 
+     * In each case, (i) if the two rings are distinct,
+     * Splice will combine them into one, or (ii) if the two are the same ring, Splice will break it
+     * into two separate pieces. Thus, Splice can be used both to attach the two edges together, and
+     * to break them apart.
+     * 
+     * @param a an edge to splice
+     * @param b an edge to splice
+     * 
+     */
+    public static void splice(QuadEdge a, QuadEdge b) {
+        QuadEdge alpha = a.oNext().rot();
+        QuadEdge beta = b.oNext().rot();
+
+        QuadEdge t1 = b.oNext();
+        QuadEdge t2 = a.oNext();
+        QuadEdge t3 = beta.oNext();
+        QuadEdge t4 = alpha.oNext();
+
+        a.setNext(t1);
+        b.setNext(t2);
+        alpha.setNext(t3);
+        beta.setNext(t4);
+    }
+
+    /**
+     * Turns an edge counterclockwise inside its enclosing quadrilateral.
+     * 
+     * @param e the quadedge to turn
+     */
+    public static void swap(QuadEdge e) {
+        QuadEdge a = e.oPrev();
+        QuadEdge b = e.sym().oPrev();
+        splice(e, a);
+        splice(e.sym(), b);
+        splice(e, a.lNext());
+        splice(e.sym(), b.lNext());
+        e.setOrig(a.dest());
+        e.setDest(b.dest());
+    }
+
+    // the dual of this edge, directed from right to left
+    private QuadEdge rot;
+    private Vertex   vertex;            // The vertex that this edge represents
+    private QuadEdge next;              // A reference to a connected edge
+    private Object   data       = null;
+//    private int      visitedKey = 0;
+
+    /**
+     * Quadedges must be made using {@link makeEdge}, 
+     * to ensure proper construction.
+     */
+    private QuadEdge()
+    {
+    	
+    }
+    
+    /**
+     * Gets the primary edge of this quadedge and its <tt>sym</tt>.
+     * The primary edge is the one for which the origin
+     * and destination coordinates are ordered
+     * according to the standard {@link Coordinate} ordering
+     * 
+     * @return the primary quadedge
+     */
+    public QuadEdge getPrimary()
+    {
+    	if (orig().getCoordinate().compareTo(dest().getCoordinate()) <= 0)
+    		return this;
+    	else 
+    		return sym();
+    }
+    
+    /**
+     * Sets the external data value for this edge.
+     * 
+     * @param data an object containing external data
+     */
+    public void setData(Object data) {
+        this.data = data;
+    }
+    
+    /**
+     * Gets the external data value for this edge.
+     * 
+     * @return the data object
+     */
+    public Object getData() {
+        return data;
+    }
+
+    /**
+     * Marks this quadedge as being deleted.
+     * This does not free the memory used by
+     * this quadedge quartet, but indicates
+     * that this edge no longer participates
+     * in a subdivision.
+     *
+     */
+    public void delete() {
+      rot = null;
+    }
+    
+    /**
+     * Tests whether this edge has been deleted.
+     * 
+     * @return true if this edge has not been deleted.
+     */
+    public boolean isLive() {
+      return rot != null;
+    }
+
+
+    /**
+     * Sets the connected edge
+     * 
+     * @param nextEdge edge
+     */
+    public void setNext(QuadEdge next) {
+        this.next = next;
+    }
+    
+    /***************************************************************************
+     * QuadEdge Algebra 
+     ***************************************************************************
+     */
+
+    /**
+     * Gets the dual of this edge, directed from its right to its left.
+     * 
+     * @return the rotated edge
+     */
+    public final QuadEdge rot() {
+      return rot;
+    }
+
+    /**
+     * Gets the dual of this edge, directed from its left to its right.
+     * 
+     * @return the inverse rotated edge.
+     */
+    public final QuadEdge invRot() {
+      return rot.sym();
+    }
+
+    /**
+     * Gets the edge from the destination to the origin of this edge.
+     * 
+     * @return the sym of the edge
+     */
+    public final QuadEdge sym() {
+      return rot.rot;
+    }
+
+    /**
+     * Gets the next CCW edge around the origin of this edge.
+     * 
+     * @return the next linked edge.
+     */
+    public final QuadEdge oNext() {
+        return next;
+    }
+
+    /**
+     * Gets the next CW edge around (from) the origin of this edge.
+     * 
+     * @return the previous edge.
+     */
+    public final QuadEdge oPrev() {
+        return rot.next.rot;
+    }
+
+    /**
+     * Gets the next CCW edge around (into) the destination of this edge.
+     * 
+     * @return the next destination edge.
+     */
+    public final QuadEdge dNext() {
+        return this.sym().oNext().sym();
+    }
+
+    /**
+     * Gets the next CW edge around (into) the destination of this edge.
+     * 
+     * @return the previous destination edge.
+     */
+    public final QuadEdge dPrev() {
+        return this.invRot().oNext().invRot();
+    }
+
+    /**
+     * Gets the CCW edge around the left face following this edge.
+     * 
+     * @return the next left face edge.
+     */
+    public final QuadEdge lNext() {
+        return this.invRot().oNext().rot();
+    }
+
+    /**
+     * Gets the CCW edge around the left face before this edge.
+     * 
+     * @return the previous left face edge.
+     */
+    public final QuadEdge lPrev() {
+        return next.sym();
+    }
+
+    /**
+     * Gets the edge around the right face ccw following this edge.
+     * 
+     * @return the next right face edge.
+     */
+    public final QuadEdge rNext() {
+        return rot.next.invRot();
+    }
+
+    /**
+     * Gets the edge around the right face ccw before this edge.
+     * 
+     * @return the previous right face edge.
+     */
+    public final QuadEdge rPrev() {
+        return this.sym().oNext();
+    }
+
+    /***********************************************************************************************
+     * Data Access
+     **********************************************************************************************/
+    /**
+     * Sets the vertex for this edge's origin
+     * 
+     * @param o the origin vertex
+     */
+    void setOrig(Vertex o) {
+        vertex = o;
+    }
+
+    /**
+     * Sets the vertex for this edge's destination
+     * 
+     * @param d the destination vertex
+     */
+    void setDest(Vertex d) {
+        sym().setOrig(d);
+    }
+
+    /**
+     * Gets the vertex for the edge's origin
+     * 
+     * @return the origin vertex
+     */
+    public final Vertex orig() {
+        return vertex;
+    }
+
+    /**
+     * Gets the vertex for the edge's destination
+     * 
+     * @return the destination vertex
+     */
+    public final Vertex dest() {
+        return sym().orig();
+    }
+
+    /**
+     * Gets the length of the geometry of this quadedge.
+     * 
+     * @return the length of the quadedge
+     */
+    public double getLength() {
+        return orig().getCoordinate().distance(dest().getCoordinate());
+    }
+
+    /**
+     * Tests if this quadedge and another have the same line segment geometry, 
+     * regardless of orientation.
+     * 
+     * @param qe a quadege
+     * @return true if the quadedges are based on the same line segment regardless of orientation
+     */
+    public boolean equalsNonOriented(QuadEdge qe) {
+        if (equalsOriented(qe))
+            return true;
+        if (equalsOriented(qe.sym()))
+            return true;
+        return false;
+    }
+
+    /**
+     * Tests if this quadedge and another have the same line segment geometry
+     * with the same orientation.
+     * 
+     * @param qe a quadege
+     * @return true if the quadedges are based on the same line segment
+     */
+    public boolean equalsOriented(QuadEdge qe) {
+        if (orig().getCoordinate().equals2D(qe.orig().getCoordinate())
+                && dest().getCoordinate().equals2D(qe.dest().getCoordinate()))
+            return true;
+        return false;
+    }
+
+    /**
+     * Creates a {@link LineSegment} representing the
+     * geometry of this edge.
+     * 
+     * @return a LineSegment
+     */
+    public LineSegment toLineSegment()
+    {
+    	return new LineSegment(vertex.getCoordinate(), dest().getCoordinate());
+    }
+    
+    /**
+     * Converts this edge to a WKT two-point <tt>LINESTRING</tt> indicating 
+     * the geometry of this edge.
+     * 
+     * @return a String representing this edge's geometry
+     */
+    public String toString() {
+        Coordinate p0 = vertex.getCoordinate();
+        Coordinate p1 = dest().getCoordinate();
+        return WKTWriter.toLineString(p0, p1);
+    }
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/algorithm/PointInRing.java b/src/com/vividsolutions/jts/triangulate/quadedge/QuadEdgeLocator.java
similarity index 71%
copy from src/com/vividsolutions/jts/algorithm/PointInRing.java
copy to src/com/vividsolutions/jts/triangulate/quadedge/QuadEdgeLocator.java
index 7950ecd..24480f3 100644
--- a/src/com/vividsolutions/jts/algorithm/PointInRing.java
+++ b/src/com/vividsolutions/jts/triangulate/quadedge/QuadEdgeLocator.java
@@ -1,4 +1,3 @@
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -31,17 +30,18 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.algorithm;
 
-import com.vividsolutions.jts.geom.Coordinate;
+package com.vividsolutions.jts.triangulate.quadedge;
 
 /**
- * An interface for classes which test whether a {@link Coordinate} lies inside
- * a ring.
- *
- * @version 1.7
+ * An interface for classes which locate an edge in a {@link QuadEdgeSubdivision}
+ * which either contains a given {@link Vertex} V 
+ * or is an edge of a triangle which contains V. 
+ * Implementors may utilized different strategies for
+ * optimizing locating containing edges/triangles.
+ * 
+ * @author Martin Davis
  */
-public interface PointInRing {
-
-  boolean isInside(Coordinate pt);
-}
+public interface QuadEdgeLocator {
+    QuadEdge locate(Vertex v);
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/triangulate/quadedge/QuadEdgeSubdivision.java b/src/com/vividsolutions/jts/triangulate/quadedge/QuadEdgeSubdivision.java
new file mode 100644
index 0000000..5fcaf9a
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/quadedge/QuadEdgeSubdivision.java
@@ -0,0 +1,944 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.triangulate.quadedge;
+
+import java.util.*;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.io.WKTWriter;
+
+/**
+ * A class that contains the {@link QuadEdge}s representing a planar
+ * subdivision that models a triangulation. 
+ * The subdivision is constructed using the
+ * quadedge algebra defined in the classs {@link QuadEdge}. 
+ * All metric calculations
+ * are done in the {@link Vertex} class.
+ * In addition to a triangulation, subdivisions
+ * support extraction of Voronoi diagrams.
+ * This is easily accomplished, since the Voronoi diagram is the dual
+ * of the Delaunay triangulation.
+ * <p>
+ * Subdivisions can be provided with a tolerance value. Inserted vertices which
+ * are closer than this value to vertices already in the subdivision will be
+ * ignored. Using a suitable tolerance value can prevent robustness failures
+ * from happening during Delaunay triangulation.
+ * <p>
+ * Subdivisions maintain a <b>frame</b> triangle around the client-created
+ * edges. The frame is used to provide a bounded "container" for all edges
+ * within a TIN. Normally the frame edges, frame connecting edges, and frame
+ * triangles are not included in client processing.
+ * 
+ * @author David Skea
+ * @author Martin Davis
+ */
+public class QuadEdgeSubdivision {
+	/**
+	 * Gets the edges for the triangle to the left of the given {@link QuadEdge}.
+	 * 
+	 * @param startQE
+	 * @param triEdge
+	 * 
+	 * @throws IllegalArgumentException
+	 *           if the edges do not form a triangle
+	 */
+	public static void getTriangleEdges(QuadEdge startQE, QuadEdge[] triEdge) {
+		triEdge[0] = startQE;
+		triEdge[1] = triEdge[0].lNext();
+		triEdge[2] = triEdge[1].lNext();
+		if (triEdge[2].lNext() != triEdge[0])
+			throw new IllegalArgumentException("Edges do not form a triangle");
+	}
+
+	private final static double EDGE_COINCIDENCE_TOL_FACTOR = 1000;
+
+	// debugging only - preserve current subdiv statically
+	// private static QuadEdgeSubdivision currentSubdiv;
+
+	// used for edge extraction to ensure edge uniqueness
+	private int visitedKey = 0;
+//	private Set quadEdges = new HashSet();
+	private List quadEdges = new ArrayList();
+	private QuadEdge startingEdge;
+	private double tolerance;
+	private double edgeCoincidenceTolerance;
+	private Vertex[] frameVertex = new Vertex[3];
+	private Envelope frameEnv;
+	private QuadEdgeLocator locator = null;
+
+	/**
+	 * Creates a new instance of a quad-edge subdivision based on a frame triangle
+	 * that encloses a supplied bounding box. A new super-bounding box that
+	 * contains the triangle is computed and stored.
+	 * 
+	 * @param env
+	 *          the bouding box to surround
+	 * @param tolerance
+	 *          the tolerance value for determining if two sites are equal
+	 */
+	public QuadEdgeSubdivision(Envelope env, double tolerance) {
+		// currentSubdiv = this;
+		this.tolerance = tolerance;
+		edgeCoincidenceTolerance = tolerance / EDGE_COINCIDENCE_TOL_FACTOR;
+
+		createFrame(env);
+		
+		startingEdge = initSubdiv();
+		locator = new LastFoundQuadEdgeLocator(this);
+	}
+
+	private void createFrame(Envelope env)
+	{
+		double deltaX = env.getWidth();
+		double deltaY = env.getHeight();
+		double offset = 0.0;
+		if (deltaX > deltaY) {
+			offset = deltaX * 10.0;
+		} else {
+			offset = deltaY * 10.0;
+		}
+
+		frameVertex[0] = new Vertex((env.getMaxX() + env.getMinX()) / 2.0, env
+				.getMaxY()
+				+ offset);
+		frameVertex[1] = new Vertex(env.getMinX() - offset, env.getMinY() - offset);
+		frameVertex[2] = new Vertex(env.getMaxX() + offset, env.getMinY() - offset);
+
+		frameEnv = new Envelope(frameVertex[0].getCoordinate(), frameVertex[1]
+				.getCoordinate());
+		frameEnv.expandToInclude(frameVertex[2].getCoordinate());
+	}
+	
+	private QuadEdge initSubdiv()
+	{
+		// build initial subdivision from frame
+		QuadEdge ea = makeEdge(frameVertex[0], frameVertex[1]);
+		QuadEdge eb = makeEdge(frameVertex[1], frameVertex[2]);
+		QuadEdge.splice(ea.sym(), eb);
+		QuadEdge ec = makeEdge(frameVertex[2], frameVertex[0]);
+		QuadEdge.splice(eb.sym(), ec);
+		QuadEdge.splice(ec.sym(), ea);
+		return ea;
+	}
+	
+	/**
+	 * Gets the vertex-equality tolerance value
+	 * used in this subdivision
+	 * 
+	 * @return the tolerance value
+	 */
+	public double getTolerance() {
+		return tolerance;
+	}
+
+	/**
+	 * Gets the envelope of the Subdivision (including the frame).
+	 * 
+	 * @return the envelope
+	 */
+	public Envelope getEnvelope() {
+		return new Envelope(frameEnv);
+	}
+
+	/**
+	 * Gets the collection of base {@link Quadedge}s (one for every pair of
+	 * vertices which is connected).
+	 * 
+	 * @return a collection of QuadEdges
+	 */
+	public Collection getEdges() {
+		return quadEdges;
+	}
+
+	/**
+	 * Sets the {@link QuadEdgeLocator} to use for locating containing triangles
+	 * in this subdivision.
+	 * 
+	 * @param locator
+	 *          a QuadEdgeLocator
+	 */
+	public void setLocator(QuadEdgeLocator locator) {
+		this.locator = locator;
+	}
+
+	/**
+	 * Creates a new quadedge, recording it in the edges list.
+	 * 
+	 * @param o
+	 * @param d
+	 * @return
+	 */
+	public QuadEdge makeEdge(Vertex o, Vertex d) {
+		QuadEdge q = QuadEdge.makeEdge(o, d);
+		quadEdges.add(q);
+		return q;
+	}
+
+	/**
+	 * Creates a new QuadEdge connecting the destination of a to the origin of b,
+	 * in such a way that all three have the same left face after the connection
+	 * is complete. The quadedge is recorded in the edges list.
+	 * 
+	 * @param a
+	 * @param b
+	 * @return
+	 */
+	public QuadEdge connect(QuadEdge a, QuadEdge b) {
+		QuadEdge q = QuadEdge.connect(a, b);
+		quadEdges.add(q);
+		return q;
+	}
+
+	/**
+	 * Deletes a quadedge from the subdivision. Linked quadedges are updated to
+	 * reflect the deletion.
+	 * 
+	 * @param e
+	 *          the quadedge to delete
+	 */
+	public void delete(QuadEdge e) {
+		QuadEdge.splice(e, e.oPrev());
+		QuadEdge.splice(e.sym(), e.sym().oPrev());
+
+		QuadEdge eSym = e.sym();
+		QuadEdge eRot = e.rot();
+		QuadEdge eRotSym = e.rot().sym();
+
+		// this is inefficient on an ArrayList, but this method should be called infrequently
+		quadEdges.remove(e);
+		quadEdges.remove(eSym);
+		quadEdges.remove(eRot);
+		quadEdges.remove(eRotSym);
+
+		e.delete();
+		eSym.delete();
+		eRot.delete();
+		eRotSym.delete();
+	}
+
+	/**
+	 * Locates an edge of a triangle which contains a location 
+	 * specified by a Vertex v. 
+	 * The edge returned has the
+	 * property that either v is on e, or e is an edge of a triangle containing v.
+	 * The search starts from startEdge amd proceeds on the general direction of v.
+	 * <p>
+	 * This locate algorithm relies on the subdivision being Delaunay. For
+	 * non-Delaunay subdivisions, this may loop for ever.
+	 * 
+	 * @param v the location to search for
+	 * @param startEdge an edge of the subdivision to start searching at
+	 * @returns a QuadEdge which contains v, or is on the edge of a triangle containing v
+	 * @throws LocateFailureException
+	 *           if the location algorithm fails to converge in a reasonable
+	 *           number of iterations
+	 */
+	public QuadEdge locateFromEdge(Vertex v, QuadEdge startEdge) {
+		int iter = 0;
+		int maxIter = quadEdges.size();
+
+		QuadEdge e = startEdge;
+
+		while (true) {
+			iter++;
+
+			/**
+			 * So far it has always been the case that failure to locate indicates an
+			 * invalid subdivision. So just fail completely. (An alternative would be
+			 * to perform an exhaustive search for the containing triangle, but this
+			 * would mask errors in the subdivision topology)
+			 * 
+			 * This can also happen if two vertices are located very close together,
+			 * since the orientation predicates may experience precision failures.
+			 */
+			if (iter > maxIter) {
+				throw new LocateFailureException(e.toLineSegment());
+				// String msg = "Locate failed to converge (at edge: " + e + ").
+				// Possible causes include invalid Subdivision topology or very close
+				// sites";
+				// System.err.println(msg);
+				// dumpTriangles();
+			}
+
+			if ((v.equals(e.orig())) || (v.equals(e.dest()))) {
+				break;
+			} else if (v.rightOf(e)) {
+				e = e.sym();
+			} else if (!v.rightOf(e.oNext())) {
+				e = e.oNext();
+			} else if (!v.rightOf(e.dPrev())) {
+				e = e.dPrev();
+			} else {
+				// on edge or in triangle containing edge
+				break;
+			}
+		}
+		// System.out.println("Locate count: " + iter);
+		return e;
+	}
+
+	/**
+	 * Finds a quadedge of a triangle containing a location 
+	 * specified by a {@link Vertex}, if one exists.
+	 * 
+	 * @param x the vertex to locate
+	 * @return a quadedge on the edge of a triangle which touches or contains the location
+	 * @return null if no such triangle exists
+	 */
+	public QuadEdge locate(Vertex v) {
+		return locator.locate(v);
+	}
+
+	/**
+	 * Finds a quadedge of a triangle containing a location
+	 * specified by a {@link Coordinate}, if one exists.
+	 * 
+	 * @param p the Coordinate to locate
+	 * @return a quadedge on the edge of a triangle which touches or contains the location
+	 * @return null if no such triangle exists
+	 */
+	public QuadEdge locate(Coordinate p) {
+		return locator.locate(new Vertex(p));
+	}
+
+	/**
+	 * Locates the edge between the given vertices, if it exists in the
+	 * subdivision.
+	 * 
+	 * @param p0 a coordinate
+	 * @param p1 another coordinate
+	 * @return the edge joining the coordinates, if present
+	 * @return null if no such edge exists
+	 */
+	public QuadEdge locate(Coordinate p0, Coordinate p1) {
+		// find an edge containing one of the points
+		QuadEdge e = locator.locate(new Vertex(p0));
+		if (e == null)
+			return null;
+
+		// normalize so that p0 is origin of base edge
+		QuadEdge base = e;
+		if (e.dest().getCoordinate().equals2D(p0))
+			base = e.sym();
+		// check all edges around origin of base edge
+		QuadEdge locEdge = base;
+		do {
+			if (locEdge.dest().getCoordinate().equals2D(p1))
+				return locEdge;
+			locEdge = locEdge.oNext();
+		} while (locEdge != base);
+		return null;
+	}
+
+	/**
+	 * Inserts a new site into the Subdivision, connecting it to the vertices of
+	 * the containing triangle (or quadrilateral, if the split point falls on an
+	 * existing edge).
+	 * <p>
+	 * This method does NOT maintain the Delaunay condition. If desired, this must
+	 * be checked and enforced by the caller.
+	 * <p>
+	 * This method does NOT check if the inserted vertex falls on an edge. This
+	 * must be checked by the caller, since this situation may cause erroneous
+	 * triangulation
+	 * 
+	 * @param v
+	 *          the vertex to insert
+	 * @return a new quad edge terminating in v
+	 */
+	public QuadEdge insertSite(Vertex v) {
+		QuadEdge e = locate(v);
+
+		if ((v.equals(e.orig(), tolerance)) || (v.equals(e.dest(), tolerance))) {
+			return e; // point already in subdivision.
+		}
+
+		// Connect the new point to the vertices of the containing
+		// triangle (or quadrilateral, if the new point fell on an
+		// existing edge.)
+		QuadEdge base = makeEdge(e.orig(), v);
+		QuadEdge.splice(base, e);
+		QuadEdge startEdge = base;
+		do {
+			base = connect(e, base.sym());
+			e = base.oPrev();
+		} while (e.lNext() != startEdge);
+
+		return startEdge;
+	}
+
+	/**
+	 * Tests whether a QuadEdge is an edge incident on a frame triangle vertex.
+	 * 
+	 * @param e
+	 *          the edge to test
+	 * @return true if the edge is connected to the frame triangle
+	 */
+	public boolean isFrameEdge(QuadEdge e) {
+		if (isFrameVertex(e.orig()) || isFrameVertex(e.dest()))
+			return true;
+		return false;
+	}
+
+	/**
+	 * Tests whether a QuadEdge is an edge on the border of the frame facets and
+	 * the internal facets. E.g. an edge which does not itself touch a frame
+	 * vertex, but which touches an edge which does.
+	 * 
+	 * @param e
+	 *          the edge to test
+	 * @return true if the edge is on the border of the frame
+	 */
+	public boolean isFrameBorderEdge(QuadEdge e) {
+		// MD debugging
+		QuadEdge[] leftTri = new QuadEdge[3];
+		getTriangleEdges(e, leftTri);
+		// System.out.println(new QuadEdgeTriangle(leftTri).toString());
+		QuadEdge[] rightTri = new QuadEdge[3];
+		getTriangleEdges(e.sym(), rightTri);
+		// System.out.println(new QuadEdgeTriangle(rightTri).toString());
+
+		// check other vertex of triangle to left of edge
+		Vertex vLeftTriOther = e.lNext().dest();
+		if (isFrameVertex(vLeftTriOther))
+			return true;
+		// check other vertex of triangle to right of edge
+		Vertex vRightTriOther = e.sym().lNext().dest();
+		if (isFrameVertex(vRightTriOther))
+			return true;
+
+		return false;
+	}
+
+	/**
+	 * Tests whether a vertex is a vertex of the outer triangle.
+	 * 
+	 * @param v
+	 *          the vertex to test
+	 * @return true if the vertex is an outer triangle vertex
+	 */
+	public boolean isFrameVertex(Vertex v) {
+		if (v.equals(frameVertex[0]))
+			return true;
+		if (v.equals(frameVertex[1]))
+			return true;
+		if (v.equals(frameVertex[2]))
+			return true;
+		return false;
+	}
+
+	private LineSegment seg = new LineSegment();
+
+	/**
+	 * Tests whether a {@link Coordinate} lies on a {@link QuadEdge}, up to a
+	 * tolerance determined by the subdivision tolerance.
+	 * 
+	 * @param e
+	 *          a QuadEdge
+	 * @param p
+	 *          a point
+	 * @return true if the vertex lies on the edge
+	 */
+	public boolean isOnEdge(QuadEdge e, Coordinate p) {
+		seg.setCoordinates(e.orig().getCoordinate(), e.dest().getCoordinate());
+		double dist = seg.distance(p);
+		// heuristic (hack?)
+		return dist < edgeCoincidenceTolerance;
+	}
+
+	/**
+	 * Tests whether a {@link Vertex} is the start or end vertex of a
+	 * {@link QuadEdge}, up to the subdivision tolerance distance.
+	 * 
+	 * @param e
+	 * @param v
+	 * @return true if the vertex is a endpoint of the edge
+	 */
+	public boolean isVertexOfEdge(QuadEdge e, Vertex v) {
+		if ((v.equals(e.orig(), tolerance)) || (v.equals(e.dest(), tolerance))) {
+			return true;
+		}
+		return false;
+	}
+
+  /**
+   * Gets the unique {@link Vertex}es in the subdivision,
+   * including the frame vertices if desired.
+   * 
+	 * @param includeFrame
+	 *          true if the frame vertices should be included
+   * @return a collection of the subdivision vertices
+   * 
+   * @see #getVertexUniqueEdges
+   */
+  public Collection getVertices(boolean includeFrame) 
+  {
+    Set vertices = new HashSet();
+    for (Iterator i = quadEdges.iterator(); i.hasNext();) {
+      QuadEdge qe = (QuadEdge) i.next();
+      Vertex v = qe.orig();
+      //System.out.println(v);
+      if (includeFrame || ! isFrameVertex(v))
+        vertices.add(v);
+      
+      /**
+       * Inspect the sym edge as well, since it is
+       * possible that a vertex is only at the 
+       * dest of all tracked quadedges.
+       */
+      Vertex vd = qe.dest();
+      //System.out.println(vd);
+      if (includeFrame || ! isFrameVertex(vd))
+        vertices.add(vd);
+    }
+    return vertices;
+  }
+
+  /**
+   * Gets a collection of {@link QuadEdge}s whose origin
+   * vertices are a unique set which includes
+   * all vertices in the subdivision. 
+   * The frame vertices can be included if required.
+   * <p>
+   * This is useful for algorithms which require traversing the 
+   * subdivision starting at all vertices.
+   * Returning a quadedge for each vertex
+   * is more efficient than 
+   * the alternative of finding the actual vertices
+   * using {@link #getVertices) and then locating 
+   * quadedges attached to them.
+   * 
+   * @param includeFrame true if the frame vertices should be included
+   * @return a collection of QuadEdge with the vertices of the subdivision as their origins
+   */
+  public List getVertexUniqueEdges(boolean includeFrame) 
+  {
+  	List edges = new ArrayList();
+    Set visitedVertices = new HashSet();
+    for (Iterator i = quadEdges.iterator(); i.hasNext();) {
+      QuadEdge qe = (QuadEdge) i.next();
+      Vertex v = qe.orig();
+      //System.out.println(v);
+      if (! visitedVertices.contains(v)) {
+      	visitedVertices.add(v);
+        if (includeFrame || ! isFrameVertex(v)) {
+        	edges.add(qe);
+        }
+      }
+      
+      /**
+       * Inspect the sym edge as well, since it is
+       * possible that a vertex is only at the 
+       * dest of all tracked quadedges.
+       */
+      QuadEdge qd = qe.sym();
+      Vertex vd = qd.orig();
+      //System.out.println(vd);
+      if (! visitedVertices.contains(vd)) {
+      	visitedVertices.add(vd);
+        if (includeFrame || ! isFrameVertex(vd)) {
+        	edges.add(qd);
+        }
+      }
+    }
+    return edges;
+  }
+
+	/**
+	 * Gets all primary quadedges in the subdivision. 
+   * A primary edge is a {@link QuadEdge}
+	 * which occupies the 0'th position in its array of associated quadedges. 
+	 * These provide the unique geometric edges of the triangulation.
+	 * 
+	 * @param includeFrame true if the frame edges are to be included
+	 * @return a List of QuadEdges
+	 */
+	public List getPrimaryEdges(boolean includeFrame) {
+		visitedKey++;
+
+		List edges = new ArrayList();
+		Stack edgeStack = new Stack();
+		edgeStack.push(startingEdge);
+		
+		Set visitedEdges = new HashSet();
+
+		while (!edgeStack.empty()) {
+			QuadEdge edge = (QuadEdge) edgeStack.pop();
+			if (! visitedEdges.contains(edge)) {
+				QuadEdge priQE = edge.getPrimary();
+
+				if (includeFrame || ! isFrameEdge(priQE))
+					edges.add(priQE);
+
+				edgeStack.push(edge.oNext());
+				edgeStack.push(edge.sym().oNext());
+				
+				visitedEdges.add(edge);
+				visitedEdges.add(edge.sym());
+			}
+		}
+		return edges;
+	}
+  
+  /**
+   * A TriangleVisitor which computes and sets the 
+   * circumcentre as the origin of the dual 
+   * edges originating in each triangle.
+   * 
+   * @author mbdavis
+   *
+   */
+	private static class TriangleCircumcentreVisitor implements TriangleVisitor 
+	{
+		public TriangleCircumcentreVisitor() {
+		}
+
+		public void visit(QuadEdge[] triEdges) 
+		{
+			Coordinate a = triEdges[0].orig().getCoordinate();
+			Coordinate b = triEdges[1].orig().getCoordinate();
+			Coordinate c = triEdges[2].orig().getCoordinate();
+			
+			// TODO: choose the most accurate circumcentre based on the edges
+			Coordinate cc = Triangle.circumcentre(a, b, c);
+			Vertex ccVertex = new Vertex(cc);
+			// save the circumcentre as the origin for the dual edges originating in this triangle
+			for (int i = 0; i < 3; i++) {
+				triEdges[i].rot().setOrig(ccVertex);
+			}
+		}
+	}
+
+	/*****************************************************************************
+	 * Visitors
+	 ****************************************************************************/
+
+	public void visitTriangles(TriangleVisitor triVisitor,
+			boolean includeFrame) {
+		visitedKey++;
+
+		// visited flag is used to record visited edges of triangles
+		// setVisitedAll(false);
+		Stack edgeStack = new Stack();
+		edgeStack.push(startingEdge);
+
+		Set visitedEdges = new HashSet();
+		
+		while (!edgeStack.empty()) {
+			QuadEdge edge = (QuadEdge) edgeStack.pop();
+			if (! visitedEdges.contains(edge)) {
+				QuadEdge[] triEdges = fetchTriangleToVisit(edge, edgeStack,
+						includeFrame, visitedEdges);
+				if (triEdges != null)
+					triVisitor.visit(triEdges);
+			}
+		}
+	}
+
+	/**
+	 * The quadedges forming a single triangle.
+   * Only one visitor is allowed to be active at a
+	 * time, so this is safe.
+	 */
+	private QuadEdge[] triEdges = new QuadEdge[3];
+
+	/**
+	 * Stores the edges for a visited triangle. Also pushes sym (neighbour) edges
+	 * on stack to visit later.
+	 * 
+	 * @param edge
+	 * @param edgeStack
+	 * @param includeFrame
+	 * @return the visited triangle edges
+	 * @return null if the triangle should not be visited (for instance, if it is
+	 *         outer)
+	 */
+	private QuadEdge[] fetchTriangleToVisit(QuadEdge edge, Stack edgeStack,
+			boolean includeFrame, Set visitedEdges) {
+		QuadEdge curr = edge;
+		int edgeCount = 0;
+		boolean isFrame = false;
+		do {
+			triEdges[edgeCount] = curr;
+
+			if (isFrameEdge(curr))
+				isFrame = true;
+			
+			// push sym edges to visit next
+			QuadEdge sym = curr.sym();
+			if (! visitedEdges.contains(sym))
+				edgeStack.push(sym);
+			
+			// mark this edge as visited
+			visitedEdges.add(curr);
+			
+			edgeCount++;
+			curr = curr.lNext();
+		} while (curr != edge);
+
+		if (isFrame && !includeFrame)
+			return null;
+		return triEdges;
+	}
+
+	/**
+	 * Gets a list of the triangles
+	 * in the subdivision, specified as
+	 * an array of the primary quadedges around the triangle.
+	 * 
+	 * @param includeFrame
+	 *          true if the frame triangles should be included
+	 * @return a List of QuadEdge[3] arrays
+	 */
+	public List getTriangleEdges(boolean includeFrame) {
+		TriangleEdgesListVisitor visitor = new TriangleEdgesListVisitor();
+		visitTriangles(visitor, includeFrame);
+		return visitor.getTriangleEdges();
+	}
+
+	private static class TriangleEdgesListVisitor implements TriangleVisitor {
+		private List triList = new ArrayList();
+
+		public void visit(QuadEdge[] triEdges) {
+			triList.add(triEdges.clone());
+		}
+
+		public List getTriangleEdges() {
+			return triList;
+		}
+	}
+
+	/**
+	 * Gets a list of the triangles in the subdivision,
+	 * specified as an array of the triangle {@link Vertex}es.
+	 * 
+	 * @param includeFrame
+	 *          true if the frame triangles should be included
+	 * @return a List of Vertex[3] arrays
+	 */
+	public List getTriangleVertices(boolean includeFrame) {
+		TriangleVertexListVisitor visitor = new TriangleVertexListVisitor();
+		visitTriangles(visitor, includeFrame);
+		return visitor.getTriangleVertices();
+	}
+
+	private static class TriangleVertexListVisitor implements TriangleVisitor {
+		private List triList = new ArrayList();
+
+		public void visit(QuadEdge[] triEdges) {
+			triList.add(new Vertex[] { triEdges[0].orig(), triEdges[1].orig(),
+					triEdges[2].orig() });
+		}
+
+		public List getTriangleVertices() {
+			return triList;
+		}
+	}
+
+	/**
+	 * Gets the coordinates for each triangle in the subdivision as an array.
+	 * 
+	 * @param includeFrame
+	 *          true if the frame triangles should be included
+	 * @return a list of Coordinate[4] representing each triangle
+	 */
+	public List getTriangleCoordinates(boolean includeFrame) {
+		TriangleCoordinatesVisitor visitor = new TriangleCoordinatesVisitor();
+		visitTriangles(visitor, includeFrame);
+		return visitor.getTriangles();
+	}
+
+	private static class TriangleCoordinatesVisitor implements TriangleVisitor {
+		private CoordinateList coordList = new CoordinateList();
+
+		private List triCoords = new ArrayList();
+
+		public TriangleCoordinatesVisitor() {
+		}
+
+		public void visit(QuadEdge[] triEdges) {
+			coordList.clear();
+			for (int i = 0; i < 3; i++) {
+				Vertex v = triEdges[i].orig();
+				coordList.add(v.getCoordinate());
+			}
+			if (coordList.size() > 0) {
+				coordList.closeRing();
+				Coordinate[] pts = coordList.toCoordinateArray();
+				if (pts.length != 4) {
+					String loc = "";
+					if (pts.length >= 2)
+						loc = WKTWriter.toLineString(pts[0], pts[1]);
+					else {
+						if (pts.length >= 1)
+							loc = WKTWriter.toPoint(pts[0]);
+					}
+
+					// Assert.isTrue(pts.length == 4, "Too few points for visited triangle at " + loc);
+					//com.vividsolutions.jts.util.Debug.println("too few points for triangle at " + loc);
+					return;
+				}
+
+				triCoords.add(pts);
+			}
+		}
+
+		public List getTriangles() {
+			return triCoords;
+		}
+	}
+
+	/**
+	 * Gets the geometry for the edges in the subdivision as a {@link MultiLineString}
+	 * containing 2-point lines.
+	 * 
+	 * @param geomFact the GeometryFactory to use
+	 * @return a MultiLineString
+	 */
+	public Geometry getEdges(GeometryFactory geomFact) {
+		List quadEdges = getPrimaryEdges(false);
+		LineString[] edges = new LineString[quadEdges.size()];
+		int i = 0;
+		for (Iterator it = quadEdges.iterator(); it.hasNext();) {
+			QuadEdge qe = (QuadEdge) it.next();
+			edges[i++] = geomFact.createLineString(new Coordinate[] {
+					qe.orig().getCoordinate(), qe.dest().getCoordinate() });
+		}
+		return geomFact.createMultiLineString(edges);
+	}
+
+	/**
+	 * Gets the geometry for the triangles in a triangulated subdivision as a {@link GeometryCollection}
+	 * of triangular {@link Polygon}s.
+	 * 
+	 * @param geomFact the GeometryFactory to use
+	 * @return a GeometryCollection of triangular Polygons
+	 */
+	public Geometry getTriangles(GeometryFactory geomFact) {
+		List triPtsList = getTriangleCoordinates(false);
+		Polygon[] tris = new Polygon[triPtsList.size()];
+		int i = 0;
+		for (Iterator it = triPtsList.iterator(); it.hasNext();) {
+			Coordinate[] triPt = (Coordinate[]) it.next();
+			tris[i++] = geomFact
+					.createPolygon(geomFact.createLinearRing(triPt), null);
+		}
+		return geomFact.createGeometryCollection(tris);
+	}
+
+	/**
+	 * Gets the cells in the Voronoi diagram for this triangulation.
+	 * The cells are returned as a {@link GeometryCollection} of {@link Polygon}s
+   * <p>
+   * The userData of each polygon is set to be the {@link Coordinate)
+   * of the cell site.  This allows easily associating external 
+   * data associated with the sites to the cells.
+	 * 
+	 * @param geomFact a geometry factory
+	 * @return a GeometryCollection of Polygons
+	 */
+  public Geometry getVoronoiDiagram(GeometryFactory geomFact)
+  {
+    List vorCells = getVoronoiCellPolygons(geomFact);
+    return geomFact.createGeometryCollection(GeometryFactory.toGeometryArray(vorCells));   
+  }
+  
+	/**
+	 * Gets a List of {@link Polygon}s for the Voronoi cells 
+	 * of this triangulation.
+   * <p>
+   * The userData of each polygon is set to be the {@link Coordinate)
+   * of the cell site.  This allows easily associating external 
+   * data associated with the sites to the cells.
+	 * 
+	 * @param geomFact a geometry factory
+	 * @return a List of Polygons
+	 */
+  public List getVoronoiCellPolygons(GeometryFactory geomFact)
+  {
+  	/*
+  	 * Compute circumcentres of triangles as vertices for dual edges.
+  	 * Precomputing the circumcentres is more efficient, 
+  	 * and more importantly ensures that the computed centres
+  	 * are consistent across the Voronoi cells.
+  	 */ 
+  	visitTriangles(new TriangleCircumcentreVisitor(), true);
+  	
+    List cells = new ArrayList();
+    Collection edges = getVertexUniqueEdges(false);
+    for (Iterator i = edges.iterator(); i.hasNext(); ) {
+    	QuadEdge qe = (QuadEdge) i.next();
+      cells.add(getVoronoiCellPolygon(qe, geomFact));
+    }
+    return cells;
+  }
+  
+  /**
+   * Gets the Voronoi cell around a site specified
+   * by the origin of a QuadEdge.
+   * <p>
+   * The userData of the polygon is set to be the {@link Coordinate)
+   * of the site.  This allows attaching external 
+   * data associated with the site to this cell polygon.
+   * 
+   * @param qe a quadedge originating at the cell site
+   * @param geomFact a factory for building the polygon
+   * @return a polygon indicating the cell extent
+   */
+  public Polygon getVoronoiCellPolygon(QuadEdge qe, GeometryFactory geomFact)
+  {
+    List cellPts = new ArrayList();
+    QuadEdge startQE = qe;
+    do {
+//    	Coordinate cc = circumcentre(qe);
+    	// use previously computed circumcentre
+    	Coordinate cc = qe.rot().orig().getCoordinate();
+      cellPts.add(cc);
+      
+      // move to next triangle CW around vertex
+      qe = qe.oPrev();
+    } while (qe != startQE);
+    
+    CoordinateList coordList = new CoordinateList();
+    coordList.addAll(cellPts, false);
+    coordList.closeRing();
+    Coordinate[] pts = coordList.toCoordinateArray();
+    Polygon cellPoly = geomFact.createPolygon(geomFact.createLinearRing(pts), null);
+    
+    Vertex v = startQE.orig();
+    cellPoly.setUserData(v.getCoordinate());
+    return cellPoly;
+  }
+  
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/triangulate/quadedge/QuadEdgeTriangle.java b/src/com/vividsolutions/jts/triangulate/quadedge/QuadEdgeTriangle.java
new file mode 100644
index 0000000..76f0998
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/quadedge/QuadEdgeTriangle.java
@@ -0,0 +1,283 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+
+package com.vividsolutions.jts.triangulate.quadedge;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.vividsolutions.jts.algorithm.CGAlgorithms;
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.LineSegment;
+import com.vividsolutions.jts.geom.LinearRing;
+import com.vividsolutions.jts.geom.Polygon;
+
+/**
+ * Models a triangle formed from {@link Quadedge}s in a {@link Subdivision}. Provides methods to
+ * access the topological and geometric properties of the triangle. Triangle edges are oriented CCW.
+ * 
+ * @author Martin Davis
+ * @version 1.0
+ */
+public class QuadEdgeTriangle {
+
+    /**
+     * Tests whether the point pt is contained in the triangle defined by 3 {@link Vertex}es.
+     * 
+     * @param tri an array containing at least 3 Vertexes
+     * @param pt the point to test
+     * @return true if the point is contained in the triangle
+     */
+    public static boolean contains(Vertex[] tri, Coordinate pt) {
+        Coordinate[] ring = new Coordinate[]{
+            tri[0].getCoordinate(),
+            tri[1].getCoordinate(),
+            tri[2].getCoordinate(),
+            tri[0].getCoordinate()};
+        return CGAlgorithms.isPointInRing(pt, ring);
+    }
+
+    /**
+     * Tests whether the point pt is contained in the triangle defined by 3 {@link QuadEdge}es.
+     * 
+     * @param tri an array containing at least 3 QuadEdges
+     * @param pt the point to test
+     * @return true if the point is contained in the triangle
+     */
+    public static boolean contains(QuadEdge[] tri, Coordinate pt) {
+        Coordinate[] ring = new Coordinate[]{
+            tri[0].orig().getCoordinate(),
+            tri[1].orig().getCoordinate(),
+            tri[2].orig().getCoordinate(),
+            tri[0].orig().getCoordinate()};
+        return CGAlgorithms.isPointInRing(pt, ring);
+    }
+
+    public static Geometry toPolygon(Vertex[] v) {
+        Coordinate[] ringPts = new Coordinate[]{
+            v[0].getCoordinate(),
+            v[1].getCoordinate(),
+            v[2].getCoordinate(),
+            v[0].getCoordinate()};
+        GeometryFactory fact = new GeometryFactory();
+        LinearRing ring = fact.createLinearRing(ringPts);
+        Polygon tri = fact.createPolygon(ring, null);
+        return tri;
+    }
+
+    public static Geometry toPolygon(QuadEdge[] e) {
+        Coordinate[] ringPts = new Coordinate[]{
+            e[0].orig().getCoordinate(),
+            e[1].orig().getCoordinate(),
+            e[2].orig().getCoordinate(),
+            e[0].orig().getCoordinate()};
+        GeometryFactory fact = new GeometryFactory();
+        LinearRing ring = fact.createLinearRing(ringPts);
+        Polygon tri = fact.createPolygon(ring, null);
+        return tri;
+    }
+
+    /**
+     * Finds the next index around the triangle. Index may be an edge or vertex index.
+     * 
+     * @param index
+     * @return
+     */
+    public static int nextIndex(int index) {
+        return index = (index + 1) % 3;
+    }
+
+    private QuadEdge[] edge;
+
+    public QuadEdgeTriangle(QuadEdge[] edge) {
+        this.edge = (QuadEdge[]) edge.clone();
+    }
+
+    public void kill() {
+        edge = null;
+    }
+
+    public boolean isLive() {
+        return edge != null;
+    }
+
+    public QuadEdge[] getEdges() {
+        return edge;
+    }
+
+    public QuadEdge getEdge(int i) {
+        return edge[i];
+    }
+
+    public Vertex getVertex(int i) {
+        return edge[i].orig();
+    }
+
+    /**
+     * Gets the vertices for this triangle.
+     * 
+     * @return a new array containing the triangle vertices
+     */
+    public Vertex[] getVertices() {
+        Vertex[] vert = new Vertex[3];
+        for (int i = 0; i < 3; i++) {
+            vert[i] = getVertex(i);
+        }
+        return vert;
+    }
+
+    public Coordinate getCoordinate(int i) {
+        return edge[i].orig().getCoordinate();
+    }
+
+    /**
+     * Gets the index for the given edge of this triangle
+     * 
+     * @param e a QuadEdge
+     * @return the index of the edge in this triangle
+     * @return -1 if the edge is not an edge of this triangle
+     */
+    public int getEdgeIndex(QuadEdge e) {
+        for (int i = 0; i < 3; i++) {
+            if (edge[i] == e)
+                return i;
+        }
+        return -1;
+    }
+
+    /**
+     * Gets the index for the edge that starts at vertex v.
+     * 
+     * @param v the vertex to find the edge for
+     * @return the index of the edge starting at the vertex
+     * @return -1 if the vertex is not in the triangle
+     */
+    public int getEdgeIndex(Vertex v) {
+        for (int i = 0; i < 3; i++) {
+            if (edge[i].orig() == v)
+                return i;
+        }
+        return -1;
+    }
+
+    public void getEdgeSegment(int i, LineSegment seg) {
+        seg.p0 = edge[i].orig().getCoordinate();
+        int nexti = (i + 1) % 3;
+        seg.p1 = edge[nexti].orig().getCoordinate();
+    }
+
+    public Coordinate[] getCoordinates() {
+        Coordinate[] pts = new Coordinate[4];
+        for (int i = 0; i < 3; i++) {
+            pts[i] = edge[i].orig().getCoordinate();
+        }
+        pts[3] = new Coordinate(pts[0]);
+        return pts;
+    }
+
+    public boolean contains(Coordinate pt) {
+        Coordinate[] ring = getCoordinates();
+        return CGAlgorithms.isPointInRing(pt, ring);
+    }
+
+    public Geometry getGeometry(GeometryFactory fact) {
+        LinearRing ring = fact.createLinearRing(getCoordinates());
+        Polygon tri = fact.createPolygon(ring, null);
+        return tri;
+    }
+
+    public String toString() {
+        return getGeometry(new GeometryFactory()).toString();
+    }
+
+    /**
+     * Tests whether this triangle is adjacent to the outside of the subdivision.
+     * 
+     * @return true if the triangle is adjacent to the subdivision exterior
+     */
+    public boolean isBorder() {
+        for (int i = 0; i < 3; i++) {
+            if (getAdjacentTriangleAcrossEdge(i) == null)
+                return true;
+        }
+        return false;
+    }
+
+    public boolean isBorder(int i) {
+        return getAdjacentTriangleAcrossEdge(i) == null;
+    }
+
+    public QuadEdgeTriangle getAdjacentTriangleAcrossEdge(int edgeIndex) {
+        return (QuadEdgeTriangle) getEdge(edgeIndex).sym().getData();
+    }
+
+    public int getAdjacentTriangleEdgeIndex(int i) {
+        return getAdjacentTriangleAcrossEdge(i).getEdgeIndex(getEdge(i).sym());
+    }
+
+    public List getTrianglesAdjacentToVertex(int vertexIndex) {
+        // Assert: isVertex
+        List adjTris = new ArrayList();
+
+        QuadEdge start = getEdge(vertexIndex);
+        QuadEdge qe = start;
+        do {
+            QuadEdgeTriangle adjTri = (QuadEdgeTriangle) qe.getData();
+            if (adjTri != null) {
+                adjTris.add(adjTri);
+            }
+            qe = qe.oNext();
+        } while (qe != start);
+
+        return adjTris;
+
+    }
+
+    /**
+     * Gets the neighbours of this triangle. If there is no neighbour triangle, the array element is
+     * <code>null</code>
+     * 
+     * @return an array containing the 3 neighbours of this triangle
+     */
+    public QuadEdgeTriangle[] getNeighbours() {
+        QuadEdgeTriangle[] neigh = new QuadEdgeTriangle[3];
+        for (int i = 0; i < 3; i++) {
+            neigh[i] = (QuadEdgeTriangle) getEdge(i).sym().getData();
+        }
+        return neigh;
+    }
+
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/io/ByteArrayInStream.java b/src/com/vividsolutions/jts/triangulate/quadedge/QuadEdgeUtil.java
similarity index 58%
copy from src/com/vividsolutions/jts/io/ByteArrayInStream.java
copy to src/com/vividsolutions/jts/triangulate/quadedge/QuadEdgeUtil.java
index f34ba75..3dcb2c9 100644
--- a/src/com/vividsolutions/jts/io/ByteArrayInStream.java
+++ b/src/com/vividsolutions/jts/triangulate/quadedge/QuadEdgeUtil.java
@@ -30,36 +30,42 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.io;
 
-import java.io.*;
+package com.vividsolutions.jts.triangulate.quadedge;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.io.ParseException;
+import com.vividsolutions.jts.io.WKTReader;
 
 /**
- * Allows an array of bytes to be used as an {@link InStream}.
- * To optimize memory usage, instances can be reused
- * with different byte arrays.
+ * Utilities for working with {@link QuadEdge}s.
+ * 
+ * @author mbdavis
+ * 
  */
-public class ByteArrayInStream
-	implements InStream
+public class QuadEdgeUtil 
 {
-  private byte[] byteBuffer;
-  private ByteArrayInputStream bis;
+	/**
+	 * Gets all edges which are incident on the origin of the given edge.
+	 * 
+	 * @param start
+	 *          the edge to start at
+	 * @return a List of edges which have their origin at the origin of the given
+	 *         edge
+	 */
+	public static List findEdgesIncidentOnOrigin(QuadEdge start) {
+		List incEdge = new ArrayList();
 
-  public ByteArrayInStream(byte[] byteBuffer)
-  {
-    setBuffer(byteBuffer);
-  }
+		QuadEdge qe = start;
+		do {
+			incEdge.add(qe);
+			qe = qe.oNext();
+		} while (qe != start);
 
-  public void setBuffer(byte[] byteBuffer)
-  {
-    this.byteBuffer = byteBuffer;
-    // for now - could be replaced with optimized custom code
-    bis = new ByteArrayInputStream(byteBuffer);
-  }
+		return incEdge;
+	}
 
-  public void read(byte[] buf)
-  throws IOException
-  {
-    bis.read(buf);
-  }
 }
diff --git a/src/com/vividsolutions/jts/triangulate/quadedge/TraversalVisitor.java b/src/com/vividsolutions/jts/triangulate/quadedge/TraversalVisitor.java
new file mode 100644
index 0000000..90fe086
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/quadedge/TraversalVisitor.java
@@ -0,0 +1,59 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.triangulate.quadedge;
+
+/**
+ * Interface for classes which process triangles visited during travesals of a
+ * {@link QuadEdgeSubdivision}
+ * 
+ * @author Martin Davis
+ */
+public interface TraversalVisitor {
+    /**
+     * Visits a triangle during a traversal of a {@link QuadEdgeSubdivision}. An implementation of
+     * this method may perform processing on the current triangle. It must also decide whether a
+     * neighbouring triangle should be added to the queue so its neighbours are visited. Often it
+     * will perform processing on the neighbour triangle as well, in order to mark it as processed
+     * (visited) and/or to determine if it should be visited. Note that choosing <b>not</b> to
+     * visit the neighbouring triangle is the terminating condition for many traversal algorithms.
+     * In particular, if the neighbour triangle has already been visited, it should not be visited
+     * again.
+     * 
+     * @param currTri the current triangle being processed
+     * @param edgeIndex the index of the edge in the current triangle being traversed
+     * @param neighbTri a neighbouring triangle next in line to visit
+     * @return true if the neighbour triangle should be visited
+     */
+    boolean visit(QuadEdgeTriangle currTri, int edgeIndex, QuadEdgeTriangle neighbTri);
+}
diff --git a/src/com/vividsolutions/jts/algorithm/PointInRing.java b/src/com/vividsolutions/jts/triangulate/quadedge/TriangleVisitor.java
similarity index 71%
copy from src/com/vividsolutions/jts/algorithm/PointInRing.java
copy to src/com/vividsolutions/jts/triangulate/quadedge/TriangleVisitor.java
index 7950ecd..be3de5d 100644
--- a/src/com/vividsolutions/jts/algorithm/PointInRing.java
+++ b/src/com/vividsolutions/jts/triangulate/quadedge/TriangleVisitor.java
@@ -1,4 +1,3 @@
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -31,17 +30,20 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.algorithm;
 
-import com.vividsolutions.jts.geom.Coordinate;
+package com.vividsolutions.jts.triangulate.quadedge;
 
 /**
- * An interface for classes which test whether a {@link Coordinate} lies inside
- * a ring.
- *
- * @version 1.7
+ * An interface for algorithms which process the triangles in a {@link QuadEdgeSubdivision}.
+ * 
+ * @author Martin Davis
+ * @version 1.0
  */
-public interface PointInRing {
-
-  boolean isInside(Coordinate pt);
-}
+public interface TriangleVisitor {
+    /**
+     * Visits the {@link QuadEdge}s of a triangle.
+     * 
+     * @param triEdges an array of the 3 quad edges in a triangle (in CCW order)
+     */
+    void visit(QuadEdge[] triEdges);
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jts/triangulate/quadedge/Vertex.java b/src/com/vividsolutions/jts/triangulate/quadedge/Vertex.java
new file mode 100644
index 0000000..c95c470
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/quadedge/Vertex.java
@@ -0,0 +1,527 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+
+package com.vividsolutions.jts.triangulate.quadedge;
+
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.algorithm.*;
+import com.vividsolutions.jts.algorithm.NotRepresentableException;
+
+/**
+ * Models a site (node) in a {@link QuadEdgeSubdivision}. 
+ * The sites can be points on a lineString representing a
+ * linear site. 
+ * The vertex can be considered as a vector with a norm, length, inner product, cross
+ * product, etc. Additionally, point relations (e.g., is a point to the left of a line, the circle
+ * defined by this point and two others, etc.) are also defined in this class.
+ * 
+ * @author David Skea
+ * @author Martin Davis
+ */
+public class Vertex 
+{
+    public static final int LEFT        = 0;
+    public static final int RIGHT       = 1;
+    public static final int BEYOND      = 2;
+    public static final int BEHIND      = 3;
+    public static final int BETWEEN     = 4;
+    public static final int ORIGIN      = 5;
+    public static final int DESTINATION = 6;
+
+    private Coordinate      p;
+    // private int edgeNumber = -1;
+
+    public Vertex(double _x, double _y) {
+        p = new Coordinate(_x, _y);
+    }
+
+    public Vertex(double _x, double _y, double _z) {
+        p = new Coordinate(_x, _y, _z);
+    }
+
+    public Vertex(Coordinate _p) {
+        p = new Coordinate(_p);
+    }
+
+    public double getX() {
+        return p.x;
+    }
+
+    public double getY() {
+        return p.y;
+    }
+
+    public double getZ() {
+        return p.z;
+    }
+
+    public void setZ(double _z) {
+        p.z = _z;
+    }
+
+    public Coordinate getCoordinate() {
+        return p;
+    }
+
+    public String toString() {
+        return "POINT (" + p.x + " " + p.y + ")";
+    }
+
+    public boolean equals(Vertex _x) {
+        if (p.x == _x.getX() && p.y == _x.getY()) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    public boolean equals(Vertex _x, double tolerance) {
+        if (p.distance(_x.getCoordinate()) < tolerance) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    public int classify(Vertex p0, Vertex p1) {
+        Vertex p2 = this;
+        Vertex a = p1.sub(p0);
+        Vertex b = p2.sub(p0);
+        double sa = a.crossProduct(b);
+        if (sa > 0.0)
+            return LEFT;
+        if (sa < 0.0)
+            return RIGHT;
+        if ((a.getX() * b.getX() < 0.0) || (a.getY() * b.getY() < 0.0))
+            return BEHIND;
+        if (a.magn() < b.magn())
+            return BEYOND;
+        if (p0.equals(p2))
+            return ORIGIN;
+        if (p1.equals(p2))
+            return DESTINATION;
+        return BETWEEN;
+    }
+
+    /**
+     * Computes the cross product k = u X v.
+     * 
+     * @param v a vertex
+     * @return returns the magnitude of u X v
+     */
+    double crossProduct(Vertex v) {
+        return (p.x * v.getY() - p.y * v.getX());
+    }
+
+    /**
+     * Computes the inner or dot product
+     * 
+     * @param v, a vertex
+     * @return returns the dot product u.v
+     */
+    double dot(Vertex v) {
+        return (p.x * v.getX() + p.y * v.getY());
+    }
+
+    /**
+     * Computes the scalar product c(v)
+     * 
+     * @param v, a vertex
+     * @return returns the scaled vector
+     */
+    Vertex times(double c) {
+        return (new Vertex(c * p.x, c * p.y));
+    }
+
+    /* Vector addition */
+    Vertex sum(Vertex v) {
+        return (new Vertex(p.x + v.getX(), p.y + v.getY()));
+    }
+
+    /* and subtraction */
+    Vertex sub(Vertex v) {
+        return (new Vertex(p.x - v.getX(), p.y - v.getY()));
+    }
+
+    /* magnitude of vector */
+    double magn() {
+        return (Math.sqrt(p.x * p.x + p.y * p.y));
+    }
+
+    /* returns k X v (cross product). this is a vector perpendicular to v */
+    Vertex cross() {
+        return (new Vertex(p.y, -p.x));
+    }
+
+    /** ************************************************************* */
+    /***********************************************************************************************
+     * Geometric primitives /
+     **********************************************************************************************/
+
+    /**
+     * Computes twice the area of the oriented triangle (a, b, c), i.e., the area is positive if the
+     * triangle is oriented counterclockwise.
+     */
+    private final double triArea(Vertex a, Vertex b, Vertex c) {
+        return (b.p.x - a.p.x) * (c.p.y - a.p.y) 
+             - (b.p.y - a.p.y) * (c.p.x - a.p.x);
+    }
+
+    /**
+     * Tests if this is inside the circle defined by the points a, b, c. This test uses simple
+     * double-precision arithmetic, and thus may not be robust.
+     * 
+     * @param a
+     * @param b
+     * @param c
+     * @return true if this point is inside the circle defined by the points a, b, c
+     */
+    public final boolean inCircle(Vertex a, Vertex b, Vertex c) {
+      Vertex d = this;
+      boolean isInCircle = 
+      	        (a.p.x * a.p.x + a.p.y * a.p.y) * triArea(b, c, d)
+              - (b.p.x * b.p.x + b.p.y * b.p.y) * triArea(a, c, d)
+              + (c.p.x * c.p.x + c.p.y * c.p.y) * triArea(a, b, d)
+              - (d.p.x * d.p.x + d.p.y * d.p.y) * triArea(a, b, c) 
+              > 0;
+      return isInCircle;
+    }
+    
+/*
+  public boolean OLDinCircle(Vertex a, Vertex b, Vertex c) {
+      Vertex d = this;
+      boolean isInCircle = (a.getX() * a.getX() + a.getY() * a.getY()) * triArea(b, c, d)
+              - (b.getX() * b.getX() + b.getY() * b.getY()) * triArea(a, c, d)
+              + (c.getX() * c.getX() + c.getY() * c.getY()) * triArea(a, b, d)
+              - (d.getX() * d.getX() + d.getY() * d.getY()) * triArea(a, b, c) 
+              > 0;
+
+      // boolean isInCircleRobust = checkRobustInCircle(a.p, b.p, c.p, p, isInCircle);
+
+      // if (! isInCircle)
+      // System.out.println(WKTWriter.toLineString(new CoordinateArraySequence(new Coordinate[] {
+      // a.p, b.p, c.p, p })));
+
+      return isInCircle;
+  }
+*/
+
+    /**
+     * Tests whether the triangle formed by this vertex and two
+     * other vertices is in CCW orientation.
+     * 
+     * @param b a vertex
+     * @param c a vertex
+     * @returns true if the triangle is oriented CCW
+     */
+    public final boolean isCCW(Vertex b, Vertex c) 
+    {
+    	// is equal to the signed area of the triangle
+    	
+      return (b.p.x - p.x) * (c.p.y - p.y) 
+      - (b.p.y - p.y) * (c.p.x - p.x) > 0;
+      
+      // original rolled code
+      //boolean isCCW = triArea(this, b, c) > 0;
+      //return isCCW;
+      
+        /*
+         // MD - used to check for robustness of triArea 
+        boolean isCCW = triArea(this, b, c) > 0;
+        boolean isCCWRobust = CGAlgorithms.orientationIndex(p, b.p, c.p) == CGAlgorithms.COUNTERCLOCKWISE; 
+        if (isCCWRobust != isCCW)
+        	System.out.println("CCW failure");
+        return isCCW;
+        //*/
+    }
+
+    public final boolean rightOf(QuadEdge e) {
+        return isCCW(e.dest(), e.orig());
+    }
+
+    public final boolean leftOf(QuadEdge e) {
+        return isCCW(e.orig(), e.dest());
+    }
+
+    private HCoordinate bisector(Vertex a, Vertex b) {
+        // returns the perpendicular bisector of the line segment ab
+        double dx = b.getX() - a.getX();
+        double dy = b.getY() - a.getY();
+        HCoordinate l1 = new HCoordinate(a.getX() + dx / 2.0, a.getY() + dy / 2.0, 1.0);
+        HCoordinate l2 = new HCoordinate(a.getX() - dy + dx / 2.0, a.getY() + dx + dy / 2.0, 1.0);
+        return new HCoordinate(l1, l2);
+    }
+
+    private double distance(Vertex v1, Vertex v2) {
+        return Math.sqrt(Math.pow(v2.getX() - v1.getX(), 2.0)
+                + Math.pow(v2.getY() - v1.getY(), 2.0));
+    }
+
+    /**
+     * Computes the value of the ratio of the circumradius to shortest edge. If smaller than some
+     * given tolerance B, the associated triangle is considered skinny. For an equal lateral
+     * triangle this value is 0.57735. The ratio is related to the minimum triangle angle theta by:
+     * circumRadius/shortestEdge = 1/(2sin(theta)).
+     * 
+     * @param b second vertex of the triangle
+     * @param c third vertex of the triangle
+     * @return ratio of circumradius to shortest edge.
+     */
+    public double circumRadiusRatio(Vertex b, Vertex c) {
+        Vertex x = this.circleCenter(b, c);
+        double radius = distance(x, b);
+        double edgeLength = distance(this, b);
+        double el = distance(b, c);
+        if (el < edgeLength) {
+            edgeLength = el;
+        }
+        el = distance(c, this);
+        if (el < edgeLength) {
+            edgeLength = el;
+        }
+        return radius / edgeLength;
+    }
+
+    /**
+     * returns a new vertex that is mid-way between this vertex and another end point.
+     * 
+     * @param a the other end point.
+     * @return the point mid-way between this and that.
+     */
+    public Vertex midPoint(Vertex a) {
+        double xm = (p.x + a.getX()) / 2.0;
+        double ym = (p.y + a.getY()) / 2.0;
+        double zm = (p.z + a.getZ()) / 2.0;
+        return new Vertex(xm, ym, zm);
+    }
+
+    /**
+     * Computes the centre of the circumcircle of this vertex and two others.
+     * 
+     * @param b
+     * @param c
+     * @return the Coordinate which is the circumcircle of the 3 points.
+     */
+    public Vertex circleCenter(Vertex b, Vertex c) {
+        Vertex a = new Vertex(this.getX(), this.getY());
+        // compute the perpendicular bisector of cord ab
+        HCoordinate cab = bisector(a, b);
+        // compute the perpendicular bisector of cord bc
+        HCoordinate cbc = bisector(b, c);
+        // compute the intersection of the bisectors (circle radii)
+        HCoordinate hcc = new HCoordinate(cab, cbc);
+        Vertex cc = null;
+        try {
+            cc = new Vertex(hcc.getX(), hcc.getY());
+        } catch (NotRepresentableException nre) {
+            System.err.println("a: " + a + "  b: " + b + "  c: " + c);
+            System.err.println(nre);
+        }
+        return cc;
+    }
+
+    /**
+     * For this vertex enclosed in a triangle defined by three verticies v0, v1 and v2, interpolate
+     * a z value from the surrounding vertices.
+     */
+    public double interpolateZValue(Vertex v0, Vertex v1, Vertex v2) {
+        double x0 = v0.getX();
+        double y0 = v0.getY();
+        double a = v1.getX() - x0;
+        double b = v2.getX() - x0;
+        double c = v1.getY() - y0;
+        double d = v2.getY() - y0;
+        double det = a * d - b * c;
+        double dx = this.getX() - x0;
+        double dy = this.getY() - y0;
+        double t = (d * dx - b * dy) / det;
+        double u = (-c * dx + a * dy) / det;
+        double z = v0.getZ() + t * (v1.getZ() - v0.getZ()) + u * (v2.getZ() - v0.getZ());
+        return z;
+    }
+
+    /**
+     * Interpolates the Z value of a point enclosed in a 3D triangle.
+     */
+    public static double interpolateZ(Coordinate p, Coordinate v0, Coordinate v1, Coordinate v2) {
+        double x0 = v0.x;
+        double y0 = v0.y;
+        double a = v1.x - x0;
+        double b = v2.x - x0;
+        double c = v1.y - y0;
+        double d = v2.y - y0;
+        double det = a * d - b * c;
+        double dx = p.x - x0;
+        double dy = p.y - y0;
+        double t = (d * dx - b * dy) / det;
+        double u = (-c * dx + a * dy) / det;
+        double z = v0.z + t * (v1.z - v0.z) + u * (v2.z - v0.z);
+        return z;
+    }
+
+    /**
+     * Computes the interpolated Z-value for a point p lying on the segment p0-p1
+     * 
+     * @param p
+     * @param p0
+     * @param p1
+     * @return
+     */
+    public static double interpolateZ(Coordinate p, Coordinate p0, Coordinate p1) {
+        double segLen = p0.distance(p1);
+        double ptLen = p.distance(p0);
+        double dz = p1.z - p0.z;
+        double pz = p0.z + dz * (ptLen / segLen);
+        return pz;
+    }
+
+    // /**
+    // * Checks if the computed value for isInCircle is correct, using double-double precision
+    // * arithmetic.
+    // *
+    // * @param a
+    // * @param b
+    // * @param c
+    // * @param p
+    // * @param nonRobustInCircle
+    // * @return the robust value
+    // */
+    // private boolean checkRobustInCircle(Coordinate a, Coordinate b, Coordinate c, Coordinate p,
+    // boolean nonRobustInCircle) {
+    // // *
+    // boolean isInCircleDD = inCircleDD(a, b, c, p);
+    // boolean isInCircleCC = inCircleCC(a, b, c, p);
+    //
+    // Coordinate circumCentre = Triangle.circumcentre(a, b, c);
+    // System.out.println("p radius diff a = "
+    // + (p.distance(circumCentre) - a.distance(circumCentre)) / a.distance(circumCentre));
+    //
+    // if (nonRobustInCircle != isInCircleDD || nonRobustInCircle != isInCircleCC) {
+    // System.out.println("inCircle robustness failure (double result = " + nonRobustInCircle
+    // + ", DD result = " + isInCircleDD + ", CC result = " + isInCircleCC + ")");
+    // System.out.println(WKTWriter.toLineString(new CoordinateArraySequence(new Coordinate[]{
+    // a,
+    // b,
+    // c,
+    // p})));
+    // System.out.println("Circumcentre = " + WKTWriter.toPoint(circumCentre)
+    // + " radius = " + a.distance(circumCentre));
+    // System.out.println("p radius diff a = "
+    // + (p.distance(circumCentre) - a.distance(circumCentre)));
+    // System.out.println("p radius diff b = "
+    // + (p.distance(circumCentre) - b.distance(circumCentre)));
+    // System.out.println("p radius diff c = "
+    // + (p.distance(circumCentre) - c.distance(circumCentre)));
+    // }
+    // return isInCircleDD;
+    // }
+
+    // /**
+    // * Computes the inCircle test using the circumcentre. In general this doesn't appear to be any
+    // * more robust than the standard calculation. However, there is at least one case where the
+    // test
+    // * point is far enough from the circumcircle that this test gives the correct answer.
+    // LINESTRING
+    // * (1507029.9878 518325.7547, 1507022.1120341457 518332.8225183258, 1507029.9833 518325.7458,
+    // * 1507029.9896965567 518325.744909031)
+    // *
+    // * @param a
+    // * @param b
+    // * @param c
+    // * @param p
+    // * @return
+    // */
+    // private static boolean inCircleCC(Coordinate a, Coordinate b, Coordinate c, Coordinate p) {
+    // Coordinate cc = Triangle.circumcentre(a, b, c);
+    // double ccRadius = a.distance(cc);
+    // double pRadiusDiff = p.distance(cc) - ccRadius;
+    // return pRadiusDiff <= 0;
+    // }
+    //
+    // private static boolean inCircleDD(Coordinate a, Coordinate b, Coordinate c, Coordinate p) {
+    // DoubleDouble px = new DoubleDouble(p.x);
+    // DoubleDouble py = new DoubleDouble(p.y);
+    // DoubleDouble ax = new DoubleDouble(a.x);
+    // DoubleDouble ay = new DoubleDouble(a.y);
+    // DoubleDouble bx = new DoubleDouble(b.x);
+    // DoubleDouble by = new DoubleDouble(b.y);
+    // DoubleDouble cx = new DoubleDouble(c.x);
+    // DoubleDouble cy = new DoubleDouble(c.y);
+    //
+    // DoubleDouble aTerm = (ax.multiply(ax).add(ay.multiply(ay))).multiply(triAreaDD(
+    // bx,
+    // by,
+    // cx,
+    // cy,
+    // px,
+    // py));
+    // DoubleDouble bTerm = (bx.multiply(bx).add(by.multiply(by))).multiply(triAreaDD(
+    // ax,
+    // ay,
+    // cx,
+    // cy,
+    // px,
+    // py));
+    // DoubleDouble cTerm = (cx.multiply(cx).add(cy.multiply(cy))).multiply(triAreaDD(
+    // ax,
+    // ay,
+    // bx,
+    // by,
+    // px,
+    // py));
+    // DoubleDouble pTerm = (px.multiply(px).add(py.multiply(py))).multiply(triAreaDD(
+    // ax,
+    // ay,
+    // bx,
+    // by,
+    // cx,
+    // cy));
+    //
+    // DoubleDouble sum = aTerm.subtract(bTerm).add(cTerm).subtract(pTerm);
+    // boolean isInCircle = sum.doubleValue() > 0;
+    //
+    // return isInCircle;
+    // }
+
+    // /**
+    // * Computes twice the area of the oriented triangle (a, b, c), i.e., the area is positive if
+    // the
+    // * triangle is oriented counterclockwise.
+    // */
+    // private static DoubleDouble triAreaDD(DoubleDouble ax, DoubleDouble ay, DoubleDouble bx,
+    // DoubleDouble by, DoubleDouble cx, DoubleDouble cy) {
+    // return (bx.subtract(ax).multiply(cy.subtract(ay)).subtract(by.subtract(ay).multiply(
+    // cx.subtract(ax))));
+    // }
+
+}
diff --git a/src/com/vividsolutions/jts/triangulate/quadedge/package.html b/src/com/vividsolutions/jts/triangulate/quadedge/package.html
new file mode 100644
index 0000000..47d6702
--- /dev/null
+++ b/src/com/vividsolutions/jts/triangulate/quadedge/package.html
@@ -0,0 +1,14 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+-->
+</head>
+<body bgcolor="white">
+
+Classes to implement a topological subdivision of quadeges, to support creating triangulations
+and Voronoi diagrams.
+
+</body>
+</html>
diff --git a/src/com/vividsolutions/jts/util/CollectionUtil.java b/src/com/vividsolutions/jts/util/CollectionUtil.java
index 96273cf..cb6b349 100644
--- a/src/com/vividsolutions/jts/util/CollectionUtil.java
+++ b/src/com/vividsolutions/jts/util/CollectionUtil.java
@@ -3,12 +3,12 @@ package com.vividsolutions.jts.util;
 import java.util.*;
 
 /**
- * Executes a transformation function on each element of a collection
- * and returns the results in a new List.
+ * Utilities for processing {@link Collection}s.
  *
  * @version 1.7
  */
-public class CollectionUtil {
+public class CollectionUtil 
+{
 
   public interface Function {
     Object execute(Object obj);
@@ -18,8 +18,9 @@ public class CollectionUtil {
    * Executes a function on each item in a {@link Collection}
    * and returns the results in a new {@link List}
    *
-   * @param coll
+   * @param coll the collection to process
    * @param func the Function to execute
+   * @return a list of the transformed objects
    */
   public static List transform(Collection coll, Function func)
   {
@@ -34,7 +35,7 @@ public class CollectionUtil {
    * Executes a function on each item in a Collection but does
    * not accumulate the result
    *
-   * @param coll
+   * @param coll the collection to process
    * @param func the Function to execute
    */
   public static void apply(Collection coll, Function func)
@@ -45,12 +46,13 @@ public class CollectionUtil {
   }
 
   /**
-   * Executes a function on each item in a Collection
+   * Executes a {@link Function} on each item in a Collection
    * and collects all the entries for which the result
-   * of the function is equal to {@link Boolean}.TRUE.
+   * of the function is equal to {@link Boolean} <tt>true</tt>.
    *
-   * @param coll
+   * @param collection the collection to process
    * @param func the Function to execute
+   * @return a list of objects for which the function was true
    */
   public static List select(Collection collection, Function func) {
     List result = new ArrayList();
diff --git a/src/com/vividsolutions/jts/util/Debug.java b/src/com/vividsolutions/jts/util/Debug.java
index aad3fc0..1237cfb 100644
--- a/src/com/vividsolutions/jts/util/Debug.java
+++ b/src/com/vividsolutions/jts/util/Debug.java
@@ -49,7 +49,7 @@ import com.vividsolutions.jts.geom.*;
  * DEBUG_PROPERTY_NAME (currently "jts.debug") has the value
  * "on" or "true" debugging is enabled.
  * Otherwise, debugging is disabled.
- * The system property can be set by adding an option '-Djts_debug=on'
+ * The system property can be set by adding an option '-Djts.debug=on'
  * to the Java VM commandline.
  *
  * @version 1.7
@@ -137,7 +137,18 @@ public class Debug {
     debug.instancePrint(obj);
     debug.println();
   }
-
+  
+  public static boolean equals(Coordinate c1, Coordinate c2, double tolerance)
+  {
+  	return c1.distance(c2) <= tolerance;
+  }
+  /**
+   * Adds an object to be watched.
+   * A watched object can be printed out at any time.
+   * 
+   * Currently only supports one watched object at a time.
+   * @param obj
+   */
   public static void addWatch(Object obj) {
     debug.instanceAddWatch(obj);
   }
@@ -150,6 +161,66 @@ public class Debug {
     debug.instancePrintIfWatch(obj);
   }
 
+  public static void breakIf(boolean cond)
+  {
+    if (cond) doBreak();
+  }
+  
+  public static void breakIfEqual(Object o1, Object o2)
+  {
+    if (o1.equals(o2)) doBreak();
+  }
+  
+  public static void breakIfEqual(Coordinate p0, Coordinate p1, double tolerance)
+  {
+    if (p0.distance(p1) <= tolerance) doBreak();
+  }
+  
+  private static void doBreak()
+  {
+    // Put breakpoint on following statement to break here
+    return; 
+  }
+  
+  public static boolean hasSegment(Geometry geom, Coordinate p0, Coordinate p1)
+  {
+    SegmentFindingFilter filter = new SegmentFindingFilter(p0, p1);
+    geom.apply(filter);
+    return filter.hasSegment();
+  }
+  
+  private static class SegmentFindingFilter
+  implements CoordinateSequenceFilter
+  {
+    private Coordinate p0, p1;
+    private boolean hasSegment = false;
+    
+    public SegmentFindingFilter(Coordinate p0, Coordinate p1)
+    {
+      this.p0 = p0;
+      this.p1 = p1;
+    }
+
+    public boolean hasSegment() { return hasSegment; }
+
+    public void filter(CoordinateSequence seq, int i)
+    {
+      if (i == 0) return;
+      hasSegment = p0.equals2D(seq.getCoordinate(i-1)) 
+          && p1.equals2D(seq.getCoordinate(i));
+    }
+    
+    public boolean isDone()
+    {
+      return hasSegment; 
+    }
+    
+    public boolean isGeometryChanged()
+    {
+      return false;
+    }
+  }
+  
   private Debug() {
     out = System.out;
     printArgs = new Class[1];
diff --git a/src/com/vividsolutions/jts/util/GeometricShapeFactory.java b/src/com/vividsolutions/jts/util/GeometricShapeFactory.java
index 940b03c..2da7c07 100644
--- a/src/com/vividsolutions/jts/util/GeometricShapeFactory.java
+++ b/src/com/vividsolutions/jts/util/GeometricShapeFactory.java
@@ -56,9 +56,10 @@ import com.vividsolutions.jts.geom.*;
  */
 public class GeometricShapeFactory
 {
-  private GeometryFactory geomFact;
-  private Dimensions dim = new Dimensions();
-  private int nPts = 100;
+  protected GeometryFactory geomFact;
+  protected PrecisionModel precModel = null;
+  protected Dimensions dim = new Dimensions();
+  protected int nPts = 100;
 
   /**
    * Create a shape factory which will create shapes using the default
@@ -78,8 +79,14 @@ public class GeometricShapeFactory
   public GeometricShapeFactory(GeometryFactory geomFact)
   {
     this.geomFact = geomFact;
+    precModel = geomFact.getPrecisionModel();
   }
 
+  public void setEnvelope(Envelope env)
+  {
+  	dim.setEnvelope(env);
+  }
+  
   /**
    * Sets the location of the shape by specifying the base coordinate
    * (which in most cases is the
@@ -148,22 +155,22 @@ public class GeometricShapeFactory
     for (i = 0; i < nSide; i++) {
       double x = env.getMinX() + i * XsegLen;
       double y = env.getMinY();
-      pts[ipt++] = new Coordinate(x, y);
+      pts[ipt++] = createCoord(x, y);
     }
     for (i = 0; i < nSide; i++) {
       double x = env.getMaxX();
       double y = env.getMinY() + i * YsegLen;
-      pts[ipt++] = new Coordinate(x, y);
+      pts[ipt++] = createCoord(x, y);
     }
     for (i = 0; i < nSide; i++) {
       double x = env.getMaxX() - i * XsegLen;
       double y = env.getMaxY();
-      pts[ipt++] = new Coordinate(x, y);
+      pts[ipt++] = createCoord(x, y);
     }
     for (i = 0; i < nSide; i++) {
       double x = env.getMinX();
       double y = env.getMaxY() - i * YsegLen;
-      pts[ipt++] = new Coordinate(x, y);
+      pts[ipt++] = createCoord(x, y);
     }
     pts[ipt++] = new Coordinate(pts[0]);
 
@@ -193,10 +200,75 @@ public class GeometricShapeFactory
         double ang = i * (2 * Math.PI / nPts);
         double x = xRadius * Math.cos(ang) + centreX;
         double y = yRadius * Math.sin(ang) + centreY;
-        Coordinate pt = new Coordinate(x, y);
-        pts[iPt++] = pt;
+        pts[iPt++] = createCoord(x, y);
     }
-    pts[iPt] = pts[0];
+    pts[iPt] = new Coordinate(pts[0]);
+
+    LinearRing ring = geomFact.createLinearRing(pts);
+    Polygon poly = geomFact.createPolygon(ring, null);
+    return poly;
+  }
+  /**
+   * Creates a squircular {@link Polygon}.
+   *
+   * @return a squircle
+   */
+  public Polygon createSquircle()
+  /**
+   * Creates a squircular {@link Polygon}.
+   *
+   * @return a squircle
+   */
+  {
+  	return createSupercircle(4);
+  }
+  
+  /**
+   * Creates a supercircular {@link Polygon}
+   * of a given positive power.
+   *
+   * @return a supercircle
+   */
+  public Polygon createSupercircle(double power)
+  {
+  	double recipPow = 1.0 / power;
+  	
+    Envelope env = dim.getEnvelope();
+
+    double radius = dim.getMinSize() / 2;
+    Coordinate centre = dim.getCentre();
+    
+    double r4 = Math.pow(radius, power);
+    double y0 = radius;
+    
+    double xyInt = Math.pow(r4 / 2, recipPow);
+    
+    int nSegsInOct = nPts / 8;
+    int totPts = nSegsInOct * 8 + 1;
+    Coordinate[] pts = new Coordinate[totPts];
+    double xInc = xyInt / nSegsInOct;
+    
+    for (int i = 0; i <= nSegsInOct; i++) {
+  		double x = 0.0;
+  		double y = y0;
+    	if (i != 0) {
+    		x = xInc * i;
+    		double x4 = Math.pow(x, power);
+    		y = Math.pow(r4 - x4, recipPow);
+    	}
+      pts[i] = createCoordTrans(x, y, centre);
+      pts[2 * nSegsInOct - i] = createCoordTrans(y, x, centre);
+      
+      pts[2 * nSegsInOct + i] = createCoordTrans(y, -x, centre);
+      pts[4 * nSegsInOct - i] = createCoordTrans(x, -y, centre);
+      
+      pts[4 * nSegsInOct + i] = createCoordTrans(-x, -y, centre);
+      pts[6 * nSegsInOct - i] = createCoordTrans(-y, -x, centre);
+      
+      pts[6 * nSegsInOct + i] = createCoordTrans(-y, x, centre);
+      pts[8 * nSegsInOct - i] = createCoordTrans(-x, y, centre);
+    }
+    pts[pts.length-1] = new Coordinate(pts[0]);
 
     LinearRing ring = geomFact.createLinearRing(pts);
     Polygon poly = geomFact.createPolygon(ring, null);
@@ -204,13 +276,16 @@ public class GeometricShapeFactory
   }
 
    /**
-    * Creates a elliptical arc, as a LineString.
+    * Creates an elliptical arc, as a {@link LineString}.
+    * The arc is always created in a counter-clockwise direction.
     *
+    * @param startAng start angle in radians
+    * @param angExtent size of angle in radians
     * @return an elliptical arc
     */
   public LineString createArc(
      double startAng,
-     double endAng)
+     double angExtent)
   {
     Envelope env = dim.getEnvelope();
     double xRadius = env.getWidth() / 2.0;
@@ -219,10 +294,10 @@ public class GeometricShapeFactory
     double centreX = env.getMinX() + xRadius;
     double centreY = env.getMinY() + yRadius;
 
-     double angSize = (endAng - startAng);
+     double angSize = angExtent;
      if (angSize <= 0.0 || angSize > 2 * Math.PI)
        angSize = 2 * Math.PI;
-     double angInc = angSize / nPts;
+     double angInc = angSize / (nPts - 1);
 
      Coordinate[] pts = new Coordinate[nPts];
      int iPt = 0;
@@ -230,15 +305,66 @@ public class GeometricShapeFactory
          double ang = startAng + i * angInc;
          double x = xRadius * Math.cos(ang) + centreX;
          double y = yRadius * Math.sin(ang) + centreY;
-         Coordinate pt = new Coordinate(x, y);
-         geomFact.getPrecisionModel().makePrecise(pt);
-         pts[iPt++] = pt;
+         pts[iPt++] = createCoord(x, y);
      }
      LineString line = geomFact.createLineString(pts);
      return line;
    }
 
-  private class Dimensions
+  /**
+   * Creates an elliptical arc polygon.
+   * The polygon is formed from the specified arc of an ellipse
+   * and the two radii connecting the endpoints to the centre of the ellipse.
+   *
+   * @param startAng start angle in radians
+   * @param angExtent size of angle in radians
+   * @return an elliptical arc polygon
+   */
+  public Polygon createArcPolygon(double startAng, double angExtent) {
+    Envelope env = dim.getEnvelope();
+    double xRadius = env.getWidth() / 2.0;
+    double yRadius = env.getHeight() / 2.0;
+
+    double centreX = env.getMinX() + xRadius;
+    double centreY = env.getMinY() + yRadius;
+
+    double angSize = angExtent;
+    if (angSize <= 0.0 || angSize > 2 * Math.PI)
+      angSize = 2 * Math.PI;
+    double angInc = angSize / (nPts - 1);
+    // double check = angInc * nPts;
+    // double checkEndAng = startAng + check;
+
+    Coordinate[] pts = new Coordinate[nPts + 2];
+
+    int iPt = 0;
+    pts[iPt++] = createCoord(centreX, centreY);
+    for (int i = 0; i < nPts; i++) {
+      double ang = startAng + angInc * i;
+
+      double x = xRadius * Math.cos(ang) + centreX;
+      double y = yRadius * Math.sin(ang) + centreY;
+      pts[iPt++] = createCoord(x, y);
+    }
+    pts[iPt++] = createCoord(centreX, centreY);
+    LinearRing ring = geomFact.createLinearRing(pts);
+    Polygon geom = geomFact.createPolygon(ring, null);
+    return geom;
+  }
+
+  protected Coordinate createCoord(double x, double y)
+  {
+  	Coordinate pt = new Coordinate(x, y);
+    precModel.makePrecise(pt);
+    return pt;
+  }
+  
+  protected Coordinate createCoordTrans(double x, double y, Coordinate trans)
+  {
+  	return createCoord(x + trans.x, y + trans.y);
+  }
+  
+  protected class Dimensions
   {
     public Coordinate base;
     public Coordinate centre;
@@ -246,16 +372,35 @@ public class GeometricShapeFactory
     public double height;
 
     public void setBase(Coordinate base)  {  this.base = base;    }
+    public Coordinate getBase() { return base; }
+    
     public void setCentre(Coordinate centre)  {  this.centre = centre;    }
+    public Coordinate getCentre() { return centre; }
+   
     public void setSize(double size)
     {
       height = size;
       width = size;
     }
 
+    public double getMinSize()
+    {
+    	return Math.min(width, height);
+    }
     public void setWidth(double width) { this.width = width; }
+    public double getWidth() { return width; }
+    public double getHeight() { return height; }
+    
     public void setHeight(double height) { this.height = height; }
 
+    public void setEnvelope(Envelope env)
+    {
+    	this.width = env.getWidth();
+    	this.height = env.getHeight();
+    	this.base = new Coordinate(env.getMinX(), env.getMinY());
+    	this.centre = new Coordinate(env.centre());
+    }
+    
     public Envelope getEnvelope() {
       if (base != null) {
         return new Envelope(base.x, base.x + width, base.y, base.y + height);
@@ -266,5 +411,6 @@ public class GeometricShapeFactory
       }
       return new Envelope(0, width, 0, height);
     }
+    
   }
 }
diff --git a/src/com/vividsolutions/jts/util/Memory.java b/src/com/vividsolutions/jts/util/Memory.java
new file mode 100644
index 0000000..d9c4a99
--- /dev/null
+++ b/src/com/vividsolutions/jts/util/Memory.java
@@ -0,0 +1,108 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.util;
+
+/**
+ * Utility functions to report memory usage.
+ * 
+ * @author mbdavis
+ *
+ */
+public class Memory 
+{
+	public static long used()
+	{
+		Runtime runtime = Runtime.getRuntime ();
+		return runtime.totalMemory() - runtime.freeMemory();
+	}
+	
+	public static String usedString()
+	{
+		return format(used());
+	}
+	
+	public static long free()
+	{
+		Runtime runtime = Runtime.getRuntime ();
+		return runtime.freeMemory();
+	}
+	
+	public static String freeString()
+	{
+		return format(free());
+	}
+	
+	public static long total()
+	{
+		Runtime runtime = Runtime.getRuntime ();
+		return runtime.totalMemory();
+	}
+	
+	public static String totalString()
+	{
+		return format(total());
+	}
+	
+	public static String usedTotalString()
+	{
+		return "Used: " + usedString() 
+		+ "   Total: " + totalString();
+	}
+	
+	public static String allString()
+	{
+		return "Used: " + usedString() 
+		+ "   Free: " + freeString()
+		+ "   Total: " + totalString();
+	}
+	
+	public static final double KB = 1024;
+	public static final double MB = 1048576;
+	public static final double GB = 1073741824;
+
+	public static String format(long mem)
+	{
+		if (mem < 2 * KB)
+			return mem + " bytes";
+		if (mem < 2 * MB)
+			return round(mem / KB) + " KB";
+		if (mem < 2 * GB)
+			return round(mem / MB) + " MB";
+		return round(mem / GB) + " GB";
+	}
+	
+	public static double round(double d)
+	{
+		return Math.ceil(d * 100) / 100;
+	}
+}
diff --git a/src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java b/src/com/vividsolutions/jts/util/ObjectCounter.java
similarity index 56%
copy from src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java
copy to src/com/vividsolutions/jts/util/ObjectCounter.java
index 683e9a2..29ec885 100644
--- a/src/com/vividsolutions/jts/geomgraph/EdgeNodingValidator.java
+++ b/src/com/vividsolutions/jts/util/ObjectCounter.java
@@ -1,4 +1,3 @@
-
 /*
  * The JTS Topology Suite is a collection of Java classes that
  * implement the fundamental operations required to validate a given
@@ -31,42 +30,66 @@
  *     (250)385-6040
  *     www.vividsolutions.com
  */
-package com.vividsolutions.jts.geomgraph;
+package com.vividsolutions.jts.util;
 
 import java.util.*;
-import com.vividsolutions.jts.algorithm.*;
-import com.vividsolutions.jts.geom.*;
-import com.vividsolutions.jts.noding.*;
 
 /**
- * Validates that a collection of SegmentStrings is correctly noded.
- * Throws an appropriate exception if an noding error is found.
+ * Counts occurences of objects.
+ * 
+ * @author Martin Davis
  *
- * @version 1.7
  */
-public class EdgeNodingValidator {
+public class ObjectCounter 
+{
 
-  private static Collection toSegmentStrings(Collection edges)
-  {
-    // convert Edges to SegmentStrings
-    Collection segStrings = new ArrayList();
-    for (Iterator i = edges.iterator(); i.hasNext(); ) {
-      Edge e = (Edge) i.next();
-      segStrings.add(new SegmentString(e.getCoordinates(), e));
-    }
-    return segStrings;
+  private Map counts = new HashMap();
+  
+  public ObjectCounter() {
   }
 
-  private NodingValidator nv;
-
-  public EdgeNodingValidator(Collection edges)
+  public void add(Object o)
   {
-    nv = new NodingValidator(toSegmentStrings(edges));
+    Counter counter = (Counter) counts.get(o);
+    if (counter == null)
+      counts.put(o, new Counter(1));
+    else
+      counter.increment();
   }
-
-  public void checkValid()
+  
+  // TODO: add remove(Object o)
+  
+  public int count(Object o)
   {
-    nv.checkValid();
+    Counter counter = (Counter) counts.get(o);
+    if (counter == null)
+      return 0;
+    else
+      return counter.count();
+   
+  }
+  private static class Counter
+  {
+    int count = 0;
+    
+    public Counter()
+    {
+      
+    }
+    
+    public Counter(int count)
+    {
+      this.count = count;
+    }
+    
+    public int count()
+    {
+      return count;
+    }
+    
+    public void increment()
+    {
+      count++;
+    }
   }
-
 }
diff --git a/src/com/vividsolutions/jts/util/PriorityQueue.java b/src/com/vividsolutions/jts/util/PriorityQueue.java
new file mode 100644
index 0000000..6b3d4af
--- /dev/null
+++ b/src/com/vividsolutions/jts/util/PriorityQueue.java
@@ -0,0 +1,155 @@
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jts.util;
+
+import java.util.*;
+
+/**
+ * A priority queue over a set of {@link Comparable} objects.
+ * 
+ * @author Martin Davis
+ *
+ */
+public class PriorityQueue 
+{
+  private int size; // Number of elements in queue
+  private ArrayList items; // The queue binary heap array
+
+  /**
+   * Creates a new empty priority queue
+   */
+  public PriorityQueue() {
+    size = 0;
+    items = new ArrayList();
+    // create space for sentinel
+    items.add(null);
+  }
+
+  /**
+   * Insert into the priority queue.
+   * Duplicates are allowed.
+   * @param x the item to insert.
+   */
+  public void add(Comparable x) 
+  {
+    // increase the size of the items heap to create a hole for the new item
+    items.add(null);
+
+    // Insert item at end of heap and then re-establish ordering
+    size += 1;
+    int hole = size;
+    // set the item as a sentinel at the base of the heap
+    items.set(0, x);
+
+    // move the item up from the hole position to its correct place
+    for (; x.compareTo(items.get(hole / 2)) < 0; hole /= 2) {
+      items.set(hole, items.get(hole / 2));
+    }
+    // insert the new item in the correct place
+    items.set(hole, x);
+  }
+
+  /**
+   * Establish heap from an arbitrary arrangement of items. 
+   */
+  /*
+   private void buildHeap( ) {
+   for( int i = currentSize / 2; i > 0; i-- )
+   reorder( i );
+   }
+   */
+
+  /**
+   * Test if the priority queue is logically empty.
+   * @return true if empty, false otherwise.
+   */
+  public boolean isEmpty() {
+    return size == 0;
+  }
+
+  /**
+   * Returns size.
+   * @return current size.
+   */
+  public int size() {
+    return size;
+  }
+
+  /**
+   * Make the priority queue logically empty.
+   */
+  public void clear() {
+    size = 0;
+    items.clear();
+  }
+
+  /**
+   * Remove the smallest item from the priority queue.
+   * @return the smallest item.
+   * @return null if empty
+   */
+  public Object poll() 
+  {
+    if (isEmpty())
+      return null;
+    Object minItem = items.get(1);
+    items.set(1, items.get(size));
+    size -= 1;
+    reorder(1);
+
+    return minItem;
+  }
+
+  /**
+   * Internal method to percolate down in the heap.
+   * 
+   * @param hole the index at which the percolate begins.
+   */
+  private void reorder(int hole) 
+  {
+    int child;
+    Object tmp = items.get(hole);
+
+    for (; hole * 2 <= size; hole = child) {
+      child = hole * 2;
+      if (child != size
+          && ((Comparable) items.get(child + 1)).compareTo(items.get(child)) < 0)
+        child++;
+      if (((Comparable) items.get(child)).compareTo(tmp) < 0)
+        items.set(hole, items.get(child));
+      else
+        break;
+    }
+    items.set(hole, tmp);
+  }
+}
\ No newline at end of file
diff --git a/src/com/vividsolutions/jtsexample/geom/ConstructionExample.java b/src/com/vividsolutions/jtsexample/geom/ConstructionExample.java
index be52c8b..1d7c6b1 100644
--- a/src/com/vividsolutions/jtsexample/geom/ConstructionExample.java
+++ b/src/com/vividsolutions/jtsexample/geom/ConstructionExample.java
@@ -31,7 +31,7 @@ public class ConstructionExample
     System.out.println(p1);
 
     Point p2 = fact.createPoint(new Coordinate(1,1));
-    System.out.println(p1);
+    System.out.println(p2);
 
     MultiPoint mpt = fact.createMultiPoint(new Coordinate[] { new Coordinate(0,0), new Coordinate(1,1) } );
     System.out.println(mpt);
diff --git a/src/com/vividsolutions/jtsexample/geom/prep/PreparedGeometryExample.java b/src/com/vividsolutions/jtsexample/geom/prep/PreparedGeometryExample.java
new file mode 100644
index 0000000..fdf5cfc
--- /dev/null
+++ b/src/com/vividsolutions/jtsexample/geom/prep/PreparedGeometryExample.java
@@ -0,0 +1,94 @@
+
+/*
+ * The JTS Topology Suite is a collection of Java classes that
+ * implement the fundamental operations required to validate a given
+ * geo-spatial data set to a known topological specification.
+ *
+ * Copyright (C) 2001 Vivid Solutions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, contact:
+ *
+ *     Vivid Solutions
+ *     Suite #1A
+ *     2328 Government Street
+ *     Victoria BC  V8T 5G5
+ *     Canada
+ *
+ *     (250)385-6040
+ *     www.vividsolutions.com
+ */
+package com.vividsolutions.jtsexample.geom.prep;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.geom.prep.*;
+
+
+/**
+ * Shows use of {@link PreparedGeometry} in a batch (repeated) operation.
+ * 
+ * The example uses a Monte Carlo method to approximate the value of Pi.
+ * Given a circle inscribed in a square and a large number of random points
+ * in the square, the number of points which intersect the circle approximates Pi/4.  
+ * This involves repeated Point-In-Polygon tests, which is one of the 
+ * geometry tests optimized by the PreparedGeometry implementation for polygons.
+ *
+ * @version 1.7
+ */
+public class PreparedGeometryExample
+{
+	static GeometryFactory geomFact = new GeometryFactory();
+	
+	static final int MAX_ITER = 100000; 
+		
+  public static void main(String[] args)
+      throws Exception
+  {
+  	Geometry circle = createCircle();
+  	PreparedGeometry prepCircle = PreparedGeometryFactory.prepare(circle);
+  	
+  	int count = 0;
+  	int inCount = 0;
+  	for (int i = 0; i < MAX_ITER; i++) 
+  	{
+  		count++;
+  		Point randPt = createRandomPoint();
+  		if (prepCircle.intersects(randPt)) {
+  			inCount++;
+  		}
+  		
+  		//System.out.println("Approximation to PI: " + (4.0 * inCount / (double) count));
+  	}
+  	double approxPi = 4.0 * inCount / (double) count;
+  	double approxDiff = 1.0 - approxPi/Math.PI;
+  	
+		System.out.println("Approximation to PI: " + approxPi
+				+ "  (difference from actual = " + approxDiff
+				); 
+
+  }
+  
+  static Geometry createCircle()
+  {
+  	Geometry centrePt = geomFact.createPoint(new Coordinate(0.5, 0.5));
+  	return centrePt.buffer(0.5, 20);
+  }
+  
+  static Point createRandomPoint()
+  {
+  	return geomFact.createPoint(new Coordinate(Math.random(), Math.random()));
+  }
+}
diff --git a/src/com/vividsolutions/jtsexample/io/gml2/KMLReaderExample.java b/src/com/vividsolutions/jtsexample/io/gml2/KMLReaderExample.java
new file mode 100644
index 0000000..4a12a17
--- /dev/null
+++ b/src/com/vividsolutions/jtsexample/io/gml2/KMLReaderExample.java
@@ -0,0 +1,166 @@
+package com.vividsolutions.jtsexample.io.gml2;
+
+import com.vividsolutions.jts.geom.*;
+import com.vividsolutions.jts.io.gml2.*;
+import java.util.*;
+import java.io.*;
+import org.xml.sax.*;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * An example of using the {@link GMLHandler} class
+ * to read geometry data out of KML files.
+ * 
+ * @author mbdavis
+ *
+ */
+public class KMLReaderExample 
+{
+  public static void main(String[] args)
+  throws Exception
+  {
+  	String filename = "C:\\proj\\JTS\\KML\\usPop-STUS-p06.kml";
+  	KMLReader rdr = new KMLReader(filename);
+  	rdr.read();
+  }
+}
+
+class KMLReader
+{
+	private String filename;
+	
+	public KMLReader(String filename)
+	{
+		this.filename = filename;
+	}
+	
+	public void read()
+	throws IOException, SAXException
+	{
+    XMLReader xr; 
+    xr = new org.apache.xerces.parsers.SAXParser();
+    KMLHandler kmlHandler = new KMLHandler();
+    xr.setContentHandler(kmlHandler);
+    xr.setErrorHandler(kmlHandler);
+    
+    Reader r = new BufferedReader(new FileReader(filename));
+    LineNumberReader myReader = new LineNumberReader(r);
+    xr.parse(new InputSource(myReader));
+    
+    List geoms = kmlHandler.getGeometries();
+	}
+}
+
+class KMLHandler extends DefaultHandler
+{
+	private List geoms = new ArrayList();;
+	
+	private GMLHandler currGeomHandler;
+	private String lastEltName = null;
+	private GeometryFactory fact = new FixingGeometryFactory();
+	
+	public KMLHandler()
+	{
+		super();
+	}
+	
+	public List getGeometries()
+	{
+		return geoms;
+	}
+	
+  /**
+   *  SAX handler. Handle state and state transitions based on an element
+   *  starting.
+   *
+   *@param  uri               Description of the Parameter
+   *@param  name              Description of the Parameter
+   *@param  qName             Description of the Parameter
+   *@param  atts              Description of the Parameter
+   *@exception  SAXException  Description of the Exception
+   */
+  public void startElement(String uri, String name, String qName,
+			Attributes atts) throws SAXException {
+		if (name.equalsIgnoreCase(GMLConstants.GML_POLYGON)) {
+			currGeomHandler = new GMLHandler(fact, null);
+		}
+		if (currGeomHandler != null)
+			currGeomHandler.startElement(uri, name, qName, atts);
+		if (currGeomHandler == null) {
+			lastEltName = name;
+			//System.out.println(name);
+		}
+	}
+  
+	public void characters(char[] ch, int start, int length) throws SAXException 
+	{
+    if (currGeomHandler != null) {
+    	currGeomHandler.characters(ch, start, length);
+    }
+    else {
+    	String content = new String(ch, start, length).trim();
+    	if (content.length() > 0) {
+    		System.out.println(lastEltName + "= " + content);
+    	}
+    }
+	}
+	
+	public void ignorableWhitespace(char[] ch, int start, int length)
+	throws SAXException {
+    if (currGeomHandler != null)
+    	currGeomHandler.ignorableWhitespace(ch, start, length);
+	}
+	
+  /**
+   *  SAX handler - handle state information and transitions based on ending
+   *  elements.
+   *
+   *@param  uri               Description of the Parameter
+   *@param  name              Description of the Parameter
+   *@param  qName             Description of the Parameter
+   *@exception  SAXException  Description of the Exception
+   */
+  public void endElement(String uri, String name, String qName)
+			throws SAXException {
+		// System.out.println("/" + name);
+
+		if (currGeomHandler != null) {
+			currGeomHandler.endElement(uri, name, qName);
+
+			if (currGeomHandler.isGeometryComplete()) {
+				Geometry g = currGeomHandler.getGeometry();
+				System.out.println(g);
+				geoms.add(g);
+
+				// reset to indicate no longer parsing geometry
+				currGeomHandler = null;
+			}
+		}
+
+	}
+}
+
+/**
+ * A GeometryFactory extension which fixes structurally bad coordinate sequences
+ * used to create LinearRings.
+ * 
+ * @author mbdavis
+ * 
+ */
+class FixingGeometryFactory extends GeometryFactory
+{
+	public LinearRing createLinearRing(CoordinateSequence cs)
+	{
+		if (cs.getCoordinate(0).equals(cs.getCoordinate(cs.size() - 1))) 
+			return super.createLinearRing(cs);
+			
+			// add a new coordinate to close the ring
+			CoordinateSequenceFactory csFact = getCoordinateSequenceFactory();
+			CoordinateSequence csNew = csFact.create(cs.size() + 1, cs.getDimension());
+			CoordinateSequences.copy(cs, 0, csNew, 0, cs.size());
+			CoordinateSequences.copyCoord(csNew, 0, csNew, csNew.size() - 1);
+			return super.createLinearRing(csNew);
+	}
+
+	
+}
diff --git a/src/com/vividsolutions/jtsexample/operation/distance/ClosestPointExample.java b/src/com/vividsolutions/jtsexample/operation/distance/ClosestPointExample.java
index 0482eb2..79f6bfd 100644
--- a/src/com/vividsolutions/jtsexample/operation/distance/ClosestPointExample.java
+++ b/src/com/vividsolutions/jtsexample/operation/distance/ClosestPointExample.java
@@ -95,7 +95,7 @@ public class ClosestPointExample
       double distance = distOp.distance();
       System.out.println("Distance = " + distance);
 
-      Coordinate[] closestPt = distOp.closestPoints();
+      Coordinate[] closestPt = distOp.nearestPoints();
       LineString closestPtLine = fact.createLineString(closestPt);
       System.out.println("Closest points: " + closestPtLine
                          + " (distance = " + closestPtLine.getLength() + ")");
diff --git a/src/com/vividsolutions/jtsexample/operation/polygonize/PolygonizeExample.java b/src/com/vividsolutions/jtsexample/operation/polygonize/PolygonizeExample.java
index b33398c..eea6c66 100644
--- a/src/com/vividsolutions/jtsexample/operation/polygonize/PolygonizeExample.java
+++ b/src/com/vividsolutions/jtsexample/operation/polygonize/PolygonizeExample.java
@@ -35,8 +35,6 @@ package com.vividsolutions.jtsexample.operation.polygonize;
 
 import java.util.ArrayList;
 import java.util.Collection;
-
-import com.vividsolutions.jts.geom.Geometry;
 import com.vividsolutions.jts.io.WKTReader;
 import com.vividsolutions.jts.operation.polygonize.Polygonizer;
 
diff --git a/src/com/vividsolutions/jtsexample/precision/EnhancedPrecisionOpExample.java b/src/com/vividsolutions/jtsexample/precision/EnhancedPrecisionOpExample.java
index ab875b7..37281d6 100644
--- a/src/com/vividsolutions/jtsexample/precision/EnhancedPrecisionOpExample.java
+++ b/src/com/vividsolutions/jtsexample/precision/EnhancedPrecisionOpExample.java
@@ -33,8 +33,6 @@
  */
 package com.vividsolutions.jtsexample.precision;
 
-import java.io.*;
-import java.util.*;
 import com.vividsolutions.jts.io.WKTReader;
 import com.vividsolutions.jts.geom.*;
 import com.vividsolutions.jts.precision.EnhancedPrecisionOp;
diff --git a/src/com/vividsolutions/jtsexample/technique/PolygonUnionUsingBuffer.java b/src/com/vividsolutions/jtsexample/technique/PolygonUnionUsingBuffer.java
index 12407b5..1af86fa 100644
--- a/src/com/vividsolutions/jtsexample/technique/PolygonUnionUsingBuffer.java
+++ b/src/com/vividsolutions/jtsexample/technique/PolygonUnionUsingBuffer.java
@@ -2,7 +2,6 @@ package com.vividsolutions.jtsexample.technique;
 
 import com.vividsolutions.jts.geom.*;
 import com.vividsolutions.jts.io.WKTReader;
-import java.util.*;
 
 /**
  * Shows a technique for using a zero-width buffer to compute
diff --git a/src/jtsio/src/com/vividsolutions/jts/io/gml2/GMLWriter.java b/src/jtsio/src/com/vividsolutions/jts/io/gml2/GMLWriter.java
deleted file mode 100644
index e9759d2..0000000
--- a/src/jtsio/src/com/vividsolutions/jts/io/gml2/GMLWriter.java
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
- * The JTS Topology Suite is a collection of Java classes that
- * implement the fundamental operations required to validate a given
- * geo-spatial data set to a known topological specification.
- *
- * Copyright (C) 2001 Vivid Solutions
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * For more information, contact:
- *
- *     Vivid Solutions
- *     Suite #1A
- *     2328 Government Street
- *     Victoria BC  V8T 5G5
- *     Canada
- *
- *     (250)385-6040
- *     www.vividsolutions.com
- */
-package com.vividsolutions.jts.io.gml2;
-
-import java.io.*;
-
-import com.vividsolutions.jts.geom.*;
-
-/**
- * Writes JTS Geometries as GML2 into the writer provided, or as a string.
- *
- * @author David Zwiers, Vivid Solutions. 
- */
-public class GMLWriter {
-	private final String INDENT = "  ";
-	
-	private int startingIndentIndex = 0;
-	private int maxCoordinatesPerLine = 2;
-	
-	private String prefix = GMLConstants.GML_PREFIX;
-	
-	/**
-	 * Allows the user to force a prefix for the GML namespace. 
-	 * 
-	 * In XML blobs, the user may wish to leave the polygons un-qualified, thus setting the prefix to the empty string
-	 * 
-	 * @param prefix
-	 */
-	public void setPrefix(String prefix){
-		this.prefix =prefix;
-	}
-	
-	/**
-	 * Sets the starting index for preaty printing
-	 * 
-	 * @param arg
-	 */
-	public void setStartingIndentIndex(int arg){
-		if(arg<0)
-			throw new IndexOutOfBoundsException("In-valid index, must be > or = 0");
-		startingIndentIndex = arg;
-	}
-	
-	/**
-	 * Sets the number of coordinates printed per line. 
-	 * 
-	 * Use full when configuring preaty printing.
-	 * 
-	 * @param arg
-	 */
-	public void setMaxCoordinatesPerLine(int arg){
-		if(arg<1)
-			throw new IndexOutOfBoundsException("In-valid coordinate count per line, must be > 0");
-		maxCoordinatesPerLine = arg;
-	}
-	
-	/**
-	 * @param geom
-	 * @return String GML2 Encoded Geometry
-	 * @throws IOException 
-	 */
-	public String write(Geometry geom) throws IOException{
-		StringWriter writer = new StringWriter();
-		write(geom,writer);
-		return writer.getBuffer().toString();
-	}
-	
-	/**
-	 * Writes the JTS Geometry provided as GML2 into the writer provided.
-	 * 
-	 * @param geom Geometry to encode
-	 * @param writer Stream to encode to.
-	 * @throws IOException 
-	 */
-	public void write(Geometry geom, Writer writer) throws IOException{
-		write(geom,writer,startingIndentIndex);
-	}
-
-	private void write(Geometry geom, Writer writer, int level) throws IOException{
-		if(writer == null)
-	           throw new NullPointerException("Writer is null");
-		if (geom == null) {
-           throw new NullPointerException("Geometry is null");
-        } else if (geom instanceof Point) {
-        	writePoint((Point)geom,writer,level);
-        } else if (geom instanceof LineString) {
-        	writeLineString((LineString)geom,writer,level);
-        } else if (geom instanceof Polygon) {
-        	writePolygon((Polygon)geom,writer,level);
-        } else if (geom instanceof MultiPoint) {
-        	writeMultiPoint((MultiPoint)geom,writer,level);
-        } else if (geom instanceof MultiLineString) {
-        	writeMultiLineString((MultiLineString)geom,writer,level);
-        } else if (geom instanceof MultiPolygon) {
-        	writeMultiPolygon((MultiPolygon)geom,writer,level);
-        } else if (geom instanceof GeometryCollection) {
-        	writeGeometryCollection((GeometryCollection)geom,writer,startingIndentIndex);
-        }else{
-	        throw new IllegalArgumentException("Cannot encode JTS "
-	            + geom.getGeometryType() + " as SDO_GTEMPLATE "
-	            + "(Limitied to Point, Line, Polygon, GeometryCollection, MultiPoint,"
-	            + " MultiLineString and MultiPolygon)");
-        }
-		writer.flush();
-	}
-
-	  //<gml:Point><gml:coordinates>1195156.78946687,382069.533723461</gml:coordinates></gml:Point>
-	  private void writePoint(Point p, Writer writer, int level) throws IOException {
-	      startLine(level,writer);
-	      startGeomTag(GMLConstants.GML_POINT,p,writer);
-	      
-	      write(new Coordinate[] { p.getCoordinate() },writer, level + 1);
-
-	      startLine(level,writer);
-	      endGeomTag(GMLConstants.GML_POINT,writer);
-	  }
-
-	  //<gml:LineString><gml:coordinates>1195123.37289257,381985.763974674 1195120.22369473,381964.660533343 1195118.14929823,381942.597718511</gml:coordinates></gml:LineString>
-	  private void writeLineString(LineString ls, Writer writer, int level) throws IOException {
-	      startLine(level,writer);
-	      startGeomTag(GMLConstants.GML_LINESTRING,ls,writer);
-	      
-	      write(ls.getCoordinates(),writer, level + 1);
-
-	      startLine(level,writer);
-	      endGeomTag(GMLConstants.GML_LINESTRING,writer);
-	  }
-
-	  //<gml:LinearRing><gml:coordinates>1226890.26761027,1466433.47430292 1226880.59239079,1466427.03208053...></coordinates></gml:LinearRing>
-	  private void writeLinearRing(LinearRing lr, Writer writer, int level) throws IOException {
-	      startLine(level,writer);
-	      startGeomTag(GMLConstants.GML_LINEARRING,lr,writer);
-	      
-	      write(lr.getCoordinates(),writer, level + 1);
-
-	      startLine(level,writer);
-	      endGeomTag(GMLConstants.GML_LINEARRING,writer);
-	  }
-
-	  private void writePolygon(Polygon p, Writer writer, int level) throws IOException {
-	      startLine(level,writer);
-	      startGeomTag(GMLConstants.GML_POLYGON,p,writer);
-	      
-
-	      startLine(level+1,writer);
-	      startGeomTag(GMLConstants.GML_OUTER_BOUNDARY_IS,null,writer);
-
-		    writeLinearRing((LinearRing) p.getExteriorRing(), writer, level + 2);
-
-	      startLine(level+1,writer);
-	      endGeomTag(GMLConstants.GML_OUTER_BOUNDARY_IS,writer);
-	      
-
-	    for (int t = 0; t < p.getNumInteriorRing(); t++) {
-		      startLine(level+1,writer);
-		      startGeomTag(GMLConstants.GML_INNER_BOUNDARY_IS,null,writer);
-
-			    writeLinearRing((LinearRing) p.getInteriorRingN(t), writer, level + 2);
-
-		      startLine(level+1,writer);
-		      endGeomTag(GMLConstants.GML_INNER_BOUNDARY_IS,writer);
-	    }
-
-
-	      startLine(level,writer);
-	      endGeomTag(GMLConstants.GML_POLYGON,writer);
-	  }
-
-	  private void writeMultiPoint(MultiPoint mp, Writer writer, int level) throws IOException {
-	      startLine(level,writer);
-	      startGeomTag(GMLConstants.GML_MULTI_POINT,mp,writer);
-	      
-		    for (int t = 0; t < mp.getNumGeometries(); t++) {
-			  startLine(level+1,writer);
-			  startGeomTag(GMLConstants.GML_POINT_MEMBER,null,writer);
-			      
-		      writePoint((Point) mp.getGeometryN(t), writer, level + 2);
-		      
-		      startLine(level+1,writer);
-		      endGeomTag(GMLConstants.GML_POINT_MEMBER,writer);
-		    }
-	      startLine(level,writer);
-	      endGeomTag(GMLConstants.GML_MULTI_POINT,writer);
-	  }
-
-	  private void writeMultiLineString(MultiLineString mls, Writer writer, int level) throws IOException {
-	      startLine(level,writer);
-	      startGeomTag(GMLConstants.GML_MULTI_LINESTRING,mls,writer);
-	      
-		    for (int t = 0; t < mls.getNumGeometries(); t++) {
-			  startLine(level+1,writer);
-			  startGeomTag(GMLConstants.GML_LINESTRING_MEMBER,null,writer);
-			      
-		      writeLineString((LineString) mls.getGeometryN(t), writer, level + 2);
-		      
-		      startLine(level+1,writer);
-		      endGeomTag(GMLConstants.GML_LINESTRING_MEMBER,writer);
-		    }
-	      startLine(level,writer);
-	      endGeomTag(GMLConstants.GML_MULTI_LINESTRING,writer);
-	  }
-
-	  private void writeMultiPolygon(MultiPolygon mp, Writer writer, int level) throws IOException {
-	      startLine(level,writer);
-	      startGeomTag(GMLConstants.GML_MULTI_POLYGON,mp,writer);
-	      
-		    for (int t = 0; t < mp.getNumGeometries(); t++) {
-			  startLine(level+1,writer);
-			  startGeomTag(GMLConstants.GML_POLYGON_MEMBER,null,writer);
-			      
-		      writePolygon((Polygon) mp.getGeometryN(t), writer, level + 2);
-		      
-		      startLine(level+1,writer);
-		      endGeomTag(GMLConstants.GML_POLYGON_MEMBER,writer);
-		    }
-	      startLine(level,writer);
-	      endGeomTag(GMLConstants.GML_MULTI_POLYGON,writer);
-	  }
-
-	  private void writeGeometryCollection(GeometryCollection gc, Writer writer, int level) throws IOException {
-	      startLine(level,writer);
-	      startGeomTag(GMLConstants.GML_MULTI_GEOMETRY,gc,writer);
-	      
-		    for (int t = 0; t < gc.getNumGeometries(); t++) {
-			  startLine(level+1,writer);
-			  startGeomTag(GMLConstants.GML_GEOMETRY_MEMBER,null,writer);
-			      
-		      write(gc.getGeometryN(t), writer, level + 2);
-		      
-		      startLine(level+1,writer);
-		      endGeomTag(GMLConstants.GML_GEOMETRY_MEMBER,writer);
-		    }
-	      startLine(level,writer);
-	      endGeomTag(GMLConstants.GML_MULTI_GEOMETRY,writer);
-	  }
-
-	  private static final String coordinateSeparator = ",";
-	  private static final String tupleSeparator = " ";
-	  
-	  /**
-	   * Takes a list of coordinates and converts it to GML.<br>
-	   * 2d and 3d aware.
-	   * 
-	   * @param coords array of coordinates
-	 * @throws IOException 
-	   */
-	  private void write(Coordinate[] coords,Writer writer, int level) throws IOException {
-	      startLine(level,writer);
-	      startGeomTag(GMLConstants.GML_COORDINATES,null,writer);
-	      
-	      int dim = 2;
-
-	      if (coords.length > 0) {
-	        if (!(Double.isNaN(coords[0].z)))
-	          dim = 3;
-	      }
-
-	      boolean isNewLine = false;
-	      for (int i = 0; i < coords.length; i++) {
-	        if (isNewLine) {
-	  	      startLine(level+1,writer);
-	          isNewLine = false;
-	        }
-	        if (dim == 2) {
-	        	writer.write(""+coords[i].x);
-	        	writer.write(coordinateSeparator);
-	        	writer.write(""+coords[i].y);
-	        } else if (dim == 3) {
-	        	writer.write(""+coords[i].x);
-	        	writer.write(coordinateSeparator);
-	        	writer.write(""+coords[i].y);
-	        	writer.write(coordinateSeparator);
-	        	writer.write(""+coords[i].z);
-	        }
-	        writer.write(tupleSeparator);
-
-	        // break output lines to prevent them from getting too long
-	        if ((i + 1) % maxCoordinatesPerLine == 0 && i < coords.length - 1) {
-		      writer.write("\n");
-	          isNewLine = true;
-	        }
-	      }
-	      if(!isNewLine)
-	    	  writer.write("\n");
-
-	      startLine(level,writer);
-	      endGeomTag(GMLConstants.GML_COORDINATES,writer);
-	  }
-
-
-	  private void startLine(int level, Writer writer) throws IOException
-	  {
-		  for(int i=0;i<level;i++)
-			  writer.write(INDENT);
-	  }
-
-	  private void startGeomTag(String geometryName, Geometry g, Writer writer) throws IOException
-	  {
-		writer.write("<"+((prefix == null || "".equals(prefix))?"":prefix+":"));
-		writer.write(geometryName);
-	    printAttr(g,writer);
-	    writer.write(">\n");
-	  }
-
-	  private void printAttr(Geometry geom, Writer writer) throws IOException
-	  {
-		  if(geom == null)
-			  return;
-		  writer.write(" "+GMLConstants.GML_ATTR_SRSNAME+"='");
-		  writer.write(geom.getSRID()+"");
-		  writer.write("'");
-	  }
-
-	  private void endGeomTag(String geometryName, Writer writer) throws IOException
-	  {
-		  writer.write("</"+((prefix == null || "".equals(prefix))?"":prefix+":"));
-		  writer.write(geometryName);
-		  writer.write(">\n");
-	  }
-}
diff --git a/src/jump-workbench-properties.xml b/src/jump-workbench-properties.xml
deleted file mode 100644
index d349cf2..0000000
--- a/src/jump-workbench-properties.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<jump-workbench>
-   <extension>com.vividsolutions.jtsplugin.JTSExtension</extension> 
-</jump-workbench>
diff --git a/test/validate/TestRelateLC.xml b/test/validate/TestRelateLC.xml
deleted file mode 100644
index d27f616..0000000
--- a/test/validate/TestRelateLC.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<run>
-<precisionModel type="FLOATING"/>
-
-<case>
-<desc>LC - topographically equal with no boundary</desc>
-  <a>
-    LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0)
-  </a>
-  <b>
-    MULTILINESTRING(
-      (0 0, 0 50), 
-      (0 50, 50 50), 
-      (50 50, 50 0), 
-      (50 0, 0 0))
-  </b>
-  <test>
-    <op name="relate" arg1="A" arg2="B" arg3="1FFFFFFF2">true</op>
-  </test>
-</case>
-
-<case>
-<desc>LC - intersection (containment) along mod-2 A-Int line segment</desc>
-  <a>
-    LINESTRING(40 180, 140 180)
-  </a>
-  <b>
-    MULTIPOLYGON(
-      (
-        (20 320, 180 320, 180 180, 20 180, 20 320)), 
-      (
-        (20 180, 20 80, 180 80, 180 180, 20 180)))
-  </b>
-  <test>
-    <op name="relate" arg1="A" arg2="B" arg3="1FF0FF212">true</op>
-  </test>
-</case>
-
-<case>
-<desc>LC - intersection (overlap) along mod-2 A-Int line segment</desc>
-  <a>
-    LINESTRING(40 180, 140 180)
-  </a>
-  <b>
-    MULTIPOLYGON(
-      (
-        (20 320, 180 320, 180 180, 20 180, 20 320)), 
-      (
-        (60 180, 60 80, 180 80, 180 180, 60 180)))
-  </b>
-  <test>
-    <op name="relate" arg1="A" arg2="B" arg3="11F00F212">true</op>
-  </test>
-</case>
-
-<case>
-<desc>LC - equal with boundary intersection</desc>
-  <a>
-    LINESTRING(0 0, 60 0, 60 60, 60 0, 120 0)
-  </a>
-  <b>
-    MULTILINESTRING(
-      (0 0, 60 0), 
-      (60 0, 120 0), 
-      (60 0, 60 60))
-  </b>
-  <test>
-    <op name="relate" arg1="A" arg2="B" arg3="10FF0FFF2">true</op>
-  </test>
-</case>
-
-</run>
diff --git a/test/vivid/TestRelateLC.xml b/test/vivid/TestRelateLC.xml
deleted file mode 100644
index d01c26e..0000000
--- a/test/vivid/TestRelateLC.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<run>
-  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
-
-<case>
-  <desc>LC - topographically equal with no boundary</desc>
-  <a>
-    LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0)
-  </a>
-  <b>
-    MULTILINESTRING(
-      (0 0, 0 50), 
-      (0 50, 50 50), 
-      (50 50, 50 0), 
-      (50 0, 0 0))
-  </b>
-<test>
-  <op name="relate" arg3="1FFFFFFF2" arg1="A" arg2="B">
-    true
-  </op>
-</test>
-</case>
-
-<case>
-  <desc>LC - intersection (containment) along mod-2 A-Int line segment</desc>
-  <a>
-    LINESTRING(40 180, 140 180)
-  </a>
-  <b>
-    MULTIPOLYGON(
-      (
-        (20 320, 180 320, 180 180, 20 180, 20 320)), 
-      (
-        (20 180, 20 80, 180 80, 180 180, 20 180)))
-  </b>
-<test>
-  <op name="relate" arg3="1FF0FF212" arg1="A" arg2="B">
-    true
-  </op>
-</test>
-</case>
-
-<case>
-  <desc>LC - intersection (overlap) along mod-2 A-Int line segment</desc>
-  <a>
-    LINESTRING(40 180, 140 180)
-  </a>
-  <b>
-    MULTIPOLYGON(
-      (
-        (20 320, 180 320, 180 180, 20 180, 20 320)), 
-      (
-        (60 180, 60 80, 180 80, 180 180, 60 180)))
-  </b>
-<test>
-  <op name="relate" arg3="11F00F212" arg1="A" arg2="B">
-    true
-  </op>
-</test>
-</case>
-
-<case>
-  <desc>LC - equal with boundary intersection</desc>
-  <a>
-    LINESTRING(0 0, 60 0, 60 60, 60 0, 120 0)
-  </a>
-  <b>
-    MULTILINESTRING(
-      (0 0, 60 0), 
-      (60 0, 120 0), 
-      (60 0, 60 60))
-  </b>
-<test>
-  <op name="relate" arg3="10FF0FFF2" arg1="A" arg2="B">
-    true
-  </op>
-</test>
-</case>
-
-</run>
diff --git a/testxml/external/GEOSBuffer.xml b/testxml/external/GEOSBuffer.xml
new file mode 100644
index 0000000..1965b0d
--- /dev/null
+++ b/testxml/external/GEOSBuffer.xml
@@ -0,0 +1,47 @@
+<run>
+  <desc>Test cases from GEOS</desc>
+  <precisionModel type="FLOATING"/>
+  <resultMatcher>com.vividsolutions.jtstest.testrunner.BufferResultMatcher</resultMatcher>
+  
+<case>
+<desc>hole_red.xml - GEOS 3.0.0_rc4 bufferReducedPrecision</desc>
+<a>
+MULTIPOLYGON (
+ ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 14899 [...]
+ ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 14879 [...]
+   (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661))
+)
+</a>
+<test>
+<op name="buffer" arg1="A" arg3=" 0.0">
+MULTIPOLYGON (
+ ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 14899 [...]
+ ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 14879 [...]
+   (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661))
+)
+</op>
+</test>
+</case>
+
+
+<case>
+<desc>GEOS 3.0.0_rc4 bufferReducedPrecision</desc>
+<a>
+MULTIPOLYGON (((2350000.0000000000000000 1488707.0969169281888753, 2349964.4004191001877189 1488636.0190692699979991, 2350000.0000000000000000 1488563.5240085718687624, 2350000.0000000000000000 1486139.5954903985839337, 2349862.9023056798614562 1486219.9886801000684500, 2349276.5575175802223384 1486686.9452663098927587, 2349189.6188003402203321 1486714.0890033100731671, 2349075.2651923401281238 1486839.4363198699429631, 2349177.6410056301392615 1487348.6899289600551128, 2349095.033545129 [...]
+ ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 14899 [...]
+ ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 14879 [...]
+   (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)),
+ ((2347572.7863241606391966 1485000.0000000000000000, 2348407.4356893599033356 1486442.4005138298962265, 2348538.4335729400627315 1486681.6946907700039446, 2348581.4885673602111638 1486644.2865022399928421, 2348497.7225665301084518 1486404.7074402100406587, 2348459.7195179299451411 1486318.0383337000384927, 2348448.2131743398495018 1485957.4058874400798231, 2348506.7706681001000106 1485883.9986570500768721, 2348472.0240390901453793 1485660.5130987700540572, 2348203.9518477302044630 14851 [...]
+</a>
+<test>
+<op name="buffer" arg1="A" arg3=" 0.0">
+MULTIPOLYGON (((2350000.0000000000000000 1488707.0969169281888753, 2349964.4004191001877189 1488636.0190692699979991, 2350000.0000000000000000 1488563.5240085718687624, 2350000.0000000000000000 1486139.5954903985839337, 2349862.9023056798614562 1486219.9886801000684500, 2349276.5575175802223384 1486686.9452663098927587, 2349189.6188003402203321 1486714.0890033100731671, 2349075.2651923401281238 1486839.4363198699429631, 2349177.6410056301392615 1487348.6899289600551128, 2349095.033545129 [...]
+ ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 14899 [...]
+ ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 14879 [...]
+   (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)),
+ ((2347572.7863241606391966 1485000.0000000000000000, 2348407.4356893599033356 1486442.4005138298962265, 2348538.4335729400627315 1486681.6946907700039446, 2348581.4885673602111638 1486644.2865022399928421, 2348497.7225665301084518 1486404.7074402100406587, 2348459.7195179299451411 1486318.0383337000384927, 2348448.2131743398495018 1485957.4058874400798231, 2348506.7706681001000106 1485883.9986570500768721, 2348472.0240390901453793 1485660.5130987700540572, 2348203.9518477302044630 14851 [...]
+</op>
+</test>
+</case>
+
+</run>
diff --git a/testxml/external/TestBufferExternal.xml b/testxml/external/TestBufferExternal.xml
new file mode 100644
index 0000000..0aa91f0
--- /dev/null
+++ b/testxml/external/TestBufferExternal.xml
@@ -0,0 +1,58 @@
+<run>
+  <desc>
+    Various cases which have been reported or identified as causing buffer failures
+    in previous versions of JTS.  
+    The cases in this file should all pass in the current version of JTS.
+  </desc>
+  <precisionModel type="FLOATING" />
+  <resultMatcher>com.vividsolutions.jtstest.testrunner.BufferResultMatcher</resultMatcher>
+
+<case>
+  <desc>
+  	JTS List reported error - Jan 4, 2007
+  	Causes return of tiny polygon in Ver 1.8 and earlier
+  </desc>
+  <a>
+    POLYGON ((-2598.774169921875 61.087974548339844,
+	-2599.804443359375 57.09324264526367, -2599.35595703125
+	42.387855529785156, -2595.31298828125 24.86284828186035,
+	-2586.894287109375 7.970212459564209, -2572.63818359375
+	-9.27978801727295, -2560.283935546875 -18.67239761352539,
+	-2551.49951171875 -22.76344108581543, -2539.59619140625
+	-22.507848739624023, -2531.886474609375 -17.93946647644043,
+	-2531.310546875 -17.19328498840332, -2518.694580078125
+	-27.471830368041992, -2564.515869140625 -44.53504943847656,
+	-2570.234619140625 -46.65970230102539, -2673.622314453125
+	27.439390182495117, -2682.3828125 31.62391471862793, -2698.79052734375
+	39.21870803833008, -2598.774169921875 61.087974548339844))
+  </a>
+<test>
+  <op name='buffer' arg1='A' arg2='1.0' arg3='1'>
+    POLYGON ((-2598.9877800006584 62.06489354920029, -2597.8058559463916 60.838238598016815, -2598.80056722021 56.981393691373356, -2598.359422519401 42.51673068489857, -2594.36518642589 25.202964287692787, -2586.050417509141 8.518874855177339, -2571.9409713392497 -8.553669047985187, -2559.764298593386 -17.811272817091698, -2551.2883050682995 -21.758675476666994, -2539.8801180014552 -21.51371480841184, -2532.561054468898 -17.176813608772246, -2532.1021741477675 -16.582280683172275, -2530 [...]
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>JTS List reported error - Jan 4, 2007
+    	Causes return of tiny polygon in Ver 1.8 and earlier
+  </desc>
+  <a>
+	POLYGON ((-2985.708251953125 16.51972770690918, -2982.37744140625
+	13.961258888244629, -2972.9091796875 11.138115882873535, -2956.294921875
+	11.763388633728027, -2941.1298828125 14.348956108093262,
+	-2922.595458984375 19.414688110351562, -2914.568359375
+	-10.223998069763184, -2931.0537109375 -16.33589744567871,
+	-2946.358642578125 -24.970754623413086, -2959.0654296875
+	-34.12342834472656, -2969.88330078125 -44.616554260253906,
+	-2978.60400390625 -55.14395523071289, -2980.379638671875
+	-57.39796829223633, -2985.708251953125 16.51972770690918))
+  </a>
+<test>
+  <op name='buffer' arg1='A' arg2='1.0' arg3='1'>
+   POLYGON ((-2986.70566366335 16.44782582720175, -2985.0990937741126 17.312776452537154, -2981.914734351797 14.8667999628029, -2972.781730022179 12.143620348943537, -2956.3982051078096 12.76020953441973, -2941.346258567696 15.3264952683113, -2922.8591038389686 20.379307926987252, -2921.6302322462557 19.676102233954516, -2913.6031326368807 -9.962583946160228, -2914.2207342589513 -11.161631675545383, -2930.6315593382983 -17.24590055998214, -2945.8190749722658 -25.814513047986875, -2958.42 [...]
+  </op>
+</test>
+</case>
+
+</run>
diff --git a/testxml/external/TestBufferExternal2.xml b/testxml/external/TestBufferExternal2.xml
new file mode 100644
index 0000000..ce0db4f
--- /dev/null
+++ b/testxml/external/TestBufferExternal2.xml
@@ -0,0 +1,508 @@
+<run>
+		  <desc>
+		    Basic buffer test cases.
+		  </desc>
+		  <precisionModel type="FLOATING" />
+		  <resultMatcher>com.vividsolutions.jtstest.testrunner.BufferResultMatcher</resultMatcher>
+		  
+<case><desc>
+  				#1 Polygon - gid: 2501
+  			</desc>
+  			<a>POLYGON((152663.569985 545814.381985,152650.846985 545793.256985,152627.901985 545778.769985,152678.109985 545771.821985,152727.534985 545773.861985,152781.614985 545740.377985,152811.447985 545734.737985,152805.889985 545712.243985,152779.265985 545710.106985,152757.181985 545678.531985,152728.757985 545672.422985,152667.835985 545695.186985,152611.069985 545717.462985,152570.710985 545744.322985,152523.739985 545745.457985,152517.151985 545743.782985,152484.214985 545735.408985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#2 Polygon - gid: 2502
+  			</desc>
+  			<a>POLYGON((142903.674985 525488.153985,142887.424985 525486.421985,142876.299985 525510.439985,142859.487985 525524.993985,142857.580985 525565.813985,142858.104985 525616.072985,142881.339985 525658.486985,142907.528985 525716.283985,142929.703985 525786.082985,142957.279985 525858.237985,142960.930985 525890.791985,142975.490985 525922.709985,142984.234985 525947.127985,142986.419985 525953.232985,142993.173985 525984.254985,143000.571985 526013.485985,143007.015985 526020.469985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#3 Polygon - gid: 2503
+  			</desc>
+  			<a>POLYGON((146220.994985 549967.552985,146213.166985 549966.121985,146208.007985 549968.568985,146206.036985 549974.608985,146205.864985 549983.214985,146206.109985 549988.066985,146208.381985 549999.999985,146322.285985 549999.999985,146316.339985 549994.911985,146312.438985 549992.675985,146308.350985 549990.750985,146302.286985 549988.489985,146293.636985 549985.962985,146269.463985 549981.745985,146257.525985 549979.090985,146240.391985 549974.375985,146234.981985 549972.660985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#4 Polygon - gid: 2504
+  			</desc>
+  			<a>POLYGON((144896.566985 524882.672985,144899.299985 524881.825985,144903.913985 524879.874985,144908.281985 524877.329985,144911.797985 524874.348985,144913.851985 524871.090985,144914.168985 524869.389985,144913.622985 524865.233985,144911.859985 524860.681985,144909.399985 524856.197985,144906.748985 524852.222985,144903.927985 524848.842985,144900.666985 524845.737985,144897.109985 524842.856985,144889.669985 524837.573985,144883.779985 524833.850985,144879.800985 524831.683985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#5 Polygon - gid: 2505
+  			</desc>
+  			<a>POLYGON((144446.439985 524841.154985,144441.934985 524841.141985,144435.845985 524841.674985,144425.648985 524843.342985,144420.748985 524844.729985,144417.119985 524846.780985,144415.753985 524848.861985,144415.428985 524852.340985,144416.080985 524856.335985,144417.458985 524860.698985,144419.313985 524865.282985,144423.459985 524874.528985,144425.249985 524878.896985,144427.325985 524883.109985,144429.289985 524885.370985,144439.587985 524894.381985,144443.173985 524897.220985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#6 Polygon - gid: 2506
+  			</desc>
+  			<a>POLYGON((144455.196985 524980.805985,144461.047985 524980.714985,144465.526985 524981.158985,144474.517985 524982.448985,144479.009985 524982.843985,144490.646985 524982.725985,144495.270985 524982.522985,144499.829985 524982.093985,144504.251985 524981.331985,144508.466985 524980.130985,144509.918985 524979.570985,144513.913985 524977.623985,144517.852985 524975.167985,144521.610985 524972.300985,144525.060985 524969.118985,144528.074985 524965.720985,144530.334985 524962.519985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#7 Polygon - gid: 2507
+  			</desc>
+  			<a>POLYGON((144180.284985 525120.032985,144183.832985 525116.794985,144186.310985 525113.187985,144186.773985 525112.080985,144187.835985 525108.131985,144188.392985 525103.916985,144188.543985 525099.491985,144188.385985 525094.909985,144188.017985 525090.227985,144186.627985 525076.124985,144185.841985 525059.007985,144185.204985 525050.018985,144184.199985 525041.093985,144182.718985 525031.683985,144181.494985 525027.301985,144179.611985 525023.346985,144176.818985 525019.465985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#8 Polygon - gid: 2508
+  			</desc>
+  			<a>POLYGON((145511.322985 525055.058985,145421.842985 525011.893985,145360.382985 525010.401985,145268.686985 525018.327985,145146.589985 524998.812985,145037.826985 525008.605985,144973.835985 525025.487985,145025.537985 525040.060985,145053.665985 525046.467985,145095.857985 525056.078985,145116.953985 525060.883985,145237.680985 525091.930985,145337.492985 525112.002985,145422.613985 525124.136985,145582.586985 525143.477985,145594.862985 525133.291985,145599.488985 525122.480985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#9 Polygon - gid: 2509
+  			</desc>
+  			<a>POLYGON((144327.439985 525055.359985,144323.575985 525054.083985,144319.137985 525053.820985,144309.540985 525054.540985,144304.876985 525054.629985,144288.008985 525053.381985,144279.029985 525053.080985,144271.827985 525053.508985,144258.386985 525054.981985,144243.660985 525055.827985,144230.778985 525056.779985,144226.202985 525057.165985,144221.779985 525057.904985,144216.743985 525059.629985,144212.867985 525061.883985,144209.230985 525064.754985,144205.958985 525068.049985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#10 Polygon - gid: 2510
+  			</desc>
+  			<a>POLYGON((144510.896985 525506.174985,144491.815985 525502.887985,144452.960985 525504.373985,144356.543985 525498.078985,144342.420985 525498.616985,144329.347985 525503.644985,144327.336985 525503.644985,144316.275985 525508.672985,144310.241985 525515.711985,144314.264985 525527.778985,144324.779985 525538.713985,144356.897985 525552.292985,144379.210985 525556.506985,144460.334985 525561.721985,144473.144985 525559.956985,144485.211985 525553.922985,144497.278985 525540.850985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#11 Polygon - gid: 2511
+  			</desc>
+  			<a>POLYGON((145442.154985 525572.074985,145501.507985 525553.758985,145522.070985 525554.647985,145516.394985 525541.746985,145505.936985 525519.454985,145532.899985 525496.685985,145547.030985 525513.347985,145591.958985 525554.366985,145632.751985 525552.852985,145668.799985 525544.771985,145702.316985 525529.254985,145724.534985 525515.925985,145745.168985 525499.920985,145723.440985 525498.117985,145705.446985 525491.319985,145691.799985 525487.926985,145650.858985 525477.747985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#12 Polygon - gid: 2512
+  			</desc>
+  			<a>POLYGON((144625.991985 525513.700985,144598.841985 525508.672985,144583.757985 525509.677985,144566.662985 525514.705985,144552.584985 525519.733985,144542.529985 525530.794985,144526.439985 525542.861985,144519.400985 525555.934985,144519.400985 525571.017985,144522.417985 525577.051985,144538.506985 525584.090985,144554.595985 525589.117985,144566.662985 525595.151985,144585.768985 525597.162985,144602.863985 525597.162985,144612.919985 525594.145985,144623.980985 525590.123985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#13 Polygon - gid: 2513
+  			</desc>
+  			<a>POLYGON((146081.670985 525417.759985,146034.312985 525383.398985,146018.183985 525405.148985,145997.047985 525436.541985,145975.994985 525451.787985,145927.068985 525472.385985,145872.869985 525488.849985,145830.388985 525510.994985,145793.352985 525537.222985,145768.063985 525549.233985,145754.442985 525585.944985,145741.111985 525601.945985,145729.163985 525609.328985,145747.791985 525621.222985,145785.820985 525616.608985,145835.405985 525606.033985,145888.006985 525585.051985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#14 Polygon - gid: 2514
+  			</desc>
+  			<a>POLYGON((147625.665985 525733.355985,147685.615985 525723.612985,147746.451985 525726.828985,147807.643985 525705.752985,147778.828985 525680.379985,147736.635985 525673.137985,147681.802985 525656.781985,147634.046985 525660.702985,147593.909985 525649.092985,147543.925985 525630.287985,147525.748985 525647.754985,147521.204985 525652.120985,147486.998985 525649.400985,147473.315985 525648.312985,147433.858985 525642.752985,147433.938985 525662.319985,147457.769985 525676.556985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#15 Polygon - gid: 2515
+  			</desc>
+  			<a>POLYGON((149067.995985 525965.488985,149025.297985 525963.470985,148994.143985 525964.208985,148997.616985 525989.339985,149029.151985 526015.805985,149120.123985 526059.526985,149131.062985 526066.577985,149148.502985 526077.820985,149183.975985 526087.501985,149232.395985 526086.935985,149294.555985 526084.930985,149312.038985 526079.485985,149314.993985 526078.565985,149316.243985 526056.762985,149244.224985 526035.142985,149176.959985 526005.418985,149113.972985 525980.563985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#16 Polygon - gid: 2516
+  			</desc>
+  			<a>POLYGON((150716.409985 526216.711985,150707.088985 526192.800985,150622.180985 526127.431985,150583.008985 526115.338985,150539.865985 526092.923985,150506.113985 526087.030985,150457.230985 526063.119985,150414.652985 526045.317985,150412.516485 526044.107285,150403.373985 526054.606985,150398.109985 526096.678985,150386.500985 526126.603985,150356.405985 526157.275985,150349.132985 526185.598985,150364.836985 526203.184985,150392.348985 526202.980985,150449.647985 526187.409985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#17 Polygon - gid: 2517
+  			</desc>
+  			<a>POLYGON((142576.939985 544993.306985,142591.447985 544982.626985,142598.216985 544976.869985,142601.519985 544973.710985,142604.578985 544970.396985,142606.691985 544967.715985,142607.297985 544962.618985,142603.363985 544961.993985,142598.959985 544961.672985,142594.273985 544961.623985,142589.490985 544961.812985,142582.524985 544962.474985,142578.110985 544963.214985,142573.719985 544964.260985,142569.373985 544965.557985,142561.217985 544968.551985,142557.131985 544970.386985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#18 Polygon - gid: 2518
+  			</desc>
+  			<a>POLYGON((142142.650985 544835.425985,142145.030985 544834.924985,142149.928985 544836.666985,142147.868985 544839.863985,142145.054985 544843.328985,142141.764985 544846.863985,142135.589985 544852.711985,142131.385985 544855.469985,142121.934985 544860.323985,142119.418985 544862.762985,142120.643985 544866.423985,142123.832985 544869.166985,142142.007985 544880.482985,142146.185985 544882.686985,142150.034985 544885.110985,142152.992985 544888.177985,142154.918985 544892.177985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>MULTIPOLYGON(((141915.20707389 545059.387655348,141919.801422452 545072.005349505,141922.317819047 545078.476414118,141924.497039105 545083.5720225,141931.58949003 545098.528322628,141932.948007704 545101.565338362,141939.882007704 545118.037338362,141941.251466939 545121.532703646,141944.247466939 545129.781703646,141945.379704287 545133.145086525,141946.3559021 545136.289068806,141953.641588396 545130.165092772,141957.089854983 545124.46 [...]
+  			</op></test></case><case><desc>
+  				#19 Polygon - gid: 2519
+  			</desc>
+  			<a>POLYGON((142639.054985 546593.084985,142638.983985 546578.467985,142637.899985 546522.015985,142637.938985 546492.896985,142637.097985 546450.097985,142637.323985 546438.583985,142638.161985 546425.106985,142640.378985 546405.030985,142641.014985 546394.820985,142641.331985 546384.084985,142641.148985 546370.582985,142641.244985 546363.069985,142641.584985 546354.071985,142642.254985 546344.252985,142643.286985 546335.313985,142644.522985 546326.394985,142648.737985 546299.023985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>MULTIPOLYGON(((141877.641440651 545899.174621292,141877.705860312 545899.294221892,141882.11313423 545909.102129247,141883.65813423 545913.327129247,141885.747003497 545919.984419878,141886.925003497 545924.457419878,141887.812773449 545928.219509296,141888.066269442 545929.432821165,141894.314514948 545931.768203543,141895.934514948 545932.571203543,141907.337873997 545939.553978711,141910.821873997 545942.140978711,141920.028110834 54595 [...]
+  			</op></test></case><case><desc>
+  				#20 Polygon - gid: 2520
+  			</desc>
+  			<a>POLYGON((158481.432985 510583.562985,158489.304985 510568.137985,158489.742985 510554.602985,158495.366985 510539.211985,158506.487985 510532.681985,158525.237985 510536.074985,158524.509985 510524.803985,158520.526985 510499.704985,158521.742985 510487.947985,158532.814985 510476.516985,158555.418985 510459.975985,158566.707985 510455.588985,158567.920985 510448.494985,158577.510985 510431.915985,158588.800985 510429.989985,158644.968985 510413.253985,158646.535985 510388.879985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#21 Polygon - gid: 2521
+  			</desc>
+  			<a>POLYGON((157869.315985 520433.637985,157856.178985 520399.216985,157834.269985 520383.765985,157837.129985 520350.383985,157849.976985 520324.750985,157884.267985 520315.565985,157928.572985 520281.754985,157969.435985 520288.428985,157995.223985 520278.692985,158043.757985 520253.692985,158088.001985 520238.144985,158131.710985 520233.176985,158161.789985 520246.081985,158177.706985 520240.052985,158184.062985 520208.456985,158173.722985 520194.194985,158141.933985 520199.529985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((157709.297185021 520330.935932945,157711.385825117 520345.464985685,157712.092131453 520359.056710976,157711.360558615 520364.661253674,157728.04149239 520362.871682146,157761.152813139 520358.582627117,157762.403736042 520343.98182,157762.978712539 520340.826547721,157761.146281582 520339.328652421,157752.062634395 520328.465608525,157748.887917416 520323.843829254,157739.832907843 520321.225709156,157731.711564547 520322.4590698 [...]
+  			</op></test></case><case><desc>
+  				#22 Polygon - gid: 2522
+  			</desc>
+  			<a>POLYGON((153150.576985 520940.908985,153155.070985 520940.770985,153160.755985 520940.781985,153164.005985 520941.150985,153168.185985 520942.767985,153171.314985 520944.415985,153176.455985 520947.720985,153181.606985 520950.538985,153187.215985 520951.893985,153191.791985 520952.155985,153194.139985 520957.187985,153198.008985 520954.124985,153208.046985 520950.059985,153211.950985 520947.552985,153213.758985 520945.586985,153214.902985 520941.306985,153215.775985 520929.532985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#23 Polygon - gid: 2523
+  			</desc>
+  			<a>POLYGON((157261.821985 521212.042985,157255.517985 521158.904985,157227.447985 521110.819985,157193.480985 521080.159985,157154.275985 521056.383985,157110.994985 521055.200985,157075.666985 521042.824985,157053.089985 521016.601985,157057.673985 520992.362985,157039.358985 520960.816985,157034.486985 520926.714985,157029.615985 520902.356985,156995.512985 520877.997985,156966.282985 520873.125985,156937.052985 520873.125985,156907.821985 520863.382985,156873.719985 520843.895985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((156631.095656882 521014.295354275,156634.676048003 521011.38552151,156643.851709985 521005.00170818,156653.874255463 521000.052523643,156717.707255463 520974.253523643,156730.658675837 520970.335547184,156744.103293312 520968.808428927,156795.870293312 520967.629428927,156811.101565777 520968.83930815,156825.771566439 520973.110906117,156861.294856822 520987.521583157,156915.178256666 520998.044532044,156917.303575206 520998.49162 [...]
+  			</op></test></case><case><desc>
+  				#24 Polygon - gid: 2524
+  			</desc>
+  			<a>POLYGON((157198.781985 521343.128985,157167.375985 521333.418985,157161.598985 521339.797985,157164.714985 521379.602985,157160.482985 521417.461985,157147.909985 521451.287985,157146.214985 521493.149985,157153.755985 521521.467985,157172.019985 521558.894985,157193.474985 521583.667985,157202.389985 521607.497985,157215.882985 521640.795985,157219.352985 521646.857985,157226.292985 521658.980985,157246.124985 521668.670985,157251.301985 521666.452985,157261.655985 521662.017985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#25 Polygon - gid: 2525
+  			</desc>
+  			<a>POLYGON((153125.509985 521860.224985,153129.708985 521849.726985,153136.136985 521836.144985,153138.731985 521832.043985,153142.336985 521823.841985,153148.967985 521810.226985,153150.370985 521805.542985,153153.006985 521792.564985,153154.402985 521777.197985,153153.618985 521769.895985,153152.742985 521765.487985,153148.961985 521758.774985,153144.279985 521752.074985,153143.056985 521750.968985,153139.230985 521748.538985,153134.217985 521746.356985,153114.663985 521739.427985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#26 Polygon - gid: 2526
+  			</desc>
+  			<a>POLYGON((157932.417985 522155.088985,157944.275985 522122.344985,157937.133985 522096.277985,157945.879985 522082.105985,157967.232985 522064.316985,157982.322985 522039.440985,158000.496985 522030.869985,158009.669985 522049.652985,158032.912985 522049.223985,158031.812985 522022.937985,158031.808985 521996.628985,158045.642985 521975.762985,158053.730985 521989.459985,158063.586985 522015.397985,158083.101985 522030.407985,158106.174985 522054.201985,158119.395985 522059.194985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON ((157858.57914185867 522008.3453885631, 157863.44444038192 522014.31809463963, 157875.59429040362 522033.47463893297, 157883.09502664296 522041.3031464203, 157889.22642461277 522032.95952942636, 157897.8743840681 522024.48253249004, 157909.60455873946 522014.7102252157, 157918.19873357913 522000.54265110625, 157926.94878182272 521988.85741432256, 157937.7967307582 521979.0885808789, 157946.77683321957 521973.72816572373, 157937.515 [...]
+  			</op></test></case><case><desc>
+  				#27 Polygon - gid: 2527
+  			</desc>
+  			<a>POLYGON((149946.529985 522862.341985,149966.481985 522827.471985,149971.102985 522795.593985,149955.120985 522773.194985,149939.535985 522777.700985,149919.295985 522795.320985,149896.669985 522804.718985,149890.945985 522795.728985,149898.974985 522765.579985,149920.144985 522727.754985,149913.346985 522702.453985,149883.812985 522706.570985,149875.847985 522712.141985,149848.867985 522733.237985,149847.635985 522734.278985,149844.408985 522737.640985,149838.341985 522744.662985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#28 Polygon - gid: 2528
+  			</desc>
+  			<a>POLYGON((149018.973985 523298.843985,149027.116985 523297.053985,149050.059985 523306.128985,149076.982985 523309.933985,149115.614985 523303.010985,149138.271985 523304.959985,149139.167985 523304.141985,149158.847985 523286.186985,149166.967985 523275.518985,149179.148985 523259.517985,149173.818985 523231.813985,149167.615985 523190.279985,149174.951985 523171.330985,149185.861985 523154.667985,149195.141985 523139.933985,149191.733985 523114.168985,149179.721985 523100.162985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((148775.869980556 523087.862959271,148786.310671602 523134.147421339,148787.111961451 523138.222062501,148789.865944358 523154.610673249,148818.502518906 523192.24109267,148818.744164544 523192.560396791,148849.809164544 523233.837396791,148856.532562419 523244.542695822,148861.362459323 523256.225144291,148871.913459323 523289.431144291,148874.797171531 523302.720185688,148880.382311599 523303.854495746,148892.533152951 523307.412 [...]
+  			</op></test></case><case><desc>
+  				#29 Polygon - gid: 2529
+  			</desc>
+  			<a>POLYGON((166489.986985 524726.636985,166376.609985 524695.830985,166378.076985 524731.146985,166372.372985 524775.920985,166374.920985 524808.597985,166378.349985 524862.041985,166381.024985 524891.550985,166405.372985 524894.150985,166442.538985 524856.230985,166488.936985 524799.975985,166481.518985 524768.759985,166489.986985 524726.636985))</a>
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#30 Polygon - gid: 2530
+  			</desc>
+  			<a>POLYGON((165889.593985 526270.470985,165805.380985 526135.686985,165716.140985 526213.946985,165715.046985 526215.272985,165666.137985 526274.538985,165628.837985 526322.818985,165601.443985 526328.382985,165602.962985 526339.012985,165604.480985 526357.234985,165631.029985 526379.970985,165679.641985 526437.375985,165710.443985 526485.694985,165719.290985 526538.574985,165726.370985 526574.918985,165757.470985 526592.793985,165821.282985 526618.710985,165829.798985 526578.755985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((165703.241357534 526349.188222767,165736.877004846 526388.907928476,165742.884833191 526397.060452601,165773.686833191 526445.379452601,165776.198479916 526450.359932548,165781.281584047 526439.053159569,165803.782584047 526399.973159569,165803.783866343 526399.970932552,165812.584332105 526384.687391741,165825.177332734 526357.964464521,165829.030216992 526344.609037639,165825.224121391 526320.876561857,165820.786544579 526303.84 [...]
+  			</op></test></case><case><desc>
+  				#31 Polygon - gid: 2531
+  			</desc>
+  			<a>POLYGON((167187.935985 527215.129985,167246.663985 527205.580985,167280.107985 527210.602985,167314.083985 527213.149985,167354.196985 527218.563985,167363.609985 527204.834985,167358.459985 527177.204985,167344.405985 527172.240985,167323.325985 527164.793985,167304.557985 527167.748985,167285.789985 527170.703985,167260.854985 527176.007985,167211.198985 527149.591985,167165.408985 527140.439985,167141.660985 527146.308985,167119.062985 527137.503985,167119.967985 527139.010985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((167167.684716539 527339.467819639,167176.568351121 527334.639135708,167168.740671452 527331.710602359,167168.045301243 527337.816065116,167167.684716539 527339.467819639))
+  			</op></test></case><case><desc>
+  				#32 Polygon - gid: 2532
+  			</desc>
+  			<a>POLYGON((142944.641985 528279.290985,142921.268985 528196.701985,142908.679985 528170.159985,142909.618985 528164.288985,142912.434985 528146.676985,142911.663985 528129.837985,142892.611985 528111.135985,142875.445985 528095.294985,142871.223985 528075.213985,142854.274985 528025.284985,142841.880985 528009.836985,142829.662985 527984.586985,142829.518985 527971.020985,142821.625985 527942.611985,142810.393985 527922.096985,142789.127985 527903.516985,142784.945985 527870.354985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#33 Polygon - gid: 2533
+  			</desc>
+  			<a>POLYGON((157248.267985 510397.734985,157245.305985 510363.097985,157245.806985 510339.634985,157249.376985 510312.049985,157264.999985 510313.014985,157298.816985 510310.020985,157313.463985 510303.902985,157331.569985 510277.161985,157335.597985 510263.931985,157342.919985 510246.050985,157356.304985 510238.818985,157373.099985 510233.719985,157379.080985 510235.892985,157395.913985 510233.044985,157408.176985 510225.851985,157412.515985 510212.622985,157409.981985 510194.654985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#34 Polygon - gid: 2534
+  			</desc>
+  			<a>POLYGON((148568.584985 517215.314985,148572.193985 517207.069985,148579.062985 517190.138985,148582.935985 517182.009985,148585.298985 517176.571985,148590.114985 517163.127985,148593.549985 517154.807985,148597.590985 517143.996985,148600.469985 517135.577985,148608.361985 517111.099985,148609.844985 517106.851985,148612.196985 517100.884985,148622.119985 517079.608985,148627.202985 517066.037985,148629.036985 517061.925985,148631.715985 517056.590985,148633.922985 517052.667985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON ((148465.04603866642 517147.5219424748, 148468.32193007902 517148.81250785006, 148472.43693007904 517150.65050785005, 148479.31833130663 517154.15981472895, 148481.5673313066 517155.45681472897, 148485.38224162365 517157.8115498219, 148489.14524162366 517160.2925498219, 148491.5920858998 517161.976234038, 148503.2307818219 517170.32920829166, 148505.60300960566 517171.7083877117, 148509.5648041141 517161.94319003774, 148511.3550677 [...]
+  			</op></test></case><case><desc>
+  				#35 Polygon - gid: 2535
+  			</desc>
+  			<a>POLYGON((163066.126985 517974.868985,163091.240985 517970.440985,163098.588985 517969.145985,163130.376985 517949.819985,163160.357985 517938.404985,163155.338985 517935.096985,163137.491985 517928.756985,163088.458985 517930.116985,163058.237985 517933.448985,163033.542985 517933.704985,162996.678985 517946.546985,162965.765985 517963.550985,162954.719985 517971.409985,162940.542985 517971.623985,162929.808985 517967.346985,162916.631985 517960.832985,162906.856985 517973.017985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#36 Polygon - gid: 2536
+  			</desc>
+  			<a>POLYGON((151640.372985 520078.439985,151631.962985 520059.790985,151629.274985 520055.812985,151626.569985 520052.200985,151615.221985 520034.782985,151606.240985 520019.252985,151596.253985 520003.198985,151594.521985 519999.999985,151585.007985 519979.511985,151579.071985 519969.479985,151573.199985 519957.304985,151572.035985 519955.222985,151567.491985 519949.971985,151564.650985 519946.439985,151563.903985 519945.128985,151561.474985 519937.032985,151559.718985 519932.885985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#37 Polygon - gid: 2537
+  			</desc>
+  			<a>POLYGON((149074.863985 521147.685985,149079.195985 521146.453985,149084.481985 521146.550985,149083.352985 521142.190985,149082.307985 521139.131985,149078.212985 521129.952985,149074.534985 521119.799985,149072.006985 521114.769985,149062.256985 521087.740985,149058.326985 521077.315985,149057.272985 521073.684985,149056.706985 521069.234985,149056.032985 521058.372985,149055.989985 521055.324985,149056.653985 521049.602985,149056.828985 521045.104985,149057.483985 521039.922985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#38 Polygon - gid: 2538
+  			</desc>
+  			<a>POLYGON((150340.263985 521736.242985,150319.707985 521734.229985,150320.397985 521743.203985,150320.776985 521753.617985,150321.365985 521762.839985,150321.838985 521767.321985,150322.439985 521771.069985,150323.456985 521775.456985,150325.665985 521782.261985,150327.698985 521786.281985,150328.983985 521788.230985,150331.756985 521791.771985,150334.245985 521794.557985,150337.451985 521797.714985,150345.035985 521804.348985,150348.315985 521807.525985,150350.157985 521808.786985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#39 Polygon - gid: 2539
+  			</desc>
+  			<a>POLYGON((151414.655985 521903.498985,151419.118985 521902.909985,151421.110985 521903.031985,151425.514985 521903.903985,151432.945985 521906.160985,151435.281985 521907.106985,151439.154985 521909.607985,151440.214985 521905.223985,151439.494985 521900.455985,151436.942985 521890.300985,151435.309985 521886.095985,151435.222985 521881.294985,151435.805985 521873.232985,151435.489985 521868.742985,151435.595985 521863.657985,151437.865985 521855.470985,151438.586985 521850.956985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((151279.645830086 521767.755326376,151280.089101957 521768.734349246,151281.60849228 521772.801761659,151281.779965797 521772.961370432,151284.905965797 521776.199370432,151288.436416127 521780.123773262,151291.614416127 521783.916773262,151298.197909309 521793.099519948,151303.3272236 521803.167059572,151307.7942236 521813.857059572,151309.775551863 521819.151068694,151311.958551863 521825.729068694,151313.547648501 521831.2057735 [...]
+  			</op></test></case><case><desc>
+  				#40 Polygon - gid: 2540
+  			</desc>
+  			<a>POLYGON((148804.969985 522529.061985,148825.777985 522528.289985,148844.208985 522531.065985,148856.496985 522532.916985,148882.440985 522530.570985,148894.474985 522523.984985,148904.794985 522513.633985,148902.807985 522495.733985,148896.519985 522475.100985,148873.973985 522465.040985,148844.137985 522468.478985,148809.638985 522482.020985,148787.006985 522487.163985,148762.897985 522493.321985,148738.759985 522488.933985,148716.846985 522484.385985,148694.991985 522485.158985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#41 Polygon - gid: 2541
+  			</desc>
+  			<a>POLYGON((148410.699985 522834.902985,148442.757985 522825.725985,148460.309985 522827.514985,148487.864985 522844.888985,148500.821985 522849.224985,148522.555985 522842.060985,148549.245985 522836.360985,148568.572985 522826.852985,148584.252985 522812.743985,148609.816985 522787.145985,148614.009985 522767.881985,148612.795985 522752.758985,148612.563985 522743.189985,148618.720985 522735.053985,148625.781585 522726.296485,148618.662985 522724.739985,148612.278985 522723.775985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((148482.813746868 522756.183508667,148484.759834217 522756.612200335,148500.311458172 522764.073026139,148507.47578582 522768.590283572,148524.485305735 522764.957677221,148526.135900505 522764.145660091,148532.598883594 522758.330211851,148537.783159503 522753.13904088,148537.640235854 522747.24405639,148537.573978828 522747.137066634,148532.272275747 522732.393023801,148530.149598324 522716.869200329,148531.298587695 522701.24311 [...]
+  			</op></test></case><case><desc>
+  				#42 Polygon - gid: 2542
+  			</desc>
+  			<a>POLYGON((150213.068985 524020.273985,150226.206985 524020.218985,150245.019985 524022.421985,150248.570985 524017.633985,150243.628985 523991.402985,150233.942985 523969.968985,150203.852985 523929.546985,150189.509985 523905.746985,150179.578985 523905.795985,150163.996985 523891.573985,150150.529985 523872.591985,150158.960985 523848.710985,150150.727985 523827.265985,150129.075985 523796.394985,150110.126985 523782.119985,150064.853985 523787.149985,150051.774985 523791.993985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((150106.011000335 523989.689500602,150114.057919676 523984.995648846,150131.312562914 523979.892369386,150139.180475973 523978.563497456,150141.030635187 523976.094127171,150143.466198894 523973.995184804,150140.693804819 523969.864680568,150140.146542734 523969.593183191,150129.018561804 523961.19132421,150113.436561804 523946.96932421,150110.842199358 523944.035224328,150110.774630149 523946.407515086,150107.74049457 523972.08052 [...]
+  			</op></test></case><case><desc>
+  				#43 Polygon - gid: 2543
+  			</desc>
+  			<a>POLYGON((144922.318985 524491.962985,144916.174985 524471.916985,144914.549985 524467.677985,144912.593985 524463.720985,144910.192985 524460.155985,144908.311985 524458.069985,144904.928985 524455.185985,144901.087985 524452.661985,144896.952985 524450.467985,144892.685985 524448.577985,144888.450985 524446.961985,144885.347985 524445.991985,144881.001985 524445.002985,144876.555985 524444.286985,144863.031985 524442.562985,144857.685985 524441.514985,144849.003985 524439.122985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#44 Polygon - gid: 2544
+  			</desc>
+  			<a>POLYGON((152738.586985 525524.931985,152740.326985 525497.058985,152695.275985 525498.501985,152656.986985 525505.098985,152622.061985 525523.010985,152648.325985 525540.128985,152652.935985 525590.321985,152647.410985 525629.067985,152666.698985 525650.755985,152708.041985 525659.923985,152735.752985 525671.255985,152760.563985 525666.811985,152771.160985 525648.828985,152770.241985 525625.353985,152756.879985 525597.961985,152746.550985 525573.880985,152738.586985 525524.931985))</a>
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#45 Polygon - gid: 2545
+  			</desc>
+  			<a>POLYGON((149453.122985 526139.892985,149396.797985 526127.534985,149353.639985 526128.716985,149378.053985 526143.048985,149404.918985 526161.498985,149438.396985 526192.728985,149474.027985 526233.837985,149507.380985 526288.575985,149516.204985 526264.755985,149536.833985 526225.717985,149553.115985 526196.776985,149518.161985 526170.998985,149453.122985 526139.892985))</a>
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#46 Polygon - gid: 2546
+  			</desc>
+  			<a>POLYGON((143371.698985 526340.324985,143367.501985 526296.992985,143367.318985 526278.597985,143349.180985 526262.013985,143334.789985 526251.329985,143319.597985 526245.894985,143315.281985 526251.019985,143278.726985 526298.107985,143265.495985 526287.517985,143253.409985 526293.227985,143236.509985 526310.988985,143223.254985 526345.656985,143210.652985 526371.956985,143208.644985 526376.798985,143242.636985 526387.900985,143277.186985 526389.196985,143320.427985 526393.579985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#47 Polygon - gid: 2547
+  			</desc>
+  			<a>POLYGON((158778.588985 529695.437985,158715.314985 529674.844985,158709.040985 529734.142985,158680.951985 529777.857985,158654.349985 529824.912985,158644.110985 529853.468985,158638.251985 529907.850985,158646.861985 529965.652985,158652.583985 529994.969985,158651.137985 529999.999985,158636.793985 530049.891985,158653.691985 530103.927985,158665.644985 530140.105985,158674.780985 530159.977985,158719.076985 530181.397985,158712.966985 530164.850985,158699.313985 530129.290985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#48 Polygon - gid: 2548
+  			</desc>
+  			<a>POLYGON((161952.205985 531803.507985,161950.166985 531785.171985,161948.777985 531776.277985,161947.155985 531767.422985,161941.486985 531770.695985,161937.729985 531773.172985,161932.269985 531777.472985,161926.725985 531782.098985,161924.613985 531783.667985,161920.829985 531786.099985,161918.605985 531787.218985,161914.388985 531788.805985,161912.462985 531789.286985,161907.980985 531789.764985,161906.546985 531789.681985,161902.168985 531788.569985,161900.603985 531787.696985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#49 Polygon - gid: 2549
+  			</desc>
+  			<a>POLYGON((144515.492985 534697.249985,144520.510985 534691.952985,144527.310985 534683.949985,144535.496985 534673.356985,144546.006985 534658.516985,144553.414985 534648.475985,144571.337985 534625.843985,144588.734985 534602.871985,144591.563985 534598.255985,144593.687985 534594.272985,144595.170985 534590.539985,144595.782985 534587.574985,144596.004985 534583.199985,144595.414985 534578.711985,144594.709985 534576.051985,144592.684985 534571.167985,144584.642985 534570.602985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#50 Polygon - gid: 2550
+  			</desc>
+  			<a>POLYGON((139580.306985 536284.245985,139581.537985 536275.353985,139582.391985 536270.934985,139584.727985 536262.895985,139588.416985 536252.326985,139591.066985 536246.306985,139593.754985 536241.295985,139596.494985 536237.619985,139599.804985 536234.137985,139603.593985 536230.963985,139607.726985 536228.169985,139622.104985 536219.993985,139630.326985 536215.966985,139647.195985 536208.674985,139656.268985 536204.452985,139664.079985 536200.252985,139671.632985 536195.480985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>MULTIPOLYGON(((139209.864361365 536222.972189994,139210.431297005 536221.517745343,139213.592297005 536214.967745343,139218.119433008 536206.899740567,139220.544433008 536203.141740567,139226.975410525 536194.584567191,139229.949410525 536191.165567191,139237.636669051 536183.52183426,139239.128669051 536182.23883426,139246.578605338 536176.600056987,139249.140605338 536174.901056987,139259.077204942 536169.348056245,139260.457204942 53616 [...]
+  			</op></test></case><case><desc>
+  				#51 Polygon - gid: 2551
+  			</desc>
+  			<a>POLYGON((167603.370985 536610.679985,167627.312985 536610.283985,167671.695985 536624.130985,167685.005985 536588.552985,167710.046985 536546.816985,167709.176985 536506.215985,167690.358985 536469.760985,167672.327985 536431.817985,167630.130985 536412.716985,167595.078985 536402.756985,167542.703985 536389.811985,167506.924985 536432.458985,167469.539985 536465.608985,167446.234985 536432.913985,167420.629985 536414.438985,167396.383985 536428.615985,167396.997985 536430.166985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((167518.99487489 536521.948060763,167523.287951439 536522.240215727,167536.666844921 536525.691103894,167549.185676584 536531.537664739,167560.419577491 536539.581475424,167566.761745414 536545.073086262,167570.737869345 536543.151622347,167586.028245886 536537.712667658,167602.130656777 536535.690241795,167626.072656777 536535.294241795,167629.371484375 536535.503008799,167634.600578813 536526.787642581,167634.56625147 536525.1856 [...]
+  			</op></test></case><case><desc>
+  				#52 Polygon - gid: 2552
+  			</desc>
+  			<a>POLYGON((139328.097985 537673.993985,139333.694985 537673.778985,139339.685985 537674.116985,139343.484985 537674.560985,139347.201985 537675.198985,139349.266985 537662.315985,139350.795985 537650.307985,139350.815985 537648.813985,139350.170985 537642.977985,139349.497985 537639.338985,139348.573985 537636.478985,139347.401985 537633.734985,139336.285985 537613.547985,139333.452985 537607.471985,139331.129985 537601.716985,139328.904985 537595.513985,139326.508985 537587.806985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#53 Polygon - gid: 2553
+  			</desc>
+  			<a>POLYGON((159078.115985 538635.625985,159073.785985 538635.186985,159069.280985 538635.348985,159064.698985 538635.981985,159060.140985 538636.953985,159053.718985 538638.713985,159049.352985 538640.261985,159045.098985 538642.416985,159041.557985 538645.223985,159040.211985 538646.934985,159038.272985 538650.769985,159036.869985 538655.096985,159035.937985 538659.695985,159035.410985 538664.343985,159035.238985 538667.833985,159035.436985 538672.256985,159036.130985 538676.707985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#54 Polygon - gid: 2554
+  			</desc>
+  			<a>POLYGON((159293.559985 538980.522985,159275.390985 538925.668985,159258.421985 538914.962985,159239.576985 538917.108985,159216.488985 538918.359985,159211.120985 538917.908985,159109.160985 538909.360985,159070.236985 538904.177985,158994.276985 538919.645985,158907.657985 538925.081985,158879.874985 538905.635985,158856.684985 538889.787985,158848.906985 538928.927985,158849.561985 538935.309985,158856.845985 538954.454985,158919.290985 538985.661985,158941.977985 538986.370985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((159178.260710927 538990.41719613,159202.122936517 538994.874862559,159205.932369085 538994.190488235,159206.951084137 538992.82288278,159204.848542186 538992.646234788,159178.260710927 538990.41719613))
+  			</op></test></case><case><desc>
+  				#55 Polygon - gid: 2555
+  			</desc>
+  			<a>POLYGON((157894.850985 539376.542985,157892.525985 539323.248985,157914.055985 539274.176985,157921.162985 539246.664985,157923.305985 539204.844985,157931.860985 539190.504985,157926.415985 539170.883985,157884.235985 539120.656985,157872.168985 539101.762985,157863.337985 539018.735985,157870.107985 538987.808985,157855.347985 538912.078985,157845.930985 538889.356985,157836.700985 538868.127985,157832.085985 538857.051985,157829.933985 538849.014985,157827.652985 538828.317985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((157796.315971774 538569.836655627,157796.287068268 538570.771296678,157796.51655414 538584.714488642,157796.554360558 538585.185598617,157797.206645716 538590.425949682,157797.745244705 538593.583515912,157797.919481214 538594.368563076,157800.953785266 538605.440705901,157805.813578304 538621.345003246,157807.209346082 538625.445501674,157822.267151913 538666.862821146,157822.828057742 538668.461636939,157827.030057742 538680.886 [...]
+  			</op></test></case><case><desc>
+  				#56 Polygon - gid: 2556
+  			</desc>
+  			<a>POLYGON((165866.082985 541862.721985,165851.682985 541848.138985,165804.193985 541863.105985,165801.945985 541874.734985,165814.893985 541890.902985,165824.346985 541905.179985,165834.300985 541928.120985,165826.139985 541936.876985,165823.907985 541948.444985,165827.893985 541968.536985,165846.896985 541979.346985,165875.377985 541971.704985,165921.822985 541960.759985,165900.301985 541937.964985,165886.338985 541910.918985,165892.219985 541895.974985,165878.605985 541877.133985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#57 Polygon - gid: 2557
+  			</desc>
+  			<a>POLYGON((164054.834985 543306.880985,164069.572985 543304.004985,164103.605985 543312.388985,164098.333985 543300.131985,164075.912985 543252.912985,164094.128985 543217.655985,164100.007985 543181.949985,164113.692985 543153.753985,164056.104985 543132.795985,164041.707985 543117.852985,164019.452985 543100.919985,163992.041985 543102.519985,163994.001985 543156.339985,163998.122985 543200.290985,163968.364985 543209.075985,163940.187985 543232.044985,163942.884985 543247.017985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#58 Polygon - gid: 2558
+  			</desc>
+  			<a>POLYGON((166001.678985 545096.446985,165986.188985 545050.627985,166031.006985 545078.395985,166053.356985 545047.590985,166042.301985 545030.529985,166001.118985 545004.006985,165970.376985 544983.927985,165949.330985 544958.286985,165946.693985 544938.892985,165963.120985 544919.755985,165995.255985 544914.667985,166022.427985 544917.764985,166062.571985 544932.058985,166097.433985 544907.541985,166121.008985 544885.492985,166149.252985 544896.697985,166161.300985 544855.607985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((166006.280209145 544840.438913134,166015.082113057 544841.442133229,166013.442395777 544838.869281385,166006.280209145 544840.438913134))
+  			</op></test></case><case><desc>
+  				#59 Polygon - gid: 2559
+  			</desc>
+  			<a>POLYGON((165400.049985 545327.155985,165416.553985 545307.426985,165440.890985 545317.388985,165451.763985 545309.292985,165455.551985 545256.760985,165447.188985 545219.754985,165398.556985 545171.589985,165389.391985 545144.568985,165415.765985 545137.758985,165442.139985 545130.948985,165489.105985 545131.514985,165494.821985 545142.545985,165481.339985 545161.579985,165465.034985 545177.852985,165498.516985 545230.195985,165501.015485 545233.148485,165500.118985 545227.637985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>MULTIPOLYGON(((165057.217205208 544883.120216485,165059.30153673 544912.389570074,165059.432092366 544920.688588389,165057.451092366 544970.647588389,165056.839151797 544977.684729339,165055.105079377 544990.562684236,165055.666345379 544991.014185186,165082.574837416 544991.687947258,165144.075738552 544984.790287485,165149.295992153 544984.388702299,165205.466992153 544982.035702299,165223.851710387 544983.535879454,165231.859198159 5449 [...]
+  			</op></test></case><case><desc>
+  				#60 Polygon - gid: 2560
+  			</desc>
+  			<a>POLYGON((165039.888985 545214.900985,165061.521985 545211.327985,165071.841985 545218.422985,165077.658585 545221.274385,165042.910985 545188.529985,165018.330985 545164.645985,165012.696985 545156.314985,165001.478985 545145.165985,164983.560985 545134.409985,164959.705985 545136.405985,164912.749985 545126.728985,164872.247985 545143.406985,164854.636985 545152.272985,164842.895985 545158.183985,164822.013985 545183.452985,164819.327985 545202.866985,164836.326985 545230.849985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#61 Polygon - gid: 2561
+  			</desc>
+  			<a>POLYGON((165238.510985 545710.471985,165192.124985 545700.368985,165160.156985 545630.008985,165164.336985 545624.861985,165176.876985 545609.422985,165172.523985 545591.077985,165168.170985 545572.732985,165167.980985 545556.368985,165147.570985 545540.142985,165125.931985 545556.256985,165090.936985 545602.197985,165089.392985 545634.903985,165089.504985 545645.843985,165092.417985 545662.279985,165111.877985 545683.285985,165129.554985 545701.137985,165121.586985 545728.577985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#62 Polygon - gid: 2562
+  			</desc>
+  			<a>POLYGON((167132.502985 546739.675985,167129.431985 546728.461985,167149.272985 546730.744985,167174.754985 546732.873985,167203.344985 546749.030985,167214.701985 546712.855985,167222.891985 546698.488985,167172.714985 546705.889985,167136.868985 546710.488985,167119.637985 546696.854985,167075.210985 546707.329985,167010.354985 546685.151985,166970.378985 546680.545985,166953.227985 546678.167985,166944.879985 546686.925985,166934.540985 546732.693985,166943.806985 546763.687985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#63 Polygon - gid: 2563
+  			</desc>
+  			<a>POLYGON((142722.192985 546177.308985,142726.778985 546176.811985,142731.932985 546176.961985,142741.768985 546177.534985,142746.228985 546178.131985,142757.116985 546179.802985,142766.625985 546181.831985,142771.037985 546182.101985,142773.400985 546181.387985,142776.497985 546178.776985,142779.106985 546174.996985,142781.284985 546170.613985,142783.085985 546166.194985,142784.732985 546161.198985,142785.744985 546156.827985,142788.327985 546142.074985,142788.603985 546137.521985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#64 Polygon - gid: 2564
+  			</desc>
+  			<a>POLYGON((164037.000985 546901.414985,164106.537985 546859.892985,164138.256985 546862.893985,164190.193985 546854.347985,164219.006985 546863.152985,164224.504985 546879.653985,164241.465985 546901.930985,164267.345985 546890.411985,164324.403985 546869.382985,164341.607985 546857.870985,164388.533985 546827.945985,164369.933985 546821.741985,164340.564985 546826.620985,164308.425985 546822.759985,164308.404985 546843.093985,164299.745985 546854.692985,164283.505985 546842.787985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#65 Polygon - gid: 2565
+  			</desc>
+  			<a>POLYGON((165997.948985 547128.168985,166014.238985 547102.270985,166026.375985 547112.440985,166060.687985 547117.495985,166091.450985 547096.872985,166113.825985 547082.132985,166119.200985 547070.590985,166109.259985 547010.901985,166075.888985 547034.320985,166069.749985 547061.434985,166058.900985 547078.693985,166028.270985 547076.283985,166018.907985 547042.519985,165995.926985 547026.000985,165977.533985 546969.846985,165948.195985 546992.608985,165951.810985 547025.403985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#66 Polygon - gid: 2566
+  			</desc>
+  			<a>POLYGON((165100.071985 522081.185985,165136.799985 522076.135985,165166.082985 522092.836985,165183.181985 522109.283985,165190.140985 522118.074985,165206.348985 522101.100985,165220.161985 522076.505985,165220.503985 522074.959985,165225.622985 522051.802985,165237.799985 522011.812985,165240.146985 521960.824985,165236.333985 521894.861985,165237.261985 521814.285985,165243.911985 521772.257985,165226.779985 521761.751985,165193.019985 521743.035985,165165.246985 521728.639985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((164820.266857 522017.427204655,164860.865764155 522045.854132527,164884.683758641 522051.483045719,164914.706877136 522053.700609857,164906.045863843 522043.003019071,164883.150492441 522024.179453335,164874.91441489 522020.711856107,164839.599301485 522019.296853506,164834.785821452 522018.948590341,164820.266857 522017.427204655))
+  			</op></test></case><case><desc>
+  				#67 Polygon - gid: 2567
+  			</desc>
+  			<a>POLYGON((154374.974985 540624.728985,154320.493985 540619.008985,154292.141985 540622.113985,154300.537985 540553.371985,154315.955985 540540.285985,154376.940985 540530.412985,154405.631985 540496.147985,154445.668985 540435.041985,154454.521985 540417.090985,154451.884985 540403.553985,154445.292985 540369.710985,154445.579985 540362.563985,154447.014985 540326.827985,154437.326985 540254.795985,154511.563985 540278.324985,154528.041985 540293.316985,154555.203985 540318.597985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON ((154211.34039180956 540382.1317209445, 154217.6503256708 540384.9741471609, 154228.8660526432 540392.7357234654, 154238.49064413007 540402.4001860456, 154246.20578777403 540413.6479038943, 154262.69478777403 540443.1149038943, 154268.08157501929 540455.0980127293, 154271.29462502326 540467.8372703156, 154272.15180599023 540479.7780934644, 154278.51581715897 540475.2995723275, 154290.83214622788 540469.6192125722, 154303.9701183911 [...]
+  			</op></test></case><case><desc>
+  				#68 Polygon - gid: 2568
+  			</desc>
+  			<a>POLYGON((151090.928985 540950.574985,151117.445985 540939.721985,151149.481985 540941.866985,151212.221985 540950.239985,151224.726985 540959.131985,151249.097985 540961.645985,151268.213985 540941.565985,151298.490985 540913.861985,151331.140985 540899.607985,151337.670985 540896.756985,151348.111985 540887.739985,151353.647985 540867.974985,151359.183985 540848.209985,151369.021985 540811.954985,151379.284985 540781.097985,151400.204985 540762.390985,151448.885985 540728.437985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#69 Polygon - gid: 2569
+  			</desc>
+  			<a>POLYGON((157856.121985 509999.999985,157796.029985 509999.999985,157791.006985 510004.813985,157791.813985 510018.198985,157800.933985 510029.066985,157811.325985 510037.421985,157822.700985 510041.583985,157836.355985 510047.726985,157846.509985 510047.168985,157860.168985 510044.667985,157865.721985 510035.395985,157865.310985 510029.671985,157864.898985 510023.947985,157864.938985 510012.985985,157856.897985 510002.060985,157856.121985 509999.999985))</a>
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#70 Polygon - gid: 2570
+  			</desc>
+  			<a>POLYGON((166912.823985 510008.038985,166922.037985 510006.063985,166931.908985 510006.063985,166939.147985 510009.354985,166945.070985 510014.619985,166951.361985 510005.018985,166956.501985 509999.999985,166817.427985 509999.999985,166829.662985 510020.674985,166846.946985 510042.171985,166864.977985 510054.010985,166876.718985 510056.295985,166886.332985 510051.098985,166888.756985 510038.698985,166892.223985 510028.810985,166906.901985 510012.644985,166912.823985 510008.038985))</a>
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#71 Polygon - gid: 2571
+  			</desc>
+  			<a>POLYGON((160978.349985 510216.528985,160976.017985 510196.815985,160972.315985 510179.827985,160967.100985 510160.634985,160968.288985 510153.324985,160933.313985 510163.101985,160874.570985 510167.697985,160863.688985 510172.638985,160844.319985 510175.223985,160810.435985 510182.778985,160768.056985 510200.089985,160716.009985 510219.903985,160738.406985 510250.985985,160748.943985 510253.617985,160780.763985 510240.957985,160797.438985 510248.395985,160805.905985 510245.900985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#72 Polygon - gid: 2572
+  			</desc>
+  			<a>POLYGON((164410.173985 510269.608985,164385.850985 510262.988985,164380.056985 510272.454985,164384.086985 510288.828985,164411.898985 510335.704985,164423.329985 510359.345985,164423.798985 510376.111985,164433.397985 510390.825985,164433.551985 510400.397985,164424.317985 510428.944985,164425.629985 510436.100985,164434.162985 510445.550985,164452.393985 510464.357985,164473.162985 510490.376985,164484.334985 510507.267985,164489.125985 510507.205985,164520.300985 510472.028985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#73 Polygon - gid: 2573
+  			</desc>
+  			<a>POLYGON((165811.803985 510461.433985,165827.476985 510461.338985,165854.112985 510465.702985,165860.990985 510489.889985,165940.128985 510487.374985,165967.267985 510478.917985,165996.204985 510476.027985,166010.928985 510478.380985,166019.470985 510482.908985,166045.518985 510470.094985,166044.175985 510465.335985,166021.852985 510442.020985,166001.663985 510418.254985,165994.615985 510423.284985,165980.675985 510431.298985,165958.830985 510417.903985,165925.719985 510435.804985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#74 Polygon - gid: 2574
+  			</desc>
+  			<a>POLYGON((156787.353985 510717.616985,156798.209985 510707.476985,156835.337985 510722.081985,156846.303985 510701.194985,156809.056985 510660.576985,156747.023985 510612.786985,156725.321985 510631.224985,156706.853985 510627.359985,156670.055985 510617.736985,156669.633985 510645.101985,156641.531985 510673.194985,156607.232985 510646.565985,156586.956985 510678.596985,156610.864985 510701.168985,156633.590985 510723.694985,156644.244985 510734.684985,156664.910985 510709.964985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#75 Polygon - gid: 2575
+  			</desc>
+  			<a>POLYGON((158008.700985 510611.812985,158026.072985 510610.072985,158045.611985 510612.296985,158069.846985 510619.338985,158090.368985 510618.785985,158109.698985 510613.651985,158128.025985 510597.619985,158093.668985 510549.634985,158057.574985 510514.193985,158039.492985 510494.646985,158015.478985 510474.555985,157995.775985 510460.308985,157942.439985 510496.109985,157921.521985 510507.754985,157902.162985 510523.671985,157865.738985 510559.611985,157883.243985 510610.932985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#76 Polygon - gid: 2576
+  			</desc>
+  			<a>POLYGON((166305.250985 510805.834985,166318.509985 510802.975985,166330.838985 510809.846985,166344.515985 510802.850985,166343.020985 510793.191985,166337.462985 510785.456985,166339.794985 510768.209985,166353.422985 510755.048985,166364.727985 510750.532985,166376.738985 510747.721985,166389.828985 510743.756985,166403.788985 510746.369985,166415.423985 510749.148985,166427.334985 510741.479985,166440.525985 510736.196985,166441.389985 510724.034985,166448.601985 510697.764985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((166205.479485534 510652.581119516,166251.356748955 510691.357878233,166252.239160589 510692.115525049,166266.195160589 510704.287525049,166279.231532196 510719.102325104,166281.223092437 510722.078781098,166287.694391735 510714.260673777,166301.322391735 510701.099673777,166312.697826602 510692.069135259,166325.600553693 510685.400493874,166336.905553693 510680.884493874,166347.637140521 510677.506256777,166357.30243744 510675.244 [...]
+  			</op></test></case><case><desc>
+  				#77 Polygon - gid: 2577
+  			</desc>
+  			<a>POLYGON((144747.238985 510959.113985,144755.551985 510958.391985,144759.999985 510957.706985,144761.994985 510957.120985,144771.077985 510953.546985,144775.163985 510951.478985,144778.521985 510947.974985,144780.605985 510943.978985,144783.010985 510937.753985,144785.651985 510927.645985,144788.862985 510919.396985,144791.739985 510910.868985,144793.064985 510907.386985,144797.114985 510897.469985,144801.720985 510888.417985,144806.413985 510877.909985,144812.059985 510868.414985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((144749.805324897 510825.061482914,144752.789028351 510819.62041865,144757.866524274 510811.355078054,144760.486491976 510806.149454063,144761.923067335 510803.434986066,144767.587610419 510793.24202396,144772.632499225 510781.700720814,144776.712345391 510773.707651011,144785.72556147 510758.388342297,144789.013934301 510752.305514056,144792.041340364 510746.276186408,144796.232065554 510737.269227828,144797.461513493 510734.75093 [...]
+  			</op></test></case><case><desc>
+  				#78 Polygon - gid: 2578
+  			</desc>
+  			<a>POLYGON((164261.154985 510650.157985,164222.546985 510625.817985,164154.918985 510621.315985,164140.780985 510624.098985,164100.762985 510630.061985,164079.139985 510626.535985,164059.912985 510617.594985,164015.891985 510599.380985,163982.805985 510602.715985,163983.143985 510614.572985,163970.818985 510623.941985,163962.940985 510638.400985,163944.888985 510642.579985,163933.276985 510650.021985,163930.136985 510664.321985,163942.960985 510666.830985,163941.293985 510678.107985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>MULTIPOLYGON(((164014.772946481 510692.038226625,164012.326520825 510702.178274868,164011.527687693 510703.983065768,164012.792704249 510710.315333713,164019.220139731 510719.696228589,164024.701026238 510731.901634901,164027.926009408 510744.88668568,164028.625355324 510755.663210165,164043.789058394 510776.899470009,164053.667376006 510779.322852758,164057.737747794 510780.44376297,164083.228747794 510788.24176297,164096.890697277 510793 [...]
+  			</op></test></case><case><desc>
+  				#79 Polygon - gid: 2579
+  			</desc>
+  			<a>POLYGON((161163.886985 511013.234985,161189.226985 511008.259985,161204.882985 511010.529985,161216.939985 511017.641985,161227.792985 511024.762985,161248.543985 511023.948985,161299.183985 511005.191985,161318.473985 510994.650985,161337.727985 510983.346985,161348.559985 510978.469985,161375.078985 510969.443985,161394.349985 510955.624985,161394.328985 510946.004985,161386.939985 510926.037985,161379.543985 510910.182985,161373.427985 510893.386985,161363.695985 510872.502985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#80 Polygon - gid: 2580
+  			</desc>
+  			<a>POLYGON((153813.688985 511062.953985,153835.321985 511057.586985,153844.786985 511047.891985,153846.824985 511035.417985,153842.431985 511021.764985,153850.025985 511008.873985,153863.361985 510999.755985,153876.654985 510996.614985,153892.257985 510993.431985,153902.800985 510983.707985,153905.732985 510969.043985,153904.396985 510957.029985,153901.984985 510954.939985,153890.617985 510951.489985,153860.008985 510941.167985,153846.688985 510938.404985,153830.265985 510936.142985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#81 Polygon - gid: 2581
+  			</desc>
+  			<a>POLYGON((144665.365985 511341.906985,144664.510985 511337.457985,144663.984985 511333.542985,144661.230985 511335.031985,144656.989985 511336.582985,144654.973985 511336.925985,144649.894985 511337.240985,144645.424985 511337.740985,144643.682985 511337.588985,144639.352985 511336.370985,144637.147985 511334.599985,144633.775985 511330.501985,144631.204985 511326.779985,144628.821985 511322.413985,144627.874985 511317.609985,144627.824985 511311.225985,144628.204985 511306.750985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#82 Polygon - gid: 2582
+  			</desc>
+  			<a>POLYGON((150793.118985 511863.872985,150782.435985 511854.966985,150773.079985 511846.582985,150769.853985 511843.245985,150766.986985 511839.782985,150761.511985 511832.617985,150758.605985 511829.192985,150754.526985 511825.034985,150751.182985 511821.998985,150747.703985 511819.159985,150745.002985 511817.382985,150740.884985 511815.528985,150736.708985 511814.410985,150732.238985 511813.744985,150725.323985 511813.170985,150720.857985 511813.353985,150717.259985 511814.287985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((150457.10488879 511902.90912939,150464.733870064 511906.143144005,150467.087964112 511907.189121685,150471.164964112 511909.085121685,150475.376080646 511911.206976503,150478.562080646 511912.939976503,150481.269290797 511914.486309485,150488.994290797 511919.114309485,150492.08021185 511921.066696571,150501.486797912 511927.343790442,150509.030924817 511931.869270879,150511.024338606 511933.107874813,150512.491255491 511934.05146 [...]
+  			</op></test></case><case><desc>
+  				#83 Polygon - gid: 2583
+  			</desc>
+  			<a>POLYGON((156449.341985 511947.023985,156464.014985 511945.970985,156481.530985 511959.981985,156488.552985 511957.898985,156502.465985 511951.515985,156519.696985 511967.276985,156532.436985 511968.984985,156546.765985 511960.382985,156557.920985 511953.685985,156617.345985 511926.606985,156650.552985 511912.686985,156629.697985 511893.765985,156618.726985 511870.069985,156571.803985 511869.954985,156520.017985 511866.320985,156489.605985 511875.922985,156479.281985 511900.711985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#84 Polygon - gid: 2584
+  			</desc>
+  			<a>POLYGON((155602.027985 512384.736985,155651.324985 512362.529985,155690.321985 512347.470985,155728.819985 512327.098985,155734.742985 512356.836985,155759.349985 512351.936985,155787.291985 512340.198985,155805.031985 512324.680985,155807.589985 512298.852985,155807.126985 512268.633985,155818.253985 512240.316985,155826.566985 512208.914985,155827.900985 512153.049985,155845.759985 512111.821985,155872.507985 512069.193985,155889.837985 512044.252985,155912.490985 512003.645985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#85 Polygon - gid: 2585
+  			</desc>
+  			<a>POLYGON((158639.754985 512372.943985,158642.449985 512349.639985,158651.455985 512332.998985,158654.537985 512321.227985,158662.359985 512307.021985,158667.084985 512302.182985,158674.148985 512294.948985,158682.389985 512285.305985,158690.575985 512270.902985,158694.679985 512247.278985,158692.208985 512240.181985,158683.712985 512228.424985,158668.883985 512217.032985,158646.555985 512214.750985,158627.649985 512229.323985,158617.422985 512243.507985,158608.087985 512260.305985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#86 Polygon - gid: 2586
+  			</desc>
+  			<a>POLYGON((155727.202985 512684.126985,155741.919985 512679.921985,155754.534985 512679.921985,155769.250985 512673.614985,155781.865985 512667.307985,155798.163985 512654.965985,155820.165985 512662.878985,155835.705985 512670.729985,155850.180985 512672.093985,155857.418985 512672.776985,155870.184985 512655.342985,155879.069985 512649.526985,155883.511985 512646.618985,155904.577985 512658.609985,155930.402985 512657.713985,155952.915985 512644.276985,155976.753985 512624.405985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#87 Polygon - gid: 2587
+  			</desc>
+  			<a>POLYGON((146166.976985 512563.940985,146169.594985 512563.533985,146174.055985 512564.781985,146177.356985 512561.339985,146181.129985 512554.989985,146185.373985 512548.630985,146189.013985 512541.920985,146194.870985 512530.011985,146198.574985 512521.811985,146202.486985 512510.766985,146206.272985 512502.588985,146208.002985 512498.444985,146209.826985 512492.155985,146212.021985 512482.022985,146213.069985 512474.579985,146213.899985 512465.609985,146214.122985 512461.084985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((145961.546571986 511912.662006029,145964.929660209 511913.786300946,145968.831148249 511915.203927207,145977.213148249 511918.514927207,145978.184122361 511918.906330695,145982.223122361 511920.567330695,145988.178345514 511923.326895495,145992.163345514 511925.389895495,146002.428346021 511931.803847377,146005.269346021 511933.915847377,146012.547718291 511940.082553283,146017.680718291 511945.025553283,146020.175831511 511947.54 [...]
+  			</op></test></case><case><desc>
+  				#88 Polygon - gid: 2588
+  			</desc>
+  			<a>POLYGON((167532.477985 512809.448985,167555.559985 512773.894985,167560.645985 512730.879985,167581.079985 512731.212985,167606.259985 512686.118985,167617.210985 512664.753985,167628.468985 512640.940985,167597.450985 512637.978985,167581.803985 512637.728985,167556.555985 512632.534985,167547.781985 512627.528985,167513.601985 512631.705985,167490.695985 512631.340985,167471.007985 512626.155985,167475.732985 512640.627985,167482.838985 512659.940985,167492.745985 512684.143985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#89 Polygon - gid: 2589
+  			</desc>
+  			<a>POLYGON((164372.606985 512890.176985,164324.811985 512880.193985,164323.666985 512914.388985,164331.604985 512958.853985,164350.402985 512964.195985,164391.299985 512979.726985,164454.259985 513002.043985,164502.492985 513022.119985,164552.192985 513041.053985,164558.382985 513043.657985,164576.953985 513051.470985,164592.038985 513040.219985,164595.863985 513032.750985,164611.578985 513009.064985,164629.578985 512994.920985,164626.260985 512987.836985,164600.829985 512976.485985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#90 Polygon - gid: 2590
+  			</desc>
+  			<a>POLYGON((155418.520985 513085.717985,155400.143985 513071.569985,155370.702985 513097.312985,155348.413985 513124.256985,155334.276985 513145.103985,155324.433985 513167.135985,155314.900985 513197.823985,155293.396985 513250.465985,155281.650985 513277.996985,155264.569985 513307.253985,155252.427985 513331.225985,155236.340985 513356.837985,155217.667985 513407.428985,155244.525985 513419.754985,155271.368985 513429.290985,155283.571985 513410.496985,155322.096985 513324.107985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#91 Polygon - gid: 2591
+  			</desc>
+  			<a>POLYGON((166387.863985 513465.987985,166413.814985 513435.239985,166454.386985 513435.727985,166462.438985 513436.310985,166456.999985 513382.178985,166446.221985 513361.906985,166439.149985 513358.988985,166405.819985 513348.211985,166349.398985 513333.283985,166288.061985 513312.194985,166276.204985 513316.629985,166264.022985 513356.675985,166262.695985 513364.228985,166258.961985 513385.471985,166282.343985 513410.305985,166286.133985 513412.866985,166327.046985 513440.506985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#92 Polygon - gid: 2592
+  			</desc>
+  			<a>POLYGON((153201.327985 513295.818985,153226.912985 513272.838985,153240.302985 513281.911985,153282.966985 513342.907985,153287.232985 513349.007985,153310.162985 513372.145985,153338.326985 513391.395985,153372.548985 513386.775985,153399.672985 513387.103985,153440.243985 513369.694985,153483.249985 513348.552985,153521.235985 513335.287985,153552.489985 513341.581985,153585.786985 513360.695985,153617.380985 513383.704985,153639.382985 513396.019985,153663.846985 513408.126985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>MULTIPOLYGON(((153314.366408853 513256.946373533,153344.425090418 513299.920762731,153344.428307148 513299.925362002,153345.019027492 513300.770039474,153357.292865102 513313.15521412,153362.514942791 513312.450229054,153373.455864573 513311.781468071,153384.696070673 513311.917391519,153408.891657558 513301.535074788,153450.161712931 513281.246475274,153458.523693422 513277.746131484,153496.509693422 513264.481131484,153509.454653284 5132 [...]
+  			</op></test></case><case><desc>
+  				#93 Polygon - gid: 2593
+  			</desc>
+  			<a>POLYGON((144142.989985 514088.951985,144136.449985 514054.961985,144132.731985 514033.263985,144127.866985 514013.332985,144126.033985 514004.523985,144123.194985 513984.498985,144121.950985 513977.743985,144119.474985 513965.987985,144116.997985 513955.498985,144114.004985 513944.396985,144111.364985 513935.792985,144104.055985 513915.874985,144099.268985 513901.813985,144095.552985 513888.833985,144092.293985 513878.724985,144090.002985 513870.475985,144088.955985 513866.101985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#94 Polygon - gid: 2594
+  			</desc>
+  			<a>POLYGON((146479.081985 514136.773985,146478.714985 514132.400985,146477.568985 514128.020985,146476.252985 514124.982985,146473.696985 514121.266985,146471.885985 514119.791985,146467.951985 514117.478985,146464.896985 514115.364985,146459.731985 514111.590985,146449.118985 514103.426985,146445.431985 514100.853985,146438.988985 514097.422985,146420.476985 514084.864985,146410.008985 514078.144985,146406.594985 514075.475985,146403.293985 514072.424985,146402.417985 514071.373985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>MULTIPOLYGON(((146011.847522543 513740.890335071,146014.984307229 513742.322478592,146018.011201398 513743.787321187,146024.428201398 513747.072321187,146033.566291871 513752.604961839,146036.493665821 513754.675862826,146042.935029827 513758.13166686,146051.440930471 513763.45702014,146055.082930471 513766.09202014,146057.700853077 513768.074842368,146065.722853077 513774.431842368,146070.2158857 513778.290706576,146075.6818857 513783.373 [...]
+  			</op></test></case><case><desc>
+  				#95 Polygon - gid: 2595
+  			</desc>
+  			<a>POLYGON((152747.244985 514163.075985,152750.222985 514162.865985,152762.227985 514163.357985,152765.838985 514164.275985,152776.630985 514167.853985,152784.077985 514169.654985,152795.626985 514175.727985,152800.056985 514177.203985,152805.566985 514178.290985,152810.480985 514178.365985,152815.012985 514179.178985,152819.420985 514179.392985,152823.072985 514177.882985,152827.019985 514175.502985,152835.565985 514171.245985,152837.084985 514170.146985,152841.503985 514165.822985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>MULTIPOLYGON(((152597.239547324 514029.678575879,152606.678441824 514038.183733586,152608.926208731 514040.294461888,152622.835937061 514053.904934079,152630.265885999 514060.764320717,152637.967903619 514069.033557604,152648.847903619 514082.640557604,152658.423790211 514098.16991668,152661.567790211 514105.01391668,152662.517340891 514107.225410577,152686.862372445 514102.435669934,152698.633931665 514098.961073367,152706.964296294 51409 [...]
+  			</op></test></case><case><desc>
+  				#96 Polygon - gid: 2596
+  			</desc>
+  			<a>POLYGON((154470.187985 514355.480985,154486.830985 514323.594985,154500.001985 514288.890985,154498.444985 514263.472985,154497.741985 514239.518985,154493.223985 514222.771985,154489.801985 514204.219985,154488.879985 514182.090985,154478.186985 514157.249985,154474.040985 514134.114985,154467.747985 514111.146985,154466.497985 514095.633985,154470.929985 514076.999985,154488.837985 514040.402985,154492.458985 514010.825985,154489.681985 513972.417985,154476.127985 513929.415985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((154372.475003626 514263.349143873,154396.706937495 514267.612531514,154403.170413394 514269.046426639,154423.988413027 514274.639380627,154423.585300499 514268.058575085,154423.477262909 514265.673131474,154423.033047317 514250.536943284,154420.812790206 514242.307052659,154419.468203972 514236.376571173,154416.046203972 514217.824571173,154414.866998649 514207.342135003,154414.520949841 514199.036588282,154409.298243715 514186.90 [...]
+  			</op></test></case><case><desc>
+  				#97 Polygon - gid: 2597
+  			</desc>
+  			<a>POLYGON((144573.637985 514299.611985,144569.108985 514299.348985,144562.201985 514299.403985,144559.226985 514299.220985,144554.798985 514298.485985,144551.780985 514297.383985,144547.881985 514295.120985,144545.571985 514292.973985,144542.929985 514289.294985,144542.014985 514286.888985,144540.935985 514282.467985,144536.953985 514270.768985,144535.431985 514264.430985,144527.414985 514231.256985,144525.265985 514220.631985,144523.947985 514211.728985,144523.487985 514204.993985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case><case><desc>
+  				#98 Polygon - gid: 2598
+  			</desc>
+  			<a>POLYGON((146978.395985 514128.105985,146993.088985 514109.724985,146990.935985 514109.919985,146986.515985 514108.676985,146984.834985 514107.491985,146981.559985 514104.355985,146978.605985 514100.856985,146976.054985 514097.475985,146971.011985 514090.004985,146967.745985 514085.474985,146964.701985 514082.154985,146959.542985 514075.969985,146956.337985 514072.894985,146952.680985 514071.027985,146947.749985 514069.211985,146939.485985 514065.648985,146927.297985 514062.022985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((146797.091534784 514198.560801946,146799.036341277 514196.430417783,146800.519647422 514194.878956067,146799.137713142 514194.468888446,146798.660722856 514195.421904049,146796.985503573 514198.644726154,146797.091534784 514198.560801946))
+  			</op></test></case><case><desc>
+  				#99 Polygon - gid: 2599
+  			</desc>
+  			<a>POLYGON((144130.790985 514542.589985,144136.106985 514541.268985,144140.618985 514541.819985,144146.580985 514542.271985,144155.308985 514545.689985,144159.779985 514546.073985,144165.774985 514546.027985,144170.614985 514545.336985,144174.457985 514542.248985,144180.591985 514535.602985,144185.031985 514531.945985,144188.930985 514529.699985,144202.240985 514526.170985,144204.522985 514525.434985,144208.647985 514523.675985,144209.506985 514523.064985,144212.582985 514519.733985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON((144176.60740853 514401.555584319,144177.632982782 514398.643143597,144179.373625931 514394.085531269,144178.682298521 514392.965629534,144176.60740853 514401.555584319))
+  			</op></test></case><case><desc>
+  				#100 Polygon - gid: 2600
+  			</desc>
+  			<a>POLYGON((153556.031985 514886.227985,153560.525985 514886.012985,153566.393985 514886.836985,153572.264985 514888.653985,153582.160985 514890.869985,153584.416985 514890.833985,153588.654985 514889.150985,153590.995985 514887.355985,153594.093985 514881.247985,153600.596985 514871.470985,153607.108985 514856.972985,153612.956985 514847.521985,153608.356985 514841.430985,153606.284985 514837.439985,153605.664985 514834.687985,153605.359985 514830.122985,153602.267985 514813.476985 [...]
+  			<test><op name='buffer' arg1='A' arg2='-75'>POLYGON( EMPTY)
+  			</op></test></case></run>
\ No newline at end of file
diff --git a/testxml/external/TestOverlay.xml b/testxml/external/TestOverlay.xml
new file mode 100644
index 0000000..3822ad4
--- /dev/null
+++ b/testxml/external/TestOverlay.xml
@@ -0,0 +1,23 @@
+<run>
+ 	<desc>Overlay function tests from external sources</desc>
+ 	<precisionModel type="FLOATING"/>
+ 	<!-- <geometryOperation>com.vividsolutions.jtstest.geomop.OverlayValidatedGeometryOperation</geometryOperation> -->
+
+<case>
+  <desc>
+    http://trac.osgeo.org/geos/ticket/275
+  </desc>
+<a>
+MULTIPOLYGON (((97.4196581300587923 1391.7094503287939915, 1097.3929445351700451 1659.6432199333848985, 2097.6867783781326580 1391.5243492190379584, 2829.5979618286305595 659.3760732813996128, 3097.3929252677053228 -340.6343946513263745, 2829.3203546600025220 -1340.5704802618731719, 2566.4316545475776365 -1603.3983692935935323, 2589.9586987092807249 -1691.2539814346002913, 2550.3216026895242976 -1839.1041048139375107, 2582.0225141513105882 -1957.4828931887502677, 2523.0465473393464890 -2 [...]
+</a>
+
+<b>
+POLYGON ((-3138.9918179090095691 39.9929298181513317, -3195.9318721744207323 131.7765582775780331, -3194.3605115562841092 132.7513874532058367, -3212.0423376604862824 158.6894340550911124, -3276.1445017965443185 291.8192670418299599, -3319.6893497161845517 433.0158891602736730, -3341.7042188351406367 579.1253871940372164, -3341.7041685876552037 580.2082322725017320, -3341.7842797495400191 580.2023206768839145, -3358.7842797495400191 810.5783206768840046, -3358.7041685876552037 810.584232 [...]
+</b>
+<test>
+	<op name="union" arg1="A" arg2="B">
+POLYGON ((-3138.9918179090096 39.99292981815133, -3195.9318721744207 131.77655827757803, -3194.360511556284 132.75138745320584, -3212.0423376604863 158.6894340550911, -3276.1445017965443 291.81926704182996, -3319.6893497161846 433.0158891602737, -3341.7042188351406 579.1253871940372, -3341.704168587655 580.2082322725017, -3341.78427974954 580.2023206768839, -3358.78427974954 810.578320676884, -3358.704168587655 810.5842322725018, -3358.6973623564327 957.2601088689079, -3336.668933433432  [...]
+	</op>
+</test>
+</case>
+</run>
diff --git a/testxml/failure/TestBigNastyBuffer.xml b/testxml/failure/TestBigNastyBuffer.xml
new file mode 100644
index 0000000..5356420
--- /dev/null
+++ b/testxml/failure/TestBigNastyBuffer.xml
@@ -0,0 +1,27 @@
+ <!--
+ -->
+
+<run>
+  <desc>
+ Test case provided by Dale Lutz (dale dot lutz at safe dot com).
+ Written permission to use the data for tests has been given
+ by email on the 22 Dec 2006.
+  </desc>
+  <precisionModel type='FLOATING'/>
+  <resultMatcher>com.vividsolutions.jtstest.testrunner.BufferResultMatcher</resultMatcher>
+<case>
+  <desc>
+  	Big Bad Nasty buffer
+  	Note: the expected result has been cleaned up manually from what is returned by JTS 1.10, 
+  	since there are visually determined problems with the actual computed value (i.e a small hole).
+  </desc>
+  <a>
+ POLYGON((377888.21875 5686717.5,377888.09375 5686717.5,377886.46875 5686721,377885.25 5686725,377884.40625 5686730.5,377883.59375 5686735,377883.5625 5686737,377883.5 5686743.5,377883.09375 5686747,377883.03125 5686752.5,377883 5686758,377883.75 5686762,377884.46875 5686767.5,377885.25 5686771.5,377885.21875 5686775,377887.53125 5686781,377891.8125 5686788,377895.4375 5686792,377896.5 5686793,377900.03125 5686797,377905.5 5686802.5,377908.65625 5686804.5,377911.40625 5686807.5,377915.34 [...]
+</a>
+<test>
+  <op name="buffer" arg1="a" arg3="60">
+ POLYGON((377787.21236766 5686430.83570257,377787.091569461 5686434.83708883,377787.737693002 5686438.88795447,377787.864087559 5686442.68909533,377788.459649403 5686444.80578393,377788.880197144 5686448.70852724,377792.362122552 5686459.86695051,377797.94149236 5686470.13850574,377798.930849234 5686471.33060785,377799.58710372 5686472.52852275,377804.899910503 5686478.52288668,377805.406547456 5686479.13334686,377805.529915074 5686479.23371183,377805.644567469 5686479.36307249,377807.39 [...]
+  </op>
+</test>
+</case>
+</run>
diff --git a/testxml/failure/TestOverlay.xml b/testxml/failure/TestOverlay.xml
new file mode 100644
index 0000000..8a89c4d
--- /dev/null
+++ b/testxml/failure/TestOverlay.xml
@@ -0,0 +1,112 @@
+<run>
+
+<case>
+  <desc>
+    http://postgis.refractions.net/pipermail/postgis-users/2006-November/013743.html
+  </desc>
+<a>
+POLYGON((5417148.108 5658342.603,5417139.016
+5658338.009,5417126.791 5658331.833,5417116.292 5658327.518,5417112.871
+5658325.598,5417110.25 5658324.127,5417106.071 5658321.781,5417104.226
+5658320.745,5417093.266 5658315.008,5417091.265 5658313.961,5417085.335
+5658310.857,5417060.44 5658326.26,5417064.68 5658327.52,5417088.83
+5658336.46,5417088.52 5658337.31,5417102.92 5658342.65,5417103.26
+5658341.83,5417111.76 5658345.51,5417121.662 5658349.583,5417121.878
+5658349.672,5417125.217 5658351.119,5417131.761 5658353.388,5417137.589
+5658356.276,5417142.166 5658359.67,5417146.599 5658364.988,5417151.395
+5658370.641,5417150.853 5658371.392,5417152.59741167
+5658373.52811061,5417154.92 5658376.37,5417155.18955743
+5658376.89699992,5417154.919 5658376.371,5417155.814
+5658378.111,5417157.051 5658380.297,5417158.004 5658382.304,5417159.014
+5658384.47,5417159.775 5658386.619,5417160.629 5658389.278,5417161.5
+5658399.49,5417160.773 5658404.194,5417159.41 5658413.02,5417158.853
+5658414.442,5417153.671 5658427.659,5417153.67051161
+5658427.6586943,5417153.67 5658427.66,5417152.73 5658427.07,5417149.993
+5658436.599,5417148.81 5658439.42,5417149.233 5658439.67,5417148.36
+5658440.81,5417146.41 5658446.6,5417144.321 5658453.127,5417144.32092232
+5658453.13043826,5417154.59 5658458.01,5417154.99551047
+5658455.8409905,5417155.446 5658453.413,5417157.23981414
+5658448.75748237,5417157.22660892 5658448.57861162,5417157.22660849
+5658448.57860592,5417157.22660865 5658448.57860812,5417157.128
+5658447.265,5417157.64950997 5658446.06368023,5417157.64950961
+5658446.06368108,5417158.314 5658444.533,5417172.322
+5658417.957,5417174.99 5658418.57,5417175.23 5658417.74,5417176.696
+5658412.61,5417177.875 5658408.488,5417178.76 5658405.39,5417178.1
+5658393.55,5417178.08 5658393.36,5417177.11 5658384.95,5417178.151
+5658384.915,5417178.14836289 5658384.91508866,5417178.12
+5658384.83,5417177.91415246 5658383.81114117,5417176.927
+5658378.944,5417176.603 5658377.341,5417176.73975922
+5658378.01762048,5417176.6 5658377.34,5417176.51210558
+5658376.89535766,5417176.428 5658376.483,5417175.235
+5658370.602,5417171.577 5658362.886,5417170.762 5658360.107,5417168.522
+5658357.989,5417166.042 5658355.047,5417164.137 5658352.264,5417162.642
+5658351.593,5417160.702 5658350.843,5417160.05417889
+5658350.5823586,5417158.82 5658350.09,5417158.82103105
+5658350.0862195,5417159.50373263 5658350.36089455,5417158.818
+5658350.085,5417159.055 5658349.214,5417155.754
+5658347.679,5417156.78066321 5658348.15640928,5417155.7525011
+5658347.6811561,5417155.161 5658348.532,5417149.028
+5658343.237,5417152.26877967 5658346.03496647,5417149.03
+5658343.24,5417148.78133339 5658343.06701453,5417148.108
+5658342.603))
+</a>
+
+<b>
+POLYGON((5417148.36 5658440.81,5417149.233
+5658439.67,5417148.81 5658439.42,5417149.993 5658436.599,5417152.73
+5658427.07,5417153.67 5658427.66,5417153.67051161
+5658427.6586943,5417153.671 5658427.659,5417158.853
+5658414.442,5417159.41 5658413.02,5417160.773 5658404.194,5417161.5
+5658399.49,5417160.63 5658389.28,5417159.78 5658386.62,5417159.366239
+5658385.46469333,5417159.014 5658384.47,5417158.004
+5658382.304,5417157.051 5658380.297,5417155.814
+5658378.111,5417155.18955747 5658376.897,5417154.92
+5658376.37,5417152.59740379 5658373.52810095,5417150.853
+5658371.392,5417151.13020611 5658371.00790076,5417151.4
+5658370.64,5417147.11100598 5658365.59149663,5417146.599
+5658364.988,5417145.96673439 5658364.22950947,5417142.17
+5658359.67,5417139.98754716 5658358.05460369,5417137.589
+5658356.276,5417131.761 5658353.388,5417125.33011568
+5658351.15822058,5417125.22 5658351.12,5417121.88 5658349.67,5417121.66
+5658349.58,5417111.76 5658345.51,5417103.26 5658341.83,5417102.92
+5658342.65,5417088.52 5658337.31,5417088.83 5658336.46,5417064.68
+5658327.52,5417060.44 5658326.26,5417085.34 5658310.86,5417085.90750076
+5658311.15666987,5417091.265 5658313.961,5417093.266
+5658315.008,5417093.61266829 5658315.18946314,5417104.23
+5658320.75,5417105.81727304 5658321.63852784,5417106.071
+5658321.781,5417106.60319005 5658322.07975996,5417110.25
+5658324.13,5417112.87 5658325.6,5417116.29 5658327.52,5417121.76604303
+5658329.76778528,5417126.791 5658331.833,5417139.016
+5658338.009,5417148.108 5658342.603,5417148.78133333
+5658343.06701449,5417149.03 5658343.24,5417152.26878253
+5658346.03496893,5417155.161 5658348.532,5417155.7525011
+5658347.6811561,5417156.78066337 5658348.15640935,5417159.055
+5658349.214,5417158.818 5658350.085,5417158.82103105
+5658350.0862195,5417158.82 5658350.09,5417160.0541792
+5658350.58235872,5417160.702 5658350.843,5417162.642
+5658351.593,5417164.137 5658352.264,5417165.25343486
+5658353.89499119,5417166.04 5658355.05,5417168.52 5658357.99,5417170.76
+5658360.11,5417171.26171711 5658361.81094338,5417171.577
+5658362.886,5417175.235 5658370.602,5417176.428
+5658376.483,5417176.51210558 5658376.89535766,5417176.6
+5658377.34,5417176.73975924 5658378.01762057,5417176.927
+5658378.944,5417177.91415134 5658383.81113564,5417178.12
+5658384.83,5417178.14836289 5658384.91508866,5417177.11
+5658384.95,5417178.08 5658393.36,5417178.1 5658393.55,5417178.76
+5658405.39,5417177.875 5658408.488,5417176.696 5658412.61,5417175.23
+5658417.74,5417174.99 5658418.57,5417172.322
+5658417.957,5417172.32037372 5658417.96008538,5417172.32
+5658417.96,5417158.31 5658444.53,5417157.64951003
+5658446.06368011,5417157.128 5658447.265,5417157.22660867
+5658448.5786084,5417157.23981414 5658448.75748238,5417155.446
+5658453.413,5417154.99551072 5658455.84098918,5417154.59
+5658458.01,5417144.32092232 5658453.13043826,5417144.321
+5658453.127,5417146.41 5658446.6,5417148.36 5658440.81))
+</b>
+<test>
+	<op name="difference" arg1="A" arg2="B">
+POLYGON EMPTY
+	</op>
+</test>
+</case>
+</run>
diff --git a/test/vivid/TestBoundary.xml b/testxml/general/TestBoundary.xml
similarity index 84%
rename from test/vivid/TestBoundary.xml
rename to testxml/general/TestBoundary.xml
index a291c5f..a80a6c3 100644
--- a/test/vivid/TestBoundary.xml
+++ b/testxml/general/TestBoundary.xml
@@ -16,7 +16,7 @@
 <case>
   <desc>mP - MultiPoint</desc>
   <a>
-    MULTIPOINT(10 10, 20 20)
+    MULTIPOINT((10 10), (20 20))
   </a>
 <test>
   <op name="getboundary" arg1="A">
@@ -32,7 +32,7 @@
   </a>
 <test>
   <op name="getboundary" arg1="A">
-    MULTIPOINT(10 10, 20 20)
+    MULTIPOINT((10 10), (20 20))
   </op>
 </test>
 </case>
@@ -56,7 +56,7 @@
   </a>
 <test>
   <op name="getboundary" arg1="A">
-    MULTIPOINT(40 40, 100 100)
+    MULTIPOINT((40 40), (100 100))
   </op>
 </test>
 </case>
@@ -70,7 +70,7 @@
   </a>
 <test>
   <op name="getboundary" arg1="A">
-    MULTIPOINT(10 10, 30 30)
+    MULTIPOINT((10 10), (30 30))
   </op>
 </test>
 </case>
@@ -85,7 +85,7 @@
   </a>
 <test>
   <op name="getboundary" arg1="A">
-    MULTIPOINT(10 10, 20 20, 30 20, 30 30)
+    MULTIPOINT((10 10), (20 20), (30 20), (30 30))
   </op>
 </test>
 </case>
@@ -101,7 +101,7 @@
   </a>
 <test>
   <op name="getboundary" arg1="A">
-    MULTIPOINT(10 10, 30 20, 30 30, 30 40)
+    MULTIPOINT((10 10), (30 20), (30 30), (30 40))
   </op>
 </test>
 </case>
@@ -115,7 +115,7 @@
   </a>
 <test>
   <op name="getboundary" arg1="A">
-    MULTIPOINT(10 10, 20 20)
+    MULTIPOINT((10 10), (20 20))
   </op>
 </test>
 </case>
@@ -128,7 +128,7 @@
   </a>
 <test>
   <op name="getboundary" arg1="A">
-    MULTIPOINT(10 10, 20 20)
+    MULTIPOINT((10 10), (20 20))
   </op>
 </test>
 </case>
diff --git a/testxml/general/TestBuffer.xml b/testxml/general/TestBuffer.xml
new file mode 100644
index 0000000..9711f49
--- /dev/null
+++ b/testxml/general/TestBuffer.xml
@@ -0,0 +1,119 @@
+<run>
+  <desc>
+    Basic buffer test cases.
+  </desc>
+  <precisionModel type="FLOATING" />
+  <resultMatcher>com.vividsolutions.jtstest.testrunner.BufferResultMatcher</resultMatcher>
+
+<case>
+  <desc>
+  	Point
+  </desc>
+  <a>
+    POINT (100 100)
+  </a>
+<test><op name='buffer' arg1='A' arg2='-1.0'>   POLYGON EMPTY  </op></test>
+<test><op name='buffer' arg1='A' arg2='0.0'>    POLYGON EMPTY  </op></test>
+<test><op name='buffer' arg1='A' arg2='10.0'>   
+	POLYGON ((110 100, 109.80785280403231 98.04909677983872, 109.23879532511287 96.1731656763491, 108.31469612302546 94.44429766980397, 107.07106781186548 92.92893218813452, 105.55570233019603 91.68530387697454, 103.8268343236509 90.76120467488713, 101.95090322016128 90.19214719596769, 100 90, 98.04909677983872 90.19214719596769, 96.1731656763491 90.76120467488713, 94.44429766980397 91.68530387697454, 92.92893218813452 92.92893218813452, 91.68530387697454 94.44429766980397, 90.7612046748871 [...]
+	</op></test>
+</case>
+
+<case>
+  <desc>
+  	Line
+  </desc>
+  <a>
+    LINESTRING (10 10, 100 100)
+  </a>
+<test><op name='buffer' arg1='A' arg2='-1.0'>   POLYGON EMPTY  </op></test>
+<test><op name='buffer' arg1='A' arg2='0.0'>    POLYGON EMPTY  </op></test>
+<test><op name='buffer' arg1='A' arg2='10.0'>   
+	POLYGON ((92.92893218813452 107.07106781186548, 94.44429766980397 108.31469612302546, 96.1731656763491 109.23879532511287, 98.04909677983872 109.80785280403231, 100 110, 101.95090322016128 109.80785280403231, 103.8268343236509 109.23879532511287, 105.55570233019603 108.31469612302546, 107.07106781186548 107.07106781186548, 108.31469612302546 105.55570233019603, 109.23879532511287 103.8268343236509, 109.80785280403231 101.95090322016128, 110 100, 109.80785280403231 98.04909677983872, 109 [...]
+  </op></test>
+</case>
+
+<case>
+  <desc>
+  	Polygon
+  </desc>
+  <a>
+	POLYGON ((100 100, 100 200, 200 200, 200 100, 100 100))
+  </a>
+<test><op name='buffer' arg1='A' arg2='-100.0'>   POLYGON EMPTY  </op></test>
+<test><op name='buffer' arg1='A' arg2='-10.0'>   POLYGON ((110 110, 110 190, 190 190, 190 110, 110 110))  </op></test>
+<test><op name='buffer' arg1='A' arg2='0.0'>    POLYGON ((100 100, 100 200, 200 200, 200 100, 100 100))  </op></test>
+<test><op name='buffer' arg1='A' arg2='10.0'>   
+	POLYGON ((100 90, 98.04909677983872 90.19214719596769, 96.1731656763491 90.76120467488714, 94.44429766980397 91.68530387697454, 92.92893218813452 92.92893218813452, 91.68530387697454 94.44429766980397, 90.76120467488713 96.1731656763491, 90.19214719596769 98.04909677983872, 90 100, 90 200, 90.19214719596769 201.95090322016128, 90.76120467488713 203.8268343236509, 91.68530387697454 205.55570233019603, 92.92893218813452 207.07106781186548, 94.44429766980397 208.31469612302544, 96.17316567 [...]
+  </op></test>
+<test><op name='buffer' arg1='A' arg2='20.0'>   
+	POLYGON ((100 80, 96.09819355967743 80.3842943919354, 92.3463313526982 81.52240934977428, 88.88859533960796 83.37060775394909, 85.85786437626905 85.85786437626905, 83.37060775394909 88.88859533960796, 81.52240934977426 92.3463313526982, 80.38429439193538 96.09819355967743, 80 100, 80 200, 80.38429439193538 203.90180644032256, 81.52240934977426 207.6536686473018, 83.37060775394909 211.11140466039205, 85.85786437626905 214.14213562373095, 88.88859533960796 216.6293922460509, 92.3463313526 [...]
+  </op></test>
+<test><op name='buffer' arg1='A' arg2='100.0'>   
+	POLYGON ((100 0, 80.49096779838713 1.921471959676964, 61.73165676349097 7.61204674887135, 44.442976698039786 16.85303876974548, 29.28932188134523 29.28932188134526, 16.853038769745453 44.44297669803981, 7.612046748871322 61.73165676349103, 1.9214719596769498 80.49096779838716, 0 100, 0 200, 1.9214719596769498 219.50903220161285, 7.612046748871322 238.268343236509, 16.853038769745467 255.55702330196021, 29.28932188134526 270.71067811865476, 44.44297669803981 283.14696123025453, 61.731656 [...]
+  </op></test>
+</case>
+
+<case>
+  <desc>
+  	Polygon
+  </desc>
+  <a>
+	POLYGON ((80 300, 280 300, 280 80, 80 80, 80 300), (260 280, 180 200, 100 280, 100 100, 260 100, 260 280))
+  </a>
+<test><op name='buffer' arg1='A' arg2='-100.0'>   POLYGON EMPTY  </op></test>
+<test><op name='buffer' arg1='A' arg2='-10.0'>   
+		MULTIPOLYGON (((90 100, 90.19214719596769 98.04909677983872, 90.76120467488713 96.1731656763491, 91.68530387697454 94.44429766980397, 92.92893218813452 92.92893218813452, 94.44429766980397 91.68530387697454, 96.1731656763491 90.76120467488713, 98.04909677983872 90.19214719596769, 100 90, 90 90, 90 100)), 
+  	((260 90, 261.9509032201613 90.19214719596769, 263.82683432365087 90.76120467488713, 265.555702330196 91.68530387697454, 267.0710678118655 92.92893218813452, 268.31469612302544 94.44429766980397, 269.23879532511285 96.1731656763491, 269.8078528040323 98.04909677983872, 270 100, 270 90, 260 90)), 
+  	((270 280, 269.8078528040323 281.9509032201613, 269.23879532511285 283.82683432365087, 268.31469612302544 285.555702330196, 267.0710678118655 287.0710678118655, 265.555702330196 288.31469612302544, 263.82683432365087 289.23879532511285, 261.9509032201613 289.8078528040323, 260 290, 270 290, 270 280)), 
+  	((260 290, 258.0490967798387 289.8078528040323, 256.17316567634913 289.23879532511285, 254.44429766980397 288.31469612302544, 252.92893218813452 287.0710678118655, 180 214.14213562373095, 107.07106781186548 287.0710678118655, 105.55570233019603 288.31469612302544, 103.8268343236509 289.23879532511285, 101.95090322016128 289.8078528040323, 100 290, 260 290)), 
+  	((100 290, 98.04909677983872 289.8078528040323, 96.1731656763491 289.23879532511285, 94.44429766980397 288.31469612302544, 92.92893218813452 287.0710678118655, 91.68530387697454 285.555702330196, 90.76120467488713 283.82683432365087, 90.19214719596769 281.9509032201613, 90 280, 90 290, 100 290)))
+    </op></test>
+<test><op name='buffer' arg1='A' arg2='0.0'>    
+	POLYGON ((80 300, 280 300, 280 80, 80 80, 80 300), 
+  	(260 280, 180 200, 100 280, 100 100, 260 100, 260 280))
+  </op></test>
+<test><op name='buffer' arg1='A' arg2='10.0'>   
+	POLYGON ((70 300, 70.19214719596769 301.9509032201613, 70.76120467488713 303.82683432365087, 71.68530387697454 305.555702330196, 72.92893218813452 307.0710678118655, 74.44429766980397 308.31469612302544, 76.1731656763491 309.23879532511285, 78.04909677983872 309.8078528040323, 80 310, 280 310, 281.9509032201613 309.8078528040323, 283.82683432365087 309.23879532511285, 285.555702330196 308.31469612302544, 287.0710678118655 307.0710678118655, 288.31469612302544 305.555702330196, 289.23879 [...]
+  	(250 255.85786437626905, 187.07106781186548 192.92893218813452, 185.55570233019603 191.68530387697456, 183.8268343236509 190.76120467488713, 181.95090322016128 190.1921471959677, 180 190, 178.04909677983872 190.1921471959677, 176.1731656763491 190.76120467488713, 174.44429766980397 191.68530387697456, 172.92893218813452 192.92893218813452, 110 255.85786437626905, 110 110, 250 110, 250 255.85786437626905))
+ </op></test>
+<test><op name='buffer' arg1='A' arg2='20.0'>   
+	POLYGON ((60 300, 60.38429439193539 303.90180644032256, 61.522409349774264 307.6536686473018, 63.370607753949095 311.11140466039205, 65.85786437626905 314.14213562373095, 68.88859533960796 316.6293922460509, 72.3463313526982 318.47759065022575, 76.09819355967744 319.6157056080646, 80 320, 280 320, 283.90180644032256 319.6157056080646, 287.6536686473018 318.47759065022575, 291.11140466039205 316.6293922460509, 294.14213562373095 314.14213562373095, 296.6293922460509 311.11140466039205, 2 [...]
+  	(240 231.7157287525381, 194.14213562373095 185.85786437626905, 191.11140466039205 183.3706077539491, 187.6536686473018 181.52240934977425, 183.90180644032256 180.38429439193538, 180 180, 176.09819355967744 180.38429439193538, 172.3463313526982 181.52240934977425, 168.88859533960795 183.3706077539491, 165.85786437626905 185.85786437626905, 120 231.7157287525381, 120 120, 240 120, 240 231.7157287525381))
+  </op></test>
+<test><op name='buffer' arg1='A' arg2='100.0'>   
+	POLYGON ((-20 300, -18.07852804032305 319.50903220161285, -12.387953251128678 338.268343236509, -3.146961230254533 355.5570233019602, 9.28932188134526 370.71067811865476, 24.442976698039807 383.14696123025453, 41.731656763491024 392.3879532511287, 60.49096779838718 398.078528040323, 80 400, 280 400, 299.50903220161285 398.078528040323, 318.268343236509 392.3879532511287, 335.5570233019602 383.14696123025453, 350.71067811865476 370.71067811865476, 363.14696123025453 355.5570233019602, 37 [...]
+  </op></test>
+</case>
+
+<case>
+  <desc>
+  	MultiLineString which caused failure for distance > 10 in ver 1.10
+  </desc>
+  <a>
+    MULTILINESTRING ((1335558.59524 631743.01449, 1335572.28215 631775.89056, 1335573.2578018496 631782.1915185435), 
+  (1335573.2578018496 631782.1915185435, 1335576.62035 631803.90754), 
+  (1335573.2578018496 631782.1915185435, 1335580.70187 631802.08139))
+  </a>
+<test><op name='buffer' arg1='A' arg2='10.0'>   
+POLYGON ((1335548.595256113 631743.032441783, 1335548.790905219 631744.982996921, 1335549.363329412 631746.857903442, 1335562.585102127 631778.616709872, 1335563.375568292 631783.721701512, 1335566.738116443 631805.437722968, 1335567.226524677 631807.336249059, 1335568.075932351 631809.103011783, 1335569.253697204 631810.67011544, 1335570.714558392 631811.977337115, 1335572.402375839 631812.974441013, 1335574.252287668 631813.62310899, 1335576.193202805 631813.898413099, 1335578.15053296 [...]
+  </op></test>
+<test><op name='buffer' arg1='A' arg2='15.0'>   
+POLYGON ((1335543.59526417 631743.041417674, 1335543.888737828 631745.967250381, 1335544.747374117 631748.779610163, 1335557.736578191 631779.97978481, 1335558.434451514 631784.486792996, 1335561.796999664 631806.202814452, 1335562.529612016 631809.050603588, 1335563.803723527 631811.700747674, 1335565.570370805 631814.051403159, 1335567.761662587 631816.012235673, 1335570.293388759 631817.507891519, 1335573.068256502 631818.480893485, 1335575.979629207 631818.893849648, 1335578.91562445 [...]
+  </op></test>
+</case>
+
+<case>
+  <desc>
+  	Degenerate polygon which caused error in ver 1.10
+  </desc>
+  <a>
+    POLYGON ((-69 -90, -69 -90, -69 -90, -69 -90, -69 -90, -69 -90, -69 -90, -69 -90, -69 -90, -69 -90, -69 -90, -69 -90))
+  </a>
+<test><op name='buffer' arg1='A' arg2='0.0'>   
+POLYGON EMPTY
+  </op></test>
+</case>
+
+
+</run>
diff --git a/testxml/general/TestBufferMitredJoin.xml b/testxml/general/TestBufferMitredJoin.xml
new file mode 100644
index 0000000..8af642c
--- /dev/null
+++ b/testxml/general/TestBufferMitredJoin.xml
@@ -0,0 +1,60 @@
+<run>
+  <desc>
+    Test cases for buffers with mitred joins.
+  </desc>
+  <precisionModel type="FLOATING" />
+  <resultMatcher>com.vividsolutions.jtstest.testrunner.BufferResultMatcher</resultMatcher>
+
+<case>
+ <desc>Polygon with very close vertices  </desc>
+  <a>
+POLYGON ((588736.6028960398 4518922.914991864, 588736.1060708747 4518922.061957178, 588718.6830715544 4518930.620699637, 588712.0102834741 4518933.8985304395, 588722.7612465625 4518964.956739423, 588755.2073151038 4518948.2420851765, 588750.2892019567 4518938.490656119, 588750.2892047082 4518938.490654858, 588741.1098934844 4518920.290260831, 588736.6028960398 4518922.914991864))
+  </a>
+<test><op name='bufferMitredJoin' arg1='A' arg2='-5.0'>   
+POLYGON ((588734.1297355227 4518928.603500288, 588720.8876067492 4518935.108463509, 588718.180507909 4518936.438254274, 588725.599306024 4518957.870248819, 588748.510613743 4518946.067444841, 588745.824857241 4518940.742239175, 588739.0370049385 4518927.28353524, 588734.7985587667 4518929.751873097, 588734.1297355227 4518928.603500288))
+	</op></test>
+</case>
+
+<case>
+ <desc>Polygon with almost collinear segments  </desc>
+  <a>
+    POLYGON ((589300.089821923 4519627.577687806, 589296.6197410262 4519621.834087054, 589292.5450979208 4519615.089809029, 589282.7894421419 4519620.983829066, 589289.8814929381 4519632.722288636, 589300.089821923 4519627.577687806))
+  </a>
+<test><op name='bufferMitredJoin' arg1='A' arg2='-5.0'>   
+POLYGON ((589293.0184401305 4519625.542333956, 589292.3401596148 4519624.419659127, 589290.8510825798 4519621.954964854, 589289.654619631 4519622.677825188, 589291.766473935 4519626.173276233, 589293.0184401305 4519625.542333956))
+	</op></test>
+</case>
+
+<case>
+ <desc>Polygon with almost collinear segments  </desc>
+  <a>
+POLYGON ((588978.2942617612 4519797.499233156, 588989.1612999197 4519792.050291001, 588982.5784094566 4519779.549041149, 588962.0866377753 4519790.334848753, 588967.4026187821 4519802.960530801, 588978.2942617612 4519797.499233156))
+  </a>
+<test><op name='bufferMitredJoin' arg1='A' arg2='-5.0'>   
+POLYGON ((588976.0531144794 4519793.029640461, 588982.3607149989 4519789.866888121, 588980.48352001 4519786.3019976355, 588968.47502784 4519792.622646146, 588969.9375199836 4519796.09612748, 588976.0531144794 4519793.029640461))
+	</op></test>
+</case>
+
+<case>
+ <desc>Polygon with almost collinear segments  </desc>
+  <a>
+POLYGON ((589099.8017397423 4518490.719003885, 589097.1198886324 4518486.20858194, 589090.9424687021 4518475.819013388, 589069.8993093553 4518487.1362185385, 589078.7377975255 4518502.093799692, 589081.1515112884 4518509.334764771, 589103.7370954598 4518497.015419995, 589099.8017397423 4518490.719003885))
+  </a>
+<test><op name='bufferMitredJoin' arg1='A' arg2='-5.0'>  
+POLYGON ((589095.5298653984 4518493.317948498, 589092.8222002359 4518488.763943842, 589089.0925332544 4518482.491158241, 589076.8521287646 4518489.074160654, 589083.3129233124 4518500.0079495255, 589084.0046933009 4518502.083060501, 589096.6851902619 4518495.166462162, 589095.5298653984 4518493.317948498)) 
+	</op></test>
+</case>
+
+<case>
+ <desc>Polygon with very close vertices  </desc>
+  <a>
+POLYGON ((587854.8616905196 4519121.941123185, 587863.6671614297 4519138.176489661, 587863.9386104685 4519138.676991724, 587880.5408633598 4519129.672513268, 587871.463857397 4519112.9366913745, 587854.8616905196 4519121.941123185))
+  </a>
+<test><op name='bufferMitredJoin' arg1='A' arg2='-5.0'>  
+POLYGON ((587861.6406480775 4519123.952511722, 587865.9500049312 4519131.898025201, 587873.7618842344 4519127.661136427, 587869.4524883915 4519119.715644092, 587861.6406480775 4519123.952511722))
+	</op></test>
+</case>
+
+
+
+</run>
diff --git a/test/vivid/TestCentroid.xml b/testxml/general/TestCentroid.xml
similarity index 85%
rename from test/vivid/TestCentroid.xml
rename to testxml/general/TestCentroid.xml
index d5f740d..d82fd3a 100644
--- a/test/vivid/TestCentroid.xml
+++ b/testxml/general/TestCentroid.xml
@@ -9,13 +9,13 @@
 
 <case>
   <desc>mP - two points</desc>
-  <a>    MULTIPOINT(10 10, 20 20 )  </a>
+  <a>    MULTIPOINT((10 10), (20 20) )  </a>
 <test><op name="getCentroid" arg1="A" >    POINT(15 15)   </op></test>
 </case>
 
 <case>
   <desc>mP - 4 points</desc>
-  <a>    MULTIPOINT(10 10, 20 20, 10 20, 20 10)  </a>
+  <a>    MULTIPOINT((10 10), (20 20), (10 20), (20 10))  </a>
 <test><op name="getCentroid" arg1="A" >    POINT(15 15)   </op></test>
 </case>
 
@@ -115,7 +115,7 @@
 <case>
   <desc>GC - heterogeneous collection of lines, points</desc>
   <a>    GEOMETRYCOLLECTION (LINESTRING (80 0, 80 120, 120 120, 120 0), 
-  MULTIPOINT (20 60, 40 80, 60 60))
+  MULTIPOINT ((20 60), (40 80), (60 60)))
 	</a>
 <test><op name="getCentroid" arg1="A" >    POINT (100 69)   </op></test>
 </case>
@@ -132,7 +132,7 @@
   <desc>GC - heterogeneous collection of polygons, lines, points</desc>
   <a>    GEOMETRYCOLLECTION (POLYGON ((0 40, 40 40, 40 0, 0 0, 0 40)), 
   LINESTRING (80 0, 80 80, 120 40), 
-  MULTIPOINT (20 60, 40 80, 60 60))
+  MULTIPOINT ((20 60), (40 80), (60 60)))
 	</a>
 <test><op name="getCentroid" arg1="A" >    POINT (20 20)   </op></test>
 </case>
@@ -145,5 +145,18 @@
 <test><op name="getCentroid" arg1="A" >    POINT (40 40)   </op></test>
 </case>
 
+<case>
+  <desc>A - degenerate box</desc>
+  <a>    POLYGON ((40 160, 160 160, 160 160, 40 160, 40 160))  </a>
+<test><op name="getCentroid" arg1="A" >    POINT (100 160)   </op></test>
+</case>
+
+<case>
+  <desc>A - degenerate triangle</desc>
+  <a>    POLYGON ((10 10, 100 100, 100 100, 10 10))  </a>
+<test><op name="getCentroid" arg1="A" >    POINT (55 55)   </op></test>
+</case>
+
+
 
 </run>
diff --git a/test/vivid/TestConvexHull-big.xml b/testxml/general/TestConvexHull-big.xml
similarity index 64%
rename from test/vivid/TestConvexHull-big.xml
rename to testxml/general/TestConvexHull-big.xml
index c6c39b5..8c36b1d 100644
--- a/test/vivid/TestConvexHull-big.xml
+++ b/testxml/general/TestConvexHull-big.xml
@@ -4,7 +4,7 @@
 <case>
   <desc>Big convex hull</desc>
   <a>
-    MULTIPOINT(-1000000000000000000000000 -1000000000000000000000000, 1000000000000000000000000 -1000000000000000000000000, 1000000000000000000000000 1000000000000000000000000, -1000000000000000000000000 1000000000000000000000000, 0 0)
+    MULTIPOINT((-1000000000000000000000000 -1000000000000000000000000), (1000000000000000000000000 -1000000000000000000000000), (1000000000000000000000000 1000000000000000000000000), (-1000000000000000000000000 1000000000000000000000000), (0 0))
   </a>
 <test>
   <op name="convexhull" arg1="A">
diff --git a/test/vivid/TestConvexHull.xml b/testxml/general/TestConvexHull.xml
similarity index 74%
rename from test/vivid/TestConvexHull.xml
rename to testxml/general/TestConvexHull.xml
index 3dc7028..af5c12e 100644
--- a/test/vivid/TestConvexHull.xml
+++ b/testxml/general/TestConvexHull.xml
@@ -4,7 +4,7 @@
 <case>
   <desc>Several points collinear and overlapping</desc>
   <a>
-    MULTIPOINT(130 240, 130 240, 130 240, 570 240, 570 240, 570 240, 650 240)
+    MULTIPOINT((130 240), (130 240), (130 240), (570 240), (570 240), (570 240), (650 240))
   </a>
 <test>
   <op name="convexhull" arg1="A">
@@ -110,10 +110,7 @@
 <case>
   <desc>Most of the points in one area</desc>
   <a>
-    MULTIPOINT(70 340, 70 50, 430 50, 420 340, 340 120, 390 110, 390 70, 350 100, 350 50, 
-    370 90, 320 80, 360 120, 350 80, 390 90, 420 80, 410 60, 410 100, 370 100, 380 60, 
-    370 80, 380 100, 360 80, 370 80, 380 70, 390 80, 390 70, 410 70, 400 60, 410 60, 
-    410 60, 410 60, 370 70, 410 50, 410 50, 410 50, 410 50, 410 50, 410 50, 410 50)
+    MULTIPOINT ((70 340), (70 50), (430 50), (420 340), (340 120), (390 110), (390 70), (350 100), (350 50), (370 90), (320 80), (360 120), (350 80), (390 90), (420 80), (410 60), (410 100), (370 100), (380 60), (370 80), (380 100), (360 80), (370 80), (380 70), (390 80), (390 70), (410 70), (400 60), (410 60), (410 60), (410 60), (370 70), (410 50), (410 50), (410 50), (410 50), (410 50), (410 50), (410 50))
   </a>
 <test>
   <op name="convexhull" arg1="A">
@@ -126,9 +123,7 @@
 <case>
   <desc>Multipoint</desc>
   <a>
-    MULTIPOINT(140 350, 510 140, 110 140, 250 290, 250 50, 300 370, 450 310, 440 160, 290 280, 
-    220 160, 100 260, 320 230, 200 280, 360 130, 330 210, 380 80, 220 210, 380 310, 260 150, 
-    260 110, 170 130)
+    MULTIPOINT ((140 350), (510 140), (110 140), (250 290), (250 50), (300 370), (450 310), (440 160), (290 280), (220 160), (100 260), (320 230), (200 280), (360 130), (330 210), (380 80), (220 210), (380 310), (260 150), (260 110), (170 130))
   </a>
 <test>
   <op name="convexhull" arg1="A">
@@ -167,8 +162,7 @@
 <case>
   <desc>Collinear L</desc>
   <a>
-    MULTIPOINT(50 320, 50 280, 50 230, 50 160, 50 120, 100 120, 160 120, 210 120, 210 180, 
-    210 150, 180 180, 140 180, 140 210, 140 260, 160 180, 140 300, 140 320, 110 320, 80 320)
+    MULTIPOINT ((50 320), (50 280), (50 230), (50 160), (50 120), (100 120), (160 120), (210 120), (210 180), (210 150), (180 180), (140 180), (140 210), (140 260), (160 180), (140 300), (140 320), (110 320), (80 320))
   </a>
 <test>
   <op name="convexhull" arg1="A">
diff --git a/testxml/general/TestDensify.xml b/testxml/general/TestDensify.xml
new file mode 100644
index 0000000..4bfcaf2
--- /dev/null
+++ b/testxml/general/TestDensify.xml
@@ -0,0 +1,57 @@
+<run>
+  <precisionModel type="FLOATING" />
+
+<case>
+  <desc>P - single point</desc>
+  <a>    POINT (10 10) </a>
+<test><op name="densify" arg1='A'  arg2='10.0'>  POINT (10 10)	</op></test>
+</case>
+
+<case>
+  <desc>mP - multi point</desc>
+  <a>    MULTIPOINT ((10 10), (20 10)) </a>
+<test><op name="densify" arg1='A'  arg2='10.0'>  MULTIPOINT ((10 10), (20 10))	</op></test>
+</case>
+
+<case>
+  <desc>L - single segment</desc>
+  <a>    LINESTRING(10 10, 100 10)  </a>
+<test><op name="densify" arg1='A'  arg2='10.0'>    
+	LINESTRING (10 10, 19 10, 28 10, 37 10, 46 10, 55 10, 64 10, 73 10, 82 10, 91 10, 100 10)   
+	</op></test>
+</case>
+
+<case>
+  <desc>mL - multiple lines</desc>
+  <a>    MULTILINESTRING ((10 10, 30 30, 50 10, 70 30), (10 50, 40 50, 70 50))  </a>
+<test><op name="densify" arg1='A'  arg2='8.0'>    
+	MULTILINESTRING ((10 10, 15 15, 20 20, 25 25, 30 30, 35 25, 40 20, 45 15, 50 10, 55 15, 60 20, 65 25, 70 30), 
+  (10 50, 17.5 50, 25 50, 32.5 50, 40 50, 47.5 50, 55 50, 62.5 50, 70 50))   
+	</op></test>
+</case>
+
+
+<case>
+  <desc>A - polygon with hole</desc>
+  <a>    POLYGON ((0 0, 0 70, 70 70, 70 0, 0 0), (10 10, 10 60, 60 60, 10 10))  </a>
+<test><op name="densify" arg1='A'  arg2='10.0'>    
+POLYGON ((0 0, 0 8.75, 0 17.5, 0 26.25, 0 35, 0 43.75, 0 52.5, 0 61.25, 0 70, 8.75 70, 17.5 70, 26.25 70, 35 70, 43.75 70, 52.5 70, 61.25 70, 70 70, 70 61.25, 70 52.5, 70 43.75, 70 35, 70 26.25, 70 17.5, 70 8.75, 70 0, 61.25 0, 52.5 0, 43.75 0, 35 0, 26.25 0, 17.5 0, 8.75 0, 0 0), 
+  (10 10, 16.25 16.25, 22.5 22.5, 28.75 28.75, 35 35, 41.25 41.25, 47.5 47.5, 53.75 53.75, 60 60, 51.66666666666667 60, 43.333333333333336 60, 35 60, 26.666666666666668 60, 18.333333333333336 60, 10 60, 10 51.66666666666667, 10 43.333333333333336, 10 35, 10 26.666666666666668, 10 18.333333333333336, 10 10))
+  	</op></test>
+</case>
+
+<case>
+  <desc>mA - multipolygon</desc>
+  <a>    MULTIPOLYGON (((0 0, 0 70, 70 70, 70 0, 0 0), 
+  (10 10, 10 60, 60 60, 10 10)), 
+  ((80 110, 80 70, 120 70, 120 110, 80 110)))  </a>
+<test><op name="densify" arg1='A'  arg2='10.0'>    
+MULTIPOLYGON (((80 110, 88 110, 96 110, 104 110, 112 110, 120 110, 120 102, 120 94, 120 86, 120 78, 120 70, 112 70, 104 70, 96 70, 88 70, 80 70, 80 78, 80 86, 80 94, 80 102, 80 110)), 
+  ((0 0, 0 8.75, 0 17.5, 0 26.25, 0 35, 0 43.75, 0 52.5, 0 61.25, 0 70, 8.75 70, 17.5 70, 26.25 70, 35 70, 43.75 70, 52.5 70, 61.25 70, 70 70, 70 61.25, 70 52.5, 70 43.75, 70 35, 70 26.25, 70 17.5, 70 8.75, 70 0, 61.25 0, 52.5 0, 43.75 0, 35 0, 26.25 0, 17.5 0, 8.75 0, 0 0), 
+    (10 10, 16.25 16.25, 22.5 22.5, 28.75 28.75, 35 35, 41.25 41.25, 47.5 47.5, 53.75 53.75, 60 60, 51.66666666666667 60, 43.333333333333336 60, 35 60, 26.666666666666668 60, 18.333333333333336 60, 10 60, 10 51.66666666666667, 10 43.333333333333336, 10 35, 10 26.666666666666668, 10 18.333333333333336, 10 10)))      	</op></test>
+</case>
+
+
+
+
+</run>
diff --git a/testxml/general/TestDistance.xml b/testxml/general/TestDistance.xml
new file mode 100644
index 0000000..c9f0341
--- /dev/null
+++ b/testxml/general/TestDistance.xml
@@ -0,0 +1,60 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>PeP - point to an empty point</desc>
+  <a>    POINT(10 10)  </a>
+  <b>    POINT EMPTY  </b>
+<test><op name="distance" arg1="A" arg2="B">    0.0   </op></test>
+</case>
+
+<case>
+  <desc>PP - point to point</desc>
+  <a>    POINT(10 10)  </a>
+  <b>    POINT (10 0)  </b>
+<test><op name="distance" arg1="A" arg2="B">    10.0   </op></test>
+</case>
+
+<case>
+  <desc>LL - line to line</desc>
+  <a>    LINESTRING (0 0, 0 10)  </a>
+  <b>    LINESTRING (10 0, 10 10)  </b>
+<test><op name="distance" arg1="A" arg2="B">    10.0   </op></test>
+</case>
+
+<case>
+  <desc>PA - point inside polygon</desc>
+  <a>    POINT (240 160)  </a>
+  <b>    POLYGON ((100 260, 340 180, 100 60, 180 160, 100 260))  </b>
+<test><op name="distance" arg1="A" arg2="B" >    0.0   </op></test>
+</case>
+
+<case>
+  <desc>LL - crossing linestrings</desc>
+  <a>    LINESTRING (40 300, 280 220, 60 160, 140 60)  </a>
+  <b>    LINESTRING (140 360, 260 280, 240 120, 120 160)  </b>
+<test><op name="distance" arg1="A" arg2="B" >    0.0   </op></test>
+</case>
+
+<case>
+  <desc>AA - overlapping polygons</desc>
+  <a>    POLYGON ((60 260, 260 180, 100 60, 60 160, 60 260))  </a>
+  <b>    POLYGON ((220 280, 120 160, 300 60, 360 220, 220 280))  </b>
+<test><op name="distance" arg1="A" arg2="B" >    0.0   </op></test>
+</case>
+
+<case>
+  <desc>AA - disjoint polygons</desc>
+  <a>    POLYGON ((100 320, 60 120, 240 180, 200 260, 100 320))  </a>
+  <b>    POLYGON ((420 320, 280 260, 400 100, 420 320))  </b>
+<test><op name="distance" arg1="A" arg2="B" >   71.55417527999327  </op></test>
+</case>
+
+<case>
+  <desc>mAmA - overlapping multipolygons</desc>
+  <a>    MULTIPOLYGON (((40 240, 160 320, 40 380, 40 240)),   ((100 240, 240 60, 40 40, 100 240)))  </a>
+  <b>    MULTIPOLYGON (((220 280, 120 160, 300 60, 360 220, 220 280)),   ((240 380, 280 300, 420 340, 240 380)))  </b>
+<test><op name="distance" arg1="A" arg2="B" >    0.0   </op></test>
+</case>
+
+</run>
diff --git a/test/vivid/TestFunctionAA.xml b/testxml/general/TestFunctionAA.xml
similarity index 100%
rename from test/vivid/TestFunctionAA.xml
rename to testxml/general/TestFunctionAA.xml
diff --git a/test/vivid/TestFunctionAAPrec.xml b/testxml/general/TestFunctionAAPrec.xml
similarity index 100%
rename from test/vivid/TestFunctionAAPrec.xml
rename to testxml/general/TestFunctionAAPrec.xml
diff --git a/test/vivid/TestFunctionLA.xml b/testxml/general/TestFunctionLA.xml
similarity index 100%
rename from test/vivid/TestFunctionLA.xml
rename to testxml/general/TestFunctionLA.xml
diff --git a/test/vivid/TestFunctionLAPrec.xml b/testxml/general/TestFunctionLAPrec.xml
similarity index 100%
rename from test/vivid/TestFunctionLAPrec.xml
rename to testxml/general/TestFunctionLAPrec.xml
diff --git a/test/vivid/TestFunctionLL.xml b/testxml/general/TestFunctionLL.xml
similarity index 89%
rename from test/vivid/TestFunctionLL.xml
rename to testxml/general/TestFunctionLL.xml
index 5633d14..cca53dc 100644
--- a/test/vivid/TestFunctionLL.xml
+++ b/testxml/general/TestFunctionLL.xml
@@ -86,7 +86,7 @@
   </b>
 <test>
   <op name="getboundary" arg1="A">
-    MULTIPOINT(40 360, 120 360)
+    MULTIPOINT((40 360), (120 360))
   </op>
 </test>
 <test>
@@ -131,7 +131,7 @@
   </b>
 <test>
   <op name="getboundary" arg1="A">
-    MULTIPOINT(220 240, 20 280)
+    MULTIPOINT((220 240), (20 280))
   </op>
 </test>
 <test>
@@ -222,7 +222,7 @@
   </b>
 <test>
   <op name="getboundary" arg1="A">
-    MULTIPOINT(80 320, 80 300)
+    MULTIPOINT((80 320), (80 300))
   </op>
 </test>
 <test>
@@ -269,7 +269,7 @@
   </b>
 <test>
   <op name="getboundary" arg1="A">
-    MULTIPOINT(60 200, 140 200)
+    MULTIPOINT((60 200), (140 200))
   </op>
 </test>
 <test>
@@ -280,7 +280,7 @@
 </test>
 <test>
   <op name="intersection" arg1="A" arg2="B">
-    MULTIPOINT(60 200, 140 200)
+    MULTIPOINT((60 200), (140 200))
   </op>
 </test>
 <test>
@@ -325,7 +325,7 @@
 </test>
 <test>
   <op name="intersection" arg1="A" arg2="B">
-    MULTIPOINT(100 120, 180 200)
+    MULTIPOINT((100 120), (180 200))
   </op>
 </test>
 <test>
@@ -357,4 +357,19 @@
 </test>
 </case>
 
+<case>
+  <desc>LrL - LinearRing bug</desc>
+  <a>
+    LINEARRING(0 0, 0 5, 5 5, 5 0, 0 0)
+  </a>
+  <b>
+    LINESTRING( 2 2, 5 5)
+  </b>
+<test>
+  <op name="intersection" arg1="A" arg2="B">
+    POINT (5 5)
+  </op>
+</test>
+</case>
+
 </run>
diff --git a/test/vivid/TestFunctionLLPrec.xml b/testxml/general/TestFunctionLLPrec.xml
similarity index 100%
rename from test/vivid/TestFunctionLLPrec.xml
rename to testxml/general/TestFunctionLLPrec.xml
diff --git a/test/vivid/TestFunctionPA.xml b/testxml/general/TestFunctionPA.xml
similarity index 85%
rename from test/vivid/TestFunctionPA.xml
rename to testxml/general/TestFunctionPA.xml
index 142ec93..ce0867a 100644
--- a/test/vivid/TestFunctionPA.xml
+++ b/testxml/general/TestFunctionPA.xml
@@ -27,7 +27,7 @@
         (180 200, 240 80, 300 200, 180 200)))
   </a>
   <b>
-    MULTIPOINT(120 320, 180 260, 180 320, 180 200, 300 200, 200 220)
+    MULTIPOINT((120 320), (180 260), (180 320), (180 200), (300 200), (200 220))
   </b>
 <test>
   <op name="getboundary" arg1="A">
@@ -44,7 +44,7 @@
 </test>
 <test>
   <op name="intersection" arg1="A" arg2="B">
-    MULTIPOINT(120 320, 180 200, 180 260, 180 320, 300 200)
+    MULTIPOINT((120 320), (180 200), (180 260), (180 320), (300 200))
   </op>
 </test>
 <test>
@@ -90,8 +90,8 @@
         (240 220, 240 200, 300 200, 300 220, 240 220)))
   </a>
   <b>
-    MULTIPOINT(200 360, 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200, 200 360, 
-    420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200)
+    MULTIPOINT((200 360), (420 340), (400 100), (340 120), (200 140), (200 160), (220 180), (260 200), (200 360), 
+    (420 340), (400 100), (340 120), (200 140), (200 160), (220 180), (260 200))
   </b>
 <test>
   <op name="getboundary" arg1="A">
@@ -110,7 +110,7 @@
 </test>
 <test>
   <op name="intersection" arg1="A" arg2="B">
-    MULTIPOINT(200 160, 220 180, 260 200, 340 120, 400 100, 420 340)
+    MULTIPOINT((200 160), (220 180), (260 200), (340 120), (400 100), (420 340))
   </op>
 </test>
 <test>
diff --git a/test/vivid/TestFunctionPL.xml b/testxml/general/TestFunctionPL.xml
similarity index 75%
rename from test/vivid/TestFunctionPL.xml
rename to testxml/general/TestFunctionPL.xml
index 61c7659..68a960a 100644
--- a/test/vivid/TestFunctionPL.xml
+++ b/testxml/general/TestFunctionPL.xml
@@ -4,14 +4,14 @@
 <case>
   <desc>mPL - points in I and E of line</desc>
   <a>
-    MULTIPOINT(40 90, 20 20, 70 70)
+    MULTIPOINT((40 90), (20 20), (70 70))
   </a>
   <b>
     LINESTRING(20 20, 100 100)
   </b>
 <test>
   <op name="intersection" arg1="A" arg2="B">
-    MULTIPOINT(20 20, 70 70)
+    MULTIPOINT((20 20), (70 70))
   </op>
 </test>
 <test>
@@ -38,14 +38,14 @@
 <case>
   <desc>mPL - points in I and E of line, line self-intersecting</desc>
   <a>
-    MULTIPOINT(40 90, 20 20, 70 70)
+    MULTIPOINT((40 90), (20 20), (70 70))
   </a>
   <b>
     LINESTRING(20 20, 110 110, 170 50, 130 10, 70 70)
   </b>
 <test>
   <op name="intersection" arg1="A" arg2="B">
-    MULTIPOINT(20 20, 70 70)
+    MULTIPOINT((20 20), (70 70))
   </op>
 </test>
 <test>
@@ -86,13 +86,10 @@
       (100 220, 100 320))
   </a>
   <b>
-    MULTIPOINT(100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, 
-    220 320, 200 320, 160 320, 140 320, 120 320, 100 320, 100 260, 100 220, 100 200, 100 180, 
-    120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320)
-  </b>
+    MULTIPOINT ((100 320), (100 260), (100 220), (100 200), (100 180), (120 180), (200 180), (220 180), (220 260), (220 320), (200 320), (160 320), (140 320), (120 320), (100 320), (100 260), (100 220), (100 200), (100 180), (120 180), (200 180), (220 180), (220 260), (220 320), (200 320), (160 320), (140 320), (120 320))  </b>
 <test>
   <op name="getboundary" arg1="A">
-    MULTIPOINT(100 220, 100 320)
+    MULTIPOINT((100 220), (100 320))
   </op>
 </test>
 <test>
@@ -103,8 +100,7 @@
 </test>
 <test>
   <op name="intersection" arg1="A" arg2="B">
-    MULTIPOINT(100 180, 100 220, 100 260, 100 320, 120 180, 160 320, 200 180, 200 320, 220 180, 
-    220 260, 220 320)
+    MULTIPOINT ((100 180), (100 220), (100 260), (100 320), (120 180), (160 320), (200 180), (200 320), (220 180), (220 260), (220 320))
   </op>
 </test>
 <test>
@@ -150,13 +146,11 @@
       (-500 -140, -320 -140, -500 -140, -320 -140, -500 -140))
   </a>
   <b>
-    MULTIPOINT(-560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, -320 -180, 
-    -280 -140, -320 -120, -560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, 
-    -320 -180, -280 -140, -320 -120)
+    MULTIPOINT ((-560 -180), (-420 -180), (-500 -220), (-500 -340), (-500 -280), (-500 -140), (-320 -140), (-420 -140), (-320 -180), (-280 -140), (-320 -120), (-560 -180), (-420 -180), (-500 -220), (-500 -340), (-500 -280), (-500 -140), (-320 -140), (-420 -140), (-320 -180), (-280 -140), (-320 -120))
   </b>
 <test>
   <op name="getboundary" arg1="A">
-    MULTIPOINT(-500 -340, -500 -140)
+    MULTIPOINT((-500 -340), (-500 -140))
   </op>
 </test>
 <test>
@@ -167,7 +161,7 @@
 </test>
 <test>
   <op name="intersection" arg1="A" arg2="B">
-    MULTIPOINT(-500 -340, -500 -280, -500 -220, -500 -140, -420 -140, -320 -180, -320 -140)
+    MULTIPOINT((-500 -340), (-500 -280), (-500 -220), (-500 -140), (-420 -140), (-320 -180), (-320 -140))
   </op>
 </test>
 <test>
@@ -216,7 +210,7 @@
   </a>
 <test>
   <op name="getboundary" arg1="A">
-    MULTIPOINT(180 100, 140 280)
+    MULTIPOINT((180 100), (140 280))
   </op>
 </test>
 </case>
@@ -236,13 +230,11 @@
       (100 220, 100 320))
   </a>
   <b>
-    MULTIPOINT(100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, 
-    220 320, 200 320, 160 320, 140 320, 120 320, 100 320, 100 260, 100 220, 100 200, 100 180, 
-    120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320)
+    MULTIPOINT ((100 320), (100 260), (100 220), (100 200), (100 180), (120 180), (200 180), (220 180), (220 260), (220 320), (200 320), (160 320), (140 320), (120 320), (100 320), (100 260), (100 220), (100 200), (100 180), (120 180), (200 180), (220 180), (220 260), (220 320), (200 320), (160 320), (140 320), (120 320))
   </b>
 <test>
   <op name="getboundary" arg1="A">
-    MULTIPOINT(100 220, 100 320)
+    MULTIPOINT((100 220), (100 320))
   </op>
 </test>
 <test>
@@ -253,8 +245,7 @@
 </test>
 <test>
   <op name="intersection" arg1="A" arg2="B">
-    MULTIPOINT(100 180, 100 220, 100 260, 100 320, 120 180, 160 320, 200 180, 200 320, 220 180, 
-    220 260, 220 320)
+    MULTIPOINT ((100 180), (100 220), (100 260), (100 320), (120 180), (160 320), (200 180), (200 320), (220 180), (220 260), (220 320))
   </op>
 </test>
 <test>
diff --git a/test/vivid/TestFunctionPLPrec.xml b/testxml/general/TestFunctionPLPrec.xml
similarity index 82%
rename from test/vivid/TestFunctionPLPrec.xml
rename to testxml/general/TestFunctionPLPrec.xml
index 2fa7d79..1477a84 100644
--- a/test/vivid/TestFunctionPLPrec.xml
+++ b/testxml/general/TestFunctionPLPrec.xml
@@ -10,7 +10,7 @@
     POINT(0 0)
   </b>
 <test>
-  <op name="intersects">
+  <op name="intersects" arg1="A" arg2="B">
     false
   </op>
 </test>
diff --git a/test/vivid/TestFunctionPP.xml b/testxml/general/TestFunctionPP.xml
similarity index 80%
rename from test/vivid/TestFunctionPP.xml
rename to testxml/general/TestFunctionPP.xml
index f302a9a..dda33a9 100644
--- a/test/vivid/TestFunctionPP.xml
+++ b/testxml/general/TestFunctionPP.xml
@@ -31,7 +31,7 @@
 </test>
 <test>
   <op name="union" arg1="A" arg2="B">
-    MULTIPOINT(100 100, 200 200)
+    MULTIPOINT((100 100), (200 200))
   </op>
 </test>
 <test>
@@ -41,7 +41,7 @@
 </test>
 <test>
   <op name="symdifference" arg1="A" arg2="B">
-    MULTIPOINT(100 100, 200 200)
+    MULTIPOINT((100 100), (200 200))
   </op>
 </test>
 </case>
@@ -52,7 +52,7 @@
     POINT(100 100)
   </a>
   <b>
-    MULTIPOINT(100 100, 200 200)
+    MULTIPOINT((100 100), (200 200))
   </b>
 <test>
   <op name="intersection" arg1="A" arg2="B">
@@ -61,7 +61,7 @@
 </test>
 <test>
   <op name="union" arg1="A" arg2="B">
-    MULTIPOINT(100 100, 200 200)
+    MULTIPOINT((100 100), (200 200))
   </op>
 </test>
 <test>
@@ -79,29 +79,29 @@
 <case>
   <desc>mPmP - points in A only, B only, and in both</desc>
   <a>
-    MULTIPOINT(100 100, 200 200, 300 300, 500 500)
+    MULTIPOINT((100 100), (200 200), (300 300), (500 500))
   </a>
   <b>
-    MULTIPOINT(100 100, 200 200, 400 400, 600 600)
+    MULTIPOINT((100 100), (200 200), (400 400), (600 600))
   </b>
 <test>
   <op name="intersection" arg1="A" arg2="B">
-    MULTIPOINT(100 100, 200 200)
+    MULTIPOINT((100 100), (200 200))
   </op>
 </test>
 <test>
   <op name="union" arg1="A" arg2="B">
-    MULTIPOINT(100 100, 200 200, 300 300, 400 400, 500 500, 600 600)
+    MULTIPOINT ((100 100), (200 200), (300 300), (400 400), (500 500), (600 600))
   </op>
 </test>
 <test>
   <op name="difference" arg1="A" arg2="B">
-    MULTIPOINT(300 300, 500 500)
+    MULTIPOINT((300 300), (500 500))
   </op>
 </test>
 <test>
   <op name="symdifference" arg1="A" arg2="B">
-    MULTIPOINT(300 300, 400 400, 500 500, 600 600)
+    MULTIPOINT((300 300), (400 400), (500 500), (600 600))
   </op>
 </test>
 </case>
@@ -171,7 +171,7 @@
 </test>
 <test>
   <op name="union" arg1="A" arg2="B">
-    MULTIPOINT(80 200, 260 80)
+    MULTIPOINT((80 200), (260 80))
   </op>
 </test>
 <test>
@@ -181,7 +181,7 @@
 </test>
 <test>
   <op name="symdifference" arg1="A" arg2="B">
-    MULTIPOINT(80 200, 260 80)
+    MULTIPOINT((80 200), (260 80))
   </op>
 </test>
 </case>
@@ -211,7 +211,7 @@
 </test>
 <test>
   <op name="union" arg1="A" arg2="B">
-    MULTIPOINT(60 260, 120 260)
+    MULTIPOINT((60 260), (120 260))
   </op>
 </test>
 <test>
@@ -221,7 +221,7 @@
 </test>
 <test>
   <op name="symdifference" arg1="A" arg2="B">
-    MULTIPOINT(60 260, 120 260)
+    MULTIPOINT((60 260), (120 260))
   </op>
 </test>
 </case>
@@ -251,7 +251,7 @@
 </test>
 <test>
   <op name="union" arg1="A" arg2="B">
-    MULTIPOINT(80 80, 80 280)
+    MULTIPOINT((80 80), (80 280))
   </op>
 </test>
 <test>
@@ -261,7 +261,7 @@
 </test>
 <test>
   <op name="symdifference" arg1="A" arg2="B">
-    MULTIPOINT(80 80, 80 280)
+    MULTIPOINT((80 80), (80 280))
   </op>
 </test>
 </case>
diff --git a/test/vivid/TestInteriorPoint.xml b/testxml/general/TestInteriorPoint.xml
similarity index 89%
rename from test/vivid/TestInteriorPoint.xml
rename to testxml/general/TestInteriorPoint.xml
index f6f7ac9..08fad0c 100644
--- a/test/vivid/TestInteriorPoint.xml
+++ b/testxml/general/TestInteriorPoint.xml
@@ -9,7 +9,7 @@
 
 <case>
   <desc>P - single point</desc>
-  <a>    MULTIPOINT (60 300, 200 200, 240 240, 200 300, 40 140, 80 240, 140 240, 100 160, 140 200, 60 200)
+  <a>    MULTIPOINT ((60 300), (200 200), (240 240), (200 300), (40 140), (80 240), (140 240), (100 160), (140 200), (60 200))
 	</a>
 <test><op name="getInteriorPoint" arg1="A" >    POINT (140 240)   </op></test>
 </case>
diff --git a/testxml/general/TestPreparedPointPredicate.xml b/testxml/general/TestPreparedPointPredicate.xml
new file mode 100644
index 0000000..a1f41a6
--- /dev/null
+++ b/testxml/general/TestPreparedPointPredicate.xml
@@ -0,0 +1,34 @@
+<run>
+  <desc>Test cases for PreparedPoint predicates</desc>
+  <precisionModel type="FLOATING"/>
+  <geometryOperation>com.vividsolutions.jtstest.geomop.PreparedGeometryOperation</geometryOperation>
+
+<case>
+<desc> P/A - point in interior of poly</desc>
+  <a>     POINT (100 100)
+    </a>
+  <b>     POLYGON ((50 130, 150 130, 100 50, 50 130))
+    </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+<case>
+<desc> P/A - point on boundary of poly</desc>
+  <a>     POINT (100 50)
+    </a>
+  <b>     POLYGON ((50 130, 150 130, 100 50, 50 130))
+    </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+<case>
+<desc> P/A - point outside poly</desc>
+  <a>     POINT (200 200)
+    </a>
+  <b>     POLYGON ((50 130, 150 130, 100 50, 50 130))
+    </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   false   </op> </test>
+</case>
+
+
+</run>
diff --git a/testxml/general/TestPreparedPolygonPredicate.xml b/testxml/general/TestPreparedPolygonPredicate.xml
new file mode 100644
index 0000000..a386249
--- /dev/null
+++ b/testxml/general/TestPreparedPolygonPredicate.xml
@@ -0,0 +1,177 @@
+<run>
+  <desc>Test cases for PreparedGeometry predicates using polygons as input</desc>
+  <precisionModel type="FLOATING"/>
+  <geometryOperation>com.vividsolutions.jtstest.geomop.PreparedGeometryOperation</geometryOperation>
+
+<case>
+  <desc>P/A - point equal to start point of polygon
+  </desc>
+  <a>
+      POINT (10 10)
+  </a>
+  <b>
+    POLYGON ((10 10, 60 100, 110 10, 10 10))
+  </b>
+<test>  <op name="contains"   		arg1="A" arg2="B">   false  </op> </test>
+<test>  <op name="covers"     		arg1="A" arg2="B">   false  </op> </test>
+<test>  <op name="intersects" 		arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+<case>
+  <desc>mA/L
+  	A has 2 shells touching at one vertex and one non-vertex.
+  	B passes between the shells, but is wholely contained
+  </desc>
+  <a>
+    MULTIPOLYGON (((100 30, 30 110, 150 110, 100 30)), 
+      ((90 110, 30 170, 140 170, 90 110)))
+  </a>
+  <b>
+    LINESTRING (90 80, 90 150)
+  </b>
+<test>  <op name="contains"   arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+<case>
+  <desc>mA/L
+  	A has 2 shells touching at one vertex and one non-vertex
+  	B passes between the shells, but is NOT contained (since it is slightly offset)
+  
+  </desc>
+  <a>
+    MULTIPOLYGON (((100 30, 30 110, 150 110, 100 30)), 
+      ((90 110, 30 170, 140 170, 90 110)))
+  </a>
+  <b>
+    LINESTRING (90.1 80, 90 150)
+  </b>
+<test>  <op name="contains"   arg1="A" arg2="B">   false   </op> </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+<case>
+  <desc>mA/L - 2 disjoint shells with line crossing between them  </desc>
+  <a>
+    MULTIPOLYGON (((50 20, 10 70, 80 70, 50 20)), 
+      ((10 90, 80 90, 50 140, 10 90)))
+  </a>
+  <b>
+    LINESTRING (50 110, 50 60)
+  </b>
+<test>  <op name="contains"   arg1="A" arg2="B">   false   </op> </test>
+<test>  <op name="covers"   arg1="A" arg2="B">   false   </op> </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+<case>
+  <desc>A/L - proper intersection crossing bdy
+  </desc>
+  <a>
+    POLYGON ((10 10, 10 100, 120 110, 120 30, 10 10))
+  </a>
+  <b>
+    LINESTRING (60 60, 70 140)
+  </b>
+<test>  <op name="contains"   arg1="A" arg2="B">   false  </op> </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+<case>
+  <desc>A/L - non-proper intersection crossing bdy
+  </desc>
+  <a>
+    POLYGON ((10 10, 60 100, 110 10, 10 10))
+  </a>
+  <b>
+    LINESTRING (60 60, 60 140)
+  </b>
+<test>  <op name="contains"   arg1="A" arg2="B">   false  </op> </test>
+<test>  <op name="covers"     arg1="A" arg2="B">   false  </op> </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+<case>
+  <desc>A/L - wholely contained
+  </desc>
+  <a> POLYGON ((10 10, 60 100, 110 10, 10 10)) 
+    </a>
+  <b> LINESTRING (50 30, 70 60)
+    </b>
+<test>  <op name="contains"   arg1="A" arg2="B">   true  </op> </test>
+<test>  <op name="covers"     arg1="A" arg2="B">   true  </op> </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+<case>
+  <desc>A/L - contained but touching bdy at interior point
+  </desc>
+  <a>
+    POLYGON ((10 10, 60 100, 110 10, 10 10))
+  </a>
+  <b>
+    LINESTRING (60 10, 70 60)
+  </b>
+<test>  <op name="contains"   arg1="A" arg2="B">   true  </op> </test>
+<test>  <op name="covers"     arg1="A" arg2="B">   true  </op> </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+<case>
+  <desc>A/L - line in bdy - covered but not contained
+  </desc>
+  <a>
+    POLYGON ((10 10, 60 100, 110 10, 10 10))
+  </a>
+  <b>
+    LINESTRING (30 10, 90 10)
+  </b>
+<test>  <op name="contains"   arg1="A" arg2="B">   false  </op> </test>
+<test>  <op name="covers"     arg1="A" arg2="B">   true  </op> </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+<case>
+  <desc>A/A - two equal polygons
+  </desc>
+  <a>
+      POLYGON((20 20, 20 100, 120 100, 140 20, 20 20)) 
+  </a>
+  <b>
+    POLYGON((20 20, 20 100, 120 100, 140 20, 20 20)) 
+  </b>
+<test>  <op name="contains"   		arg1="A" arg2="B">   true  </op> </test>
+<test>  <op name="covers"     		arg1="A" arg2="B">   true  </op> </test>
+<test>  <op name="intersects" 		arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+<case>
+  <desc>A/L - line with repeated points
+  </desc>
+  <a>
+      POLYGON((20 20, 20 100, 120 100, 140 20, 20 20)) 
+  </a>
+  <b>
+    LINESTRING (10 60, 50 60, 60 30, 60 30, 90 80, 90 80, 160 70) 
+  </b>
+<test>  <op name="contains"   		arg1="A" arg2="B">   false  </op> </test>
+<test>  <op name="covers"     		arg1="A" arg2="B">   false  </op> </test>
+<test>  <op name="intersects" 		arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+<case>
+  <desc>A/L - polygon and line with repeated points
+  </desc>
+  <a>
+      POLYGON((20 20, 20 100, 120 100, 120 100, 120 100, 140 20, 140 20, 140 20, 20 20)) 
+  </a>
+  <b>
+    LINESTRING (10 60, 50 60, 60 30, 60 30, 90 80, 90 80, 160 70) 
+  </b>
+<test>  <op name="contains"   		arg1="A" arg2="B">   false  </op> </test>
+<test>  <op name="covers"     		arg1="A" arg2="B">   false  </op> </test>
+<test>  <op name="intersects" 		arg1="A" arg2="B">   true   </op> </test>
+</case>
+
+
+</run>
diff --git a/testxml/general/TestPreparedPredicatesWithGeometryCollection.xml b/testxml/general/TestPreparedPredicatesWithGeometryCollection.xml
new file mode 100644
index 0000000..91353ab
--- /dev/null
+++ b/testxml/general/TestPreparedPredicatesWithGeometryCollection.xml
@@ -0,0 +1,81 @@
+<run>
+  <desc>Test cases for PreparedGeometry predicates using GeometryCollections as test geometry.
+        This tests the various combinations of target geometry and predicate which support
+        GCs as the test geometry.
+  </desc>
+  <precisionModel type="FLOATING"/>
+  <geometryOperation>com.vividsolutions.jtstest.geomop.PreparedGeometryOperation</geometryOperation>
+
+<case>
+  <desc>Box against GC
+  </desc>
+  <a>
+  POLYGON ((0 0, 0 100, 200 100, 200 0, 0 0))     
+  </a>
+  <b>
+    GEOMETRYCOLLECTION (POLYGON ((50 160, 110 60, 150 160, 50 160)), 
+  LINESTRING (50 40, 170 120)) 
+  </b>
+<test>  <op name="intersects"   arg1="A" arg2="B">   true  </op> </test>
+<test>  <op name="contains"     arg1="A" arg2="B">   false  </op> </test>
+<test>  <op name="covers"       arg1="A" arg2="B">   false  </op> </test>
+</case>
+
+<case>
+  <desc>Box against GC, with containment
+  </desc>
+  <a>
+  POLYGON ((0 0, 0 200, 200 200, 200 0, 0 0))     
+  </a>
+  <b>
+    GEOMETRYCOLLECTION (POLYGON ((50 160, 110 60, 150 160, 50 160)), 
+  LINESTRING (50 40, 170 120)) 
+  </b>
+<test>  <op name="intersects"   arg1="A" arg2="B">   true  </op> </test>
+<test>  <op name="contains"     arg1="A" arg2="B">   true  </op> </test>
+<test>  <op name="covers"       arg1="A" arg2="B">   true  </op> </test>
+</case>
+
+<case>
+  <desc>Polygon-with-hole against GC
+  </desc>
+  <a>
+  POLYGON ((0 0, 0 270, 200 270, 200 0, 0 0), 
+  (30 210, 170 210, 60 20, 30 210))     
+  </a>
+  <b>
+    GEOMETRYCOLLECTION (POLYGON ((50 160, 110 60, 150 160, 50 160)), 
+  LINESTRING (50 40, 170 120)) 
+  </b>
+<test>  <op name="intersects"     arg1="A" arg2="B">   true  </op> </test>
+<test>  <op name="contains"       arg1="A" arg2="B">   false  </op> </test>
+</case>
+
+<case>
+  <desc>Linestring against GC
+  </desc>
+  <a>
+  LINESTRING (20 90, 90 190, 170 50)    
+  </a>
+  <b>
+    GEOMETRYCOLLECTION (POLYGON ((50 160, 110 60, 150 160, 50 160)), 
+  LINESTRING (50 40, 170 120)) 
+  </b>
+<test>  <op name="intersects"     arg1="A" arg2="B">   true  </op> </test>
+</case>
+
+<case>
+  <desc>Linestring against GC, with containment
+  </desc>
+  <a>
+  LINESTRING (20 20, 100 100, 180 20) 
+  </a>
+  <b>
+    GEOMETRYCOLLECTION (LINESTRING (40 40, 80 80),   POINT (120 80)) 
+  </b>
+<test>  <op name="intersects"     arg1="A" arg2="B">   true  </op> </test>
+</case>
+
+
+
+</run>
diff --git a/test/vivid/TestRectanglePredicate.xml b/testxml/general/TestRectanglePredicate.xml
similarity index 50%
rename from test/vivid/TestRectanglePredicate.xml
rename to testxml/general/TestRectanglePredicate.xml
index 651dff3..511b6ae 100644
--- a/test/vivid/TestRectanglePredicate.xml
+++ b/testxml/general/TestRectanglePredicate.xml
@@ -106,6 +106,48 @@
 </case>
 
 <case>
+  <desc>L (3 pts) in polygon boundary</desc>
+  <a>
+    POLYGON((0 0, 100 0, 100 100, 0 100, 0 0))
+  </a>
+  <b>
+    LINESTRING( 10 0, 100 0, 100 50 )
+  </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op> </test>
+<test>  <op name="covers" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="coveredBy" arg1="B" arg2="A">   true   </op> </test>
+</case>
+
+<case>
+  <desc>L (4 pts) in polygon boundary</desc>
+  <a>
+    POLYGON((0 0, 100 0, 100 100, 0 100, 0 0))
+  </a>
+  <b>
+    LINESTRING( 10 0, 100 0, 100 100, 50 100 )
+  </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op> </test>
+<test>  <op name="covers" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="coveredBy" arg1="B" arg2="A">   true   </op> </test>
+</case>
+
+<case>
+  <desc>mL with one component contained and one in boundary</desc>
+  <a>
+    POLYGON((0 0, 100 0, 100 100, 0 100, 0 0))
+  </a>
+  <b>
+    MULTILINESTRING( (10 0, 20 0), (10 10, 20 20) )
+  </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="contains" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="covers" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="coveredBy" arg1="B" arg2="A">   true   </op> </test>
+</case>
+
+<case>
   <desc>mL with one component contained</desc>
   <a>
     POLYGON((0 0, 100 0, 100 100, 0 100, 0 0))
@@ -117,5 +159,63 @@
 <test>  <op name="contains" arg1="A" arg2="B">   false   </op> </test>
 </case>
 
+<case>
+  <desc>P in polygon boundary (Y axis)</desc>
+  <a>
+    POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) 
+  </a>
+  <b>
+    POINT(100 50) 
+  </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op> </test>
+<test>  <op name="covers" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="coveredBy" arg1="B" arg2="A">   true   </op> </test>
+</case>
+
+<case>
+  <desc>P in polygon boundary (X axis)</desc>
+  <a>
+    POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) 
+  </a>
+  <b>
+    POINT(50 100) 
+  </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op> </test>
+<test>  <op name="covers" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="coveredBy" arg1="B" arg2="A">   true   </op> </test>
+</case>
+
+<case>
+  <desc>P in polygon</desc>
+  <a>
+    POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) 
+  </a>
+  <b>
+    POINT(60 60) 
+  </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="contains" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="covers" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="coveredBy" arg1="B" arg2="A">   true   </op> </test>
+</case>
+
+<case>
+  <desc>mP in polygon boundary and interior</desc>
+  <a>
+    POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) 
+  </a>
+  <b>
+    MULTIPOINT((50 100), (60 60)) 
+  </b>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="contains" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="covers" arg1="A" arg2="B">   true   </op> </test>
+<test>  <op name="coveredBy" arg1="B" arg2="A">   true   </op> </test>
+</case>
+
+
+
 
 </run>
diff --git a/test/vivid/TestRelateAA.xml b/testxml/general/TestRelateAA.xml
similarity index 52%
rename from test/vivid/TestRelateAA.xml
rename to testxml/general/TestRelateAA.xml
index 5f27e26..7178fd7 100644
--- a/test/vivid/TestRelateAA.xml
+++ b/testxml/general/TestRelateAA.xml
@@ -11,11 +11,10 @@
     POLYGON(
       (100 200, 100 140, 180 140, 180 200, 100 200))
   </b>
-<test>
-  <op name="relate" arg3="FF2FF1212" arg1="A" arg2="B">
-    true
-  </op>
+<test><op name="relate" arg3="FF2FF1212" arg1="A" arg2="B"> true </op>
 </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   false   </op></test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op></test>
 </case>
 
 <case>
@@ -29,10 +28,10 @@
       (140 0, 0 0, 0 140, 140 140, 140 0))
   </b>
 <test>
-  <op name="relate" arg3="2FFF1FFF2" arg1="A" arg2="B">
-    true
-  </op>
+  <op name="relate" arg3="2FFF1FFF2" arg1="A" arg2="B"> true </op>
 </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op></test>
+<test>  <op name="contains" arg1="A" arg2="B">   true   </op></test>
 </case>
 
 <case>
@@ -46,10 +45,10 @@
       (120 100, 280 100, 280 240, 120 240, 120 100))
   </b>
 <test>
-  <op name="relate" arg3="212FF1FF2" arg1="A" arg2="B">
-    true
-  </op>
+  <op name="relate" arg3="212FF1FF2" arg1="A" arg2="B"> true </op>
 </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op></test>
+<test>  <op name="contains" arg1="A" arg2="B">   true   </op></test>
 </case>
 
 <case>
@@ -64,10 +63,10 @@
       (80 100, 360 100, 360 280, 80 280, 80 100))
   </b>
 <test>
-  <op name="relate" arg3="2121F12F2" arg1="A" arg2="B">
-    true
-  </op>
+  <op name="relate" arg3="2121F12F2" arg1="A" arg2="B"> true </op>
 </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op></test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op></test>
 </case>
 
 <case>
@@ -83,10 +82,10 @@
       (160 180, 80 180, 120 120, 160 180))
   </b>
 <test>
-  <op name="relate" arg3="2121F1212" arg1="A" arg2="B">
-    true
-  </op>
+  <op name="relate" arg3="2121F1212" arg1="A" arg2="B"> true </op>
 </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op></test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op></test>
 </case>
 
 <case>
@@ -100,10 +99,10 @@
       (120 140, 260 140, 260 260, 120 260, 120 140))
   </b>
 <test>
-  <op name="relate" arg3="212101212" arg1="A" arg2="B">
-    true
-  </op>
+  <op name="relate" arg3="212101212" arg1="A" arg2="B">true</op>
 </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op></test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op></test>
 </case>
 
 <case>
@@ -117,10 +116,10 @@
       (100 180, 180 180, 180 100, 100 100, 100 180))
   </b>
 <test>
-  <op name="relate" arg3="212101212" arg1="A" arg2="B">
-    true
-  </op>
+  <op name="relate" arg3="212101212" arg1="A" arg2="B"> true </op>
 </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op></test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op></test>
 </case>
 
 <case>
@@ -134,10 +133,10 @@
       (180 40, 40 180, 160 280, 300 140, 180 40))
   </b>
 <test>
-  <op name="relate" arg3="212101212" arg1="A" arg2="B">
-    true
-  </op>
+  <op name="relate" arg3="212101212" arg1="A" arg2="B"> true </op>
 </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op></test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op></test>
 </case>
 
 <case>
@@ -158,10 +157,10 @@
         (40 80, 80 80, 80 120, 40 120, 40 80)))
   </b>
 <test>
-  <op name="relate" arg3="21210F212" arg1="A" arg2="B">
-    true
-  </op>
+  <op name="relate" arg3="21210F212" arg1="A" arg2="B"> true </op>
 </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op></test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op></test>
 </case>
 
 <case>
@@ -176,10 +175,10 @@
       (40 280, 180 260, 180 120, 60 120, 40 280))
   </b>
 <test>
-  <op name="relate" arg3="2121012F2" arg1="A" arg2="B">
-    true
-  </op>
+  <op name="relate" arg3="2121012F2" arg1="A" arg2="B"> true </op>
 </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op></test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op></test>
 </case>
 
 <case>
@@ -194,10 +193,10 @@
       (60 90, 130 90, 130 30, 60 30, 60 90))
   </b>
 <test>
-  <op name="relate" arg3="FF2F11212" arg1="A" arg2="B">
-    true
-  </op>
+  <op name="relate" arg3="FF2F11212" arg1="A" arg2="B"> true </op>
 </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op></test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op></test>
 </case>
 
 <case>
@@ -212,10 +211,25 @@
       (270 90, 200 50, 150 80, 210 120, 270 90))
   </b>
 <test>
-  <op name="relate" arg3="FF2F01212" arg1="A" arg2="B">
-    true
-  </op>
+  <op name="relate" arg3="FF2F01212" arg1="A" arg2="B"> true </op>
+</test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op></test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op></test>
+</case>
+
+<case>
+  <desc>AA - A contained completely in B</desc>
+  <a>
+    POLYGON ((0 0, 20 80, 120 80, -20 120, 0 0))
+  </a>
+  <b>
+    POLYGON ((60 180, -100 120, -140 60, -40 20, -100 -80, 40 -20, 140 -100, 140 40, 260 160, 80 120, 60 180))
+  </b>
+<test>
+  <op name="relate" arg3="2FF1FF212" arg1="A" arg2="B"> true </op>
 </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op></test>
+<test>  <op name="contains" arg1="A" arg2="B">   false   </op></test>
 </case>
 
 </run>
diff --git a/test/vivid/TestRelateAC.xml b/testxml/general/TestRelateAC.xml
similarity index 75%
rename from test/vivid/TestRelateAC.xml
rename to testxml/general/TestRelateAC.xml
index 7c8d954..83dd733 100644
--- a/test/vivid/TestRelateAC.xml
+++ b/testxml/general/TestRelateAC.xml
@@ -19,10 +19,9 @@
         (40 80, 80 80, 80 120, 40 120, 40 80)))
   </b>
 <test>
-  <op name="relate" arg3="21210F212" arg1="A" arg2="B">
-    true
-  </op>
+  <op name="relate" arg3="21210F212" arg1="A" arg2="B">    true  </op>
 </test>
+<test>  <op name="intersects" arg1="A" arg2="B">   true   </op></test>
 </case>
 
 </run>
diff --git a/test/vivid/TestRelateLA.xml b/testxml/general/TestRelateLA.xml
similarity index 100%
rename from test/vivid/TestRelateLA.xml
rename to testxml/general/TestRelateLA.xml
diff --git a/testxml/general/TestRelateLC.xml b/testxml/general/TestRelateLC.xml
new file mode 100644
index 0000000..e82b0b9
--- /dev/null
+++ b/testxml/general/TestRelateLC.xml
@@ -0,0 +1,41 @@
+<run>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>LC - topographically equal with no boundary</desc>
+  <a>
+    LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0)
+  </a>
+  <b>
+    MULTILINESTRING(
+      (0 0, 0 50), 
+      (0 50, 50 50), 
+      (50 50, 50 0), 
+      (50 0, 0 0))
+  </b>
+<test>
+  <op name="relate" arg3="1FFFFFFF2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>LC - equal with boundary intersection</desc>
+  <a>
+    LINESTRING(0 0, 60 0, 60 60, 60 0, 120 0)
+  </a>
+  <b>
+    MULTILINESTRING(
+      (0 0, 60 0), 
+      (60 0, 120 0), 
+      (60 0, 60 60))
+  </b>
+<test>
+  <op name="relate" arg3="10FF0FFF2" arg1="A" arg2="B">
+    true
+  </op>
+</test>
+</case>
+
+</run>
diff --git a/test/vivid/TestRelateLL.xml b/testxml/general/TestRelateLL.xml
similarity index 90%
rename from test/vivid/TestRelateLL.xml
rename to testxml/general/TestRelateLL.xml
index 6f9b78f..6fe267b 100644
--- a/test/vivid/TestRelateLL.xml
+++ b/testxml/general/TestRelateLL.xml
@@ -294,4 +294,18 @@
 </test>
 </case>
 
+<case>
+<desc>test for LinearRing point location bug</desc>
+  <a>
+    LINEARRING(0 0, 0 5, 5 5, 5 0, 0 0)
+  </a>
+  <b>
+    LINESTRING( 2 2, 4 4)
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="FF1FFF102">true</op>
+  </test>
+</case>
+
+
 </run>
diff --git a/test/vivid/TestRelatePA.xml b/testxml/general/TestRelatePA.xml
similarity index 86%
rename from test/vivid/TestRelatePA.xml
rename to testxml/general/TestRelatePA.xml
index e48b63a..8c9ff82 100644
--- a/test/vivid/TestRelatePA.xml
+++ b/testxml/general/TestRelatePA.xml
@@ -20,7 +20,7 @@
 <case>
   <desc>mPA - points in B: E, I</desc>
   <a>
-    MULTIPOINT(0 20, 40 20)
+    MULTIPOINT((0 20), (40 20))
   </a>
   <b>
     POLYGON(
@@ -36,7 +36,7 @@
 <case>
   <desc>mPA - points in B: E, B</desc>
   <a>
-    MULTIPOINT(0 20, 20 20)
+    MULTIPOINT((0 20), (20 20))
   </a>
   <b>
     POLYGON(
@@ -52,7 +52,7 @@
 <case>
   <desc>mPA - points in B: B, I</desc>
   <a>
-    MULTIPOINT(20 20, 40 20)
+    MULTIPOINT((20 20), (40 20))
   </a>
   <b>
     POLYGON(
@@ -68,7 +68,7 @@
 <case>
   <desc>mPA - points in B: I, B, E</desc>
   <a>
-    MULTIPOINT(80 260, 140 260, 180 260)
+    MULTIPOINT((80 260), (140 260), (180 260))
   </a>
   <b>
     POLYGON(
diff --git a/test/vivid/TestRelatePL.xml b/testxml/general/TestRelatePL.xml
similarity index 85%
rename from test/vivid/TestRelatePL.xml
rename to testxml/general/TestRelatePL.xml
index 17bf4ec..7cfee8c 100644
--- a/test/vivid/TestRelatePL.xml
+++ b/testxml/general/TestRelatePL.xml
@@ -49,7 +49,7 @@
 <case>
   <desc>mPL - touches Bdy and Ext</desc>
   <a>
-    MULTIPOINT(40 40, 100 40)
+    MULTIPOINT((40 40), (100 40))
   </a>
   <b>
     LINESTRING(40 40, 80 80)
@@ -64,7 +64,7 @@
 <case>
   <desc>mPL - touches Int and Bdy</desc>
   <a>
-    MULTIPOINT(40 40, 60 60)
+    MULTIPOINT((40 40), (60 60))
   </a>
   <b>
     LINESTRING(40 40, 80 80)
@@ -79,7 +79,7 @@
 <case>
   <desc>mPL - touches Int and Ext</desc>
   <a>
-    MULTIPOINT(60 60, 100 100)
+    MULTIPOINT((60 60), (100 100))
   </a>
   <b>
     LINESTRING(40 40, 80 80)
@@ -94,7 +94,7 @@
 <case>
   <desc>mPL - touches IntNV and Ext</desc>
   <a>
-    MULTIPOINT(60 60, 100 100)
+    MULTIPOINT((60 60), (100 100))
   </a>
   <b>
     LINESTRING(40 40, 80 80)
@@ -109,7 +109,7 @@
 <case>
   <desc>mPL - touches IntV and Ext</desc>
   <a>
-    MULTIPOINT(60 60, 100 100)
+    MULTIPOINT((60 60), (100 100))
   </a>
   <b>
     LINESTRING(40 40, 60 60, 80 80)
diff --git a/test/vivid/TestRelatePP.xml b/testxml/general/TestRelatePP.xml
similarity index 76%
rename from test/vivid/TestRelatePP.xml
rename to testxml/general/TestRelatePP.xml
index 5f4e848..9cc957d 100644
--- a/test/vivid/TestRelatePP.xml
+++ b/testxml/general/TestRelatePP.xml
@@ -34,10 +34,10 @@
 <case>
   <desc>some same, some different points</desc>
   <a>
-    MULTIPOINT(40 40, 80 60, 40 100)
+    MULTIPOINT((40 40), (80 60), (40 100))
   </a>
   <b>
-    MULTIPOINT(40 40, 80 60, 120 100)
+    MULTIPOINT((40 40), (80 60), (120 100))
   </b>
 <test>
   <op name="relate" arg3="0F0FFF0F2" arg1="A" arg2="B">
@@ -49,10 +49,10 @@
 <case>
   <desc>same points</desc>
   <a>
-    MULTIPOINT(40 40, 80 60, 120 100)
+    MULTIPOINT((40 40), (80 60), (120 100))
   </a>
   <b>
-    MULTIPOINT(40 40, 80 60, 120 100)
+    MULTIPOINT((40 40), (80 60), (120 100))
   </b>
 <test>
   <op name="relate" arg3="0FFFFFFF2" arg1="A" arg2="B">
diff --git a/test/vivid/TestSimple.xml b/testxml/general/TestSimple.xml
similarity index 92%
rename from test/vivid/TestSimple.xml
rename to testxml/general/TestSimple.xml
index 1b23c0e..059ebcc 100644
--- a/test/vivid/TestSimple.xml
+++ b/testxml/general/TestSimple.xml
@@ -16,7 +16,7 @@
 <case>
   <desc>mP - multipoint with repeated points</desc>
   <a>
-    MULTIPOINT (80 280, 80 220, 160 220, 80 220)
+    MULTIPOINT ((80 280), (80 220), (160 220), (80 220))
   </a>
 <test>
   <op name="isSimple" arg1="A">
@@ -28,7 +28,7 @@
 <case>
   <desc>mP - multipoint with no repeated points</desc>
   <a>
-    MULTIPOINT (80 280, 80 220, 160 220)
+    MULTIPOINT ((80 280), (80 220), (160 220))
   </a>
 <test>
   <op name="isSimple" arg1="A">
diff --git a/testxml/general/TestUnaryUnion.xml b/testxml/general/TestUnaryUnion.xml
new file mode 100644
index 0000000..f7c67f3
--- /dev/null
+++ b/testxml/general/TestUnaryUnion.xml
@@ -0,0 +1,150 @@
+<run>
+  <desc>Tests for Geometry.union() method (unary union)</desc>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+  <desc>P - point (showing merging of identical points)</desc>
+  <a>
+    MULTIPOINT((10 10), (0 0), (10 10))
+  </a>
+<test>
+  <op name="union" arg1="A">
+    MULTIPOINT((10 10), (0 0))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>P - point (showing merging of identical points)</desc>
+  <a>
+    MULTIPOINT((10 10), (0 0), (10 10), (10 10), (10 10), (5 5), (5 5))
+  </a>
+<test>
+  <op name="union" arg1="A">
+    MULTIPOINT((10 10), (5 5), (0 0))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>mL - multiLineString (showing noding)</desc>
+  <a>
+    MULTILINESTRING((0 0, 10 10), (0 10, 10 0))
+  </a>
+<test>
+  <op name="union" arg1="A">
+    MULTILINESTRING ((0 0, 5 5),   (5 5, 10 10),   (0 10, 5 5),   (5 5, 10 0))
+  </op>
+</test>
+</case>
+
+<case>
+  <desc>GC - shows handling linear rings and linestrings</desc>
+  <a>    GEOMETRYCOLLECTION (LINEARRING (0 0, 0 70, 80 70, 80 0, 0 0), 
+  LINESTRING (30 110, 30 30, 100 30))
+  </a>
+  <test>
+    <op name="union" arg1="A">
+    MULTILINESTRING ((0 0, 0 70, 30 70), 
+  (30 70, 80 70, 80 30), 
+  (80 30, 80 0, 0 0), 
+  (30 110, 30 70), 
+  (30 70, 30 30, 80 30), 
+  (80 30, 100 30))
+    </op>
+  </test>
+</case>
+
+<case>
+  <desc>mL - multiLineString (showing noding and dissolving)</desc>
+  <a>    MULTILINESTRING((0 0, 10 10), (5 5, 15 15))
+  </a>
+  <test>
+    <op name="union" arg1="A">
+    MULTILINESTRING ((0 0, 5 5),   (5 5, 10 10),   (10 10, 15 15))
+    </op>
+  </test>
+</case>
+
+<case>
+  <desc>mP - multiPolygon (invalid)</desc>
+  <a>    MULTIPOLYGON (((0 0, 0 100, 100 100, 100 0, 0 0)), 
+  ((70 160, 70 70, 160 70, 160 160, 70 160)))
+  </a>
+  <test>
+    <op name="union" arg1="A">
+    POLYGON ((0 0, 0 100, 70 100, 70 160, 160 160, 160 70, 100 70, 100 0, 0 0))
+    </op>
+  </test>
+</case>
+
+<case>
+  <desc>GC - geometry collection (homo)</desc>
+  <a>    GEOMETRYCOLLECTION (POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0)), 
+  POLYGON ((70 160, 70 70, 160 70, 160 160, 70 160)))
+  </a>
+  <test>
+    <op name="union" arg1="A">
+    POLYGON ((0 0, 0 100, 70 100, 70 160, 160 160, 160 70, 100 70, 100 0, 0 0))
+    </op>
+  </test>
+</case>
+
+<case>
+  <desc>GC - geometry collection (hetero LA)</desc>
+  <a>    GEOMETRYCOLLECTION (POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0)), 
+  POLYGON ((70 160, 70 70, 160 70, 160 160, 70 160)), 
+  LINESTRING (40 70, 40 160))
+  </a>
+  <test>
+    <op name="union" arg1="A">
+    GEOMETRYCOLLECTION (LINESTRING (40 100, 40 160), 
+  POLYGON ((0 0, 0 100, 40 100, 70 100, 70 160, 160 160, 160 70, 100 70, 100 0, 0 0)))
+    </op>
+  </test>
+</case>
+
+<case>
+  <desc>GC - geometry collection (hetero PL)</desc>
+  <a>    GEOMETRYCOLLECTION (LINESTRING (40 60, 120 110), 
+  POINT (120 110), 
+  POINT (40 60))
+  </a>
+  <test>
+    <op name="union" arg1="A">
+    	LINESTRING (40 60, 120 110)
+    </op>
+  </test>
+</case>
+
+<case>
+  <desc>GC - geometry collection (hetero PL)</desc>
+  <a>    GEOMETRYCOLLECTION (LINESTRING (40 60, 120 110), 
+  POINT (120 110), 
+  POINT (40 60), 
+  POINT (100 70), 
+  POINT (80 50))
+  </a>
+  <test>
+    <op name="union" arg1="A">
+    	GEOMETRYCOLLECTION (POINT (80 50), POINT (100 70), LINESTRING (40 60, 120 110))
+    </op>
+  </test>
+</case>
+
+<case>
+  <desc>mP - multipolygon (invalid) with topology collapse</desc>
+  <a>    MULTIPOLYGON (((0 0, 150 0, 150 1, 0 0)), 
+  ((180 0, 20 0, 20 100, 180 100, 180 0)))
+  </a>
+  <test>
+    <op name="union" arg1="A">
+    	GEOMETRYCOLLECTION (LINESTRING (0 0, 20 0), 
+  POLYGON ((150 0, 20 0, 20 100, 180 100, 180 0, 150 0)))
+    </op>
+  </test>
+</case>
+
+
+
+</run>
diff --git a/test/vivid/TestValid.xml b/testxml/general/TestValid.xml
similarity index 89%
rename from test/vivid/TestValid.xml
rename to testxml/general/TestValid.xml
index 33094df..f60e493 100644
--- a/test/vivid/TestValid.xml
+++ b/testxml/general/TestValid.xml
@@ -22,17 +22,29 @@
       <a>
     POINT(10 10)
   </a>
-      <test>
-         <op name="isValid" arg1="A">
-    true
-  </op>
-      </test>
+      <test>         <op name="isValid" arg1="A">    true  </op>      </test>
+   </case>
+
+   <case>
+      <desc>P - point with invalid X ordinate</desc>
+      <a>
+    POINT(NaN 10)
+  </a>
+      <test>         <op name="isValid" arg1="A">    false  </op>      </test>
+   </case>
+
+   <case>
+      <desc>P - point with invalid Y ordinate</desc>
+      <a>
+    POINT(10 NaN)
+  </a>
+      <test>         <op name="isValid" arg1="A">    false  </op>      </test>
    </case>
 
    <case>
       <desc>mP - no repeated points</desc>
       <a>
-    MULTIPOINT(10 10, 20 20, 30 30)
+    MULTIPOINT((10 10), (20 20), (30 30))
   </a>
       <test>
          <op name="isValid" arg1="A">    true  </op>
@@ -42,7 +54,7 @@
    <case>
       <desc>P - repeated points</desc>
       <a>
-    MULTIPOINT(10 10, 20 20, 30 30, 10 10)
+    MULTIPOINT((10 10), (20 20), (30 30), (10 10))
   </a>
       <test>
          <op name="isValid" arg1="A">    true  </op>
@@ -60,6 +72,16 @@ LINESTRING (40 180, 120 120, 140 200, 200 140, 240 200)
    </case>
 
    <case>
+      <desc>L - invalid ordinate</desc>
+      <a>
+LINESTRING (40 180, 120 120, 140 200, 200 140, NaN 200)
+  </a>
+      <test>
+         <op name="isValid" arg1="A">    false  </op>
+      </test>
+   </case>
+
+   <case>
       <desc>L - repeated points</desc>
       <a>
 LINESTRING (40 180, 120 120, 140 200, 140 200, 200 140, 240 200)
@@ -94,6 +116,14 @@ LINESTRING (40 180, 120 120, 140 200, 140 200, 200 140, 240 200)
    </case>
 
    <case>
+      <desc>A - polygon with invalid point </desc>
+      <a>POLYGON ((0 0, 10 NaN, 20 0, 0 10, 0 0))</a>
+      <test>
+         <op name="isValid" arg1="A"> false </op>
+      </test>
+   </case>
+
+   <case>
       <desc>A - polygon with repeated point </desc>
       <a>POLYGON ((107 246, 107 246, 250 285, 294 137, 151 90, 15 125, 157 174, 107 246))</a>
       <test>
@@ -496,6 +526,20 @@ POLYGON ((0 0, 10 10, 10 0, 0 0),
       </test>
    </case>
 
+   <case>
+      <desc>A - touching holes do NOT disconnect (isCCW bug) </desc>
+      <a>
+POLYGON ((60 40, 60 240, 460 240, 460 40, 60 40), 
+  (260 200, 340 60, 400 120, 260 200), 
+  (260 200, 120 100, 200 60, 260 200))
+  	</a>
+      <test>
+         <op name="isValid" arg1="A">      true      </op>
+      </test>
+   </case>
+
+
+  
   <case>
       <desc>mA - adjacent shells (shared vertices) </desc>
       <a>
diff --git a/test/vivid/TestValid2-big.xml b/testxml/general/TestValid2-big.xml
similarity index 56%
rename from test/vivid/TestValid2-big.xml
rename to testxml/general/TestValid2-big.xml
index 1f1e409..f9a7da3 100644
--- a/test/vivid/TestValid2-big.xml
+++ b/testxml/general/TestValid2-big.xml
@@ -10,7 +10,7 @@
 <case>
   <desc>Test 558</desc>
   <a>
-    MULTIPOINT (-1000000000000000000000000 -1000000000000000000000000, 1000000000000000000000000 -1000000000000000000000000, 1000000000000000000000000 1000000000000000000000000, -1000000000000000000000000 1000000000000000000000000, 0 0)
+    MULTIPOINT ((-1000000000000000000000000 -1000000000000000000000000), (1000000000000000000000000 -1000000000000000000000000), (1000000000000000000000000 1000000000000000000000000), (-1000000000000000000000000 1000000000000000000000000), (0 0))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
diff --git a/test/vivid/TestValid2.xml b/testxml/general/TestValid2.xml
similarity index 92%
rename from test/vivid/TestValid2.xml
rename to testxml/general/TestValid2.xml
index 261be69..f199bda 100644
--- a/test/vivid/TestValid2.xml
+++ b/testxml/general/TestValid2.xml
@@ -2894,119 +2894,119 @@
 <case>
   <desc>Test 415</desc>
   <a>
-    MULTIPOINT (20 80, 110 160, 20 160)
+    MULTIPOINT ((20 80), (110 160), (20 160))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 416</desc>
   <a>
-    MULTIPOINT (20 80, 60 120, 20 160)
+    MULTIPOINT ((20 80), (60 120), (20 160))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 417</desc>
   <a>
-    MULTIPOINT (10 80, 110 170, 110 120)
+    MULTIPOINT ((10 80), (110 170), (110 120))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 418</desc>
   <a>
-    MULTIPOINT (10 80, 110 170, 160 120)
+    MULTIPOINT ((10 80), (110 170), (160 120))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 419</desc>
   <a>
-    MULTIPOINT (20 120, 60 120, 110 120, 160 120, 200 120)
+    MULTIPOINT ((20 120), (60 120), (110 120), (160 120), (200 120))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 420</desc>
   <a>
-    MULTIPOINT (60 120, 110 120, 160 120)
+    MULTIPOINT ((60 120), (110 120), (160 120))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 421</desc>
   <a>
-    MULTIPOINT (60 120, 160 120, 160 40, 60 40)
+    MULTIPOINT ((60 120), (160 120), (160 40), (60 40))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 422</desc>
   <a>
-    MULTIPOINT (20 150, 60 120, 110 80)
+    MULTIPOINT ((20 150), (60 120), (110 80))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 423</desc>
   <a>
-    MULTIPOINT (110 80, 160 120, 200 160)
+    MULTIPOINT ((110 80), (160 120), (200 160))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 424</desc>
   <a>
-    MULTIPOINT (110 80, 110 120, 110 160)
+    MULTIPOINT ((110 80), (110 120), (110 160))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 425</desc>
   <a>
-    MULTIPOINT (110 170, 110 80)
+    MULTIPOINT ((110 170), (110 80))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 426</desc>
   <a>
-    MULTIPOINT (60 120, 160 120, 110 80, 110 170)
+    MULTIPOINT ((60 120), (160 120), (110 80), (110 170))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 427</desc>
   <a>
-    MULTIPOINT (90 80, 130 80)
+    MULTIPOINT ((90 80), (130 80))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 428</desc>
   <a>
-    MULTIPOINT (60 120, 160 120, 110 80)
+    MULTIPOINT ((60 120), (160 120), (110 80))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 429</desc>
   <a>
-    MULTIPOINT (40 170, 40 90, 130 170)
+    MULTIPOINT ((40 170), (40 90), (130 170))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 430</desc>
   <a>
-    MULTIPOINT (90 170, 280 170, 190 90)
+    MULTIPOINT ((90 170), (280 170), (190 90))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 431</desc>
   <a>
-    MULTIPOINT (190 110, 150 70, 230 70)
+    MULTIPOINT ((190 110), (150 70), (230 70))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
@@ -3531,112 +3531,112 @@
 <case>
   <desc>Test 506</desc>
   <a>
-    MULTIPOINT (50 250, 90 220, 130 190)
+    MULTIPOINT ((50 250), (90 220), (130 190))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 507</desc>
   <a>
-    MULTIPOINT (180 180, 230 130, 280 80)
+    MULTIPOINT ((180 180), (230 130), (280 80))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 508</desc>
   <a>
-    MULTIPOINT (50 120, 90 80, 130 40)
+    MULTIPOINT ((50 120), (90 80), (130 40))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 509</desc>
   <a>
-    MULTIPOINT (300 280, 340 240, 380 200)
+    MULTIPOINT ((300 280), (340 240), (380 200))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 510</desc>
   <a>
-    MULTIPOINT (230 150, 260 120, 290 90)
+    MULTIPOINT ((230 150), (260 120), (290 90))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 511</desc>
   <a>
-    MULTIPOINT (200 190, 240 150, 270 110)
+    MULTIPOINT ((200 190), (240 150), (270 110))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 512</desc>
   <a>
-    MULTIPOINT (160 150, 190 120, 220 90)
+    MULTIPOINT ((160 150), (190 120), (220 90))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 513</desc>
   <a>
-    MULTIPOINT (120 190, 160 150, 200 110)
+    MULTIPOINT ((120 190), (160 150), (200 110))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 514</desc>
   <a>
-    MULTIPOINT (90 80, 160 150, 340 240)
+    MULTIPOINT ((90 80), (160 150), (340 240))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 515</desc>
   <a>
-    MULTIPOINT (90 80, 160 150, 300 150)
+    MULTIPOINT ((90 80), (160 150), (300 150))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 516</desc>
   <a>
-    MULTIPOINT (90 80, 160 150, 240 150)
+    MULTIPOINT ((90 80), (160 150), (240 150))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 517</desc>
   <a>
-    MULTIPOINT (90 80, 130 120, 210 150)
+    MULTIPOINT ((90 80), (130 120), (210 150))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 518</desc>
   <a>
-    MULTIPOINT (130 120, 210 150, 340 200)
+    MULTIPOINT ((130 120), (210 150), (340 200))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 519</desc>
   <a>
-    MULTIPOINT (160 150, 240 150, 340 210)
+    MULTIPOINT ((160 150), (240 150), (340 210))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 520</desc>
   <a>
-    MULTIPOINT (160 150, 300 150, 340 150)
+    MULTIPOINT ((160 150), (300 150), (340 150))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 521</desc>
   <a>
-    MULTIPOINT (160 150, 240 150, 340 240)
+    MULTIPOINT ((160 150), (240 150), (340 240))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
@@ -3657,84 +3657,84 @@
 <case>
   <desc>Test 524</desc>
   <a>
-    MULTIPOINT (20 20, 80 80, 20 120)
+    MULTIPOINT ((20 20), (80 80), (20 120))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 525</desc>
   <a>
-    MULTIPOINT (40 40, 80 60, 120 100)
+    MULTIPOINT ((40 40), (80 60), (120 100))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 526</desc>
   <a>
-    MULTIPOINT (40 40, 120 100, 80 60)
+    MULTIPOINT ((40 40), (120 100), (80 60))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 527</desc>
   <a>
-    MULTIPOINT (40 40, 60 100, 100 60, 120 120)
+    MULTIPOINT ((40 40), (60 100), (100 60), (120 120))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 528</desc>
   <a>
-    MULTIPOINT (20 120, 60 60, 100 100, 140 40)
+    MULTIPOINT ((20 120), (60 60), (100 100), (140 40))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 529</desc>
   <a>
-    MULTIPOINT (20 20, 80 70, 140 120, 200 170)
+    MULTIPOINT ((20 20), (80 70), (140 120), (200 170))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 530</desc>
   <a>
-    MULTIPOINT (20 20, 140 120, 80 70, 200 170)
+    MULTIPOINT ((20 20), (140 120), (80 70), (200 170))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 531</desc>
   <a>
-    MULTIPOINT (80 70, 20 20, 200 170, 140 120)
+    MULTIPOINT ((80 70), (20 20), (200 170), (140 120))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 532</desc>
   <a>
-    MULTIPOINT (80 70, 140 120)
+    MULTIPOINT ((80 70), (140 120))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 533</desc>
   <a>
-    MULTIPOINT (140 120, 80 70)
+    MULTIPOINT ((140 120), (80 70))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 534</desc>
   <a>
-    MULTIPOINT (80 170, 140 120, 200 80)
+    MULTIPOINT ((80 170), (140 120), (200 80))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 535</desc>
   <a>
-    MULTIPOINT (80 170, 140 120, 200 80, 80 70)
+    MULTIPOINT ((80 170), (140 120), (200 80), (80 70))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
@@ -3748,7 +3748,7 @@
 <case>
   <desc>Test 537</desc>
   <a>
-    MULTIPOINT (10 10, 20 20)
+    MULTIPOINT ((10 10), (20 20))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
@@ -3825,7 +3825,7 @@
 <case>
   <desc>Test 548</desc>
   <a>
-    MULTIPOINT (130 240, 130 240, 130 240, 570 240, 570 240, 570 240, 650 240)
+    MULTIPOINT ((130 240), (130 240), (130 240), (570 240), (570 240), (570 240), (650 240))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
@@ -3867,14 +3867,14 @@
 <case>
   <desc>Test 554</desc>
   <a>
-    MULTIPOINT (70 340, 70 50, 430 50, 420 340, 340 120, 390 110, 390 70, 350 100, 350 50, 370 90, 320 80, 360 120, 350 80, 390 90, 420 80, 410 60, 410 100, 370 100, 380 60, 370 80, 380 100, 360 80, 370 80, 380 70, 390 80, 390 70, 410 70, 400 60, 410 60, 410 60, 410 60, 370 70, 410 50, 410 50, 410 50, 410 50, 410 50, 410 50, 410 50)
+    MULTIPOINT ((70 340), (70 50), (430 50), (420 340), (340 120), (390 110), (390 70), (350 100), (350 50), (370 90), (320 80), (360 120), (350 80), (390 90), (420 80), (410 60), (410 100), (370 100), (380 60), (370 80), (380 100), (360 80), (370 80), (380 70), (390 80), (390 70), (410 70), (400 60), (410 60), (410 60), (410 60), (370 70), (410 50), (410 50), (410 50), (410 50), (410 50), (410 50), (410 50))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 555</desc>
   <a>
-    MULTIPOINT (140 350, 510 140, 110 140, 250 290, 250 50, 300 370, 450 310, 440 160, 290 280, 220 160, 100 260, 320 230, 200 280, 360 130, 330 210, 380 80, 220 210, 380 310, 260 150, 260 110, 170 130)
+    MULTIPOINT ((140 350), (510 140), (110 140), (250 290), (250 50), (300 370), (450 310), (440 160), (290 280), (220 160), (100 260), (320 230), (200 280), (360 130), (330 210), (380 80), (220 210), (380 310), (260 150), (260 110), (170 130))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
@@ -3888,7 +3888,7 @@
 <case>
   <desc>Test 557</desc>
   <a>
-    MULTIPOINT (50 320, 50 280, 50 230, 50 160, 50 120, 100 120, 160 120, 210 120, 210 180, 210 150, 180 180, 140 180, 140 210, 140 260, 160 180, 140 300, 140 320, 110 320, 80 320)
+    MULTIPOINT ((50 320), (50 280), (50 230), (50 160), (50 120), (100 120), (160 120), (210 120), (210 180), (210 150), (180 180), (140 180), (140 210), (140 260), (160 180), (140 300), (140 320), (110 320), (80 320))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
@@ -4462,7 +4462,7 @@
 <case>
   <desc>Test 640</desc>
   <a>
-    MULTIPOINT (120 320, 180 260, 180 320, 180 200, 300 200, 200 220)
+    MULTIPOINT ((120 320), (180 260), (180 320), (180 200), (300 200), (200 220))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
@@ -4476,14 +4476,14 @@
 <case>
   <desc>Test 642</desc>
   <a>
-    MULTIPOINT (200 360, 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200, 200 360, 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200)
+    MULTIPOINT ((200 360), (420 340), (400 100), (340 120), (200 140), (200 160), (220 180), (260 200), (200 360), (420 340), (400 100), (340 120), (200 140), (200 160), (220 180), (260 200))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 643</desc>
   <a>
-    MULTIPOINT (40 90, 20 20, 70 70)
+    MULTIPOINT ((40 90), (20 20), (70 70))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
@@ -4511,7 +4511,7 @@
 <case>
   <desc>Test 647</desc>
   <a>
-    MULTIPOINT (100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320, 100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320)
+    MULTIPOINT ((100 320), (100 260), (100 220), (100 200), (100 180), (120 180), (200 180), (220 180), (220 260), (220 320), (200 320), (160 320), (140 320), (120 320), (100 320), (100 260), (100 220), (100 200), (100 180), (120 180), (200 180), (220 180), (220 260), (220 320), (200 320), (160 320), (140 320), (120 320))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
@@ -4525,7 +4525,7 @@
 <case>
   <desc>Test 649</desc>
   <a>
-    MULTIPOINT (-560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, -320 -180, -280 -140, -320 -120, -560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, -320 -180, -280 -140, -320 -120)
+    MULTIPOINT ((-560 -180), (-420 -180), (-500 -220), (-500 -340), (-500 -280), (-500 -140), (-320 -140), (-420 -140), (-320 -180), (-280 -140), (-320 -120), (-560 -180), (-420 -180), (-500 -220), (-500 -340), (-500 -280), (-500 -140), (-320 -140), (-420 -140), (-320 -180), (-280 -140), (-320 -120))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
@@ -4546,21 +4546,21 @@
 <case>
   <desc>Test 652</desc>
   <a>
-    MULTIPOINT (100 100, 200 200)
+    MULTIPOINT ((100 100), (200 200))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 653</desc>
   <a>
-    MULTIPOINT (100 100, 200 200, 300 300, 500 500)
+    MULTIPOINT ((100 100), (200 200), (300 300), (500 500))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 654</desc>
   <a>
-    MULTIPOINT (100 100, 200 200, 400 400, 600 600)
+    MULTIPOINT ((100 100), (200 200), (400 400), (600 600))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
@@ -4980,7 +4980,7 @@
 <case>
   <desc>Test 714</desc>
   <a>
-    MULTIPOINT (0 20, 40 20)
+    MULTIPOINT ((0 20), (40 20))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
@@ -4994,21 +4994,21 @@
 <case>
   <desc>Test 716</desc>
   <a>
-    MULTIPOINT (0 20, 20 20)
+    MULTIPOINT ((0 20), (20 20))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 717</desc>
   <a>
-    MULTIPOINT (20 20, 40 20)
+    MULTIPOINT ((20 20), (40 20))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 718</desc>
   <a>
-    MULTIPOINT (80 260, 140 260, 180 260)
+    MULTIPOINT ((80 260), (140 260), (180 260))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
@@ -5050,7 +5050,7 @@
 <case>
   <desc>Test 724</desc>
   <a>
-    MULTIPOINT (40 40, 100 40)
+    MULTIPOINT ((40 40), (100 40))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
@@ -5064,14 +5064,14 @@
 <case>
   <desc>Test 726</desc>
   <a>
-    MULTIPOINT (40 40, 60 60)
+    MULTIPOINT ((40 40), (60 60))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 727</desc>
   <a>
-    MULTIPOINT (60 60, 100 100)
+    MULTIPOINT ((60 60), (100 100))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
@@ -5092,21 +5092,21 @@
 <case>
   <desc>Test 730</desc>
   <a>
-    MULTIPOINT (40 40, 80 60, 40 100)
+    MULTIPOINT ((40 40), (80 60), (40 100))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 731</desc>
   <a>
-    MULTIPOINT (80 280, 80 220, 160 220, 80 220)
+    MULTIPOINT ((80 280), (80 220), (160 220), (80 220))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
 <case>
   <desc>Test 732</desc>
   <a>
-    MULTIPOINT (80 280, 80 220, 160 220)
+    MULTIPOINT ((80 280), (80 220), (160 220))
   </a>
   <test> <op name="isValid" arg1="A"> true </op> </test>
 </case>
diff --git a/test/vivid/TestWithinDistance.xml b/testxml/general/TestWithinDistance.xml
similarity index 96%
rename from test/vivid/TestWithinDistance.xml
rename to testxml/general/TestWithinDistance.xml
index 4daa340..b6a2660 100644
--- a/test/vivid/TestWithinDistance.xml
+++ b/testxml/general/TestWithinDistance.xml
@@ -44,7 +44,7 @@
 <case>
   <desc>mPA - points outside polygon</desc>
   <a>    POLYGON ((200 180, 60 140, 60 260, 200 180))  </a>
-  <b>    MULTIPOINT (140 280, 140 320)  </b>
+  <b>    MULTIPOINT ((140 280), (140 320))  </b>
 <test><op name="isWithinDistance" arg1="A" arg2="B" arg3="60">    true   </op></test>
 <test><op name="isWithinDistance" arg1="A" arg2="B" arg3="57">    false  </op></test>
 </case>
diff --git a/testxml/robust/ExternalRobustness.xml b/testxml/robust/ExternalRobustness.xml
new file mode 100644
index 0000000..b2d6a11
--- /dev/null
+++ b/testxml/robust/ExternalRobustness.xml
@@ -0,0 +1,210 @@
+<run>
+  <!-- first occurrence is used -->
+  <precisionModel type="FLOATING"/>
+  <precisionModel type="FLOATING_SINGLE"/>
+  <precisionModel scale="1.0" offsetx="0.0" offsety="0.0"/>
+
+<case>
+<desc>http://geos.refractions.net/pipermail/geos-devel/2005-May/001441.html</desc>
+
+ <a>
+ 0103000020E80A00000100000069010000ECA2396C13BBFF40E8BA3424319F2541DEFB1D49DFB8FF40E73660ADA07F2541FAD6C80B43B2FF407033A9AC12602541E43630383FA7FF401F0EFC9789402541470638AAD497FF408AE2E2E40721254133F2A0950484FF40D372540890012541776AF085D06BFF40B21B837624E22441E2C9515E3A4FFF40DBD7ABA2C7C22441CDA87059442EFF407956E5FE7BA32441DF5C4C09F108FF40A728EFFB4384244184A9045743DFFE40A40901092265244116A59F823EB1FE4096459A931846244141D7C822E67EFE40AD4251072A272441B29589243E48FE405630A3CD58082441A6A4FACA4 [...]
+</a>
+<b>
+ 0103000020E80A0000010000001B0000003731C25DB7A40AC123BABA3D2F2E1541482DDA6520AE15C150176B846E0E04419D9BAD51D2DD20C188B238C6A20F1341C93BA6B63EF616C1773C690356B72041AFE718BD3DE01AC1363F67295618224104666722A81614C128DF2B476DE92641E3BF74CA1BBCF1C0D43292B68C652141BDD1D74AAFA6CCC01D27263DE8A122418FF95A96AD86C240BA1AA7079685274134285EE6E81EF9C040F2AA56B1AF2C4117B1B91CDC81FA40E8363289617C3041DF296F1F14800941806416C77A5C2C4143DE3E9BAE901A41E5DD836A7C8E2E413E4390CBBBDE1E41DCBAED0B9BC82741489E9ED93 [...]
+</b>
+
+<test>
+   <op name="intersection" arg1="A" arg2="B"> GEOMETRYCOLLECTION EMPTY </op>
+</test>
+
+</case>
+
+<case>
+
+<desc>http://postgis.refractions.net/pipermail/postgis-users/2006-March/011316.html</desc>
+<a>
+POLYGON((742605.987032656 5087763.72510381,742599.903121688 
+5087760.56016809,742598.666141033
+5087762.50894352,742591.100910753
+5087758.50480931,742586.861672536
+5087766.63211263,742591.417801844
+5087769.04526206,742592.428792606
+5087767.35034731,742601.541294342
+5087772.18101105,742605.987032656 5087763.72510381))
+</a>
+<b>
+POLYGON((742601.541294537 5087772.18101068,742592.428792606
+5087767.35034731,742589.944404072
+5087771.51539701,742583.880455986 5087782.54873438,742582.81550675
+5087784.27809355,742583.216887765 5087784.43459684,742582.99081514
+5087785.0349637,742592.341351823 5087789.67654,742593.375823205
+5087787.7060691,742599.28794443 5087776.4640487,742601.541294537
+5087772.18101068))
+</b>
+
+<test>
+<op name="intersection" arg1="A" arg2="B"> GEOMETRYCOLLECTION EMPTY </op>
+</test>
+
+</case>
+
+<case>
+<desc>http://postgis.refractions.net/pipermail/postgis-users/2006-March/011332.html</desc>
+
+<a>
+POLYGON ((613697.0000000041909516 2369267.9999981997534633, 613797.0000000043073669 2368322.9999981978908181, 613643.0000000041909516 2367807.9999981969594955, 613674.0000000041909516 2367405.9999981969594955, 613400.0000000041909516 2367299.9999981955625117, 613200.0000000040745363 2366813.9999981950968504, 613252.0000000040745363 2366474.9999981927685440, 613094.0000000040745363 2366400.9999981927685440, 612695.0000000039581209 2365506.9999981909058988, 612326.0000000038417056 2365402. [...]
+</a>
+
+<b>
+POLYGON ((607216.0000000019790605 2370623.9999982002191246, 608128.0000000019790605 2370312.9999982002191246, 608317.0000000030267984 2370101.9999982002191246, 608328.0000000030267984 2369868.9999982002191246, 608644.0000000030267984 2369847.9999982002191246, 608801.0000000030267984 2369192.9999982002191246, 608919.0000000030267984 2368811.9999982002191246, 609151.0000000030267984 2368684.9999982002191246, 609061.0000000030267984 2368332.9999982002191246, 608602.0000000030267984 2368124. [...]
+</b>
+
+<test>
+<op name="intersection" arg1="A" arg2="B"> GEOMETRYCOLLECTION EMPTY </op>
+</test>
+
+</case>
+
+<case>
+<desc>http://postgis.refractions.net/pipermail/postgis-users/2006-March/011332.html (2)</desc>
+
+<a>
+ 0103000020BE6B0000010000002A000000FBFFFFFF0BB81A41D3FFFFFF12C63E41FBFFFFFF4FBD1A41D6FFFFFF66C63E41FCFFFFFF1BC11A41D7FFFFFF14C53E41FBFFFFFF93C31A41D3FFFFFFC4C23E41FCFFFFFF87C71A41D8FFFFFFC4C23E41FBFFFFFF8BD41A41D5FFFFFFBEC03E41FBFFFFFF2BD81A41D3FFFFFFDEC03E41FCFFFFFF63DA1A41DBFFFFFFB9BF3E41FCFFFFFF43D91A41D7FFFFFF5BBE3E41FBFFFFFFD7D81A41D1FFFFFFA8BC3E41FCFFFFFF37D61A41D3FFFFFF60BB3E41FCFFFFFFF3DD1A41D6FFFFFFFDB73E41FCFFFFFF6BE11A41D8FFFFFFBCB33E41FCFFFFFF4BDE1A41D8FFFFFFEBB13E41FCFFFFFF7 [...]
+</a>
+
+<b>
+ 0103000020BE6B00000100000038000000000000009C801A41D5FFFFFF33D83E41000000006C821A41D5FFFFFFE0D63E410000000038861A41D5FFFFFFE3D53E4100000000E4851A41D5FFFFFFB0D43E4100000000C0821A41D5FFFFFFF2D33E4100000000B4691A41D5FFFFFFC6CF3E410000000038681A41D5FFFFFFBDCE3E410000000038751A41D5FFFFFF76CD3E410000000068731A41D5FFFFFF30CB3E4100000000787C1A41D5FFFFFFDCCA3E4100000000B4851A41D5FFFFFFDCCA3E4100000000788B1A41D5FFFFFF23CC3E41000000004C8C1A41D5FFFFFF10CB3E4100000000A48A1A41D5FFFFFFDEC93E41000000007 [...]
+</b>
+
+<test>
+<op name="intersection" arg1="A" arg2="B"> GEOMETRYCOLLECTION EMPTY </op>
+</test>
+
+</case>
+
+ <case>
+<desc>
+postgis-users/2006-November/013743.html
+Fails due to 'gore' with apex extremely close to other segment (in B)
+</desc>
+<a>
+POLYGON((5417148.108 5658342.603,5417139.016
+5658338.009,5417126.791 5658331.833,5417116.292 5658327.518,5417112.871
+5658325.598,5417110.25 5658324.127,5417106.071 5658321.781,5417104.226
+5658320.745,5417093.266 5658315.008,5417091.265 5658313.961,5417085.335
+5658310.857,5417060.44 5658326.26,5417064.68 5658327.52,5417088.83
+5658336.46,5417088.52 5658337.31,5417102.92 5658342.65,5417103.26
+5658341.83,5417111.76 5658345.51,5417121.662 5658349.583,5417121.878
+5658349.672,5417125.217 5658351.119,5417131.761 5658353.388,5417137.589
+5658356.276,5417142.166 5658359.67,5417146.599 5658364.988,5417151.395
+5658370.641,5417150.853 5658371.392,5417152.59741167
+5658373.52811061,5417154.92 5658376.37,5417155.18955743
+5658376.89699992,5417154.919 5658376.371,5417155.814
+5658378.111,5417157.051 5658380.297,5417158.004 5658382.304,5417159.014
+5658384.47,5417159.775 5658386.619,5417160.629 5658389.278,5417161.5
+5658399.49,5417160.773 5658404.194,5417159.41 5658413.02,5417158.853
+5658414.442,5417153.671 5658427.659,5417153.67051161
+5658427.6586943,5417153.67 5658427.66,5417152.73 5658427.07,5417149.993
+5658436.599,5417148.81 5658439.42,5417149.233 5658439.67,5417148.36
+5658440.81,5417146.41 5658446.6,5417144.321 5658453.127,5417144.32092232
+5658453.13043826,5417154.59 5658458.01,5417154.99551047
+5658455.8409905,5417155.446 5658453.413,5417157.23981414
+5658448.75748237,5417157.22660892 5658448.57861162,5417157.22660849
+5658448.57860592,5417157.22660865 5658448.57860812,5417157.128
+5658447.265,5417157.64950997 5658446.06368023,5417157.64950961
+5658446.06368108,5417158.314 5658444.533,5417172.322
+5658417.957,5417174.99 5658418.57,5417175.23 5658417.74,5417176.696
+5658412.61,5417177.875 5658408.488,5417178.76 5658405.39,5417178.1
+5658393.55,5417178.08 5658393.36,5417177.11 5658384.95,5417178.151
+5658384.915,5417178.14836289 5658384.91508866,5417178.12
+5658384.83,5417177.91415246 5658383.81114117,5417176.927
+5658378.944,5417176.603 5658377.341,5417176.73975922
+5658378.01762048,5417176.6 5658377.34,5417176.51210558
+5658376.89535766,5417176.428 5658376.483,5417175.235
+5658370.602,5417171.577 5658362.886,5417170.762 5658360.107,5417168.522
+5658357.989,5417166.042 5658355.047,5417164.137 5658352.264,5417162.642
+5658351.593,5417160.702 5658350.843,5417160.05417889
+5658350.5823586,5417158.82 5658350.09,5417158.82103105
+5658350.0862195,5417159.50373263 5658350.36089455,5417158.818
+5658350.085,5417159.055 5658349.214,5417155.754
+5658347.679,5417156.78066321 5658348.15640928,5417155.7525011
+5658347.6811561,5417155.161 5658348.532,5417149.028
+5658343.237,5417152.26877967 5658346.03496647,5417149.03
+5658343.24,5417148.78133339 5658343.06701453,5417148.108
+5658342.603))
+</a>
+
+<b>
+POLYGON((5417148.36 5658440.81,5417149.233
+5658439.67,5417148.81 5658439.42,5417149.993 5658436.599,5417152.73
+5658427.07,5417153.67 5658427.66,5417153.67051161
+5658427.6586943,5417153.671 5658427.659,5417158.853
+5658414.442,5417159.41 5658413.02,5417160.773 5658404.194,5417161.5
+5658399.49,5417160.63 5658389.28,5417159.78 5658386.62,5417159.366239
+5658385.46469333,5417159.014 5658384.47,5417158.004
+5658382.304,5417157.051 5658380.297,5417155.814
+5658378.111,5417155.18955747 5658376.897,5417154.92
+5658376.37,5417152.59740379 5658373.52810095,5417150.853
+5658371.392,5417151.13020611 5658371.00790076,5417151.4
+5658370.64,5417147.11100598 5658365.59149663,5417146.599
+5658364.988,5417145.96673439 5658364.22950947,5417142.17
+5658359.67,5417139.98754716 5658358.05460369,5417137.589
+5658356.276,5417131.761 5658353.388,5417125.33011568
+5658351.15822058,5417125.22 5658351.12,5417121.88 5658349.67,5417121.66
+5658349.58,5417111.76 5658345.51,5417103.26 5658341.83,5417102.92
+5658342.65,5417088.52 5658337.31,5417088.83 5658336.46,5417064.68
+5658327.52,5417060.44 5658326.26,5417085.34 5658310.86,5417085.90750076
+5658311.15666987,5417091.265 5658313.961,5417093.266
+5658315.008,5417093.61266829 5658315.18946314,5417104.23
+5658320.75,5417105.81727304 5658321.63852784,5417106.071
+5658321.781,5417106.60319005 5658322.07975996,5417110.25
+5658324.13,5417112.87 5658325.6,5417116.29 5658327.52,5417121.76604303
+5658329.76778528,5417126.791 5658331.833,5417139.016
+5658338.009,5417148.108 5658342.603,5417148.78133333
+5658343.06701449,5417149.03 5658343.24,5417152.26878253
+5658346.03496893,5417155.161 5658348.532,5417155.7525011
+5658347.6811561,5417156.78066337 5658348.15640935,5417159.055
+5658349.214,5417158.818 5658350.085,5417158.82103105
+5658350.0862195,5417158.82 5658350.09,5417160.0541792
+5658350.58235872,5417160.702 5658350.843,5417162.642
+5658351.593,5417164.137 5658352.264,5417165.25343486
+5658353.89499119,5417166.04 5658355.05,5417168.52 5658357.99,5417170.76
+5658360.11,5417171.26171711 5658361.81094338,5417171.577
+5658362.886,5417175.235 5658370.602,5417176.428
+5658376.483,5417176.51210558 5658376.89535766,5417176.6
+5658377.34,5417176.73975924 5658378.01762057,5417176.927
+5658378.944,5417177.91415134 5658383.81113564,5417178.12
+5658384.83,5417178.14836289 5658384.91508866,5417177.11
+5658384.95,5417178.08 5658393.36,5417178.1 5658393.55,5417178.76
+5658405.39,5417177.875 5658408.488,5417176.696 5658412.61,5417175.23
+5658417.74,5417174.99 5658418.57,5417172.322
+5658417.957,5417172.32037372 5658417.96008538,5417172.32
+5658417.96,5417158.31 5658444.53,5417157.64951003
+5658446.06368011,5417157.128 5658447.265,5417157.22660867
+5658448.5786084,5417157.23981414 5658448.75748238,5417155.446
+5658453.413,5417154.99551072 5658455.84098918,5417154.59
+5658458.01,5417144.32092232 5658453.13043826,5417144.321
+5658453.127,5417146.41 5658446.6,5417148.36 5658440.81))
+</b>
+
+<test>
+<op name="isValid" arg1="A">
+true
+</op>
+</test>
+
+<test>
+<op name="isValid" arg1="B">
+true
+</op>
+</test>
+
+<test>
+<op name="intersection" arg1="A" arg2="B"> GEOMETRYCOLLECTION EMPTY </op>
+</test>
+
+</case>
+
+
+</run>
\ No newline at end of file
diff --git a/testxml/robust/TestRobustOverlayError.xml b/testxml/robust/TestRobustOverlayError.xml
new file mode 100644
index 0000000..70be25c
--- /dev/null
+++ b/testxml/robust/TestRobustOverlayError.xml
@@ -0,0 +1,19 @@
+<run>
+  <precisionModel type="FLOATING" />
+
+<case>
+  <desc>AA - causes failure due to snapping making input invalid (JTS 1.10)</desc>
+  <a>
+POLYGON ((-17445.395049241037 7027956.74246328, -17043.826645147976 7129954.071279258, 17589.339716189785 7130067.146271055, 39761.968883175316 7126950.986460381, 25010.654925657538 7021989.933761643, -17445.395049241037 7027956.74246328), 
+  (30821.194551129327 7063334.071483452, 37105.04127125562 7108045.964175955, 35410.746940282996 7107926.824752315, 31448.55806386597 7107298.531171783, 27554.224237946335 7106327.909697101, 23756.521966153046 7105022.126693625, 20083.58213877523 7103390.830451577, 16562.699326805414 7101446.086185409, 13220.144029514759 7099202.294422406, 10080.978700195139 7096676.09311996, 7168.878465985913 7093886.243930826, 4505.957556630605 7090853.503120101, 2112.6025589346814 7087600.477727333, 7 [...]
+  </a>
+  <b>
+POLYGON ((14518.078277259594 7023464.569241988, 11497.562933872843 7025662.304655478, 8431.948121453668 7028335.26856397, 5617.047438499136 7031264.45683008, 3074.235016295675 7034427.083732987, 822.6458097956669 7037798.599749552, -1120.9633072352574 7041352.893169135, -2742.3294252505157 7045062.50264867, -4029.7759410829603 7048898.8386645, -4974.281157874156 7052832.411799563, -5569.523244788898 7056833.065813453, -5811.90194162676 7060870.21347627, -5700.537650966212 7064913.0732023 [...]
+
+  	</b>
+<test>
+  <op name="difference" arg1="A" arg2="B"> GEOMETRYCOLLECTION EMPTY </op>
+</test>
+</case>
+
+</run>
diff --git a/test/robust/TestRobustOverlayFixed.xml b/testxml/robust/TestRobustOverlayFixed.xml
similarity index 74%
rename from test/robust/TestRobustOverlayFixed.xml
rename to testxml/robust/TestRobustOverlayFixed.xml
index 1bb9e42..2dc4917 100644
--- a/test/robust/TestRobustOverlayFixed.xml
+++ b/testxml/robust/TestRobustOverlayFixed.xml
@@ -11,7 +11,7 @@ POLYGON ((484 290, 558 359, 543 309, 484 290))
 
   	</b>
 <test>
-  <op name="intersection">    GEOMETRYCOLLECTION EMPTY  </op>
+  <op name="intersection" arg1="A" arg2="B"> POINT (545 317) </op>
 </test>
 </case>
 
diff --git a/test/robust/TestRobustOverlayFloat.xml b/testxml/robust/TestRobustOverlayFloat.xml
similarity index 66%
rename from test/robust/TestRobustOverlayFloat.xml
rename to testxml/robust/TestRobustOverlayFloat.xml
index 8024e14..14f9550 100644
--- a/test/robust/TestRobustOverlayFloat.xml
+++ b/testxml/robust/TestRobustOverlayFloat.xml
@@ -1,7 +1,7 @@
 <run>
-	<precisionModel type="FLOATING" />
+  <precisionModel type="FLOATING" />
 <case>
-  <desc>AA - robustness failure</desc>
+  <desc>AA - OLD robustness failure (works with snapping)</desc>
   <a>
 POLYGON ((301949.68 2767249.16, 301936.52 2767241.28, 301938.87 
 2767237.43, 301952.47 2767245.59, 301950.74 2767247.81, 301949.68 
@@ -12,12 +12,14 @@ POLYGON ((302041.321 2767264.675, 301938.823 2767237.507, 301941.21 2767233.59,
 302048.886 2767243.046, 302041.321 2767264.675))  
   </b>
 <test>
-  <op name="intersection">    GEOMETRYCOLLECTION EMPTY  </op>
+  <op name="intersection" arg1="A" arg2="B"> 
+  POLYGON ((301939.1370850084 2767237.5902510053, 301938.87 2767237.43, 301938.823 2767237.507, 301939.1370850084 2767237.5902510053)) 
+  </op>
 </test>
 </case>
 
 <case>
-  <desc>AA - robustness failure</desc>
+  <desc>AA - OLD robustness failure (works with snapping)</desc>
   <a>
 POLYGON ((301936.52 2767241.28, 301933.22 2767239.3, 301934.9 
 2767236.51, 301935.54 2767235.44, 301938.87 2767237.43, 301936.52 
@@ -28,12 +30,14 @@ POLYGON ((302041.321 2767264.675, 301938.823 2767237.507, 301941.21 2767233.59,
 302048.886 2767243.046, 302041.321 2767264.675))  
 </b>
 <test>
-  <op name="intersection">    GEOMETRYCOLLECTION EMPTY  </op>
+  <op name="intersection" arg1="A" arg2="B">    
+  POLYGON ((301938.823 2767237.507, 301938.87 2767237.43, 301938.86994385667 2767237.4299664493, 301938.823 2767237.507))  
+  </op>
 </test>
 </case>
 
 <case>
-  <desc>AA - robustness failure (fails with EnhancedPrecisionOp)</desc>
+  <desc>AA - OLD robustness failure  (works with snapping)</desc>
   <a>
 POLYGON ((464664.782646596 5362148.87380619, 464664.713299 5362148.758128, 464686.806220838 5362136.92416521, 
 464713.650216607 5362122.5453135, 464711.113332785 5362117.30158834, 464707.408813375 5362110.21553566, 
@@ -47,12 +51,14 @@ POLYGON ((464769.977147523 5362187.88829332, 464765.146147008 5362180.84587461,
 464746.257208116 5362179.45514151, 464752.378040379 5362191.80978275, 464769.977147523 5362187.88829332))  
 </b>
 <test>
-  <op name="intersection">    GEOMETRYCOLLECTION EMPTY  </op>
+  <op name="intersection" arg1="A" arg2="B">    
+  POINT (464712.646269 5362123.083073)  
+  </op>
 </test>
 </case>
 
 <case>
-  <desc>AA - robustness failure (fails with EnhancedPrecisionOp)</desc>
+  <desc>AA - OLD robustness failure  (works with snapping)</desc>
   <a>
 POLYGON ((698400.5682737827 2388494.3828697307, 698402.3209180075 
 2388497.0819257903, 698415.3598714538 2388498.764371397, 
@@ -66,13 +72,15 @@ POLYGON ((698231.847335025 2388474.57994264, 698440.416211779
 2388474.57994264))
 	</b>
 <test>
-  <op name="intersection">    GEOMETRYCOLLECTION EMPTY  </op>
+  <op name="intersection" arg1="A" arg2="B">    
+  LINESTRING (698413.5003455497 2388495.90071853, 698400.5682737827 2388494.3828697307)  
+  </op>
 </test>
 </case>
 
 
 <case>
-  <desc>AA - robustness failure (fails with EnhancedPrecisionOp)</desc>
+  <desc>AA - OLD robustness failure (works with snapping)</desc>
   <a>
 POLYGON ((698265.5760207245 2388415.007869463, 698266.5171698363 
 2388416.456984281, 698272.2367250263 2388406.868318228, 
@@ -85,7 +93,9 @@ POLYGON ((698230.86813842 2388473.60074604, 698104.551776442
 2388473.60074604))
 	</b>
 <test>
-  <op name="intersection">    GEOMETRYCOLLECTION EMPTY  </op>
+  <op name="intersection" arg1="A" arg2="B">    
+  POLYGON ((698265.5760207245 2388415.007869463, 698265.5760207246 2388415.007869463, 698271.2748419731 2388405.3872787533, 698265.5760207245 2388415.007869463))  
+  </op>
 </test>
 </case>
 
diff --git a/test/robust/TestRobustRelate.xml b/testxml/robust/TestRobustRelate.xml
similarity index 84%
rename from test/robust/TestRobustRelate.xml
rename to testxml/robust/TestRobustRelate.xml
index 45a5e23..a02be8a 100644
--- a/test/robust/TestRobustRelate.xml
+++ b/testxml/robust/TestRobustRelate.xml
@@ -10,7 +10,7 @@
     POINT(0 0)
   </b>
 <test>
-  <op name="intersects">
+  <op name="intersects" arg1="A" arg2="B">
     false
   </op>
 </test>
diff --git a/testxml/stmlf/stmlf-cases-20061018_int.xml b/testxml/stmlf/stmlf-cases-20061018_int.xml
new file mode 100644
index 0000000..da1f840
--- /dev/null
+++ b/testxml/stmlf/stmlf-cases-20061018_int.xml
@@ -0,0 +1,44826 @@
+   <!--
+ The test cases have been taken from the robustness improvement project
+ funded by the Bavarian State Ministry of Agriculture and Forestry
+ (StMLF) and the State Survey of Bavaria (LVG). Written permission
+ to use the data for tests has been given by email on the 22 Nov 2006.
+ -->
+<run>
+	<desc>Overlay Robustness cases from StMLF (all handled by snapping)</desc>
+	<precisionModel type="FLOATING"/>
+ 	<geometryOperation>com.vividsolutions.jtstest.geomop.OverlayValidatedGeometryOperation</geometryOperation>
+	
+<case><desc>320229 - 5195510
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1524  </desc>
+<a>
+0106000000010000000103000000020000001100000014AE47B1DA5D50413D0AD7C3D51B554148E17A64CF5D50410AD7A3C0CD1B55413D0AD753CD5D504133333343D01B5541AE47E11AC55D5041713D0A77CA1B5541D7A3703DBE5D50417B14AE07D21B5541BC3181A1BC5D5041C54031E9D01B5541F98B4C65BC5D50419B0609BBD01B55419953D853BC5D5041B52A36ABD01B554161DE7A71B75D504135703503D71B5541713D0A77BF5D5041CDCCCCFCDB1B5541EC51B8AEC35D504185EB5188DE1B5541333333F3CB5D5041D7A3703DE31B5541EC51B87ECD5D5041D7A3700DE41B554185EB5158D05D504152B81E95E51B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000295C8F02BA5D5041AE47E1FAD41B55411F85EB91BA5D50410AD7A350D41B5541D7A370FDBC5D50411F85EB41D11B55418FC2F508BD5D504114AE4731D11B55419A999979BC5D5041D7A370CDD01B55410AD7A390BB5D5041A4703DFACF1B55417B14AEB7B95D5041E17A144ECE1B5541AE47E1BAB75D50411F85EB81CC1B5541EC51B87EB05D504114AE4771C61B55411F85EBB1AF5D5041666666A6C51B5541666666F6AB5D50417B14AEE7C91B55413D0AD783AB5D5041F6285C6FCA1B5541295C8F02BA5D5041AE47E1FAD41B5541
+</b>
+
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+
+</case>
+
+
+ <case><desc>1990453 - 250887
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1434  </desc>
+<a>
+010600000001000000010300000001000000610000008FC2F5D8D4AC504185EB51782AD8544152B81EB5D7AC504185EB51882CD85441D7A3705DDBAC5041333333432ED854419A999939DEAC50410AD7A3102DD8544148E17A14E3AC5041333333332CD85441E17A14CEE6AC50411F85EB312ED8544152B81E45E7AC5041EC51B83E35D85441D7A370FDEDAC5041D7A3703D38D8544152B81E75EDAC50419A9999193BD854417B14AE97ECAC5041AE47E13A3CD85441F6285CEFE7AC5041713D0AE739D854418FC2F568E4AC5041EC51B86E3BD85441D7A370ADE4AC5041713D0A073DD85441EC51B8BEE3AC5041000000A03ED85441 [...]
+</a>
+
+<b>
+010600000001000000010300000003000000EE00000052B81E55D4AC5041333333635ED85441713D0A47D5AC50410AD7A36067D85441EC51B8BED8AC504148E17AF46FD85441F00EFA22D8AC5041F886276A70D85441C3A4701DD8AC5041A8B81E6570D8544141295C8FD5AC504102E47A146AD85441A263039BD5AC50411E637A836AD85441A7FF340AD6AC50418EB29BA66ED85441ADA4F63CD6AC5041983F118A70D854410C52B84ED6AC50416933333371D85441BC13605AD6AC50418857044971D85441B83EEC91D6AC50416058FEB071D8544110076A9CD6AC504158B9A1C471D8544177A9ACE0D9AC50417FD2FBE177D85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>1990453 - 325673
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1434  </desc>
+<a>
+010600000001000000010300000001000000610000008FC2F5D8D4AC504185EB51782AD8544152B81EB5D7AC504185EB51882CD85441D7A3705DDBAC5041333333432ED854419A999939DEAC50410AD7A3102DD8544148E17A14E3AC5041333333332CD85441E17A14CEE6AC50411F85EB312ED8544152B81E45E7AC5041EC51B83E35D85441D7A370FDEDAC5041D7A3703D38D8544152B81E75EDAC50419A9999193BD854417B14AE97ECAC5041AE47E13A3CD85441F6285CEFE7AC5041713D0AE739D854418FC2F568E4AC5041EC51B86E3BD85441D7A370ADE4AC5041713D0A073DD85441EC51B8BEE3AC5041000000A03ED85441 [...]
+</a>
+
+<b>
+010600000001000000010300000003000000EE00000052B81E55D4AC5041333333635ED85441713D0A47D5AC50410AD7A36067D85441EC51B8BED8AC504148E17AF46FD85441F00EFA22D8AC5041F886276A70D85441C3A4701DD8AC5041A8B81E6570D8544141295C8FD5AC504102E47A146AD85441A263039BD5AC50411E637A836AD85441A7FF340AD6AC50418EB29BA66ED85441ADA4F63CD6AC5041983F118A70D854410C52B84ED6AC50416933333371D85441BC13605AD6AC50418857044971D85441B83EEC91D6AC50416058FEB071D8544110076A9CD6AC504158B9A1C471D8544177A9ACE0D9AC50417FD2FBE177D85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>294032 - 1090895
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -183107  </desc>
+<a>
+0106000000010000000103000000010000001D000000B18256309C525141AB299999F96454414E0689379B5251416EF0290009655441247F5E80795251413FF862A7066554410AD7A3707852514114AE477116655441E17A14AE77525141F6285C6F206554411F85EBE17652514185EB51E82A65544152B81E8575525141F6285C2F3D655441713D0AD773525141000000F0516554410000005073525141B81E85DB5C655441AE47E15A03535141EC51B86E6B655441E17A142E03535141713D0A1769655441A4703D4A00535141295C8F7257655441D7A3701DFF5251413D0AD763546554419A999989FB5251415C8FC2954E655441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000036254D2E9C52514161CBDEB9F9645441C11CB8998D525141C051EE0DF8645441B4E2C4458D525141784D76D9F7645441666666767A525141EC51B8FEF6645441277F5E80795251413DF862A70665544131CA9246795251415CE514030A6554411FEDC83F79525141101F0F680A655441629F153D7952514111113A900A6554411341E6F39A5251416595BD250D65544109E89EB59B525141C2ADFC2A0D6554414370A8FA9C525141D2A955B1F964544136254D2E9C52514161CBDEB9F9645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>294032 - 3361131
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -183107  </desc>
+<a>
+0106000000010000000103000000010000001D000000B18256309C525141AB299999F96454414E0689379B5251416EF0290009655441247F5E80795251413FF862A7066554410AD7A3707852514114AE477116655441E17A14AE77525141F6285C6F206554411F85EBE17652514185EB51E82A65544152B81E8575525141F6285C2F3D655441713D0AD773525141000000F0516554410000005073525141B81E85DB5C655441AE47E15A03535141EC51B86E6B655441E17A142E03535141713D0A1769655441A4703D4A00535141295C8F7257655441D7A3701DFF5251413D0AD763546554419A999989FB5251415C8FC2954E655441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000036254D2E9C52514161CBDEB9F9645441C11CB8998D525141C051EE0DF8645441B4E2C4458D525141784D76D9F7645441666666767A525141EC51B8FEF6645441277F5E80795251413DF862A70665544131CA9246795251415CE514030A6554411FEDC83F79525141101F0F680A655441629F153D7952514111113A900A6554411341E6F39A5251416595BD250D65544109E89EB59B525141C2ADFC2A0D6554414370A8FA9C525141D2A955B1F964544136254D2E9C52514161CBDEB9F9645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538912 - 248197
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -5022  </desc>
+<a>
+0106000000010000000103000000010000001D000000713D0A576E2051418FC2F5B81A435441CDCCCC8C70205141CDCCCC6C19435441A4703DDA76205141A4703DBA1543544148E17A04772051417B14AE971543544148E17AA4762051413D0AD7D31443544100000020732051410AD7A3800E4354411F85EBB1712051415C8FC2C50B435441713D0AE76E20514152B81E850C435441B81E85EB64205141B81E857BFC42544152B81E65652051415C8FC255F9425441C3F528DC64205141AE47E12AF74254418FC2F5F86420514185EB51A8EF425441EC51B82E5E2051419A9999A9F0425441CDCCCC1C5E205141D7A3708DF2425441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000001F85EBB1712051415C8FC2C50B435441B26D6A7C6F2051418289225D0C435441713D0AE76E20514152B81E850C435441E531B95167205141A98A465600435441B81E85EB64205141B81E857BFC42544180AB061965205141DD85FB4DFB425441D8708623652051413C816908FB42544130574C4565205141E60A9F28FA425441D833BC6465205141175E4F58F9425441A920D44B652051416A624BEFF84254418D78453165205141364BB383F8425441D3B9E02965205141E705BF65F8425441A76E76EA63205141C497C9D1FA425441637F783562205141CCDA9E18FC425441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538912 - 382657
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -5022  </desc>
+<a>
+0106000000010000000103000000010000001D000000713D0A576E2051418FC2F5B81A435441CDCCCC8C70205141CDCCCC6C19435441A4703DDA76205141A4703DBA1543544148E17A04772051417B14AE971543544148E17AA4762051413D0AD7D31443544100000020732051410AD7A3800E4354411F85EBB1712051415C8FC2C50B435441713D0AE76E20514152B81E850C435441B81E85EB64205141B81E857BFC42544152B81E65652051415C8FC255F9425441C3F528DC64205141AE47E12AF74254418FC2F5F86420514185EB51A8EF425441EC51B82E5E2051419A9999A9F0425441CDCCCC1C5E205141D7A3708DF2425441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000001F85EBB1712051415C8FC2C50B435441B26D6A7C6F2051418289225D0C435441713D0AE76E20514152B81E850C435441E531B95167205141A98A465600435441B81E85EB64205141B81E857BFC42544180AB061965205141DD85FB4DFB425441D8708623652051413C816908FB42544130574C4565205141E60A9F28FA425441D833BC6465205141175E4F58F9425441A920D44B652051416A624BEFF84254418D78453165205141364BB383F8425441D3B9E02965205141E705BF65F8425441A76E76EA63205141C497C9D1FA425441637F783562205141CCDA9E18FC425441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>649439 - 1305896
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1248  </desc>
+<a>
+0106000000010000000103000000020000000A00000048E17A2473545141F6285C0FAFE65441295C8F827554514133333353A5E65441A4703D9A785451411F85EB219BE6544152B81E75795451415C8FC2E598E65441295C8F02755451416666660698E65441C3F528FC7254514148E17A549CE6544114AE47416E54514100000030A2E65441B81E85DB6E54514148E17AF4A7E65441D7A3701D6F545141A4703DDAB0E6544148E17A2473545141F6285C0FAFE6544107000000F6285C2F70545141AE47E1AAA4E65441295C8F326F5451419A999949A3E65441AE47E1DA6F54514114AE47A1A2E6544148E17A546F5451417B14AEE7 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000580000009A9999E969545141D7A3701DC4E65441D7A370BD6B5451413D0AD7F3C9E65441713D0A676C5451415C8FC2B5CCE65441A4703DFA6C545141EC51B8EED0E6544185EB51D86C545141713D0AC7D2E654411F85EB716C545141CDCCCC9CD5E6544152B81E556A545141C3F528FCD9E65441666666F66854514148E17AF4DAE654418FC2F548685451413D0AD7D3DBE654415C8FC2A567545141666666A6DCE6544185EB518866545141C3F5286CDFE65441D7A370CD63545141AE47E19AEAE6544148E17AD46254514166666656EDE65441713D0AF763545141AE47E1BAECE65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>649439 - 3311532
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1248  </desc>
+<a>
+0106000000010000000103000000020000000A00000048E17A2473545141F6285C0FAFE65441295C8F827554514133333353A5E65441A4703D9A785451411F85EB219BE6544152B81E75795451415C8FC2E598E65441295C8F02755451416666660698E65441C3F528FC7254514148E17A549CE6544114AE47416E54514100000030A2E65441B81E85DB6E54514148E17AF4A7E65441D7A3701D6F545141A4703DDAB0E6544148E17A2473545141F6285C0FAFE6544107000000F6285C2F70545141AE47E1AAA4E65441295C8F326F5451419A999949A3E65441AE47E1DA6F54514114AE47A1A2E6544148E17A546F5451417B14AEE7 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000580000009A9999E969545141D7A3701DC4E65441D7A370BD6B5451413D0AD7F3C9E65441713D0A676C5451415C8FC2B5CCE65441A4703DFA6C545141EC51B8EED0E6544185EB51D86C545141713D0AC7D2E654411F85EB716C545141CDCCCC9CD5E6544152B81E556A545141C3F528FCD9E65441666666F66854514148E17AF4DAE654418FC2F548685451413D0AD7D3DBE654415C8FC2A567545141666666A6DCE6544185EB518866545141C3F5286CDFE65441D7A370CD63545141AE47E19AEAE6544148E17AD46254514166666656EDE65441713D0AF763545141AE47E1BAECE65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>8231 - 119886
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -10019  </desc>
+<a>
+01060000000100000001030000000100000008000000CDCCCC9C26B45041B81E85AB1ADF5441D7A3702D2DB450411F85EB31E1DE5441295C8F422CB450415C8FC295E0DE544152B81E450AB45041AE47E1EAF4DE5441E17A14AE04B4504148E17A3429DF5441E17A14DE21B45041F6285C0F3ADF54413333331323B450410000007039DF5441CDCCCC9C26B45041B81E85AB1ADF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000CDCCCC9C26B45041B81E85AB1ADF5441C923A30D28B450411F30700E0EDF5441D7A3702D2DB450411F85EB31E1DE5441295C8F422CB450415C8FC295E0DE544152B81E450AB45041AE47E1EAF4DE54419670CF5307B4504162D2277110DF54411F31361607B45041868755B112DF54417259B89F06B4504177E9AC0517DF54413F76208106B45041747BD62318DF5441A6B0996C25B450419838D2E524DF5441CDCCCC9C26B45041B81E85AB1ADF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>9511 - 310463
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2121  </desc>
+<a>
+010600000001000000010300000001000000260000003D0AD7834D275141B81E85FBCAA05441F6285C2F54275141A4703D8AC4A05441CDCCCCDC5B2751410AD7A380BAA05441D7A370CD5D275141D7A3708DB8A054417B14AEE75F275141333333F3B6A05441C3F528DC6027514100000060B4A054418FC2F5F863275141A4703D2AB2A05441295C8F82662751411F85EB71B0A054415C8FC2F5682751418FC2F5A8B0A0544152B81EC56B275141A4703DAAAEA0544148E17A946F27514133333363AEA05441713D0A87752751413D0AD783AAA05441713D0AE7762751417B14AEF7A8A05441D7A370DD77275141295C8FB2A6A05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D00000041F31F05412751418150A2D0D4A054411BAE22E43F275141A9514308D6A05441C3CE9A593D2751414AE3C2C5D8A054411729D8C33C2751413A939909D9A05441FA23CEEC3C2751418FBA84DBDAA054419800CC953D275141C6A5D835DEA0544111CD15C13D2751411E85B411DFA054416CC351F83D275141FEA43C2AE0A0544138CED6834D2751419F2285FBCAA05441390E5B2F5427514103903D8AC4A05441185F8A5A572751411195B565C0A05441CDCCCCDC5B2751410AD7A380BAA05441B2DB06CC5B27514157B1574BBAA05441DE731E985D2751412A19407FB8A05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14921 - 3056722
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -5545  </desc>
+<a>
+0106000000010000000103000000010000002100000048E17AA4F3515141CDCCCC3C1CD8544114AE4741F5515141B81E85EB1CD854418FC2F5F8005251416666667620D85441D7A3703D06525141AE47E1CA20D854418FC2F5D812525141A4703D5A1FD8544148E17AA4165251417B14AE771FD85441000000F01B525141666666D620D85441D7A3702D1E5251418FC2F57822D85441A4703D0A22525141CDCCCC5C23D854415C8FC235325251419A9999492BD85441C3F528FC4152514185EB51A82CD85441C3F528FC4352514148E17A842DD85441AE47E13A495251411F85EB212FD85441C3F5289C55525141AE47E1DA35D85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002500000034E8EEA253525141B10B89C834D85441FF49D28D55525141E80E18D335D854410600E333575251418EC9549F34D85441FC70F4965952514167A80CC231D854417C4AEC795A52514153BE70702FD85441DFAA596E5B525141B6050F132BD85441B7EFF01C5C525141FC6D433B23D8544136C9E8FF5C525141C4AF6F461CD854414C0238D04B5251414523889D19D854411CBA83263D5251413B7BCAAE16D8544175DAB5FC2C5251410023D64513D854419D167070235251413B62FB5C11D8544145B97E2923525141D976508B0CD85441713D0AC722525141713D0A2706D85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14921 - 3327923
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -5545  </desc>
+<a>
+0106000000010000000103000000010000002100000048E17AA4F3515141CDCCCC3C1CD8544114AE4741F5515141B81E85EB1CD854418FC2F5F8005251416666667620D85441D7A3703D06525141AE47E1CA20D854418FC2F5D812525141A4703D5A1FD8544148E17AA4165251417B14AE771FD85441000000F01B525141666666D620D85441D7A3702D1E5251418FC2F57822D85441A4703D0A22525141CDCCCC5C23D854415C8FC235325251419A9999492BD85441C3F528FC4152514185EB51A82CD85441C3F528FC4352514148E17A842DD85441AE47E13A495251411F85EB212FD85441C3F5289C55525141AE47E1DA35D85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002500000034E8EEA253525141B10B89C834D85441FF49D28D55525141E80E18D335D854410600E333575251418EC9549F34D85441FC70F4965952514167A80CC231D854417C4AEC795A52514153BE70702FD85441DFAA596E5B525141B6050F132BD85441B7EFF01C5C525141FC6D433B23D8544136C9E8FF5C525141C4AF6F461CD854414C0238D04B5251414523889D19D854411CBA83263D5251413B7BCAAE16D8544175DAB5FC2C5251410023D64513D854419D167070235251413B62FB5C11D8544145B97E2923525141D976508B0CD85441713D0AC722525141713D0A2706D85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>16141 - 2907697
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -8938  </desc>
+<a>
+01060000000100000001030000000100000015000000A4703DBA56005141CDCCCC6C827554419A9999B93D005141666666A6787554418FC2F5183900514148E17A94767554410AD7A3C034005141713D0A1774755441B81E853B31005141A4703D9A707554413333333330005141295C8F627175544133333323240051415C8FC2F57C755441E17A14EE24005141713D0AF77E75544148E17A24270051418FC2F5E8817554418FC2F5682B0051417B14AE1787755441A4703D6A2D005141A4703D0A8A755441333333532F005141666666768D755441C3F528FC3000514114AE47418F755441AE47E10A3300514152B81EA590755441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000B0BC29AB4D005141E683C5D58A755441FDCA13944D005141E84E43ED8A755441CD2C69B14D005141B72AF5F98A755441B81E854B500051419A9999298875544133333303560051413333332383755441A4703DBA56005141CDCCCC6C827554419A9999B93D005141666666A6787554418FC2F5183900514148E17A94767554410AD7A3C034005141713D0A1774755441B81E853B31005141A4703D9A707554413333333330005141295C8F62717554419BF822732A005141BD6704DC767554410D32F9782A005141FE9D87E17675544124306A722A005141B3C4D2E776755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>16141 - 3624179
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -8938  </desc>
+<a>
+01060000000100000001030000000100000015000000A4703DBA56005141CDCCCC6C827554419A9999B93D005141666666A6787554418FC2F5183900514148E17A94767554410AD7A3C034005141713D0A1774755441B81E853B31005141A4703D9A707554413333333330005141295C8F627175544133333323240051415C8FC2F57C755441E17A14EE24005141713D0AF77E75544148E17A24270051418FC2F5E8817554418FC2F5682B0051417B14AE1787755441A4703D6A2D005141A4703D0A8A755441333333532F005141666666768D755441C3F528FC3000514114AE47418F755441AE47E10A3300514152B81EA590755441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000B0BC29AB4D005141E683C5D58A755441FDCA13944D005141E84E43ED8A755441CD2C69B14D005141B72AF5F98A755441B81E854B500051419A9999298875544133333303560051413333332383755441A4703DBA56005141CDCCCC6C827554419A9999B93D005141666666A6787554418FC2F5183900514148E17A94767554410AD7A3C034005141713D0A1774755441B81E853B31005141A4703D9A707554413333333330005141295C8F62717554419BF822732A005141BD6704DC767554410D32F9782A005141FE9D87E17675544124306A722A005141B3C4D2E776755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>973705 - 3167325
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -6137  </desc>
+<a>
+01060000000200000001030000000100000056000000527A4BC396F750410F487EFEE21C5541A689A10597F750413F09A241E31C5541C51F99F197F75041B5E1FE4BE41C5541DBC866D795F750415DDC8F1DE71C55417DB87F5D95F750412F002CA0E71C55418A79BD5795F75041BE1E99B0E71C5541C29C546E95F750418BB8E4C8E71C5541C33877E896F75041FAED686CE91C5541D7A3709D99F7504114AE4771E81C55418FC2F508A1F750410AD7A300E51C554185475530A3F75041C3B1F860E21C5541C7DA5FAFA8F750414E5E473CDE1C5541A2F26DDEA9F75041C7161DAFDA1C554185EB5178AAF75041EC51B82ED91C5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000CC46E662A9F750418C96DAACDE1C5541B299FC69AFF750418E618255DE1C55417C7481CFBBF750419E1AB894DA1C554146B62352C8F75041AC6F6348D71C5541102A8B9AD4F75041BB5DF1DED31C5541CDE12912E4F75041CD48ECE3CF1C5541CB26964FF1F7504174AAA4AFCC1C5541097D64BDEBF75041FBC1F318CA1C5541D977F146E3F75041DCBDE652C61C5541D7D5DDCBE1F75041F8E0D0E1C51C554111C36D7DD4F75041EBBDEAF3C81C55415043BAEEC5F75041D9A02A29CD1C55417C7481CFBBF75041CF455952CF1C55419FE359BCB3F75041C486FDEFD11C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>973705 - 3557552
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -6137  </desc>
+<a>
+01060000000200000001030000000100000056000000527A4BC396F750410F487EFEE21C5541A689A10597F750413F09A241E31C5541C51F99F197F75041B5E1FE4BE41C5541DBC866D795F750415DDC8F1DE71C55417DB87F5D95F750412F002CA0E71C55418A79BD5795F75041BE1E99B0E71C5541C29C546E95F750418BB8E4C8E71C5541C33877E896F75041FAED686CE91C5541D7A3709D99F7504114AE4771E81C55418FC2F508A1F750410AD7A300E51C554185475530A3F75041C3B1F860E21C5541C7DA5FAFA8F750414E5E473CDE1C5541A2F26DDEA9F75041C7161DAFDA1C554185EB5178AAF75041EC51B82ED91C5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000CC46E662A9F750418C96DAACDE1C5541B299FC69AFF750418E618255DE1C55417C7481CFBBF750419E1AB894DA1C554146B62352C8F75041AC6F6348D71C5541102A8B9AD4F75041BB5DF1DED31C5541CDE12912E4F75041CD48ECE3CF1C5541CB26964FF1F7504174AAA4AFCC1C5541097D64BDEBF75041FBC1F318CA1C5541D977F146E3F75041DCBDE652C61C5541D7D5DDCBE1F75041F8E0D0E1C51C554111C36D7DD4F75041EBBDEAF3C81C55415043BAEEC5F75041D9A02A29CD1C55417C7481CFBBF75041CF455952CF1C55419FE359BCB3F75041C486FDEFD11C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>65942 - 2956552
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -4863  </desc>
+<a>
+0106000000010000000103000000010000000A000000D7A3704DCDE65041295C8FF2C76C5441666666C6CDE650413D0AD7A3CB6C544185EB51D8D0E65041CDCCCC7CE16C54417B14AEF7D2E6504148E17A84E56C54418FC2F5C8D6E65041AE47E1DAE66C54415C8FC275D1E65041333333F3C06C5441CDCCCC3CCFE6504166666696C16C5441E17A144EC9E65041D7A3704DC06C544133333373CBE65041713D0A67C46C5441D7A3704DCDE65041295C8FF2C76C5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000005C8FC275D1E65041333333F3C06C5441CDCCCC3CCFE6504166666696C16C5441E17A144EC9E65041D7A3704DC06C544133333373CBE65041713D0A67C46C5441D7A3704DCDE65041295C8FF2C76C54413A8285B8CDE650413CDA6137CB6C5441A42E40EED2E6504192732D6BCB6C54415C01CEECD2E65041F16AE260CB6C5441C06B7AFDD8E65041013676BACB6C5441748DEBC3E0E65041078F492CCB6C5441436C7DC3E5E650410CE81C9ECA6C5441EBD88129E8E650413387394BBB6C54410AD7A3D0E7E650419A999949BB6C5441B81E851BE8E65041EC51B8EEB86C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>65942 - 3812073
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -4863  </desc>
+<a>
+0106000000010000000103000000010000000A000000D7A3704DCDE65041295C8FF2C76C5441666666C6CDE650413D0AD7A3CB6C544185EB51D8D0E65041CDCCCC7CE16C54417B14AEF7D2E6504148E17A84E56C54418FC2F5C8D6E65041AE47E1DAE66C54415C8FC275D1E65041333333F3C06C5441CDCCCC3CCFE6504166666696C16C5441E17A144EC9E65041D7A3704DC06C544133333373CBE65041713D0A67C46C5441D7A3704DCDE65041295C8FF2C76C5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000005C8FC275D1E65041333333F3C06C5441CDCCCC3CCFE6504166666696C16C5441E17A144EC9E65041D7A3704DC06C544133333373CBE65041713D0A67C46C5441D7A3704DCDE65041295C8FF2C76C54413A8285B8CDE650413CDA6137CB6C5441A42E40EED2E6504192732D6BCB6C54415C01CEECD2E65041F16AE260CB6C5441C06B7AFDD8E65041013676BACB6C5441748DEBC3E0E65041078F492CCB6C5441436C7DC3E5E650410CE81C9ECA6C5441EBD88129E8E650413387394BBB6C54410AD7A3D0E7E650419A999949BB6C5441B81E851BE8E65041EC51B8EEB86C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>68778 - 245831
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2408  </desc>
+<a>
+01060000000100000001030000000100000016000000F6285C4F3EF45041295C8F92320F5541C3F5288C40F450417B14AE37360F554114AE47B137F45041A4703D2A3B0F55418FC2F5C833F450418FC2F5583D0F554152B81EA53BF450415C8FC2D5510F55413D0AD7D334F450419A9999C9540F554152B81E3537F45041B81E859B590F55415C8FC25538F450415C8FC2155B0F5541333333A33AF450419A9999195E0F55418FC2F5783FF45041CDCCCCFC620F5541713D0A173DF45041295C8F92670F5541A4703D7A36F45041CDCCCCFC6B0F55419A99993937F45041D7A3704D6E0F55417B14AE874EF45041A4703DEA660F5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000008FC2F5B846F450415C8FC215450F5541559036B843F450412A4E2FD43A0F5541C4F5E28141F4504194AFDBB9350F55415028F8C337F45041BD4D87593B0F55417F333ADC33F45041D96C2E8B3D0F554198A4A5E833F4504158CE8DAB3D0F5541EC7CFAF633F450418CD7E8D03D0F554118FBFF0A34F45041DCB418053E0F5541ECA2552B34F45041F8D860593E0F55410789475D34F45041B7F58FDB3E0F5541A97D974836F450414C1080C4430F55414CEE5C6339F45041C667CEF34B0F5541FAF1B8CF39F450412933400E4D0F55418F5B08203AF450417A6195DF4D0F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>68778 - 339221
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2408  </desc>
+<a>
+01060000000100000001030000000100000016000000F6285C4F3EF45041295C8F92320F5541C3F5288C40F450417B14AE37360F554114AE47B137F45041A4703D2A3B0F55418FC2F5C833F450418FC2F5583D0F554152B81EA53BF450415C8FC2D5510F55413D0AD7D334F450419A9999C9540F554152B81E3537F45041B81E859B590F55415C8FC25538F450415C8FC2155B0F5541333333A33AF450419A9999195E0F55418FC2F5783FF45041CDCCCCFC620F5541713D0A173DF45041295C8F92670F5541A4703D7A36F45041CDCCCCFC6B0F55419A99993937F45041D7A3704D6E0F55417B14AE874EF45041A4703DEA660F5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000008FC2F5B846F450415C8FC215450F5541559036B843F450412A4E2FD43A0F5541C4F5E28141F4504194AFDBB9350F55415028F8C337F45041BD4D87593B0F55417F333ADC33F45041D96C2E8B3D0F554198A4A5E833F4504158CE8DAB3D0F5541EC7CFAF633F450418CD7E8D03D0F554118FBFF0A34F45041DCB418053E0F5541ECA2552B34F45041F8D860593E0F55410789475D34F45041B7F58FDB3E0F5541A97D974836F450414C1080C4430F55414CEE5C6339F45041C667CEF34B0F5541FAF1B8CF39F450412933400E4D0F55418F5B08203AF450417A6195DF4D0F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>205311 - 1798555
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2157  </desc>
+<a>
+0106000000010000000103000000010000000D0000000AD7A33009B250418FC2F5581566544148E17AC408B25041713D0A970B665441F6285C6F08B25041A4703DEA03665441713D0A57F1B15041000000E00B66544185EB51F8C7B15041EC51B80E1C6654410AD7A320C6B15041295C8F3224665441B81E852BC7B150413D0AD7432566544100000030DFB15041E17A140E2766544114AE4731EEB15041CDCCCC5C21665441E17A149EFCB15041B81E851B1C665441713D0AF702B25041B81E856B19665441CDCCCC4C08B25041F6285CCF166654410AD7A33009B250418FC2F55815665441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000F6285C6F08B25041A4703DEA0366544125ADC14201B25041FBF83F630666544122E04B77FBB1504139C9165508665441DBAC4D81F5B1504141827F700A66544167BA8A43F1B150415681A0E70B66544196F11E43EDB15041E03F58780D6654418A21F0C2EAB15041A0CFBEA30A6654418FC2F5E8D4B15041713D0A37136654419A9999E9C8B150419A9999E91766544185EB51F8C7B15041EC51B80E1C6654410AD7A320C6B15041295C8F3224665441B81E852BC7B150413D0AD7432566544100000030DFB15041E17A140E2766544114AE4731EEB15041CDCCCC5C21665441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>205311 - 3319174
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2157  </desc>
+<a>
+0106000000010000000103000000010000000D0000000AD7A33009B250418FC2F5581566544148E17AC408B25041713D0A970B665441F6285C6F08B25041A4703DEA03665441713D0A57F1B15041000000E00B66544185EB51F8C7B15041EC51B80E1C6654410AD7A320C6B15041295C8F3224665441B81E852BC7B150413D0AD7432566544100000030DFB15041E17A140E2766544114AE4731EEB15041CDCCCC5C21665441E17A149EFCB15041B81E851B1C665441713D0AF702B25041B81E856B19665441CDCCCC4C08B25041F6285CCF166654410AD7A33009B250418FC2F55815665441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000F6285C6F08B25041A4703DEA0366544125ADC14201B25041FBF83F630666544122E04B77FBB1504139C9165508665441DBAC4D81F5B1504141827F700A66544167BA8A43F1B150415681A0E70B66544196F11E43EDB15041E03F58780D6654418A21F0C2EAB15041A0CFBEA30A6654418FC2F5E8D4B15041713D0A37136654419A9999E9C8B150419A9999E91766544185EB51F8C7B15041EC51B80E1C6654410AD7A320C6B15041295C8F3224665441B81E852BC7B150413D0AD7432566544100000030DFB15041E17A140E2766544114AE4731EEB15041CDCCCC5C21665441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>834129 - 3024386
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1030  </desc>
+<a>
+01060000000100000001030000000300000081000000E17A14EE2BCE5041295C8F02F1255441EC51B89E23CE5041295C8FC2EF2554416666667623CE504185EB5118EF2554413333335323CE50415C8FC295EE2554413333338321CE5041CDCCCC7CE72554413D0AD7431CCE5041CDCCCCFCE5255441713D0A3717CE504148E17A14E42554413333333316CE50411F85EBB1E32554413D0AD70313CE504148E17AA4DD25544185EB514812CE5041713D0A97DD2554410AD7A33001CE504114AE47E1DB2554418FC2F52800CE50418FC2F558DE2554418FC2F538FECD504100000010DF25544166666666FACD5041F6285C2FE2255441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003900000017B4140182CD5041B3D949F02D265441669B636982CD504184B0229E2E265441AB20C8A888CD5041D9A086193326544134A552B28ACD50416299257237265441FBA52CE88ECD5041F605D9193E265441E3642E3494CD5041C271B28B402654410E7A6AD79CCD50411529F6C344265441B9895CB6A8CD50415DE77A464B26544195D449B3ABCD50413D2953304A2654416DFD33E2ACCD50417FB228B749265441C3F5286CADCD504148E17A24492654415C8FC2B5ADCD50413333338349265441535E9020AFCD504118C5F186482654410298C650B0CD5041BF30C6B347265441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>834129 - 5294170
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1030  </desc>
+<a>
+01060000000100000001030000000300000081000000E17A14EE2BCE5041295C8F02F1255441EC51B89E23CE5041295C8FC2EF2554416666667623CE504185EB5118EF2554413333335323CE50415C8FC295EE2554413333338321CE5041CDCCCC7CE72554413D0AD7431CCE5041CDCCCCFCE5255441713D0A3717CE504148E17A14E42554413333333316CE50411F85EBB1E32554413D0AD70313CE504148E17AA4DD25544185EB514812CE5041713D0A97DD2554410AD7A33001CE504114AE47E1DB2554418FC2F52800CE50418FC2F558DE2554418FC2F538FECD504100000010DF25544166666666FACD5041F6285C2FE2255441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003900000017B4140182CD5041B3D949F02D265441669B636982CD504184B0229E2E265441AB20C8A888CD5041D9A086193326544134A552B28ACD50416299257237265441FBA52CE88ECD5041F605D9193E265441E3642E3494CD5041C271B28B402654410E7A6AD79CCD50411529F6C344265441B9895CB6A8CD50415DE77A464B26544195D449B3ABCD50413D2953304A2654416DFD33E2ACCD50417FB228B749265441C3F5286CADCD504148E17A24492654415C8FC2B5ADCD50413333338349265441535E9020AFCD504118C5F186482654410298C650B0CD5041BF30C6B347265441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>210956 - 194240
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -7101  </desc>
+<a>
+01060000000100000001030000000100000053000000CDCCCCBC67B85041C3F5284CD4585441713D0A2767B850410AD7A340D35854418FC2F5C865B85041A4703DCAD1585441295C8F4265B85041E17A14CED058544148E17A0465B85041EC51B82ED05854418FC2F5C864B85041295C8F32CE5854418FC2F56865B850417B14AE67CC5854413333332367B850418FC2F5F8CB585441C3F528EC68B85041D7A370EDCB5854413D0AD7036AB850411F85EB41CC5854413D0AD7736AB8504114AE4781CB585441AE47E1AA6AB85041D7A3701DC958544185EB51786AB85041EC51B85EC55854413D0AD7336AB8504100000020C5585441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000530AD7336AB8504136000020C558544194F056306AB85041F62AFABDC2585441DBB755306AB85041DD4725BDC2585441B7CCCC2C6AB850413CB81E55C058544190EB51E855B850417847E11AD65854412D95B68C55B85041EC9FB79AD6585441000000405AB85041CDCCCC9CD9585441713D0A075FB8504148E17A14DD585441A474195B5FB850410767D283DD585441F0C2F54861B850418F999999DB5854417E33330362B85041F4AD47B1DA5854413E5C8FF262B850411D0AD753DA5854419A99997963B85041118FC225DA585441DA703D1A64B850417C6666A6DA585441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>210956 - 289907
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -7101  </desc>
+<a>
+01060000000100000001030000000100000053000000CDCCCCBC67B85041C3F5284CD4585441713D0A2767B850410AD7A340D35854418FC2F5C865B85041A4703DCAD1585441295C8F4265B85041E17A14CED058544148E17A0465B85041EC51B82ED05854418FC2F5C864B85041295C8F32CE5854418FC2F56865B850417B14AE67CC5854413333332367B850418FC2F5F8CB585441C3F528EC68B85041D7A370EDCB5854413D0AD7036AB850411F85EB41CC5854413D0AD7736AB8504114AE4781CB585441AE47E1AA6AB85041D7A3701DC958544185EB51786AB85041EC51B85EC55854413D0AD7336AB8504100000020C5585441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000530AD7336AB8504136000020C558544194F056306AB85041F62AFABDC2585441DBB755306AB85041DD4725BDC2585441B7CCCC2C6AB850413CB81E55C058544190EB51E855B850417847E11AD65854412D95B68C55B85041EC9FB79AD6585441000000405AB85041CDCCCC9CD9585441713D0A075FB8504148E17A14DD585441A474195B5FB850410767D283DD585441F0C2F54861B850418F999999DB5854417E33330362B85041F4AD47B1DA5854413E5C8FF262B850411D0AD753DA5854419A99997963B85041118FC225DA585441DA703D1A64B850417C6666A6DA585441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>101354 - 3127448
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2323  </desc>
+<a>
+0106000000030000000103000000010000001800000066666626D19250417B14AEA778245441E17A14EEC5925041295C8F427E245441E17A14CEB8925041295C8F9283245441E17A145EC1925041295C8FE296245441E17A145EC6925041295C8FE2A4245441E17A142ED0925041295C8FD2C4245441E17A146EE0925041666666A6C024544166666656DF925041666666B6BA245441A4703DBAE4925041A4703D7AB5245441E17A14AEE0925041295C8F92A8245441E17A143EDE925041295C8F32A9245441E17A14EEDB925041295C8FB2A3245441E17A147EDF925041AE47E16AA2245441666666B6E8925041295C8F12A0245441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000063000000E17A145EC6925041295C8FE2A424544158ED2939D092504177CAB6CFC4245441E17A146EE0925041666666A6C024544166666656DF925041666666B6BA245441A4703DBAE4925041A4703D7AB5245441E17A14AEE0925041295C8F92A8245441E17A143EDE925041295C8F32A9245441E17A14EEDB925041295C8FB2A3245441E17A147EDF925041AE47E16AA224544121D3088EED9250413D1D1D099F2454419B3FA1BEF592504177D9AFEFAC245441D7A3709DFB925041A4703D0AAA2454415C77E372FE925041E140CC2AAE2454414DCC4F940093504198F2790AB2245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>101354 - 3514388
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2323  </desc>
+<a>
+0106000000030000000103000000010000001800000066666626D19250417B14AEA778245441E17A14EEC5925041295C8F427E245441E17A14CEB8925041295C8F9283245441E17A145EC1925041295C8FE296245441E17A145EC6925041295C8FE2A4245441E17A142ED0925041295C8FD2C4245441E17A146EE0925041666666A6C024544166666656DF925041666666B6BA245441A4703DBAE4925041A4703D7AB5245441E17A14AEE0925041295C8F92A8245441E17A143EDE925041295C8F32A9245441E17A14EEDB925041295C8FB2A3245441E17A147EDF925041AE47E16AA2245441666666B6E8925041295C8F12A0245441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000063000000E17A145EC6925041295C8FE2A424544158ED2939D092504177CAB6CFC4245441E17A146EE0925041666666A6C024544166666656DF925041666666B6BA245441A4703DBAE4925041A4703D7AB5245441E17A14AEE0925041295C8F92A8245441E17A143EDE925041295C8F32A9245441E17A14EEDB925041295C8FB2A3245441E17A147EDF925041AE47E16AA224544121D3088EED9250413D1D1D099F2454419B3FA1BEF592504177D9AFEFAC245441D7A3709DFB925041A4703D0AAA2454415C77E372FE925041E140CC2AAE2454414DCC4F940093504198F2790AB2245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>149738 - 1770076
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1860  </desc>
+<a>
+0106000000010000000103000000010000000600000014AE47D1DED0504100000000AF6454419A999969E1D05041C3F528FCB364544185EB5168E5D050415C8FC2B5BB6454417B14AEE730D1504114AE47319964544185EB51A82AD15041000000808C64544114AE47D1DED0504100000000AF645441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000B81E85AB19D1504114AE4721856454415C2729181FD1504193FA50C282645441D7837BE81ED150415A1ECFDB7E6454414B29811728D150419A0B8B7C7B645441AD1FC3B529D150417A82791E7E64544114AE470136D15041EC51B8BE786454415C8FC2C532D1504114AE474172645441B9AD421F23D15041E34F811879645441B134E44823D15041346208697A645441C5F1D7D2FBD05041B80391B38B645441CD31999AFAD0504151291E918D645441DAB11B2AF8D050412B0B77008F6454412C2E2B13F4D05041A2434D5C8F64544161C9BF0DF2D050414194178B8E645441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>149738 - 3804501
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1860  </desc>
+<a>
+0106000000010000000103000000010000000600000014AE47D1DED0504100000000AF6454419A999969E1D05041C3F528FCB364544185EB5168E5D050415C8FC2B5BB6454417B14AEE730D1504114AE47319964544185EB51A82AD15041000000808C64544114AE47D1DED0504100000000AF645441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000B81E85AB19D1504114AE4721856454415C2729181FD1504193FA50C282645441D7837BE81ED150415A1ECFDB7E6454414B29811728D150419A0B8B7C7B645441AD1FC3B529D150417A82791E7E64544114AE470136D15041EC51B8BE786454415C8FC2C532D1504114AE474172645441B9AD421F23D15041E34F811879645441B134E44823D15041346208697A645441C5F1D7D2FBD05041B80391B38B645441CD31999AFAD0504151291E918D645441DAB11B2AF8D050412B0B77008F6454412C2E2B13F4D05041A2434D5C8F64544161C9BF0DF2D050414194178B8E645441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>169186 - 184988
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1746  </desc>
+<a>
+0106000000010000000103000000010000000D000000E17A146E93C3504114AE4771BC955441666666B692C350415C8FC295BC95544114AE479184C350419A999939BE9554419A9999097DC35041295C8F82BE95544152B81E8574C3504185EB5148BE955441CDCCCCAC78C35041713D0AE7C5955441713D0AD77BC35041D7A3705DCC955441B81E853B80C35041A4703D9AD2955441AE47E19A85C350413D0AD763D49554415C8FC24595C350419A999919D3955441AE47E16A96C350410AD7A3C0D19554411F85EBC194C3504114AE4771BD955441E17A146E93C3504114AE4771BC955441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000839199097DC35041F25B8F82BE955441DBE257A27BC3504108E0F678BE955441C0D175A578C3504110D88864BE95544138C4AD0A7EC35041E2AAEACECB955441B3E0F2D481C35041A2D3AF26D095544174B14AA285C350410EFF1FA6D1955441A347E19A85C35041120AD763D4955441078F5DC394C3504163CE791ED39554410467DBC294C35041F4FDD41BD3955441DB79CD2794C3504163CE791ED39554414E8C76A293C350419DD58615CE9554413C003BC492C35041FB5D3367C5955441111699A992C3504104F76CA9C4955441D6A7604E95C350417E33D668C4955441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>169186 - 425080
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1746  </desc>
+<a>
+0106000000010000000103000000010000000D000000E17A146E93C3504114AE4771BC955441666666B692C350415C8FC295BC95544114AE479184C350419A999939BE9554419A9999097DC35041295C8F82BE95544152B81E8574C3504185EB5148BE955441CDCCCCAC78C35041713D0AE7C5955441713D0AD77BC35041D7A3705DCC955441B81E853B80C35041A4703D9AD2955441AE47E19A85C350413D0AD763D49554415C8FC24595C350419A999919D3955441AE47E16A96C350410AD7A3C0D19554411F85EBC194C3504114AE4771BD955441E17A146E93C3504114AE4771BC955441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000839199097DC35041F25B8F82BE955441DBE257A27BC3504108E0F678BE955441C0D175A578C3504110D88864BE95544138C4AD0A7EC35041E2AAEACECB955441B3E0F2D481C35041A2D3AF26D095544174B14AA285C350410EFF1FA6D1955441A347E19A85C35041120AD763D4955441078F5DC394C3504163CE791ED39554410467DBC294C35041F4FDD41BD3955441DB79CD2794C3504163CE791ED39554414E8C76A293C350419DD58615CE9554413C003BC492C35041FB5D3367C5955441111699A992C3504104F76CA9C4955441D6A7604E95C350417E33D668C4955441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242668 - 3018639
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -53695  </desc>
+<a>
+01060000000100000001030000000100000031000000333333C36F1651417B14AE7792175541AE47E1DA7C1651410AD7A3F0901755418FC2F5F87D16514114AE47D191175541713D0A8780165141F6285C0FA6175541333333C380165141B81E85EBA7175541AE47E1DA81165141AE47E1AAA8175541CDCCCC9C8D16514185EB51B8B017554148E17A749916514114AE47E1B6175541A4703D1A9E1651410AD7A3F0B6175541AE47E15A9D165141AE47E15AB2175541A4703DDA9C165141F6285C0FA9175541F6285C6F9F165141CDCCCC1CA4175541666666A6A71651419A9999D9981755417B14AE37A616514148E17A4497175541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000049000000C954872EA0165141551E2978921755417E553F4D9F1651411578B7EA9317554162D0F83D9E1651417D9DA8A595175541FE3726859C1651419C39B7F097175541D325C1739B1651414D3BA55299175541190BBDA599165141F10041B99B1755418FB151E2971651411CB78C089E175541B607E1E1961651417B5086599F1755410658E61E9616514174A15260A0175541EF5FBE11951651410AB53ED89E175541D1888463931651411187AE609C175541676393A8911651413F01A187991755419780457590165141C9FB769397175541BF28C813901651410AF9619996175541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242668 - 3503727
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -53695  </desc>
+<a>
+01060000000100000001030000000100000031000000333333C36F1651417B14AE7792175541AE47E1DA7C1651410AD7A3F0901755418FC2F5F87D16514114AE47D191175541713D0A8780165141F6285C0FA6175541333333C380165141B81E85EBA7175541AE47E1DA81165141AE47E1AAA8175541CDCCCC9C8D16514185EB51B8B017554148E17A749916514114AE47E1B6175541A4703D1A9E1651410AD7A3F0B6175541AE47E15A9D165141AE47E15AB2175541A4703DDA9C165141F6285C0FA9175541F6285C6F9F165141CDCCCC1CA4175541666666A6A71651419A9999D9981755417B14AE37A616514148E17A4497175541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000049000000C954872EA0165141551E2978921755417E553F4D9F1651411578B7EA9317554162D0F83D9E1651417D9DA8A595175541FE3726859C1651419C39B7F097175541D325C1739B1651414D3BA55299175541190BBDA599165141F10041B99B1755418FB151E2971651411CB78C089E175541B607E1E1961651417B5086599F1755410658E61E9616514174A15260A0175541EF5FBE11951651410AB53ED89E175541D1888463931651411187AE609C175541676393A8911651413F01A187991755419780457590165141C9FB769397175541BF28C813901651410AF9619996175541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>228582 - 1810716
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2442  </desc>
+<a>
+010600000001000000010300000001000000110000009A9999394B9C50415C8FC2E5BF7654417B14AEB7499C5041C3F528DCBF76544114AE4711479C5041713D0AF7C076544185EB5128439C504148E17AB4C27654415C8FC2653F9C5041A4703D0AC47654415C8FC285399C504148E17AA4C57654411F85EB01349C5041B81E858BC6765441295C8FF22B9C5041713D0A67D2765441E17A14EE259C504114AE4741DB765441A4703D2A1E9C5041D7A370ADE6765441B81E853B239C5041713D0A37E97654410AD7A390299C504114AE4761EC7654419A9999292D9C5041AE47E1DAEE7654413D0AD7E32E9C5041CDCCCC4CF0765441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000110000009A9999394B9C50415C8FC2E5BF7654417B14AEB7499C5041C3F528DCBF76544114AE4711479C5041713D0AF7C076544185EB5128439C504148E17AB4C27654415C8FC2653F9C5041A4703D0AC476544127C3724F399C50417DDC919FC57654414B1FBAC1359C504193213D42C67654415492371A329C5041CAEA5608CE765441F3C179D32E9C5041263E080AD4765441376CD1542B9C504142646ECFDA7654415973B6CB239C50419908DA55E97654410AD7A390299C504114AE4761EC7654419A9999292D9C5041AE47E1DAEE7654413D0AD7E32E9C5041CDCCCC4CF0765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>228582 - 3424337
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2442  </desc>
+<a>
+010600000001000000010300000001000000110000009A9999394B9C50415C8FC2E5BF7654417B14AEB7499C5041C3F528DCBF76544114AE4711479C5041713D0AF7C076544185EB5128439C504148E17AB4C27654415C8FC2653F9C5041A4703D0AC47654415C8FC285399C504148E17AA4C57654411F85EB01349C5041B81E858BC6765441295C8FF22B9C5041713D0A67D2765441E17A14EE259C504114AE4741DB765441A4703D2A1E9C5041D7A370ADE6765441B81E853B239C5041713D0A37E97654410AD7A390299C504114AE4761EC7654419A9999292D9C5041AE47E1DAEE7654413D0AD7E32E9C5041CDCCCC4CF0765441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000110000009A9999394B9C50415C8FC2E5BF7654417B14AEB7499C5041C3F528DCBF76544114AE4711479C5041713D0AF7C076544185EB5128439C504148E17AB4C27654415C8FC2653F9C5041A4703D0AC476544127C3724F399C50417DDC919FC57654414B1FBAC1359C504193213D42C67654415492371A329C5041CAEA5608CE765441F3C179D32E9C5041263E080AD4765441376CD1542B9C504142646ECFDA7654415973B6CB239C50419908DA55E97654410AD7A390299C504114AE4761EC7654419A9999292D9C5041AE47E1DAEE7654413D0AD7E32E9C5041CDCCCC4CF0765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454165 - 417404
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -3427  </desc>
+<a>
+0106000000010000000103000000020000004A0000008772598481AE5041791E613CE0D65441CE932C8181AE5041D68DF73DE0D65441B81E85CB80AE5041D7A3703DE1D65441EC51B86E7FAE5041C3F5289CE5D654413D0AD7737FAE50411F85EBE1EAD6544114AE470182AE504185EB5118ECD6544114AE47C17EAE5041C3F5281CEFD6544148E17AE47BAE5041B81E85CBF1D654418FC2F55886AE504152B81EC5FED65441295C8F2278AE5041713D0A3701D75441713D0A5774AE50410000005002D75441295C8F4279AE504152B81E1506D7544114AE47917FAE50417B14AE1705D75441C3F5287C89AE5041713D0A5706D75441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000003BEA7AE47BAE5041D32985CBF1D65441244DBC8682AE50414D761C07FAD6544161B5058C82AE5041C815AC0DFAD6544181D3F55886AE50411FE91DC5FED654419CBCEBFF8BAE50415D640802FCD65441B96D80DC8EAE50418A6F0B9CFAD65441B3BED6F38EAE50412FB4A390FAD65441657DF7358FAE50418350BD29FAD6544148E17AF48FAE504114AE4701F9D65441F164B77E88AE5041D8E73D5AF1D6544131A34C178CAE5041CCF1CA9CEBD6544185EB51C88DAE50419A9999E9E8D6544160AE47F184AE5041878FC285E1D6544146A8E17A82AE504182827FDBDFD65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>257140 - 3163537
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -8073  </desc>
+<a>
+0106000000010000000103000000010000000C0000003D0AD74341A75041C3F5284CF10B5541CDCCCCDC44A7504152B81ED5EF0B554148E17A6441A7504114AE4721110C5541295C8F024FA750418FC2F5A8100C55410AD7A33051A7504185EB5148100C5541E17A14BE52A7504185EB5158F50B5541A4703D9A54A7504133333333E80B5541B81E85AB3EA750413D0AD723F00B5541CDCCCCBC39A75041A4703D8AF10B5541D7A3707D38A750417B14AEB7F10B55413D0AD73338A750413D0AD743F40B55413D0AD74341A75041C3F5284CF10B5541
+</a>
+
+<b>
+01060000000100000001030000000100000006000000FEE996BF44A75041792D6BEDF00B55416DCE55A944A75041E59AF7C2F10B5541747701FA53A750417ABB9B9FEC0B5541B56EAB2054A7504121C95C8EEB0B5541A342F60852A75041431CD648EC0B5541FEE996BF44A75041792D6BEDF00B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>257140 - 3198380
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -8073  </desc>
+<a>
+0106000000010000000103000000010000000C0000003D0AD74341A75041C3F5284CF10B5541CDCCCCDC44A7504152B81ED5EF0B554148E17A6441A7504114AE4721110C5541295C8F024FA750418FC2F5A8100C55410AD7A33051A7504185EB5148100C5541E17A14BE52A7504185EB5158F50B5541A4703D9A54A7504133333333E80B5541B81E85AB3EA750413D0AD723F00B5541CDCCCCBC39A75041A4703D8AF10B5541D7A3707D38A750417B14AEB7F10B55413D0AD73338A750413D0AD743F40B55413D0AD74341A75041C3F5284CF10B5541
+</a>
+
+<b>
+01060000000100000001030000000100000006000000FEE996BF44A75041792D6BEDF00B55416DCE55A944A75041E59AF7C2F10B5541747701FA53A750417ABB9B9FEC0B5541B56EAB2054A7504121C95C8EEB0B5541A342F60852A75041431CD648EC0B5541FEE996BF44A75041792D6BEDF00B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>258893 - 5313093
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -15864  </desc>
+<a>
+010600000001000000010300000001000000470000001F85EBE1223051415C8FC2B5CC8254413D0AD733273051413D0AD7A3BF825441000000A0293051415C8FC2D5B98254419A9999692B3051413D0AD713B6825441CDCCCC8C2A30514114AE4711B4825441B81E851B27305141B81E85FBB0825441D7A3703D25305141A4703DFAAF825441A4703D0A2230514133333323AF825441B81E855B1F305141E17A141EAF8254410AD7A3A01C3051415C8FC2A5AD8254415C8FC2451A305141CDCCCCDCAB825441713D0AF7133051419A9999F9B8825441713D0A4708305141A4703D6AD4825441AE47E1CA0630514100000010D2825441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000039000000BCC5000B23305141102ECF50CC825441301C7C52243051410D4BAE5AC8825441EB372A5927305141611C664ABF825441F4FB3D4129305141DFACD3B8BA825441533C57A829305141FB92B4D7B9825441000000A0293051415C8FC2D5B9825441ADCB77972A30514124E28ECDB78254412FDFCE652B3051413ED2000BB68254418E0D953C2A305141748C64C9B38254414929C8BD28305141EE875872B2825441D9A9BA4D2630514122EBC58CB08254412940827E24305141E0DC1EC8AF825441C229616922305141CB932C3CAF825441EB51E99F20305141A1A27F20AF825441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>270394 - 168454
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2756  </desc>
+<a>
+0106000000010000000103000000010000000C000000E17A14DE6E895141A4703D5A689154418FC2F5286C89514185EB5118699154415C8FC2155D895141295C8FC269915441EC51B8FE5989514152B81E456A915441B81E852B52895141000000906B9154418FC2F5C852895141AE47E10A74915441B81E851B53895141B81E858B7A915441295C8F82558951410AD7A300799154419A9999195B8951418FC2F56875915441333333835F8951413D0AD793729154418FC2F5886D89514114AE473169915441E17A14DE6E895141A4703D5A68915441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000000E71694B6E895141F34576826891544127582E0F6E89514176C7FA9268915441F5AC962B6C895141BE90A9196991544173C144135D8951415801E7C369915441193282FD598951418E0BBE476A9154412419D6445A89514125D2C5106D9154417CA8985A5D8951419C0FD0676C91544120F0791569895141E119A72B6C915441623F49C469895141A41BEBB66B9154418FC2F5886D89514114AE4731699154419CB4877B6E8951410A825D986891544165F42BD66E8951416AA4685C689154410E71694B6E895141F345768268915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>270394 - 336741
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2756  </desc>
+<a>
+0106000000010000000103000000010000000C000000E17A14DE6E895141A4703D5A689154418FC2F5286C89514185EB5118699154415C8FC2155D895141295C8FC269915441EC51B8FE5989514152B81E456A915441B81E852B52895141000000906B9154418FC2F5C852895141AE47E10A74915441B81E851B53895141B81E858B7A915441295C8F82558951410AD7A300799154419A9999195B8951418FC2F56875915441333333835F8951413D0AD793729154418FC2F5886D89514114AE473169915441E17A14DE6E895141A4703D5A68915441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000000E71694B6E895141F34576826891544127582E0F6E89514176C7FA9268915441F5AC962B6C895141BE90A9196991544173C144135D8951415801E7C369915441193282FD598951418E0BBE476A9154412419D6445A89514125D2C5106D9154417CA8985A5D8951419C0FD0676C91544120F0791569895141E119A72B6C915441623F49C469895141A41BEBB66B9154418FC2F5886D89514114AE4731699154419CB4877B6E8951410A825D986891544165F42BD66E8951416AA4685C689154410E71694B6E895141F345768268915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>273658 - 1924443
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -7967  </desc>
+<a>
+0106000000010000000103000000010000000D000000CDCCCCACEE3951410AD7A360F43E54410AD7A3B0EC3951415C8FC245F53E5441CDCCCCCCEF3951419A999959FB3E5441295C8F32F2395141E17A148E003F544152B81E75F83951415C8FC285063F5441295C8FB2F7395141B81E85DB093F5441295C8FE2F53951419A9999E9143F54419A999989F43951417B14AE671B3F54410AD7A360083A5141EC51B87E153F544114AE47A1063A51417B14AEA70F3F5441F6285C0F023A5141F6285C5F003F54415C8FC245FD39514185EB51C8ED3E5441CDCCCCACEE3951410AD7A360F43E5441
+</a>
+
+<b>
+0106000000010000000103000000030000005900000061DB3370F63951416293AD89113F5441295C8F6AF639514106819543123F54413D7E1E45F6395141B8167590123F544171F41824F6395141C19E10D1123F54415A17FC74F539514101632649143F5441277C2B07F5395141418B9730153F5441C74B3791F2395141819543A3153F5441EC5060D6F2395141810FCAF1103F5441552813C8F2395141C4E1AB900E3F54411941E373F23951414DBDB8680A3F5441F936BE56F2395141D242E601093F544180A5C866F03951414B68D5DA063F54416175C429EE39514159109B42053F5441DF4F8D87ED39514123DBF91E063F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>273658 - 3701006
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -7967  </desc>
+<a>
+0106000000010000000103000000010000000D000000CDCCCCACEE3951410AD7A360F43E54410AD7A3B0EC3951415C8FC245F53E5441CDCCCCCCEF3951419A999959FB3E5441295C8F32F2395141E17A148E003F544152B81E75F83951415C8FC285063F5441295C8FB2F7395141B81E85DB093F5441295C8FE2F53951419A9999E9143F54419A999989F43951417B14AE671B3F54410AD7A360083A5141EC51B87E153F544114AE47A1063A51417B14AEA70F3F5441F6285C0F023A5141F6285C5F003F54415C8FC245FD39514185EB51C8ED3E5441CDCCCCACEE3951410AD7A360F43E5441
+</a>
+
+<b>
+0106000000010000000103000000030000005900000061DB3370F63951416293AD89113F5441295C8F6AF639514106819543123F54413D7E1E45F6395141B8167590123F544171F41824F6395141C19E10D1123F54415A17FC74F539514101632649143F5441277C2B07F5395141418B9730153F5441C74B3791F2395141819543A3153F5441EC5060D6F2395141810FCAF1103F5441552813C8F2395141C4E1AB900E3F54411941E373F23951414DBDB8680A3F5441F936BE56F2395141D242E601093F544180A5C866F03951414B68D5DA063F54416175C429EE39514159109B42053F5441DF4F8D87ED39514123DBF91E063F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>295020 - 203569
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1163  </desc>
+<a>
+0106000000010000000103000000010000000D000000AE47E10A1FC85041E17A149E514555413D0AD7631DC85041EC51B80E51455541D7A3705D1AC85041713D0A0750455541D7A3700D17C85041A4703D4A5D455541713D0AF714C850410AD7A34065455541F6285C6F13C8504152B81EE569455541295C8FA215C850418FC2F5E86A455541333333E316C85041D7A3707D6B455541EC51B80E18C850417B14AE076C455541A4703DBA1AC85041B81E856B64455541E17A148E1DC85041AE47E19A5B4555417B14AE9720C8504152B81E2552455541AE47E10A1FC85041E17A149E51455541
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000044F622E316C85041DF1E697D6B455541DAE731E316C8504114E46F7D6B4555417A1985DB18C85041B3F9AEE765455541103CE13A1CC85041756866165B4555419970E00A1FC85041A060149E51455541033B0C8C1EC85041505A197351455541589BD5631DC85041FFD4B70E514555410C3CB7FE1BC85041345FEBC1554555412621EA6118C850412815855B62455541295C8FA215C850418FC2F5E86A45554144F622E316C85041DF1E697D6B455541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>295020 - 381521
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1163  </desc>
+<a>
+0106000000010000000103000000010000000D000000AE47E10A1FC85041E17A149E514555413D0AD7631DC85041EC51B80E51455541D7A3705D1AC85041713D0A0750455541D7A3700D17C85041A4703D4A5D455541713D0AF714C850410AD7A34065455541F6285C6F13C8504152B81EE569455541295C8FA215C850418FC2F5E86A455541333333E316C85041D7A3707D6B455541EC51B80E18C850417B14AE076C455541A4703DBA1AC85041B81E856B64455541E17A148E1DC85041AE47E19A5B4555417B14AE9720C8504152B81E2552455541AE47E10A1FC85041E17A149E51455541
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000042BEA4CB16C85041D81788726B455541DAE731E316C8504114E46F7D6B4555417A1985DB18C85041B3F9AEE765455541103CE13A1CC85041756866165B4555419970E00A1FC85041A060149E51455541033B0C8C1EC85041505A197351455541589BD5631DC85041FFD4B70E514555410C3CB7FE1BC85041345FEBC1554555412621EA6118C850412815855B62455541295C8FA215C850418FC2F5E86A45554142BEA4CB16C85041D81788726B455541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321127 - 1061617
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -4627  </desc>
+<a>
+0106000000010000000103000000010000000F00000066666616841E51418FC2F5086B835441666666E6841E5141000000A0648354411F85EB21851E51417B14AEA76083544148E17A24851E514185EB51885D835441EC51B80E801E514148E17A545D83544185EB5108711E5141CDCCCC8C5C83544114AE47F1701E51410AD7A3806C835441295C8F02711E514152B81E8570835441C3F528BC661E51411F85EB817183544114AE47F15D1E51418FC2F5C87283544185EB51D85D1E51413333330375835441EC51B80E5E1E5141295C8F8279835441B81E857B5E1E51413D0AD7D37B83544148E17AD4821E5141EC51B8EE7A835441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000042000000C3C4E04B831E5141C18F8217758354412529AF1E841E5141D4969AC76A835441CF4CE2B27B1E5141D671EF966B835441B5EF6BF1701E5141E9C311896C83544128652E01711E51414BC60E3370835441295C8F02711E514152B81E8570835441854529B3681E514108FA935171835441CA3393845E1E514190128FB37283544114AE47F15D1E51418FC2F5C872835441D6F12DDB5D1E51416740DFC174835441B81E857B5E1E51413D0AD7D37B835441A4703D1A611E5141333333E38D8354411F85EBD1611E51411F85EB0192835441C3F528BC631E514152B81E7598835441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321127 - 3630046
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -4627  </desc>
+<a>
+0106000000010000000103000000010000000F00000066666616841E51418FC2F5086B835441666666E6841E5141000000A0648354411F85EB21851E51417B14AEA76083544148E17A24851E514185EB51885D835441EC51B80E801E514148E17A545D83544185EB5108711E5141CDCCCC8C5C83544114AE47F1701E51410AD7A3806C835441295C8F02711E514152B81E8570835441C3F528BC661E51411F85EB817183544114AE47F15D1E51418FC2F5C87283544185EB51D85D1E51413333330375835441EC51B80E5E1E5141295C8F8279835441B81E857B5E1E51413D0AD7D37B83544148E17AD4821E5141EC51B8EE7A835441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000042000000C3C4E04B831E5141C18F8217758354412529AF1E841E5141D4969AC76A835441CF4CE2B27B1E5141D671EF966B835441B5EF6BF1701E5141E9C311896C83544128652E01711E51414BC60E3370835441295C8F02711E514152B81E8570835441854529B3681E514108FA935171835441CA3393845E1E514190128FB37283544114AE47F15D1E51418FC2F5C872835441D6F12DDB5D1E51416740DFC174835441B81E857B5E1E51413D0AD7D37B835441A4703D1A611E5141333333E38D8354411F85EBD1611E51411F85EB0192835441C3F528BC631E514152B81E7598835441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>325679 - 1837988
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -4227  </desc>
+<a>
+0106000000010000000103000000020000001F000000713D0A17ACB0504148E17A54F53C544114AE4701AEB05041F6285C1FF63C5441C3F5287CACB0504166666626FA3C54419A999989AAB05041B81E857BF93C5441666666C6A9B0504152B81EC5FA3C54419A999979AAB05041000000B0003D54415C8FC2A5A2B050419A9999F90C3D544133333383ABB050418FC2F5A8113D544152B81EE5ACB050411F85EB610E3D544114AE4781B4B05041C3F528FC113D544185EB5198C1B05041D7A3704D183D54418FC2F5A8CEB0504152B81E951E3D54418FC2F528D4B05041A4703DEA203D5441AE47E11AD6B05041B81E856B213D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000300000025000000666666C6A9B0504152B81EC5FA3C54419A999979AAB05041000000B0003D54415C8FC2A5A2B050419A9999F90C3D544133333383ABB050418FC2F5A8113D544152B81EE5ACB050411F85EB610E3D544114AE4781B4B05041C3F528FC113D544185EB5198C1B05041D7A3704D183D54418FC2F5A8CEB0504152B81E951E3D54418FC2F528D4B05041A4703DEA203D5441AE47E11AD6B05041B81E856B213D5441713D0AB7D7B05041AE47E11A1D3D54419A9999D9D8B0504166666676143D5441C3F528DCD6B05041295C8FB2113D54417B14AEC7D5B05041295C8F12103D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328701 - 1291612
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -8198  </desc>
+<a>
+0106000000010000000103000000010000001C000000713D0A77ED1E5141B81E852B3BF75441B81E856BEF1E514185EB51F83EF7544133333383F01E514185EB512841F75441D7A370DDF91E5141D7A370BD41F75441D7A3705DFE1E514148E17A8441F75441F6285CDF011F514185EB51B840F75441D7A3701D051F5141295C8F923FF754415C8FC275081F5141333333833DF75441333333530E1F51411F85EB7138F75441E17A140E1A1F514148E17A142EF754417B14AE671B1F514152B81E052DF7544148E17AD41A1F5141EC51B8FE2BF754415C8FC2251A1F51411F85EB812AF75441295C8F32191F51413333331329F75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000034000000E9D71099161F5141E8404BAB25F754419A9999C9101F51419A9999291FF754417B14AEC7051F51418FC2F5A813F754413D0AD7D3EE1E5141D7A3706D19F75441000000E0DF1E5141C3F5280C1CF75441F6285C3FCA1E51411F85EBA11EF75441C3F5284CC61E5141AE47E11A1FF754419A999969BC1E5141CDCCCCEC20F75441295C8F32BD1E5141713D0AA722F75441CDCCCCECBE1E5141E17A142E22F7544166666656C01E5141C3F5286C2AF7544152B81E05BC1E514152B81E352BF75441C3F5285CBD1E51411F85EB012FF754411F85EBD1BA1E5141666666662FF75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328701 - 3296692
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -8198  </desc>
+<a>
+0106000000010000000103000000010000001C000000713D0A77ED1E5141B81E852B3BF75441B81E856BEF1E514185EB51F83EF7544133333383F01E514185EB512841F75441D7A370DDF91E5141D7A370BD41F75441D7A3705DFE1E514148E17A8441F75441F6285CDF011F514185EB51B840F75441D7A3701D051F5141295C8F923FF754415C8FC275081F5141333333833DF75441333333530E1F51411F85EB7138F75441E17A140E1A1F514148E17A142EF754417B14AE671B1F514152B81E052DF7544148E17AD41A1F5141EC51B8FE2BF754415C8FC2251A1F51411F85EB812AF75441295C8F32191F51413333331329F75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000034000000E9D71099161F5141E8404BAB25F754419A9999C9101F51419A9999291FF754417B14AEC7051F51418FC2F5A813F754413D0AD7D3EE1E5141D7A3706D19F75441000000E0DF1E5141C3F5280C1CF75441F6285C3FCA1E51411F85EBA11EF75441C3F5284CC61E5141AE47E11A1FF754419A999969BC1E5141CDCCCCEC20F75441295C8F32BD1E5141713D0AA722F75441CDCCCCECBE1E5141E17A142E22F7544166666656C01E5141C3F5286C2AF7544152B81E05BC1E514152B81E352BF75441C3F5285CBD1E51411F85EB012FF754411F85EBD1BA1E5141666666662FF75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335970 - 4343049
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1922  </desc>
+<a>
+01060000000100000001030000000200000053000000CDCCCCDC5A795041EC51B83E7A2B55411F85EB9150795041E17A14CE6F2B5541C3F528FC4F7950415C8FC2456E2B5541A4703DFA52795041000000106B2B554148E17A144E795041C3F5286C642B5541A4703DAA4C7950417B14AEA75E2B55417B14AE974579504152B81E35542B5541AE47E15A3E795041000000D0592B554114AE47813C795041295C8FB25C2B554148E17A943B79504148E17A945F2B554185EB51C83B7950410AD7A370632B55418FC2F5983C795041D7A3701D662B5541333333E33D795041D7A3701D692B5541F6285C4F4479504148E17A44752B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000090000000CDCCCCDC5A795041EC51B83E7A2B55411F85EB9150795041E17A14CE6F2B5541C3F528FC4F7950415C8FC2456E2B5541A4703DFA52795041000000106B2B554148E17A144E795041C3F5286C642B5541A4703DAA4C7950417B14AEA75E2B55417B14AE974579504152B81E35542B5541AE47E15A3E795041000000D0592B554114AE47813C795041295C8FB25C2B554148E17A943B79504148E17A945F2B554185EB51C83B7950410AD7A370632B55418FC2F5983C795041D7A3701D662B5541333333E33D795041D7A3701D692B5541F6285C4F4479504148E17A44752B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>343134 - 3109625
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -32746  </desc>
+<a>
+01060000000100000001030000000100000010000000F6285C0FA0ED5041CDCCCC3C4BAD5441D7A370FD5CED5041C3F5286C63AD5441713D0A475BED5041333333036EAD544148E17AB45AED5041CDCCCCCC73AD5441B81E85BB5BED5041A4703DEA76AD54410AD7A3C05EED50418FC2F5B87BAD5441295C8FF260ED504114AE47917DAD54413D0AD7B363ED504185EB51087DAD54419A99999976ED50416666663676AD5441666666C697ED50411F85EB416AAD5441A4703D0AA4ED5041E17A14AE64AD5441B81E859BB6ED5041333333A35EAD5441D7A370DDB7ED5041CDCCCC9C5DAD5441295C8F42B5ED504148E17AF44DAD5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000000B6A9AC8B5ED5041D874271A51AD5441295C8F42B5ED504148E17AF44DAD54413D0AD7B3B3ED50417B14AE2744AD5441F6285C0FA0ED5041CDCCCC3C4BAD544179E67CBA96ED50417027369A4EAD54412A4A433493ED504105468CDF4FAD54413AEFBCCD96ED5041C1EA3E4C5CAD54411C239E479AED5041EB80591A5BAD54418CA164D4B2ED50415862391652AD54410B6A9AC8B5ED5041D874271A51AD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>343134 - 3491755
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -32746  </desc>
+<a>
+01060000000100000001030000000100000010000000F6285C0FA0ED5041CDCCCC3C4BAD5441D7A370FD5CED5041C3F5286C63AD5441713D0A475BED5041333333036EAD544148E17AB45AED5041CDCCCCCC73AD5441B81E85BB5BED5041A4703DEA76AD54410AD7A3C05EED50418FC2F5B87BAD5441295C8FF260ED504114AE47917DAD54413D0AD7B363ED504185EB51087DAD54419A99999976ED50416666663676AD5441666666C697ED50411F85EB416AAD5441A4703D0AA4ED5041E17A14AE64AD5441B81E859BB6ED5041333333A35EAD5441D7A370DDB7ED5041CDCCCC9C5DAD5441295C8F42B5ED504148E17AF44DAD5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000000B6A9AC8B5ED5041D874271A51AD5441295C8F42B5ED504148E17AF44DAD54413D0AD7B3B3ED50417B14AE2744AD5441F6285C0FA0ED5041CDCCCC3C4BAD544179E67CBA96ED50417027369A4EAD54412A4A433493ED504105468CDF4FAD54413AEFBCCD96ED5041C1EA3E4C5CAD54411C239E479AED5041EB80591A5BAD54418CA164D4B2ED50415862391652AD54410B6A9AC8B5ED5041D874271A51AD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>354622 - 384861
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1046  </desc>
+<a>
+0106000000050000000103000000030000005D000000AE47E1EA4DC75041E17A14BE5BD95441AE47E1AA4CC75041B81E851B64D95441E17A147E49C7504152B81E6569D95441C3F5289C46C750410AD7A3E06ED95441AE47E1EA43C750413333330378D95441713D0A5743C75041B81E859B7FD95441F6285C6F43C75041666666D688D95441B81E85FB43C750415C8FC2458ED95441295C8FB26CC7504185EB516889D9544152B81ED59BC7504148E17A5483D95441AE47E16AA5C75041F6285CAF82D954415C8FC225A7C750416666665681D954415C8FC225A7C75041666666967DD95441CDCCCCCCA5C750413333334374D95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000040000004B000000CDCCCCBC2CC750410AD7A3E094D954419A9999B92AC75041F6285CAFA5D95441B81E85EB29C75041295C8F62AFD95441F6285CEF2AC75041A4703DDAAFD95441713D0AC72AC75041E17A142EB1D95441713D0A8729C75041A4703DBAB1D95441B81E855B28C75041666666A6BBD95441F6285C1F28C75041666666B6BFD95441333333432CC7504166666636C2D95441713D0A0731C75041E17A148EC4D95441B81E85DB34C75041295C8F52C4D95441B81E85EB38C75041A4703D8AC3D95441B81E859B3DC7504166666636C2D95441F6285CCF40C75041666666F6C0D95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>364438 - 1808308
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2861  </desc>
+<a>
+01060000000100000001030000000100000012000000713D0A175DA650415C8FC24559665441CDCCCC3C59A65041666666E657665441E17A147E52A650411F85EB8153665441333333A34BA65041CDCCCCDC4D6654411F85EB114CA650413D0AD7235E6654410AD7A36074A65041E17A141E686654418FC2F5A86EA65041B81E858B846654415C8FC2457CA65041CDCCCCBC876654418FC2F5787DA65041E17A14FE86665441EC51B80E80A65041000000E07B665441CDCCCC5C80A65041B81E852B7A665441333333E384A6504114AE470173665441A4703DBA89A650419A9999796666544185EB51B87BA650418FC2F5D860665441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000008FC2F5A86EA65041B71E858B846654415C8FC2457CA65041CDCCCCBC876654418FC2F5787DA65041E17A14FE86665441EC51B80E80A65041000000E07B665441CDCCCC5C80A65041B81E852B7A665441333333E384A6504114AE470173665441A4703DBA89A650419A9999796666544185EB51B87BA650418FC2F5D860665441666666A67AA65041AE47E16A606654410000008079A6504148E17AF45F665441333333A36AA65041000000B05E665441713D0A175DA650415C8FC24559665441CDCCCC3C59A65041666666E657665441E17A147E52A650411F85EB8153665441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>364438 - 3415444
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2861  </desc>
+<a>
+01060000000100000001030000000100000012000000713D0A175DA650415C8FC24559665441CDCCCC3C59A65041666666E657665441E17A147E52A650411F85EB8153665441333333A34BA65041CDCCCCDC4D6654411F85EB114CA650413D0AD7235E6654410AD7A36074A65041E17A141E686654418FC2F5A86EA65041B81E858B846654415C8FC2457CA65041CDCCCCBC876654418FC2F5787DA65041E17A14FE86665441EC51B80E80A65041000000E07B665441CDCCCC5C80A65041B81E852B7A665441333333E384A6504114AE470173665441A4703DBA89A650419A9999796666544185EB51B87BA650418FC2F5D860665441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000008FC2F5A86EA65041B71E858B846654415C8FC2457CA65041CDCCCCBC876654418FC2F5787DA65041E17A14FE86665441EC51B80E80A65041000000E07B665441CDCCCC5C80A65041B81E852B7A665441333333E384A6504114AE470173665441A4703DBA89A650419A9999796666544185EB51B87BA650418FC2F5D860665441666666A67AA65041AE47E16A606654410000008079A6504148E17AF45F665441333333A36AA65041000000B05E665441713D0A175DA650415C8FC24559665441CDCCCC3C59A65041666666E657665441E17A147E52A650411F85EB8153665441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371024 - 189966
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -8322  </desc>
+<a>
+0106000000010000000103000000010000000E000000AE47E10A61D150410AD7A3405C9554415C8FC2C563D1504152B81EF55D955441CDCCCC8C68D15041A4703DAA5F955441A4703D3A74D150410AD7A3106395544185EB51A87AD15041295C8F5241955441666666E67AD15041EC51B80E40955441CDCCCCEC6AD150413D0AD7F340955441F6285CCF65D150413333337341955441295C8FD265D15041B81E85FB429554415C8FC29565D15041E17A14FE44955441713D0A5764D150418FC2F538499554413D0AD70360D1504185EB51D84E955441EC51B8BE5FD150416666669656955441AE47E10A61D150410AD7A3405C955441
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000003D0AD70360D1504185EB51D84E955441387EA5D85FD150414E51EFAE53955441691CF0C55FD150418AFBFBAD56955441B694870B61D15041B1B30B415C9554418C40A02061D150410BA6384E5C95544125DCD64561D150419E6A76655C9554417761A19461D15041A2C1AB965C955441B96C063362D15041AB5798F95C95544188B1A74162D15041AB6BBB025D9554419004D3AB62D15041B50D0A455D955441D24758CE63D150410B8F80F45D955441EB5D74A468D15041699120B15F9554418A4FC2C468D15041186E88BA5F955441333224BB69D15041DEE8440260955441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371024 - 394521
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -8322  </desc>
+<a>
+0106000000010000000103000000010000000E000000AE47E10A61D150410AD7A3405C9554415C8FC2C563D1504152B81EF55D955441CDCCCC8C68D15041A4703DAA5F955441A4703D3A74D150410AD7A3106395544185EB51A87AD15041295C8F5241955441666666E67AD15041EC51B80E40955441CDCCCCEC6AD150413D0AD7F340955441F6285CCF65D150413333337341955441295C8FD265D15041B81E85FB429554415C8FC29565D15041E17A14FE44955441713D0A5764D150418FC2F538499554413D0AD70360D1504185EB51D84E955441EC51B8BE5FD150416666669656955441AE47E10A61D150410AD7A3405C955441
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000003D0AD70360D1504185EB51D84E955441387EA5D85FD150414E51EFAE53955441691CF0C55FD150418AFBFBAD56955441B694870B61D15041B1B30B415C9554418C40A02061D150410BA6384E5C95544125DCD64561D150419E6A76655C9554417761A19461D15041A2C1AB965C955441B96C063362D15041AB5798F95C95544188B1A74162D15041AB6BBB025D9554419004D3AB62D15041B50D0A455D955441D24758CE63D150410B8F80F45D955441EB5D74A468D15041699120B15F9554418A4FC2C468D15041186E88BA5F955441333224BB69D15041DEE8440260955441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371224 - 190001
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -16234  </desc>
+<a>
+0106000000010000000103000000010000000800000066666696ABD35041C3F5281CBE9354419A999959D0D35041295C8FC2C6935441C3F5285CF4D35041B81E853BCF9354418FC2F588F6D35041666666B6CB9354419A999919FBD3504148E17AB4C29354410AD7A3D0D1D35041E17A14FEB893544185EB5168AFD350415C8FC2E5B093544166666696ABD35041C3F5281CBE935441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000AE15026AAFD35041173C28E6B0935441B90C6857ADD35041F76F260BB89354413AB6D696ABD35041D27FA41ABE935441FA7DB3F0ADD3504113BFE0A9BE935441E06AADFDADD350413A60EEACBE935441DC8B4101AED3504183EFC5ADBE9354414C7C60E5B1D3504106ACA87DB193544135977C33B0D35041FB078F15B19354418A2642B0AFD350418551AFF6B0935441AE15026AAFD35041173C28E6B0935441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>382911 - 1678665
+abs( area(A) - difference(A,B) - areatest(A,B) ) = 8716  </desc>
+<a>
+01060000000100000001030000000100000019000000666666C6FBA65041713D0A078B0055418FC2F5A8FAA6504185EB51D88A0055415C8FC285F6A65041C3F5282C8A005541E17A147EF5A650411F85EB018A0055411F85EB21F3A65041C3F5281CA70055417B14AE27F4A65041295C8F52A70055411F85EBC1F6A65041D7A370DDA7005541A4703D4AF8A65041B81E853BA80055418FC2F508FAA650417B14AEA7A8005541C3F528CCFAA650415C8FC2D5A8005541295C8F82FFA650419A999929AA00554148E17A4400A750417B14AE67AA005541C3F5280C0EA75041AE47E1CAAE0055417B14AE7713A7504152B81E85B0005541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000EFFD511F0EA750414DA5FCD0AE005541FB9DE8420DA75041B165CD8AAE005541D038789A0FA750419EB4006294005541AE47E16A02A750418FC2F5A891005541B81E855B03A75041000000B08C005541713D0AA702A7504185EB51888C0055419A9999C901A750417B14AE578C0055419A999969FCA65041AE47E12A8B005541666666C6FBA65041713D0A078B0055418FC2F5A8FAA6504185EB51D88A0055415C8FC285F6A65041C3F5282C8A005541E17A147EF5A650411F85EB018A0055411F85EB21F3A65041C3F5281CA70055417B14AE27F4A65041295C8F52A7005541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>767988 - 362220
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2163  </desc>
+<a>
+0106000000030000000103000000010000003800000000000040D51651411F85EBB1BEC8544148E17A24D61651413D0AD703C1C85441EC51B82EDB165141AE47E11ACEC854417B14AE87DE1651419A9999B9CDC85441AE47E10AE216514133333353CDC85441E17A148EE9165141EC51B80EC9C85441D7A3709DF1165141A4703DEAC4C85441D7A370CDF71651411F85EB61C3C854410AD7A38000175141A4703DCAC2C8544152B81E250817514100000080C3C85441666666F609175141CDCCCCBCBBC85441D7A3705D0B17514152B81E25B5C85441AE47E16A0A175141B81E853BB2C8544148E17AC4EC165141E17A140EB1C85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005400000000000040D51651411F85EBB1BEC854410F000040D51651414685EBB1BEC85441C1000040D5165141F484EBB1BEC85441381A0040D516514146C9EBB1BEC8544148E17A24D61651413D0AD703C1C854417ED2B72EDB165141B7FCDF1ACEC854419952B82EDB1651419A47E11ACEC8544184C4BC2EDB1651416EC6E01ACEC85441F1EAD70AE216514123443453CDC85441AE47E10AE216514133333353CDC85441BAFCE30BE5165141066E5C9ECBC85441767A148EE9165141C151B80EC9C8544136A3709DF116514179703DEAC4C85441C2A370CDF7165141A984EB61C3C85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>407778 - 342182
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2561  </desc>
+<a>
+01060000000100000001030000000100000011000000000000F0F3EE5041295C8F221E38544148E17A84F4EE50417B14AEB71B3854418FC2F518EFEE5041EC51B89E1A38544152B81E65EDEE5041666666461A3854419A999909ECEE5041CDCCCCFC21385441A4703D2AE6EE5041AE47E1DA30385441333333E3E0EE5041C3F528EC46385441AE47E17ADBEE5041D7A3700D58385441C3F5289CD5EE5041713D0AA76738544166666656DAEE50411F85EB9168385441D7A370EDDBEE5041CDCCCC9C673854419A999929E0EE504185EB51A8593854411F85EB71E6EE50418FC2F568483854417B14AE27E7EE504185EB510847385441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000110000002AF87A5FDAEE504151A9738C68385441D7ABE5A8DBEE50414E9B13C66738544159089FFDDFEE50414A9FEFF958385441E3535FD0E3EE504133C48EE34D385441C4CC5FEEE9EE504151A15D2B3F385441C710405FEDEE5041A8BE1CB333385441A889407DF3EE5041CA132B191E385441678DA6FCF3EE504122012D9C1B38544111B3FE5FF1EE50412D79C7141B385441553A9079EFEE5041AAE2FA9C1B385441770570CCECEE50411D63DB1C22385441FFA6FF04E8EE504118FB1CC2363854411E2EFFE6E1EE5041F73FBE3247385441552A0FB6E1EE50418C8B7E054B385441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>438173 - 4391836
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -5690  </desc>
+<a>
+0106000000010000000103000000010000000A000000F6285C6FB7E350410AD7A3D0DE735441CDCCCC5CB0E35041B81E85BBE27354413D0AD773B4E3504100000030007454417B14AEE7BAE350413D0AD7C3FE7354415C8FC235D1E35041713D0AE7F97354415C8FC2D5E0E3504166666676F573544114AE4701E1E35041AE47E13AD17354419A9999B9D1E35041B81E85BBD37354410AD7A310C3E3504152B81E35DB735441F6285C6FB7E350410AD7A3D0DE735441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000EB9216E9E0E35041988DF05EE573544185EB5148E5E35041EC51B8DEE473544148E17A54E6E35041A4703D0AE5735441E17A1446E7E35041C3F5280CE57354418FC2F518EAE350411F85EB11E5735441508D97DEEAE35041105839DCE4735441F6285CCFEBE35041AE47E19AE4735441295C8F32EDE3504123DBF956E5735441C3F5288CEDE3504166666686E57354411D5A6473EFE350417368913DE5735441666666C6F0E35041AE47E10AE57354417B14AE97F2E35041D7A370CDE57354410AD7A370F3E350418FC2F5A8E5735441295C8F72F3E350418FC2F508E5735441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442223 - 1480455
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1266  </desc>
+<a>
+01060000000300000001030000000100000021000000C3F528FC23F35041D7A3707D69295541E17A147E22F35041AE47E16A68295541295C8F021DF35041D7A3700D652955418FC2F5A817F350419A99992962295541A4703D6A15F350417B14AEB768295541EC51B88E12F3504185EB51686F295541E17A144E11F35041CDCCCC1C6F2955413D0AD7F30EF35041CDCCCCEC6D295541C3F5283C0AF350410AD7A3C06A2955411F85EBA108F350413D0AD7836929554166666696FCF25041D7A370BD5D29554185EB517800F3504152B81EE559295541EC51B8CEFCF25041CDCCCC6C56295541000000E0F5F2504148E17A4453295541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005A0000001AB327C90BF35041C62FB0AB8F2955413CC0ED690DF35041448EB4AE8F2955412C5A955710F35041258A0B1B8E2955418FC2F5F80EF35041EC51B8BE8A295541D7A3709D0EF35041A4703D0A88295541E71E17A70EF3504155BC1452852955412C76110F14F3504155BC145285295541245F613D19F35041453A408884295541A4703DFA1CF3504185EB51787D295541C6A6DAA81FF35041564C2474762955414ACE2EC920F35041E28A286672295541C3F528FC23F35041D7A3707D69295541E17A147E22F35041AE47E16A68295541295C8F021DF35041D7A3700D65295541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442223 - 3474701
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1266  </desc>
+<a>
+01060000000300000001030000000100000021000000C3F528FC23F35041D7A3707D69295541E17A147E22F35041AE47E16A68295541295C8F021DF35041D7A3700D652955418FC2F5A817F350419A99992962295541A4703D6A15F350417B14AEB768295541EC51B88E12F3504185EB51686F295541E17A144E11F35041CDCCCC1C6F2955413D0AD7F30EF35041CDCCCCEC6D295541C3F5283C0AF350410AD7A3C06A2955411F85EBA108F350413D0AD7836929554166666696FCF25041D7A370BD5D29554185EB517800F3504152B81EE559295541EC51B8CEFCF25041CDCCCC6C56295541000000E0F5F2504148E17A4453295541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005A0000001AB327C90BF35041C62FB0AB8F2955413CC0ED690DF35041448EB4AE8F2955412C5A955710F35041258A0B1B8E2955418FC2F5F80EF35041EC51B8BE8A295541D7A3709D0EF35041A4703D0A88295541E71E17A70EF3504155BC1452852955412C76110F14F3504155BC145285295541245F613D19F35041453A408884295541A4703DFA1CF3504185EB51787D295541C6A6DAA81FF35041564C2474762955414ACE2EC920F35041E28A286672295541C3F528FC23F35041D7A3707D69295541E17A147E22F35041AE47E16A68295541295C8F021DF35041D7A3700D65295541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>452452 - 254359
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2623  </desc>
+<a>
+0106000000010000000103000000010000001B0000003D0AD7B37132514185EB51981D2F554148E17A346E325141B81E855B1F2F55413D0AD7336B325141EC51B8AE212F55410AD7A3C068325141AE47E19A242F5541C3F528FC673251419A999909262F55417B14AE3767325141C3F528EC262F55415C8FC23566325141333333C3282F5541E17A14DE643251419A9999792B2F5541A4703D8A63325141EC51B8AE2D2F5541295C8FF263325141C3F5283C2E2F5541000000D06D32514148E17AD4372F55418FC2F5286F325141295C8F32392F5541F6285CEF743251411F85EB913D2F55415C8FC2C5793251418FC2F548422F5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000130000000AD7A360723251415C8FC245202F55415050FBCD7132514169BA9E371E2F5541F76476036C3251415B1D2B69222F55417F795AB8673251418218CF66282F5541B4492B2064325141091373642E2F554182B4648966325141A51ADAC0302F55411E295CEF743251416784EB913D2F554161E003AB793251417C74E42E422F55416E7C21B579325141E87CC038422F55413694EEB8793251416FF0743C422F5541808707BF79325141925C6642422F5541BEF25ABF7932514108ABB742422F55414F8FC2C57932514182C2F548422F5541C3F5280C7D3251417B14AED73C2F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>452452 - 345483
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2623  </desc>
+<a>
+0106000000010000000103000000010000001B0000003D0AD7B37132514185EB51981D2F554148E17A346E325141B81E855B1F2F55413D0AD7336B325141EC51B8AE212F55410AD7A3C068325141AE47E19A242F5541C3F528FC673251419A999909262F55417B14AE3767325141C3F528EC262F55415C8FC23566325141333333C3282F5541E17A14DE643251419A9999792B2F5541A4703D8A63325141EC51B8AE2D2F5541295C8FF263325141C3F5283C2E2F5541000000D06D32514148E17AD4372F55418FC2F5286F325141295C8F32392F5541F6285CEF743251411F85EB913D2F55415C8FC2C5793251418FC2F548422F5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000130000000AD7A360723251415C8FC245202F55415050FBCD7132514169BA9E371E2F5541F76476036C3251415B1D2B69222F55417F795AB8673251418218CF66282F5541B4492B2064325141091373642E2F554182B4648966325141A51ADAC0302F55411E295CEF743251416784EB913D2F554161E003AB793251417C74E42E422F55416E7C21B579325141E87CC038422F55413694EEB8793251416FF0743C422F5541808707BF79325141925C6642422F5541BEF25ABF7932514108ABB742422F55414F8FC2C57932514182C2F548422F5541C3F5280C7D3251417B14AED73C2F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454450 - 119968
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -39250  </desc>
+<a>
+01060000000100000001030000000100000017000000713D0A4703B65041EC51B82E08DE54413D0AD763FDB55041295C8F020BDE54416666665605B65041C3F5283C27DE544148E17A8411B650410000005052DE5441A4703D3A12B650418FC2F5B854DE5441D7A3707D18B65041D7A370CD59DE54410AD7A32026B6504148E17A6457DE5441713D0A2740B65041666666A652DE5441B81E857B58B65041713D0A374EDE5441666666065CB650411F85EB914DDE54413D0AD77350B65041AE47E1AA24DE54418FC2F54844B650413D0AD793F9DD5441333333C340B65041AE47E14AFADD5441EC51B84E3DB65041E17A14FEFADD5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000260000003D0AD763FDB55041295C8F020BDE54416666665605B65041C3F5283C27DE544148E17A8411B650410000005052DE5441A4703D3A12B650418FC2F5B854DE5441D7A3707D18B65041D7A370CD59DE54410AD7A32026B6504148E17A6457DE5441C6FC9AF139B650411A2D8BC553DE54411C1DAC053BB650413BB2BB9553DE5441B61205F63BB65041C45BEF6953DE54417F0CA52840B65041644E82A252DE544186E462C63EB65041C13304CD4DDE5441ED137EAB3DB650411C363CF049DE5441227A880C3DB65041BD4D24BD47DE54419BFECD013CB6504133FAB00044DE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>456298 - 152953
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2975  </desc>
+<a>
+0106000000010000000103000000010000002F000000D7A3701D960D5141A4703D9AB079544133333393960D514185EB5178AF795441AE47E13A950D5141B81E857BAB795441CDCCCCBC940D5141AE47E1FAA8795441E17A144E940D51417B14AEF7A37954411F85EB618E0D5141295C8F52A179544166666636840D5141CDCCCCCC9C795441B81E857B7F0D5141EC51B83E9A7954415C8FC2A57A0D51419A99996997795441000000107A0D5141295C8F7297795441C3F528FC740D5141295C8FA2A279544152B81E15700D5141A4703DCAAD795441000000C06C0D51410AD7A3C0AB79544148E17A146B0D51411F85EBA1AF795441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000340000009B3DAFF4850D5141B52542939D7954419F346736840D51418128CDCC9C79544154D233C7800D51412D87F069A179544176096E73780D514160A8CF99AC7954411E5ED837750D5141866C9BF1B07954413A274BF9720D5141BE1C4876AF7954416C2B32A3720D51413D68703DAF79544152B81E15700D5141A4703DCAAD795441000000C06C0D51410AD7A3C0AB795441AEB304896C0D5141FBBA6140AC79544123DDAC27700D5141E06332F3B1795441DA3A7A64720D5141074109C7B67954419FE85B3F740D51413442A430BB7954419D218836700D51410B4E2E0DC0795441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>482152 - 153313
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -11147  </desc>
+<a>
+0106000000010000000103000000010000000A000000F6285C1FC71B5141CDCCCCEC61735441EC51B84EF31B51415C8FC2D55E735441CDCCCC0C021C5141A4703DFA5D735441295C8F12051C5141666666E651735441295C8F52081C51415C8FC2F545735441A4703D0AF21B5141AE47E13A4773544152B81E55CE1B514148E17A3449735441D7A3704DCD1B5141000000104D73544133333393CA1B5141AE47E1EA55735441F6285C1FC71B5141CDCCCCEC61735441
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000033333393CA1B5141AE47E1EA5573544107DD7131C81B5141AD7A8E335E7354413027D4A8C71B5141190EB20E60735441E8A51F20C71B5141C3E824EA6173544157442C35F31B514154ED8BD75E735441EC51B84EF31B51415C8FC2D55E7354411BCD2188011C514150E7F4015E73544153D0CC0C021C514181623DFA5D735441D508DB37031C5141BA1E414F59735441B76806E4031C5141F1E6499F567354411E988E12051C5141B28666E651735441DE85B9AEF21B5141435399E95273544133333393CA1B5141AE47E1EA55735441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>482152 - 381004
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -11147  </desc>
+<a>
+0106000000010000000103000000010000000A000000F6285C1FC71B5141CDCCCCEC61735441EC51B84EF31B51415C8FC2D55E735441CDCCCC0C021C5141A4703DFA5D735441295C8F12051C5141666666E651735441295C8F52081C51415C8FC2F545735441A4703D0AF21B5141AE47E13A4773544152B81E55CE1B514148E17A3449735441D7A3704DCD1B5141000000104D73544133333393CA1B5141AE47E1EA55735441F6285C1FC71B5141CDCCCCEC61735441
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000033333393CA1B5141AE47E1EA5573544107DD7131C81B5141AD7A8E335E7354413027D4A8C71B5141190EB20E60735441E8A51F20C71B5141C3E824EA6173544157442C35F31B514154ED8BD75E735441EC51B84EF31B51415C8FC2D55E7354411BCD2188011C514150E7F4015E73544153D0CC0C021C514181623DFA5D735441D508DB37031C5141BA1E414F59735441B76806E4031C5141F1E6499F567354411E988E12051C5141B28666E651735441DE85B9AEF21B5141435399E95273544133333393CA1B5141AE47E1EA55735441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>514154 - 22172
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1547  </desc>
+<a>
+010600000001000000010300000001000000080000003D0AD703578C5141A4703DEAFC79544152B81E25678C514152B81E95077A54415C8FC205698C5141F6285CAF057A5441295C8F026A8C5141295C8F32047A5441AE47E1CA6A8C5141A4703DBA017A54417B14AE276B8C514148E17A64FE795441EC51B80E588C5141B81E85DBFA7954413D0AD703578C5141A4703DEAFC795441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000BB9222FF578C5141595E47FAFA79544145915E16578C5141B98C7EF6FC795441EAC8D35E5B8C5141F5B1A1CBFF795441B2AF0D8D5C8C5141D7EA8193007A5441B76DCC46648C5141B7DD7AAF057A54417C482925668C51416FC7D7EB067A5441D66CBA15638C51411F6CD75C047A5441ACA96EBC5C8C514164D74471FD795441BB9222FF578C5141595E47FAFA795441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>514154 - 65731
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1547  </desc>
+<a>
+010600000001000000010300000001000000080000003D0AD703578C5141A4703DEAFC79544152B81E25678C514152B81E95077A54415C8FC205698C5141F6285CAF057A5441295C8F026A8C5141295C8F32047A5441AE47E1CA6A8C5141A4703DBA017A54417B14AE276B8C514148E17A64FE795441EC51B80E588C5141B81E85DBFA7954413D0AD703578C5141A4703DEAFC795441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000BB9222FF578C5141595E47FAFA79544145915E16578C5141B98C7EF6FC795441EAC8D35E5B8C5141F5B1A1CBFF795441B2AF0D8D5C8C5141D7EA8193007A5441B76DCC46648C5141B7DD7AAF057A54417C482925668C51416FC7D7EB067A5441D66CBA15638C51411F6CD75C047A5441ACA96EBC5C8C514164D74471FD795441BB9222FF578C5141595E47FAFA795441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>914024 - 359091
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -5650  </desc>
+<a>
+01060000000100000001030000000100000009000000F6285CBF03F25041D7A3702D269F5441295C8F72FEF150415C8FC2E5FB9E544114AE4741FCF15041F6285CCFFB9E544114AE47D1F9F15041713D0AB7FB9E5441C3F528DCF5F15041A4703D8AFD9E5441713D0AD7FAF15041F6285C0F279F5441EC51B89E01F25041EC51B86E269F5441AE47E15A02F25041CDCCCC5C269F5441F6285CBF03F25041D7A3702D269F5441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000AE47E15A02F25041CDCCCC5C269F5441150383F302F2504102AD8548269F5441F1285CBF03F25041ADA3702D269F5441C224018903F25041CF90D37B249F544142494A6703F25041511FE06E239F5441F6F72584FAF150419D56435C249F5441713D0AD7FAF15041F6285C0F279F5441EC51B89E01F25041EC51B86E269F5441AE47E15A02F25041CDCCCC5C269F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>901210 - 3948111
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -7198  </desc>
+<a>
+01060000000100000001030000000200000016000000EC51B8BE00E25041B81E85ABCE325441C3F528EC00E2504114AE47B1D4325441F6285C6FFEE15041713D0AA7D43254410AD7A360FEE15041CDCCCC5CD5325441E17A141EFBE15041B81E857BD5325441D7A3701DFBE1504114AE47A1D6325441AE47E1DAFAE15041713D0A77DD3254418FC2F5B8FAE15041D7A3701DDE325441EC51B8AEFBE1504100000030DE325441A4703D0A04E250410AD7A3D0DE325441A4703D9A09E25041B81E853BDF325441B81E856B09E25041A4703DFADA325441CDCCCC7C08E250417B14AE67D9325441000000C005E25041CDCCCCECD4325441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000038000000CD67315FFBE15041527AFE29DE32544167A26B9BFBE1504114E08A2EDE3254415670F73DFBE1504162F0C368E03254414D6C80AEFAE15041F95A5CE1E13254411F85EBA1F8E1504166666696E332544114AE47B1F4E15041F6285C2FE63254411F85EB31F2E15041295C8F52E73254413D0AD783EEE15041666666E6E8325441EC51B84EEDE150418FC2F5A8E9325441B3528A91E8E15041A7FD0DC2EC325441B7CB8ED1E8E15041310E5370ED325441A041E56AE7E15041C878EBE8EE3254418C781928E6E15041D17C6278EF3254416CEAF831E4E15041EAC7E902F1325441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942203 - 2939797
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -19938  </desc>
+<a>
+01060000000100000001030000000100000015000000D7A3703DBAB150418FC2F5C831D45441F6285CBFC1B1504148E17AB43ED454417B14AEC7C9B15041F6285C8F4CD4544148E17A04D1B150415C8FC21558D454415C8FC205D5B15041E17A140E5FD454417B14AE17D8B1504114AE476165D454419A999999DAB1504148E17A846AD454410AD7A3B0E4B1504185EB519867D45441AE47E1EAE8B15041295C8FD264D45441C3F528ACECB150410AD7A38061D45441D7A370CDEFB15041333333B35DD45441AE47E15AF2B150417B14AE6759D45441295C8FA2F7B15041B81E855B4CD45441A4703D8AEDB15041333333E33AD45441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000D7A3703DBAB150418FC2F5C831D45441F40F17D4BDB15041FF2CE8F537D45441A148C7C9C1B15041CB5073C63ED454417588AD75C5B150418311A71B45D454418A4C2390C7B15041F6C76CBC48D45441E2543A0BCAB15041C49E72664CD45441BD466D45CDB150416E7909724AD454410AFA8BC3D2B15041A17D611E47D4544189BF2C64D8B15041DEAFAED243D454411C8A9BE3DAB15041C8E1D36242D45441F697D580DCB1504192D5D59B41D454412E7BD89CDDB150414ABB953A41D454418D9E0A46E0B1504137C888DB40D45441F61E2891E4B15041CD55495040D45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942203 - 3387653
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -19938  </desc>
+<a>
+01060000000100000001030000000100000015000000D7A3703DBAB150418FC2F5C831D45441F6285CBFC1B1504148E17AB43ED454417B14AEC7C9B15041F6285C8F4CD4544148E17A04D1B150415C8FC21558D454415C8FC205D5B15041E17A140E5FD454417B14AE17D8B1504114AE476165D454419A999999DAB1504148E17A846AD454410AD7A3B0E4B1504185EB519867D45441AE47E1EAE8B15041295C8FD264D45441C3F528ACECB150410AD7A38061D45441D7A370CDEFB15041333333B35DD45441AE47E15AF2B150417B14AE6759D45441295C8FA2F7B15041B81E855B4CD45441A4703D8AEDB15041333333E33AD45441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000D7A3703DBAB150418FC2F5C831D45441F40F17D4BDB15041FF2CE8F537D45441A148C7C9C1B15041CB5073C63ED454417588AD75C5B150418311A71B45D454418A4C2390C7B15041F6C76CBC48D45441E2543A0BCAB15041C49E72664CD45441BD466D45CDB150416E7909724AD454410AFA8BC3D2B15041A17D611E47D4544189BF2C64D8B15041DEAFAED243D454411C8A9BE3DAB15041C8E1D36242D45441F697D580DCB1504192D5D59B41D454412E7BD89CDDB150414ABB953A41D454418D9E0A46E0B1504137C888DB40D45441F61E2891E4B15041CD55495040D45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>567473 - 1183554
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2751  </desc>
+<a>
+010600000001000000010300000001000000370000003D0AD763CC2D5141CDCCCC7C21AB5441713D0A77CC2D514114AE479122AB544114AE4731CC2D51411F85EB5126AB544152B81EF5CC2D5141713D0A4726AB544100000030CD2D51419A9999D929AB5441EC51B88ECD2D51415C8FC2552DAB544100000030CE2D514152B81E0531AB54418FC2F578D22D5141CDCCCC4C42AB54413D0AD753D82D5141D7A3708D59AB54418FC2F5B8DA2D5141C3F5285C63AB54410AD7A330DB2D5141A4703D0A65AB54410AD7A380DB2D51411F85EB2166AB544166666616DC2D514148E17AF466AB5441CDCCCCFCDC2D5141A4703DDA67AB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000008FC2F558412E5141AE47E1FA0AAB5441DEB6BCC4442E514146C9893D1DAB544157BE9A57482E5141FDDB26382DAB544133434DC74C2E514168C6817140AB5441C386BB18522E5141D5D1BED757AB54414041A90E522E5141F81F85D957AB5441AE1E6B56522E5141AD07CDAF58AB54410AD7A3A0372E5141EC51B85E5DAB544185EB51C8302E5141666666165FAB54415C8FC205322E5141F6285C2F63AB544152B81E35332E514114AE476168AB544133333343392E5141295C8FC266AB54415C8FC2A5402E51417B14AE7786AB5441000000F03B2E5141D7A370ED88AB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>567473 - 5293716
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2751  </desc>
+<a>
+010600000001000000010300000001000000370000003D0AD763CC2D5141CDCCCC7C21AB5441713D0A77CC2D514114AE479122AB544114AE4731CC2D51411F85EB5126AB544152B81EF5CC2D5141713D0A4726AB544100000030CD2D51419A9999D929AB5441EC51B88ECD2D51415C8FC2552DAB544100000030CE2D514152B81E0531AB54418FC2F578D22D5141CDCCCC4C42AB54413D0AD753D82D5141D7A3708D59AB54418FC2F5B8DA2D5141C3F5285C63AB54410AD7A330DB2D5141A4703D0A65AB54410AD7A380DB2D51411F85EB2166AB544166666616DC2D514148E17AF466AB5441CDCCCCFCDC2D5141A4703DDA67AB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000008FC2F558412E5141AE47E1FA0AAB5441DEB6BCC4442E514146C9893D1DAB544157BE9A57482E5141FDDB26382DAB544133434DC74C2E514168C6817140AB5441C386BB18522E5141D5D1BED757AB54414041A90E522E5141F81F85D957AB5441AE1E6B56522E5141AD07CDAF58AB54410AD7A3A0372E5141EC51B85E5DAB544185EB51C8302E5141666666165FAB54415C8FC205322E5141F6285C2F63AB544152B81E35332E514114AE476168AB544133333343392E5141295C8FC266AB54415C8FC2A5402E51417B14AE7786AB5441000000F03B2E5141D7A370ED88AB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574026 - 2971307
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -19641  </desc>
+<a>
+0106000000010000000103000000010000003B000000A4703DBA306B51415C8FC2058C6A5441295C8F822D6B5141CDCCCCCC866A54415C8FC2E52B6B51419A9999D9826A5441CDCCCC1C2A6B5141D7A3700D7C6A5441B81E855B276B5141666666766B6A544152B81E753A6B51419A999919696A5441713D0A973E6B514114AE4701696A54417B14AEC7456B5141AE47E1FA696A54411F85EB61516B5141666666C66B6A54417B14AE175C6B51417B14AE776C6A5441E17A146E6E6B51415C8FC2B56C6A5441000000E07F6B514148E17AD46A6A54411F85EB018F6B5141CDCCCC0C6B6A5441E17A14DEA76B51411F85EB016D6A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001300000019D1E0C2276B51412D929D696B6A54417D97CB47276B51412B5BFEE26A6A544106166136266B5141297F6E05666A54419593AF6E246B514107CCB1D95F6A544120348C11236B5141344E24655A6A54416CCAF5C2216B5141AEE990BF5A6A5441EC3DED31246B5141FCCD3F46616A5441DA40C254266B5141315AB72C6A6A54414BC3731C286B5141093D3806746A544119EF1BF1286B514124F13BE87A6A544133C78FF52A6B5141667B2562826A5441A44941BD2C6B5141BF01F302876A54416BB661D72F6B51415CCAA24D8C6A5441A4703DBA306B51415C8FC2058C6A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574026 - 3510680
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -19641  </desc>
+<a>
+0106000000010000000103000000010000003B000000A4703DBA306B51415C8FC2058C6A5441295C8F822D6B5141CDCCCCCC866A54415C8FC2E52B6B51419A9999D9826A5441CDCCCC1C2A6B5141D7A3700D7C6A5441B81E855B276B5141666666766B6A544152B81E753A6B51419A999919696A5441713D0A973E6B514114AE4701696A54417B14AEC7456B5141AE47E1FA696A54411F85EB61516B5141666666C66B6A54417B14AE175C6B51417B14AE776C6A5441E17A146E6E6B51415C8FC2B56C6A5441000000E07F6B514148E17AD46A6A54411F85EB018F6B5141CDCCCC0C6B6A5441E17A14DEA76B51411F85EB016D6A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001300000019D1E0C2276B51412D929D696B6A54417D97CB47276B51412B5BFEE26A6A544106166136266B5141297F6E05666A54419593AF6E246B514107CCB1D95F6A544120348C11236B5141344E24655A6A54416CCAF5C2216B5141AEE990BF5A6A5441EC3DED31246B5141FCCD3F46616A5441DA40C254266B5141315AB72C6A6A54414BC3731C286B5141093D3806746A544119EF1BF1286B514124F13BE87A6A544133C78FF52A6B5141667B2562826A5441A44941BD2C6B5141BF01F302876A54416BB661D72F6B51415CCAA24D8C6A5441A4703DBA306B51415C8FC2058C6A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574745 - 245591
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -41320  </desc>
+<a>
+0106000000010000000103000000010000004F000000AE47E14AE8B850416666662686285441A4703D6AEDB8504114AE479188285441295C8FB2FBB8504152B81E258D2854413333336302B95041CDCCCCCC91285441A4703DDA06B950410AD7A38093285441B81E855B0FB9504148E17AD484285441C3F5287C11B95041E17A149E842854419A99992916B95041EC51B8DE882854417B14AE2720B95041000000509028544114AE47C11CB950413D0AD73395285441713D0AD71AB95041EC51B84E9A285441AE47E1BA1FB95041F6285C8F9E285441666666462CB95041000000F0A4285441F6285C3F39B9504114AE4761AC285441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000000000002052B950413D0AD7B3A7285441AE47E1BA44B9504133333373A3285441333333133DB95041F6285CAFA02854418FC2F5183AB950418FC2F5689F285441E17A14BE30B95041AE47E18A97285441000000102CB95041A4703D5A942854411F85EB1122B950418FC2F5E88C285441D7A3701D1CB9504152B81E15892854419A99992916B95041666666E67B2854415C8FC22515B950413D0AD7A377285441C3F5286C10B95041EC51B83E7428544114AE47410AB95041B81E858B722854419A99991902B95041E17A140E70285441713D0A47F7B85041C3F528BC73285441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585200 - 234388
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -3963  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703D3A2BE250416666663662F054410AD7A3E031E25041666666D655F05441713D0A2732E250415C8FC24555F054416666664634E25041E17A14DE4EF05441713D0A5736E2504152B81EA548F054417B14AE5740E25041EC51B88E49F0544148E17AB440E25041C3F5285C42F054411F85EB0141E25041F6285C3F3BF05441E17A148E44E250413333337337F05441713D0A9749E25041713D0AE731F054415C8FC24548E25041666666D62CF05441000000C039E250417B14AE8732F0544114AE47F12AE2504148E17A5438F0544114AE47512BE25041666666D63CF05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000700000014AE47512BE25041666666D63CF05441806122A72BE2504181BC49B946F05441AC1FED5E40E25041731BD8FE48F054415D7F116C40E25041A7E2E7F947F0544113B1CCAC40E25041C2B6302A3BF05441D64D80502BE25041AFE609CD3CF0544114AE47512BE25041666666D63CF05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585200 - 396850
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -3963  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703D3A2BE250416666663662F054410AD7A3E031E25041666666D655F05441713D0A2732E250415C8FC24555F054416666664634E25041E17A14DE4EF05441713D0A5736E2504152B81EA548F054417B14AE5740E25041EC51B88E49F0544148E17AB440E25041C3F5285C42F054411F85EB0141E25041F6285C3F3BF05441E17A148E44E250413333337337F05441713D0A9749E25041713D0AE731F054415C8FC24548E25041666666D62CF05441000000C039E250417B14AE8732F0544114AE47F12AE2504148E17A5438F0544114AE47512BE25041666666D63CF05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000700000014AE47512BE25041666666D63CF05441806122A72BE2504181BC49B946F05441AC1FED5E40E25041731BD8FE48F054415D7F116C40E25041A7E2E7F947F0544113B1CCAC40E25041C2B6302A3BF05441D64D80502BE25041AFE609CD3CF0544114AE47512BE25041666666D63CF05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>869229 - 52271
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -23889  </desc>
+<a>
+01060000000100000001030000000200000031000000B81E856B4E745141C3F5288C537954415C8FC2455074514148E17AC45A795441CDCCCC1C65745141B81E85DB567954419A999959657451411F85EBB15179544152B81EB5787451419A9999B94B7954418FC2F59878745141B81E859B4A7954411F85EB617D745141A4703D8A45795441666666268074514152B81EE542795441666666C68174514114AE47C1417954416666669681745141A4703DCA4079544148E17A44837451415C8FC2D53F795441CDCCCC6C8374514114AE47013E7954419A99998989745141666666C63C7954419A9999898E7451415C8FC2353C795441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000027AF488C4B745141FBF6565148795441B81E856B4E745141C3F5288C53795441F647DB714E7451419C3ADBA453795441B8DE4E12657451417B6542224E795441F478CA4E65745141026F80AD51795441559B128F77745141315349144C795441AB40C9E07774514112DB15FB4B79544184309EF5777451413323A9F44B7954411505735778745141231F7DD64B7954411F13249078745141702F01C54B7954411F13249078745141B8C1885A4A795441B5753E2577745141AA0FF241417954414CD858BA75745141D8350C6A3C79544127AF488C4B745141FBF6565148795441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>648567 - 2953060
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -12023  </desc>
+<a>
+01060000000100000001030000000100000066000000F6285C1F85AB5041F6285C6F873254418FC2F51899AB5041D7A3700D8E32544185EB51F8A7AB504152B81E059332544152B81E15A7AB5041B81E852B9132544148E17AF4A5AB50410AD7A3408F325441AE47E12AA5AB5041000000608D3254413D0AD7D3A4AB50411F85EB318B325441D7A370DDA4AB50413D0AD70389325441AE47E12AA5AB50411F85EBC18632544148E17AF4A5AB50418FC2F5888132544152B81E55A6AB5041CDCCCCEC7D325441B81E857BA6AB504114AE47217A32544185EB5168A6AB50411F85EBB1753254413D0AD743A4AB504185EB51D875325441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007F0000008FC2F5D8A7AB5041666666B65A32544100000020A9AB50413D0AD7A35A325441CDCCCCACA9AB50418FC2F5085C325441713D0AC7AAAB5041A4703DEA603254417B14AE37ABAB504166666606653254410AD7A340ABAB50417B14AE376832544148E17A44ABAB5041A4703DFA6B3254417B14AE07ABAB5041A4703DAA6E325441D7A370DDA9AB5041EC51B89E70325441EC51B8BEA6AB504152B81E95703254419A999939A7AB5041A4703DAA76325441D7A3703DA7AB5041713D0A477A32544148E17A14A7AB504185EB51F87D32544152B81EB5A6AB5041000000A081325441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>648567 - 3411830
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -12023  </desc>
+<a>
+01060000000100000001030000000100000066000000F6285C1F85AB5041F6285C6F873254418FC2F51899AB5041D7A3700D8E32544185EB51F8A7AB504152B81E059332544152B81E15A7AB5041B81E852B9132544148E17AF4A5AB50410AD7A3408F325441AE47E12AA5AB5041000000608D3254413D0AD7D3A4AB50411F85EB318B325441D7A370DDA4AB50413D0AD70389325441AE47E12AA5AB50411F85EBC18632544148E17AF4A5AB50418FC2F5888132544152B81E55A6AB5041CDCCCCEC7D325441B81E857BA6AB504114AE47217A32544185EB5168A6AB50411F85EBB1753254413D0AD743A4AB504185EB51D875325441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007F0000008FC2F5D8A7AB5041666666B65A32544100000020A9AB50413D0AD7A35A325441CDCCCCACA9AB50418FC2F5085C325441713D0AC7AAAB5041A4703DEA603254417B14AE37ABAB504166666606653254410AD7A340ABAB50417B14AE376832544148E17A44ABAB5041A4703DFA6B3254417B14AE07ABAB5041A4703DAA6E325441D7A370DDA9AB5041EC51B89E70325441EC51B8BEA6AB504152B81E95703254419A999939A7AB5041A4703DAA76325441D7A3703DA7AB5041713D0A477A32544148E17A14A7AB504185EB51F87D32544152B81EB5A6AB5041000000A081325441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607641 - 201101
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1606  </desc>
+<a>
+0106000000020000000103000000010000000B00000014AE476163A350418FC2F5E83E5755410AD7A39060A35041C3F5282C40575541666666F65FA3504152B81E2540575541CDCCCC4C60A3504185EB51C840575541000000E065A35041B81E85FB5057554148E17AF466A350410AD7A370545755413D0AD7A367A3504114AE47A156575541295C8F426CA35041B81E853B56575541000000B064A3504114AE47E13F5755411F85EB4164A3504185EB51F83E57554114AE476163A350418FC2F5E83E57554101030000000100000018000000F6285C9F7FA350419A9999F97A5755411F85EBB183A35041295C8FB282575541333333 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000052B81E7578A35041B81E858B66575541BCD480BE76A350414B26A18763575541E5EB937C73A35041F09A63FA5D575541E842132373A3504154E558855D5755418AA61CE572A350411575C5A75D57554114C18F3171A350412AB499AB5E5755414D45FD9B70A3504137544E0B5F575541E17A14AE76A350418FC2F5F8695755413D0AD7137BA350418FC2F508725755410AD7A3A07DA35041E17A142E77575541F6285C9F7FA350419A9999F97A5755411F85EBB183A35041295C8FB28257554184B45DBE84A3504166FF392582575541EE6E4EB686A35041A90FA8FC80575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607641 - 432533
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1606  </desc>
+<a>
+0106000000020000000103000000010000000B00000014AE476163A350418FC2F5E83E5755410AD7A39060A35041C3F5282C40575541666666F65FA3504152B81E2540575541CDCCCC4C60A3504185EB51C840575541000000E065A35041B81E85FB5057554148E17AF466A350410AD7A370545755413D0AD7A367A3504114AE47A156575541295C8F426CA35041B81E853B56575541000000B064A3504114AE47E13F5755411F85EB4164A3504185EB51F83E57554114AE476163A350418FC2F5E83E57554101030000000100000018000000F6285C9F7FA350419A9999F97A5755411F85EBB183A35041295C8FB282575541333333 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001500000052B81E7578A35041B81E858B66575541BCD480BE76A350414B26A18763575541E5EB937C73A35041F09A63FA5D575541E842132373A3504154E558855D5755418AA61CE572A350411575C5A75D57554183C18F3171A35041E3B399AB5E575541DA78E1B670A35041E06319FA5E5755415045FD9B70A3504136544E0B5F575541E17A14AE76A350418FC2F5F8695755413D0AD7137BA350418FC2F508725755410AD7A3A07DA35041E17A142E77575541F6285C9F7FA350419A9999F97A5755411F85EBB183A35041295C8FB282575541E3B45DBE84A3504134FF392582575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>633941 - 1575918
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1461  </desc>
+<a>
+0106000000010000000103000000010000000B0000001F85EBD189F9504152B81EE517B954415C8FC2758BF95041CDCCCCDC19B95441295C8FE28CF9504114AE47511DB95441D7A370FDAAF950413D0AD76311B954417B14AE679DF950419A9999490CB95441AE47E1FA92F95041EC51B85E08B954413D0AD7F38CF95041AE47E11A06B954413D0AD7E385F950419A99998904B95441F6285CEF76F95041CDCCCC8CFFB85441EC51B85E70F95041E17A140E0DB954411F85EBD189F9504152B81EE517B95441
+</a>
+
+<b>
+010600000001000000010300000001000000180000003D0AD7F38CF95041AE47E11A06B95441CD070E4C92F95041C14B061D08B954415CD9C88692F95041960B183308B95441295C8F9292F95041AC1C5A2C08B95441F2D24DF294F95041A4703D7A06B95441508D97AE9EF950412B87168101B95441C3F52854A0F95041894160B502B9544196438BFCA1F95041A01A2F6505B95441A38275D69EF950413E8B5CD30CB95441AC69118BA6F950419A0845B80FB954410B574AB2AAF95041DD2B9D4711B95441666666CEB2F95041E7FBA9410EB95441560E2D5AC4F950415EBA493C0AB9544139B4C836C5F950411904568609B95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>633941 - 3654748
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1461  </desc>
+<a>
+0106000000010000000103000000010000000B0000001F85EBD189F9504152B81EE517B954415C8FC2758BF95041CDCCCCDC19B95441295C8FE28CF9504114AE47511DB95441D7A370FDAAF950413D0AD76311B954417B14AE679DF950419A9999490CB95441AE47E1FA92F95041EC51B85E08B954413D0AD7F38CF95041AE47E11A06B954413D0AD7E385F950419A99998904B95441F6285CEF76F95041CDCCCC8CFFB85441EC51B85E70F95041E17A140E0DB954411F85EBD189F9504152B81EE517B95441
+</a>
+
+<b>
+010600000001000000010300000001000000180000003D0AD7F38CF95041AE47E11A06B95441CD070E4C92F95041C14B061D08B954415CD9C88692F95041960B183308B95441295C8F9292F95041AC1C5A2C08B95441F2D24DF294F95041A4703D7A06B95441508D97AE9EF950412B87168101B95441C3F52854A0F95041894160B502B9544196438BFCA1F95041A01A2F6505B95441A38275D69EF950413E8B5CD30CB95441AC69118BA6F950419A0845B80FB954410B574AB2AAF95041DD2B9D4711B95441666666CEB2F95041E7FBA9410EB95441560E2D5AC4F950415EBA493C0AB9544139B4C836C5F950411904568609B95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>636098 - 181182
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1545  </desc>
+<a>
+01060000000100000001030000000100000021000000EC51B8CE48FC50411F85EBF1B2C2544114AE47514AFC50413D0AD7D3B0C25441000000204CFC50419A999919AEC25441CDCCCC5C50FC50417B14AE97A8C25441EC51B88E4DFC50411F85EB21A8C25441C3F5285C4CFC504152B81EF5A7C25441CDCCCC9C38FC504148E17A34B2C25441E17A149E20FC50411F85EBD1B9C254410AD7A37021FC5041C3F528DCBBC25441295C8FA21FFC504114AE47A1C1C2544152B81E451AFC50415C8FC2D5C0C254411F85EBE118FC5041333333E3BAC2544114AE47C10EFC504185EB5148BCC25441333333D30CFC50418FC2F578BCC25441 [...]
+</a>
+
+<b>
+010600000001000000010300000004000000370000008F16A4941BFC5041A02F79CFCEC254413CC5644C28FC50415437F64ECBC2544125FC5A8C31FC5041B0BE479FD0C25441F4D307ED32FC504160BDFC70CFC25441FC52E25532FC50414F652A79CDC254417A04D27337FC5041283460F2C8C25441A40C495B3DFC504156E404E2CCC25441712ACF093EFC5041AF5553D1CBC254412666668140FC5041140877F6C7C25441DFB70CC03DFC5041F130CA95C6C254418EB6C1913CFC5041D32BE90AC3C254412666668140FC50414BA1015EBBC25441706EDD6846FC5041C4C32844B5C254414E443F9B46FC50417B68C0EFB0C25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>636098 - 385784
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -1545  </desc>
+<a>
+01060000000100000001030000000100000021000000EC51B8CE48FC50411F85EBF1B2C2544114AE47514AFC50413D0AD7D3B0C25441000000204CFC50419A999919AEC25441CDCCCC5C50FC50417B14AE97A8C25441EC51B88E4DFC50411F85EB21A8C25441C3F5285C4CFC504152B81EF5A7C25441CDCCCC9C38FC504148E17A34B2C25441E17A149E20FC50411F85EBD1B9C254410AD7A37021FC5041C3F528DCBBC25441295C8FA21FFC504114AE47A1C1C2544152B81E451AFC50415C8FC2D5C0C254411F85EBE118FC5041333333E3BAC2544114AE47C10EFC504185EB5148BCC25441333333D30CFC50418FC2F578BCC25441 [...]
+</a>
+
+<b>
+010600000001000000010300000004000000370000008F16A4941BFC5041A02F79CFCEC254413CC5644C28FC50415437F64ECBC2544125FC5A8C31FC5041B0BE479FD0C25441F4D307ED32FC504160BDFC70CFC25441FC52E25532FC50414F652A79CDC254417A04D27337FC5041283460F2C8C25441A40C495B3DFC504156E404E2CCC25441712ACF093EFC5041AF5553D1CBC254412666668140FC5041140877F6C7C25441DFB70CC03DFC5041F130CA95C6C254418EB6C1913CFC5041D32BE90AC3C254412666668140FC50414BA1015EBBC25441706EDD6846FC5041C4C32844B5C254414E443F9B46FC50417B68C0EFB0C25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>637636 - 243083
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2741  </desc>
+<a>
+0106000000030000000103000000010000000E0000000AD7A37012E850418FC2F5A8073355418FC2F50814E850410AD7A30005335541C3F5280C1AE85041B81E853BFA325541713D0A871FE85041C3F5289CEE3255411F85EB7124E8504133333363E4325541F6285C7F28E85041713D0AE7DB325541713D0A771FE8504133333363DC325541A4703D2A14E850410AD7A370DC32554114AE471106E850413D0AD763F63255415C8FC2A5FBE7504185EB5178083355413D0AD7D300E85041CDCCCC9C0D3355419A99991905E85041CDCCCC1C123355411F85EBE109E8504100000040173355410AD7A37012E850418FC2F5A807335541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000290000009A9999F9D0E750415C8FC215CE3255414E2208F6D0E750414C9913ABCE32554147C7F600D1E7504128855275CF325541713D0AC7D3E75041F6285C0FD0325541186C121ED6E750419AC69B9FD0325541C01ECD36DBE750416D9EE5C8D1325541237B91CFDBE75041151CF1D4D1325541F9006BECDBE75041AE0167ECD1325541D6F3E1ECDBE75041B7427EECD132554146CB23EDDBE75041E4218BECD13255412931B3EEDBE750419836D9ECD1325541BDBF4563D8E75041F54A7DDFCE3255412EBE4F2FD4E7504100EFE18BCA325541D09F6F71D3E750410CDFF612C8325541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>637636 - 354489
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2741  </desc>
+<a>
+0106000000030000000103000000010000000E0000000AD7A37012E850418FC2F5A8073355418FC2F50814E850410AD7A30005335541C3F5280C1AE85041B81E853BFA325541713D0A871FE85041C3F5289CEE3255411F85EB7124E8504133333363E4325541F6285C7F28E85041713D0AE7DB325541713D0A771FE8504133333363DC325541A4703D2A14E850410AD7A370DC32554114AE471106E850413D0AD763F63255415C8FC2A5FBE7504185EB5178083355413D0AD7D300E85041CDCCCC9C0D3355419A99991905E85041CDCCCC1C123355411F85EBE109E8504100000040173355410AD7A37012E850418FC2F5A807335541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000290000009A9999F9D0E750415C8FC215CE3255414E2208F6D0E750414C9913ABCE32554147C7F600D1E7504128855275CF325541713D0AC7D3E75041F6285C0FD0325541186C121ED6E750419AC69B9FD0325541C01ECD36DBE750416D9EE5C8D1325541237B91CFDBE75041151CF1D4D1325541F9006BECDBE75041AE0167ECD1325541D6F3E1ECDBE75041B7427EECD132554146CB23EDDBE75041E4218BECD13255412931B3EEDBE750419836D9ECD1325541BDBF4563D8E75041F54A7DDFCE3255412EBE4F2FD4E7504100EFE18BCA325541D09F6F71D3E750410CDFF612C8325541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>140201 - 1229875
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2369  </desc>
+<a>
+010600000001000000010300000001000000220000005C8FC2B5797D51413D0AD70328B854417B14AEA77F7D51415C8FC2F522B85441CDCCCC7C8A7D51410AD7A3A034B85441E17A142E907D5141B81E856B2EB8544114AE4731947D5141CDCCCC6C2AB8544100000000977D5141CDCCCCBC27B8544185EB5128947D514148E17AF423B85441E17A14AE907D5141E17A143E1FB85441A4703D9A8F7D514114AE47C11DB8544114AE47518D7D5141713D0A971AB85441713D0A978A7D5141A4703DAA16B85441E17A143E897D51413D0AD79315B854415C8FC245877D51417B14AE8710B85441F6285CDF847D514152B81E250DB85441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000230000005C8FC2B5797D51413D0AD70328B854417B14AEA77F7D51415C8FC2F522B85441CDCCCC7C8A7D51410AD7A3A034B85441E17A142E907D5141B81E856B2EB8544114AE4731947D5141CDCCCC6C2AB8544100000000977D5141CDCCCCBC27B8544185EB5128947D514148E17AF423B85441E17A14AE907D5141E17A143E1FB85441A4703D9A8F7D514114AE47C11DB8544114AE47518D7D5141713D0A971AB85441713D0A978A7D5141A4703DAA16B85441E17A143E897D51413D0AD79315B854415C8FC245877D51417B14AE8710B85441F6285CDF847D514152B81E250DB85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>140201 - 3687912
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -2369  </desc>
+<a>
+010600000001000000010300000001000000220000005C8FC2B5797D51413D0AD70328B854417B14AEA77F7D51415C8FC2F522B85441CDCCCC7C8A7D51410AD7A3A034B85441E17A142E907D5141B81E856B2EB8544114AE4731947D5141CDCCCC6C2AB8544100000000977D5141CDCCCCBC27B8544185EB5128947D514148E17AF423B85441E17A14AE907D5141E17A143E1FB85441A4703D9A8F7D514114AE47C11DB8544114AE47518D7D5141713D0A971AB85441713D0A978A7D5141A4703DAA16B85441E17A143E897D51413D0AD79315B854415C8FC245877D51417B14AE8710B85441F6285CDF847D514152B81E250DB85441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000230000005C8FC2B5797D51413D0AD70328B854417B14AEA77F7D51415C8FC2F522B85441CDCCCC7C8A7D51410AD7A3A034B85441E17A142E907D5141B81E856B2EB8544114AE4731947D5141CDCCCC6C2AB8544100000000977D5141CDCCCCBC27B8544185EB5128947D514148E17AF423B85441E17A14AE907D5141E17A143E1FB85441A4703D9A8F7D514114AE47C11DB8544114AE47518D7D5141713D0A971AB85441713D0A978A7D5141A4703DAA16B85441E17A143E897D51413D0AD79315B854415C8FC245877D51417B14AE8710B85441F6285CDF847D514152B81E250DB85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>663132 - 57751
+abs( area(A) - difference(A,B) - areatest(A,B) ) = -7272  </desc>
+<a>
+01060000000100000001030000000100000018000000F6285CEF8EA750416666668628085541B81E856B8CA750410000008029085541F6285CFF85A750410AD7A3F02B085541295C8FE284A75041D7A3705D2C085541295C8FE27EA75041AE47E12A30085541713D0A3779A750419A999929340855416666660675A750416666661638085541295C8FF266A750411F85EB4146085541666666766FA75041AE47E10A50085541CDCCCC6C70A750415C8FC22551085541C3F528EC71A75041E17A14DE52085541F6285CFF76A75041333333C358085541B81E855B85A750413D0AD74352085541295C8F9285A750419A99996951085541 [...]
+</a>
+
+<b>
+010600000002000000010300000001000000180000003182170B8CA75041A9755FF33A085541A8737EE78CA7504146B5E5E63A085541D48F82CC8EA750413FD6B20D3B085541EDBEF0B88CA75041DFE7B1142A08554180D44EA184A7504142E81A2C2D085541E3CB03FE7BA750417CF0FCB73208554125535FCF79A75041F3BB23153408554115D6D66F67A750412B69E2D14608554103CC7C6B69A75041126A3F1949085541076785456AA750417DFCCC134A085541CB0B2D626AA7504108BBBA344A0855415DEFE5C06BA7504114E8C2C74B0855418C09BAAD6DA75041043418FE4D0855413F3B8B5A6FA75041E3C6E4444F085541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>541084 - 2178982
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+010600000001000000010300000001000000BD0000001F85EBC13B6451411F85EB21153F544185EB51583B6451410AD7A3F0133F544114AE47A13B645141E17A14EE123F5441EC51B85E3C645141CDCCCC5C123F544114AE47813D64514114AE47F10E3F5441B81E85EB3D6451418FC2F5180E3F5441666666463F6451410AD7A3E0093F5441295C8F323F645141D7A3705D083F5441666666663E6451411F85EBB1063F54419A9999493D6451419A9999A9053F54410AD7A3603B6451411F85EB11043F54419A9999A93A64514152B81EF5023F544152B81EB5396451411F85EB71013F5441E17A14DE39645141D7A3709DFF3E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000040000003F00000085EB5188C8635141333333C3E63F5441666666F6CB635141713D0AA7E83F5441CDCCCC8CCF635141EC51B88EE53F54410AD7A320D363514114AE47D1E23F5441E17A141EDF635141713D0A07DA3F54419A999929E3635141D7A370CDD63F544114AE4781E6635141E17A14CED33F5441A4703DAAE96351415C8FC2C5D03F54413D0AD7E3EC6351417B14AE67CD3F544100000080EF6351417B14AE27CA3F54415C8FC225F263514152B81E35C63F54418FC2F598F4635141B81E85FBC13F544148E17A74F663514148E17AE4BD3F544133333313F86351415C8FC2B5B93F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>541084 - 3541974
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+010600000001000000010300000001000000BD0000001F85EBC13B6451411F85EB21153F544185EB51583B6451410AD7A3F0133F544114AE47A13B645141E17A14EE123F5441EC51B85E3C645141CDCCCC5C123F544114AE47813D64514114AE47F10E3F5441B81E85EB3D6451418FC2F5180E3F5441666666463F6451410AD7A3E0093F5441295C8F323F645141D7A3705D083F5441666666663E6451411F85EBB1063F54419A9999493D6451419A9999A9053F54410AD7A3603B6451411F85EB11043F54419A9999A93A64514152B81EF5023F544152B81EB5396451411F85EB71013F5441E17A14DE39645141D7A3709DFF3E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000040000003F00000085EB5188C8635141333333C3E63F5441666666F6CB635141713D0AA7E83F5441CDCCCC8CCF635141EC51B88EE53F54410AD7A320D363514114AE47D1E23F5441E17A141EDF635141713D0A07DA3F54419A999929E3635141D7A370CDD63F544114AE4781E6635141E17A14CED33F5441A4703DAAE96351415C8FC2C5D03F54413D0AD7E3EC6351417B14AE67CD3F544100000080EF6351417B14AE27CA3F54415C8FC225F263514152B81E35C63F54418FC2F598F4635141B81E85FBC13F544148E17A74F663514148E17AE4BD3F544133333313F86351415C8FC2B5B93F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986181 - 986168
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000045000000846B8DDE23F550411F9A3456C76F54410A10E64D23F55041A2ECB189C66F5441239269D822F55041C42363AEC56F54419C1C99C721F550416A4822B1C36F5441B9B9B6E520F550415B6AA4C6C16F5441D806C08420F55041B8B217F4C06F5441F7553F0020F5504133575FD4BF6F5441B8A2861F1FF55041040BAD85BD6F5441518FE5381EF55041AD5B7327BB6F5441A1ADA7141EF55041F1D47B96BA6F54415D42B2341DF55041F227A616B76F544194A165E21CF550410D087C59B56F544122D479161CF55041EEEA740AB16F5441E1B2F5121CF550412CC61149B06F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000295C8F12CBF45041B81E857BC36F5441C3F5281CD9F45041CDCCCC6CCB6F5441AE47E13ADCF450418FC2F558CF6F54419A9999C9DCF4504100000070D46F5441CDCCCC3CECF45041A4703D9AD36F5441E17A141E01F55041CDCCCC4CD16F544152B81E4501F55041D7A3705DC86F54415C8FC26501F5504114AE47E1C06F54411F85EB5101F550418FC2F5F8BF6F544114AE474105F55041B81E850BC06F5441AE47E1DA07F55041B81E85BBB56F5441713D0A471AF5504133333393BA6F54411F85EBD11AF5504185EB5158B86F5441333333A315F550417B14AE97AD6F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986181 - 1014189
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000045000000846B8DDE23F550411F9A3456C76F54410A10E64D23F55041A2ECB189C66F5441239269D822F55041C42363AEC56F54419C1C99C721F550416A4822B1C36F5441B9B9B6E520F550415B6AA4C6C16F5441D806C08420F55041B8B217F4C06F5441F7553F0020F5504133575FD4BF6F5441B8A2861F1FF55041040BAD85BD6F5441518FE5381EF55041AD5B7327BB6F5441A1ADA7141EF55041F1D47B96BA6F54415D42B2341DF55041F227A616B76F544194A165E21CF550410D087C59B56F544122D479161CF55041EEEA740AB16F5441E1B2F5121CF550412CC61149B06F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000295C8F12CBF45041B81E857BC36F5441C3F5281CD9F45041CDCCCC6CCB6F5441AE47E13ADCF450418FC2F558CF6F54419A9999C9DCF4504100000070D46F5441CDCCCC3CECF45041A4703D9AD36F5441E17A141E01F55041CDCCCC4CD16F544152B81E4501F55041D7A3705DC86F54415C8FC26501F5504114AE47E1C06F54411F85EB5101F550418FC2F5F8BF6F544114AE474105F55041B81E850BC06F5441AE47E1DA07F55041B81E85BBB56F5441713D0A471AF5504133333393BA6F54411F85EBD11AF5504185EB5158B86F5441333333A315F550417B14AE97AD6F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986181 - 3832250
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000045000000846B8DDE23F550411F9A3456C76F54410A10E64D23F55041A2ECB189C66F5441239269D822F55041C42363AEC56F54419C1C99C721F550416A4822B1C36F5441B9B9B6E520F550415B6AA4C6C16F5441D806C08420F55041B8B217F4C06F5441F7553F0020F5504133575FD4BF6F5441B8A2861F1FF55041040BAD85BD6F5441518FE5381EF55041AD5B7327BB6F5441A1ADA7141EF55041F1D47B96BA6F54415D42B2341DF55041F227A616B76F544194A165E21CF550410D087C59B56F544122D479161CF55041EEEA740AB16F5441E1B2F5121CF550412CC61149B06F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000295C8F12CBF45041B81E857BC36F5441C3F5281CD9F45041CDCCCC6CCB6F5441AE47E13ADCF450418FC2F558CF6F54419A9999C9DCF4504100000070D46F5441CDCCCC3CECF45041A4703D9AD36F5441E17A141E01F55041CDCCCC4CD16F544152B81E4501F55041D7A3705DC86F54415C8FC26501F5504114AE47E1C06F54411F85EB5101F550418FC2F5F8BF6F544114AE474105F55041B81E850BC06F5441AE47E1DA07F55041B81E85BBB56F5441713D0A471AF5504133333393BA6F54411F85EBD11AF5504185EB5158B86F5441333333A315F550417B14AE97AD6F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>875509 - 401529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -14  </desc>
+<a>
+01060000000B00000001030000000100000019000000B81E852B1DFE50417B14AE27AADC5441B81E858B19FE5041EC51B8CEA5DC54418FC2F57814FE504148E17AA4A0DC5441B81E850B0DFE5041C3F5284C9BDC5441C3F5282C02FE50419A99993996DC54411F85EB91F8FD504148E17A2494DC5441000000E0EFFD50418FC2F59893DC54411F85EB21DAFD504152B81EF594DC54419A999979C7FD5041F6285CAF95DC54417B14AE87BFFD5041E17A14FE95DC54410AD7A3F0BFFD5041AE47E14A9BDC5441E17A147EC1FD5041E17A145E9CDC54418FC2F598D0FD504152B81E659BDC5441E17A146EDBFD5041295C8F929ADC5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000370000005415AED709FC5041EA7A149E2BDC5441B15A8F5208FC5041C90AD7732DDC54416721A6B507FC50416E71265A2DDC5441D43C4D8906FC5041AA9447532FDC54412236B71609FC5041C9942EC02FDC5441BEAB94DA0BFC5041D8514F4830DC544151418FBE15FC50417E8BB1E031DC5441378DB3C21CFC5041D4F4132333DC5441201CFC3E1FFC5041ACC5FF8433DC5441C2BF2B9725FC504164C0E15234DC5441AF65EE132CFC5041C0FE751135DC54416B45FA9534FC504193B9647336DC54419030CEB039FC5041A633A68337DC54415A1A2CB039FC504105CF148837DC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>875509 - 401532
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+01060000000B00000001030000000100000019000000B81E852B1DFE50417B14AE27AADC5441B81E858B19FE5041EC51B8CEA5DC54418FC2F57814FE504148E17AA4A0DC5441B81E850B0DFE5041C3F5284C9BDC5441C3F5282C02FE50419A99993996DC54411F85EB91F8FD504148E17A2494DC5441000000E0EFFD50418FC2F59893DC54411F85EB21DAFD504152B81EF594DC54419A999979C7FD5041F6285CAF95DC54417B14AE87BFFD5041E17A14FE95DC54410AD7A3F0BFFD5041AE47E14A9BDC5441E17A147EC1FD5041E17A145E9CDC54418FC2F598D0FD504152B81E659BDC5441E17A146EDBFD5041295C8F929ADC5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004A000000856EB2F493FC5041730D6D9260DC5441C7F128FC94FC5041F49C3C1A5FDC5441A00C1FE595FC504168897ECD5DDC5441333333F397FC5041E17A14DE5ADC5441AE1E245998FC5041DAADE5065ADC54416B87500899FC5041D4CD1D9558DC5441E17A14EE93FC50418FC2F53855DC54410D08491693FC5041E828149254DC5441C37E135E90FC5041C73EAF7752DC5441E026088D8CFC5041C9B816624FDC544122011F358BFC50419B30294C4EDC5441A69C50D78AFC504191DD7F0B4FDC54413D0AD7638AFC5041713D0AF74FDC5441FB2A33E38CFC50417546291C52DC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>875509 - 421148
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+01060000000B00000001030000000100000019000000B81E852B1DFE50417B14AE27AADC5441B81E858B19FE5041EC51B8CEA5DC54418FC2F57814FE504148E17AA4A0DC5441B81E850B0DFE5041C3F5284C9BDC5441C3F5282C02FE50419A99993996DC54411F85EB91F8FD504148E17A2494DC5441000000E0EFFD50418FC2F59893DC54411F85EB21DAFD504152B81EF594DC54419A999979C7FD5041F6285CAF95DC54417B14AE87BFFD5041E17A14FE95DC54410AD7A3F0BFFD5041AE47E14A9BDC5441E17A147EC1FD5041E17A145E9CDC54418FC2F598D0FD504152B81E659BDC5441E17A146EDBFD5041295C8F929ADC5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004A00000048E17A0491FC504148E17AC464DC5441D59FB7F493FC504165A3659260DC5441C7F128FC94FC5041F49C3C1A5FDC5441A00C1FE595FC504168897ECD5DDC5441333333F397FC5041E17A14DE5ADC5441AE1E245998FC5041DAADE5065ADC54416B87500899FC5041D4CD1D9558DC5441E17A14EE93FC50418FC2F53855DC54411108491693FC5041EC28149254DC5441C37E135E90FC5041C73EAF7752DC5441E026088D8CFC5041C9B816624FDC544122011F358BFC50419B30294C4EDC5441A69C50D78AFC504191DD7F0B4FDC54413D0AD7638AFC5041713D0AF74FDC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>257579 - 261422
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000030000000103000000010000001F000000D7A3701DEA025141C3F5287CCA4A55410AD7A300ED02514148E17AE4CC4A5541C3F5283CF0025141295C8FE2CE4A554114AE4791F402514100000080D14A554166666686F7025141E17A147ED34A5541333333D3FA025141AE47E11AD64A55411F85EBD1FC0251419A9999C9D84A5541CDCCCC8CFD025141B81E856BDA4A554100000010FE025141C3F5288CD24A5541713D0AE7FD025141A4703D2AD14A55419A999939FA02514152B81EE5CD4A5541E17A14AEF6025141F6285C0FCB4A5541E17A143EF302514133333303C84A5541CDCCCC8CF102514133333353C64A5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000AC00000048E17AF46D025141666666D671495541EC51B87E700251410AD7A3C073495541713D0AE77302514166666646764955418FC2F5D8770251413D0AD713794955415C8FC2957B025141C3F528FC7B4955419A9999C97E0251419A9999997E4955413D0AD7A38202514148E17A248249554185EB51E8840251418FC2F57884495541333333D3870251413D0AD703884955415C8FC2E58A025141295C8FF28B495541713D0A878D025141C3F5285C8F495541333333A38F025141295C8FC2924955410AD7A330920251410000003097495541CDCCCCEC94025141295C8FC29C495541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 1730669
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541 [...]
+</a>
+
+<b>
+01060000000100000001030000001600000083010000C4863E0874965041F5963CB13F2F554170074D3D7496504145D7C3CB3F2F554139C6007B7596504174173630412F55411B734D38769650416C45783F342F5541AB8A99F37796504167EE6172242F554103F2E15B92965041585E0BAC2C2F55418C6AEC6688965041448A5E161D2F55419CFA422D809650416175A0BD082F5541FA30F5C37A965041BD9C676AEF2E5541FC7820A776965041A45EE409D82E554137380FE471965041F32AC0D5CA2E55417452E901619650410BD2ABAD9E2E5541E20532615B965041F7FDFE178F2E5541E218F25E53965041E65EBD67832E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 3173719
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -32  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000007E7BAC3032945041C8D4FE21C62D55410BC4C22E32945041DD816E02C62D5541392FDE9634945041A9B082AEC42D5541CD594A8C34945041A613856BC42D5541C6F01EC12D945041B7052E82C02D55414C3D62A219945041C69EE041D52D5541E70573A8089450410E45E686DF2D5541579CE6D7F693504141529D60E92D5541C591A6E5EA935041B347C1C2F12D55419425A32DDB9350411C3DE524FA2D5541848CC9FBD6935041617C5338F62D5541623B023ED59350411A5C264EFA2D55411541452DD49350412DE10124FE2D55411D5A8B48D493504158B1AF4B022E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 3173727
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -33  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000030000003400000070007D40E695504146EA0866152F5541AA73A00BE6955041E901315B152F55414709589AE395504144F94D55162F55417D37808BE29550414A6037C0162F554183DBFB8CDD9550413B706DCA182F5541821DE336DD95504135C1D3D2182F55414ADEE5FED995504173DC0397192F5541E5A5914DD39550416A8A1274182F55413626FEB3D195504110A45C3B182F554191001426D095504144768FE6172F55415EA54808B59550418597E8E9122F554197E274B78295504116EB2578092F5541C99AB85D7C95504116EB2578092F55411EF4374572955041E26393480A2F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 3188494
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541 [...]
+</a>
+
+<b>
+01060000000100000001030000001600000083010000C4863E0874965041F5963CB13F2F554170074D3D7496504145D7C3CB3F2F554139C6007B7596504174173630412F55411B734D38769650416C45783F342F5541AB8A99F37796504167EE6172242F554103F2E15B92965041585E0BAC2C2F55418C6AEC6688965041448A5E161D2F55419CFA422D809650416175A0BD082F5541FA30F5C37A965041BD9C676AEF2E5541FC7820A776965041A45EE409D82E554137380FE471965041F32AC0D5CA2E55417452E901619650410BD2ABAD9E2E5541E20532615B965041F7FDFE178F2E5541E218F25E53965041E65EBD67832E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 3326680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -32  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000007E7BAC3032945041C8D4FE21C62D55410BC4C22E32945041DD816E02C62D5541392FDE9634945041A9B082AEC42D5541CD594A8C34945041A613856BC42D5541C6F01EC12D945041B7052E82C02D55414C3D62A219945041C69EE041D52D5541E70573A8089450410E45E686DF2D5541579CE6D7F693504141529D60E92D5541C591A6E5EA935041B347C1C2F12D55419425A32DDB9350411C3DE524FA2D5541848CC9FBD6935041617C5338F62D5541623B023ED59350411A5C264EFA2D55411541452DD49350412DE10124FE2D55411D5A8B48D493504158B1AF4B022E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 3435573
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -33  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000030000003400000070007D40E695504146EA0866152F5541AA73A00BE6955041E901315B152F55414709589AE395504144F94D55162F55417D37808BE29550414A6037C0162F554183DBFB8CDD9550413B706DCA182F5541821DE336DD95504135C1D3D2182F55414ADEE5FED995504173DC0397192F5541E5A5914DD39550416A8A1274182F55413626FEB3D195504110A45C3B182F554191001426D095504144768FE6172F55415EA54808B59550418597E8E9122F554197E274B78295504116EB2578092F5541C99AB85D7C95504116EB2578092F55411EF4374572955041E26393480A2F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 403368
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -33  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000009425A32DDB9350411C3DE524FA2D5541868CC9FBD69350415F7C5338F62D5541643B023ED5935041155C264EFA2D55411241452DD49350412CE10124FE2D55411B5A8B48D493504153B1AF4B022E554148F02FECD493504150D272B4052E554102B6A867D6935041ED7F6133092E5541F781DC78F793504129FB198DF12D5541F064BF860E945041CD3FF8B7E32D5541C1D339261C9450413A18377FDA2D5541B5993799219450416684D6E2D52D5541B3F883772794504112A4CE10D12D5541878CE4132C945041C9C3C63ECC2D55410AC4C22E32945041DE816E02C62D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 403424
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -34  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000D3D36E454895504197EB2546F62E5541F373810347955041850B75B1F62E5541E8B4B4CA3D95504153AA6BD9022F55414A95EC043A95504185E9FB640A2F55411035781D3C9550410469B16C0F2F55418EB42D25419550416928054B152F55412DD4F5EA44955041F9876BE7192F554172F3360B4C95504145875D9C202F554175D252AF5595504169068CFE282F5541B311E33A5D955041E78541062E2F5541813F3AF95F9550419DB222182F2F5541E5362DEB5D955041B891D3EE2B2F5541BC9650495D955041B3209674282F554187F673A75C9550415C9716DF232F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979690 - 406827
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000100000001030000001E000000A002000040E3E97C6C975041AC419793082F55412BA2AB836D975041B61686F6012F5541E1178CCF6D97504169AEBA5AD12E55417790392E6C975041AD8A32CBC12E5541E2D65D9F649750417D69D369A32E5541AE4066BB5F975041DD9DE1A08D2E5541B70843A85D9750415F22672F912E55415EAD3BEA589750415F7DCA08892E55419B66739453975041633C9CD87F2E55410B1A111952975041F2A233FD6F2E5541C08FF16452975041FB6A10EA6D2E55415F11AAE0579750416BBA3F786D2E55414778E5E95497504144ABF6505D2E554130DF20F35197504144ABF6505D2E5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000D0000006C00000069A516EC1B965041A77C82D55B2E55414A52A361239650418BF83160512E55418B44726024965041C48B4F06502E5541A7C26B99149650416762DBD1412E55414200385006965041C02EB79D342E5541C39AED42089650418105F295312E5541BFDA6EFE3B965041990A35FD602E554172303E1A5596504170C40775812E55418617ABAD5C965041F5C893328B2E5541D7F271636396504127976D599A2E5541956EC17A6C9650414AD5F0B9B12E554146B5A5AC7196504121B5432DC22E55416C61D4EB749650416D263418C12E5541AB8A99F377965041409CB0C0C92E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>3170132 - 93391
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -604  </desc>
+<a>
+0106000000010000000103000000050000003201000033333303CC4251410AD7A310FC295441F6285C0FC642514114AE47D1F72954417B14AE37C34251417B14AE07F6295441000000D0C04251417B14AEF7F5295441E17A148EBF4251418FC2F538F6295441C3F5285CBD425141666666C6F62954415C8FC215B9425141F6285C0FFF2954419A999949B042514148E17A24FE295441713D0AE7AE425141EC51B8BE102A54415C8FC215B8425141333333C31A2A5441333333F3B542514185EB5138212A544133333303B4425141C3F528AC272A5441666666D6B5425141713D0A57292A5441AE47E18AB6425141333333332A2A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000500000070010000A124F89DCD4251419DC4CA8E51295441C57591DDD7425141FCEB65084F295441BF3FD41BD7425141BB47B1404A2954413F2F2DC8C8425141876E423549295441DA9EE4CEC5425141FB28D28E43295441713D0AE7C1425141333333A34029544100000030C2425141D7A3705D40295441713D0AC7BB4251416666664630295441EC51B89EBB425141D7A370AD2C295441AE47E11ABF425141D7A3706D262954411F85EBD1C3425141D7A3706D262954413D0AD7A3C642514148E17A6429295441713D0A37C742514152B81E752D2954411F85EBC1CD4251413D0AD7F32D295441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986599 - 59487
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 8  </desc>
+<a>
+010600000001000000010300000001000000650000007B14AE37F89650417B14AE977F105541C3F528CCF59650419A999909831055415C8FC2D5F09650417B14AEE7861055411F85EBE1E39650410AD7A3508D105541EC51B8FED8965041333333739210554152B81E75D19650418FC2F5F89610554133333333CC9650417B14AE379C105541C3F5280CCA9650413D0AD743A0105541C3F528DCC6965041D7A3700DAE1055419A999979C4965041295C8F62B51055413D0AD7B3C1965041EC51B8DEBA10554166666636BE965041D7A3707DBF105541EC51B8EEB9965041AE47E12AC3105541EC51B8EEB39650417B14AE07C7105541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003500000085EB51D8FC965041666666E6271055418F3C70E7F9965041B2DFEB1725105541E1110F40F6965041CBF09FC321105541F7A51876F19650412CA4F1BB1D10554166666616EE96504152B81EE51A1055418FC2F5E8EA9650419A99995917105541D6B9EB87E59650415A67D07E10105541040FE893E2965041384F69BB0C105541707E8199DF96504125A27A450910554176AB3400DF965041337042A208105541C8ABEB6CDB965041E0336BDC04105541C3F5287C8D965041713D0AB7D10F554185EB51A88496504100000040F10F5541000000807B96504148E17AF411105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979678 - 3182024
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000C000000713D0A1759E550410AD7A3E0967854415C8FC2853CE55041AE47E19A857854417B14AEB72CE55041D7A370DD917854410AD7A3E01EE550418FC2F5989C785441A4703D8A2FE5504152B81E45B37854413D0AD79347E55041CDCCCCDCAB78544185EB51A84DE55041666666C6A6785441000000C053E550417B14AE87A37854417B14AEE757E5504166666616A2785441B81E851B5CE55041C3F528DCA0785441CDCCCC1C62E5504148E17A549C785441713D0A1759E550410AD7A3E096785441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000713D0A1759E550410AD7A3E0967854412C1C80DB4CE55041B86A824CA1785441B90870E449E55041CDDDF29CA3785441F77A5F6A45E550410A3E2624A7785441BD37AE8E43E550414AC1B1A1A87854416D464D4540E55041269AD3C7AA785441FBFB09323FE55041855ECE7BAB785441B4DCD1D536E55041B3399905B17854413D0AD79347E55041CDCCCCDCAB78544185EB51A84DE55041666666C6A6785441000000C053E550417B14AE87A37854417B14AEE757E5504166666616A2785441B81E851B5CE55041C3F528DCA0785441CDCCCC1C62E5504148E17A549C785441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979678 - 3552212
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000C000000713D0A1759E550410AD7A3E0967854415C8FC2853CE55041AE47E19A857854417B14AEB72CE55041D7A370DD917854410AD7A3E01EE550418FC2F5989C785441A4703D8A2FE5504152B81E45B37854413D0AD79347E55041CDCCCCDCAB78544185EB51A84DE55041666666C6A6785441000000C053E550417B14AE87A37854417B14AEE757E5504166666616A2785441B81E851B5CE55041C3F528DCA0785441CDCCCC1C62E5504148E17A549C785441713D0A1759E550410AD7A3E096785441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000713D0A1759E550410AD7A3E0967854412C1C80DB4CE55041B86A824CA1785441B90870E449E55041CDDDF29CA3785441F77A5F6A45E550410A3E2624A7785441BD37AE8E43E550414AC1B1A1A87854416D464D4540E55041269AD3C7AA785441FBFB09323FE55041855ECE7BAB785441B4DCD1D536E55041B3399905B17854413D0AD79347E55041CDCCCCDCAB78544185EB51A84DE55041666666C6A6785441000000C053E550417B14AE87A37854417B14AEE757E5504166666616A2785441B81E851B5CE55041C3F528DCA0785441CDCCCC1C62E5504148E17A549C785441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>1990465 - 344911
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000020000000103000000010000003E000000713D0A27E5AE5041B81E855BE2D854419A9999A9DDAE5041EC51B8CEF0D85441000000E0E6AE5041D7A3701DE9D85441E17A149EEBAE50410AD7A3F0E2D85441CDCCCCCCECAE50410AD7A3D0E1D85441C3F528CCE9AE5041713D0A37E0D8544152B81EF5E8AE50415C8FC205DDD8544166666606E5AE5041CDCCCCFCD7D8544148E17A44E3AE504114AE47E1D8D85441EC51B82EE1AE504185EB5188D5D85441D7A3702DDDAE5041713D0A27D4D85441E17A142EDBAE504114AE4791D2D8544152B81E15D9AE5041295C8F82D3D85441E17A141ED7AE504148E17AE4D0D85441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000720000006E4D8D04F0AE5041089F15A1D8D8544166666626EFAE50415C8FC285D6D85441794248ECD3AE5041C9A819D2C8D85441798E72E8D3AE504185D581E4C8D85441F6285C4FD0AE50410AD7A300C7D8544152B81E55C3AE504114AE4721C3D8544133333333ACAE5041A4703DFAB2D8544145DC3531A8AE50416DC66B3BB1D854418EC44F74A8AE504100C77D93B1D85441E2B0931AA8AE5041FA96BF8EB2D854411FD0F012A8AE50410C0DA8CFB2D85441528C9419A3AE50414FE389DDB1D8544144F980EAA2AE504126E47F3EB0D854419433B5F7A3AE5041E427FA9CAFD85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>1990465 - 409295
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000020000000103000000010000003E000000713D0A27E5AE5041B81E855BE2D854419A9999A9DDAE5041EC51B8CEF0D85441000000E0E6AE5041D7A3701DE9D85441E17A149EEBAE50410AD7A3F0E2D85441CDCCCCCCECAE50410AD7A3D0E1D85441C3F528CCE9AE5041713D0A37E0D8544152B81EF5E8AE50415C8FC205DDD8544166666606E5AE5041CDCCCCFCD7D8544148E17A44E3AE504114AE47E1D8D85441EC51B82EE1AE504185EB5188D5D85441D7A3702DDDAE5041713D0A27D4D85441E17A142EDBAE504114AE4791D2D8544152B81E15D9AE5041295C8F82D3D85441E17A141ED7AE504148E17AE4D0D85441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000081000000E2FFFF6FEDAE504157666676E0D854411ECFDBA7EEAE5041D169A7C3DCD854413CB81E05F0AE504136295C9FD8D8544146666626EFAE5041518FC285D6D854415267AC43EDAE5041E3DAD492D5D85441794248ECD3AE5041C9A819D2C8D85441196333D6D3AE50419ADC5A2AC9D8544116860A01D2AE504146B07768C8D854412370FF39CEAE50415071B9D8C6D854411270C2D9C9AE5041FCFEEA60C5D854410737A387C3AE5041176FDA67C3D85441B704E427C3AE504149603927C3D85441D2AA525BB9AE50411CE568ACBCD8544154259F81B9AE5041CC5B7B45BCD85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403764 - 2923381
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -48  </desc>
+<a>
+0106000000040000000103000000010000001900000048E17A34A01551415C8FC2C5ADDB54415C8FC2259D1551413D0AD763A9DB54419A999949A1155141F6285CCFA4DB54410AD7A3F09E155141E17A142EA3DB54413D0AD7F39B155141A4703D2AA6DB544148E17A34991551418FC2F548A6DB5441EC51B82E951551415C8FC2D5A0DB544152B81EF584155141B81E85BBB3DB54419A999909721551418FC2F538C7DB5441D7A370FD6B15514133333313CDDB5441F6285C6F6A15514148E17AA4D1DB54413333333368155141295C8FA2D7DB544185EB5118651551415C8FC2C5DCDB544152B81ED56815514185EB51C8DADB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004C000000D5E1CF50F4155141D474075D8BDB54417B14AE57F5155141713D0A478ADB54418FDA90B0F515514134D3D4FE89DB5441AB3D3099F615514180C0DA4189DB54415BD5EF97F7155141FD37E77288DB54418FC2F5D8F7155141E17A143E88DB54415A106C95F9155141E191A92887DB5441E430B0B3FA1551414F32FC7586DB544166666656FC1551410AD7A37085DB5441634D928CFC155141E747345585DB544140E2A157FE1551410122B56C84DB544166666666001651411F85EB6183DB544167D5310F02165141585CC3D682DB5441B788DCE604165141A04A53DB81DB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403764 - 3558923
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -48  </desc>
+<a>
+0106000000040000000103000000010000001900000048E17A34A01551415C8FC2C5ADDB54415C8FC2259D1551413D0AD763A9DB54419A999949A1155141F6285CCFA4DB54410AD7A3F09E155141E17A142EA3DB54413D0AD7F39B155141A4703D2AA6DB544148E17A34991551418FC2F548A6DB5441EC51B82E951551415C8FC2D5A0DB544152B81EF584155141B81E85BBB3DB54419A999909721551418FC2F538C7DB5441D7A370FD6B15514133333313CDDB5441F6285C6F6A15514148E17AA4D1DB54413333333368155141295C8FA2D7DB544185EB5118651551415C8FC2C5DCDB544152B81ED56815514185EB51C8DADB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004C000000D5E1CF50F4155141D474075D8BDB54417B14AE57F5155141713D0A478ADB54418FDA90B0F515514134D3D4FE89DB5441AB3D3099F615514180C0DA4189DB54415BD5EF97F7155141FD37E77288DB54418FC2F5D8F7155141E17A143E88DB54415A106C95F9155141E191A92887DB5441E430B0B3FA1551414F32FC7586DB544166666656FC1551410AD7A37085DB5441634D928CFC155141E747345585DB544140E2A157FE1551410122B56C84DB544166666666001651411F85EB6183DB544167D5310F02165141585CC3D682DB5441B788DCE604165141A04A53DB81DB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979957 - 22656
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+0106000000020000000103000000010000006E0000006109A1F417B45041AFE2D4B7BF255441369A133C18B45041A7EE02EFBF2554413211E0C317B450418CD17FCCBF255441D108A1F417B450419DE2D4B7BF255441EE56424816B45041D1F2FE6CBE2554411CF3764C14B450412974CE96BC255441EF4AB45112B45041C8513A9BBA255441A3D48F160FB450414668F6F4B6255441DFE8AF3E0CB450410D34D2BEB3255441D529862709B45041FFE13141B02554417EDBE2E806B450413EC622B8AD255441FEE0EBD003B450413D498264AA2554419D351E48FBB35041B224B123A82554415CC94EDCF8B35041626E7C99A7255441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B0000001F85EB01E0B350411F85EBB1BC255441C3F5286CDFB35041F6285CAFC9255441666666E6DEB35041AE47E1FACA255441D7A3702DDCB35041A4703D3ACC2554417B14AE27D7B3504166666646CE2554411F85EBF1D2B35041C3F5288CD225544185EB51E8CFB3504100000030D9255441E17A144EE1B35041295C8F72DF255441D7A370CDE2B350411F85EBF1DA255441B81E852BE4B350413D0AD7D3D62554415C8FC205E8B35041EC51B80ECF25544114AE47B10EB450415C8FC265E3255441295C8F821CB450410AD7A3E0E82554411F85EB511BB45041666666A6E7255441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2804357 - 3591355
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -96  </desc>
+<a>
+01060000000100000001030000000100000028000000713D0A4777105141F6285C7F28475541A4703D5A58105141EC51B89E1B475541666666B6601051419A99991913475541333333A36B105141713D0AD70C4755419A99990989105141AE47E1FA15475541AE47E15A8A105141D7A3707D13475541CDCCCC0C8C105141E17A14CE0E47554100000070871051411F85EB810D475541AE47E10A851051417B14AEC70C47554148E17AB4801051410AD7A3F00B4755418FC2F5E87C105141333333C30B475541713D0A47791051418FC2F5980B47554148E17A8475105141295C8F020B4755419A99996973105141A4703D8A0A475541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000038000000713D0A4777105141F6285C7F28475541A4703D5A58105141EC51B89E1B47554108C4DA015A105141E72AAAA719475541694E2DD85B1051411B97AC0F18475541172E23B86010514158281BD51347554178CF40A566105141E3F44CB30F4755418575AD88691051416C17BDAF0D4755416FE8251F6C1051412665E88D0C475541D9F3E4D16D105141BD289CA20C475541CC53B6C2761051418378494C1047554115CD93E386105141CE30CAE7164755418A06D02E88105141894D688D17475541AE47E15A8A105141D7A3707D13475541F6E001A98B105141F77B66F30F475541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2897288 - 2932763
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -152  </desc>
+<a>
+01060000000100000001030000000100000013000000FDF4F3A60E535141640876AB055754415D66565B0E5351419B43FC66005754415524E20208535141305DD7C2FB565441C121445A05535141A81D682DFB5654411444BFAB00535141CC08680CFB565441982097A2F4525141653BD871FB5654419943CD44ED52514161A71740FC5654410CF609F0E7525141D809826CFD565441400C4305E9525141139F964F0A575441A4774FF5E9525141547139CE185754414AB6994CEA5251412342EB731A57544172A3BAC5E9525141312F93742957544155848C9BEE5251413454B2DB295754410BBC2AE4F75251414DC5B0A12A575441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000B46FB6C6E952514146E190582957544179253127F25251413CC04F272A575441DC46023FF952514191E40FA42A575441D9C568B303535141BE0AEF952A5754417B5D4AE8105351413BA8AE4E2A575441EC51B82E0F5351410AD7A3200F5754417B14AE570E5351415C8FC22500575441E17A14CE07535141E17A149EFB565441A4703DEA0653514148E17AB4FA5654417D80E0350553514179F93898FA565441C7A3F71C035351415A759B88FA565441A10310D7FE5251415AA511ABFA5654416B91DD43FA525141889C0109FB565441982097A2F4525141603BD871FB565441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2897288 - 3566809
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -152  </desc>
+<a>
+01060000000100000001030000000100000013000000FDF4F3A60E535141640876AB055754415D66565B0E5351419B43FC66005754415524E20208535141305DD7C2FB565441C121445A05535141A81D682DFB5654411444BFAB00535141CC08680CFB565441982097A2F4525141653BD871FB5654419943CD44ED52514161A71740FC5654410CF609F0E7525141D809826CFD565441400C4305E9525141139F964F0A575441A4774FF5E9525141547139CE185754414AB6994CEA5251412342EB731A57544172A3BAC5E9525141312F93742957544155848C9BEE5251413454B2DB295754410BBC2AE4F75251414DC5B0A12A575441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000B46FB6C6E952514146E190582957544179253127F25251413CC04F272A575441DC46023FF952514191E40FA42A575441D9C568B303535141BE0AEF952A5754417B5D4AE8105351413BA8AE4E2A575441EC51B82E0F5351410AD7A3200F5754417B14AE570E5351415C8FC22500575441E17A14CE07535141E17A149EFB565441A4703DEA0653514148E17AB4FA5654417D80E0350553514179F93898FA565441C7A3F71C035351415A759B88FA565441A10310D7FE5251415AA511ABFA5654416B91DD43FA525141889C0109FB565441982097A2F4525141603BD871FB565441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>444248 - 3880755
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -93  </desc>
+<a>
+01060000000100000001030000000100000030000000596AFF3DD7D5504106F9B2B537405441A5AD21B2DAD5504193B53A6A3D405441FC0CBB24DDD55041681A9C3241405441A4544278E0D550419A1ACFCB46405441EE923AA4E1D55041CD7F42B348405441D6B9B55FE2D55041BCEC34C04A40544193C13485E2D5504121DD36754A40544148E17A94E2D55041C3F528EC4B40544185EB51C8E4D550418FC2F5084E405441E17A148EE7D55041666666365140544114F18E3BE8D5504134CFF8D4534054416C080CACE8D55041435BE77756405441CC65006EEAD5504125EF5440594054417601ED5BEDD550419FD837A55D405441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A0000000D1AAC33BFD55041A65E8E4209405441004FA2A2BED55041BB6564920940544152D31120C1D55041ECC3B82910405441E17A144EC2D5504152B81E0511405441B8B47789C2D55041E8B129D211405441D5C9DDA3C2D550419ACA4E2D124054415ADD6877C4D55041F1B9E95F1140544191079E7AC5D5504182739E0114405441ABC49262C3D55041E01FBFBF144054413CDCFBB6C3D550415C202FE31540544189BA21D8C3D55041CA9CA15516405441817EFC58C4D550412F688412184054411A87DB53C9D550411F81C12D2240544109F4CD60CBD55041E93BAAB125405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980977 - 3180150
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 15  </desc>
+<a>
+010600000010000000010300000001000000D1000000FC8676F16B665141BEE4271986A354413D5EEA726A6651413B5CED8882A354419CA3A21A6A66514118196BA07EA35441C5AAEDA469665141932E4C3F7DA3544153F338E1686651412177977B7CA35441B81E858B686651417B14AE377DA354410AD7A3D068665141AE47E19A7FA354418FC2F56869665141E17A14BE84A3544152B81E456A665141F6285C6F88A35441B81E852B6C665141D7A370CD8AA354417B14AEA76C6651411F85EB318BA35441B81E850B6D6651411F85EB818BA3544148E17A1470665141666666F68DA35441666666E6726651415C8FC2558FA35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000EFDC20E1A9685141982DDBD9E2A45441DDF2AACCB4685141AFC6E13DE1A4544107A986A6BD685141EC9D55BFDFA454417B0B14C4C768514170B3365EDEA4544173838280D06851411B07851ADDA45441E410D2DBD7685141029940F4DBA454416137289BDD685141E92AFCCDDAA454412697D6ACDF685141ABB56C1DDAA454416BB54BC7DF6851415D1E2399D9A45441B81E857BDF6851417B14AEA7D9A45441D7A370BDDB685141F6285C5FDAA454413D0AD7E3C1685141D7A3704DDEA45441AE47E19AA76851413D0AD7F3E1A454415C8FC205A56851419A9999B9E1A45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980977 - 3586610
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 15  </desc>
+<a>
+010600000010000000010300000001000000D1000000FC8676F16B665141BEE4271986A354413D5EEA726A6651413B5CED8882A354419CA3A21A6A66514118196BA07EA35441C5AAEDA469665141932E4C3F7DA3544153F338E1686651412177977B7CA35441B81E858B686651417B14AE377DA354410AD7A3D068665141AE47E19A7FA354418FC2F56869665141E17A14BE84A3544152B81E456A665141F6285C6F88A35441B81E852B6C665141D7A370CD8AA354417B14AEA76C6651411F85EB318BA35441B81E850B6D6651411F85EB818BA3544148E17A1470665141666666F68DA35441666666E6726651415C8FC2558FA35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000EFDC20E1A9685141982DDBD9E2A45441DDF2AACCB4685141AFC6E13DE1A4544107A986A6BD685141EC9D55BFDFA454417B0B14C4C768514170B3365EDEA4544173838280D06851411B07851ADDA45441E410D2DBD7685141029940F4DBA454416137289BDD685141E92AFCCDDAA454412697D6ACDF685141ABB56C1DDAA454416BB54BC7DF6851415D1E2399D9A45441B81E857BDF6851417B14AEA7D9A45441D7A370BDDB685141F6285C5FDAA454413D0AD7E3C1685141D7A3704DDEA45441AE47E19AA76851413D0AD7F3E1A454415C8FC205A56851419A9999B9E1A45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980977 - 53152
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 14  </desc>
+<a>
+010600000010000000010300000001000000D1000000FC8676F16B665141BEE4271986A354413D5EEA726A6651413B5CED8882A354419CA3A21A6A66514118196BA07EA35441C5AAEDA469665141932E4C3F7DA3544153F338E1686651412177977B7CA35441B81E858B686651417B14AE377DA354410AD7A3D068665141AE47E19A7FA354418FC2F56869665141E17A14BE84A3544152B81E456A665141F6285C6F88A35441B81E852B6C665141D7A370CD8AA354417B14AEA76C6651411F85EB318BA35441B81E850B6D6651411F85EB818BA3544148E17A1470665141666666F68DA35441666666E6726651415C8FC2558FA35441 [...]
+</a>
+
+<b>
+010600000010000000010300000001000000D1000000FB8676F16B665141C1E4271986A35441385EEA726A665141395CED8882A3544199A3A21A6A66514113196BA07EA35441C9AAEDA469665141972E4C3F7DA3544151F338E1686651412077977B7CA35441B81E858B686651417B14AE377DA354410AD7A3D068665141AE47E19A7FA354418FC2F56869665141E17A14BE84A3544152B81E456A665141F6285C6F88A35441B81E852B6C665141D7A370CD8AA354417B14AEA76C6651411F85EB318BA35441B81E850B6D6651411F85EB818BA3544148E17A1470665141666666F68DA35441666666E6726651415C8FC2558FA35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>449045 - 3154842
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+01060000000100000001030000000100000037000000A40EBEF0073C51411B732C83F652544148E17AE40A3C514114AE4771F8525441F6285C9F0D3C5141A4703DCAFA52544152B81E45113C5141C3F528FCFC52544185EB5198153C514114AE4781FE52544152B81E45183C5141AE47E18AFF5254419A9999E91C3C5141295C8FC2FF52544148E17AA41F3C5141A4703D6A00535441CDCCCC4C233C5141E17A142E015354415C8FC2F5263C5141B81E851B02535441EC51B8AE293C5141F6285C7F0153544114AE47212D3C5141E17A149E01535441C3F5285C333C5141666666C602535441A4703D8A353C51413D0AD75302535441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000130000000C314678093C5141303F5D7BE452544103AB5A01093C514150AD437AE452544160D893FB083C51412FE7FAAFE45254416CD3665B083C514141829E28EE525441B1A224B8073C51417BF65930F6525441D5719D640F3C5141000D441CFC5254413FE1485A173C514135CC8C59FF52544195B82C03283C5141C854E5A901535441769BD55F313C5141EA3E29DD02535441D70E2B9E353C514139AEC04F0253544189E4CCA2363C514157FB090401535441E6C45297373C5141FEC3A1C8FE52544145652BE3373C5141B32F90C6FC5254416DA29EE8373C5141F9B7B2FDFA525441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>449045 - 3287152
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+01060000000100000001030000000100000037000000A40EBEF0073C51411B732C83F652544148E17AE40A3C514114AE4771F8525441F6285C9F0D3C5141A4703DCAFA52544152B81E45113C5141C3F528FCFC52544185EB5198153C514114AE4781FE52544152B81E45183C5141AE47E18AFF5254419A9999E91C3C5141295C8FC2FF52544148E17AA41F3C5141A4703D6A00535441CDCCCC4C233C5141E17A142E015354415C8FC2F5263C5141B81E851B02535441EC51B8AE293C5141F6285C7F0153544114AE47212D3C5141E17A149E01535441C3F5285C333C5141666666C602535441A4703D8A353C51413D0AD75302535441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000130000000C314678093C5141303F5D7BE452544103AB5A01093C514150AD437AE452544160D893FB083C51412FE7FAAFE45254416CD3665B083C514141829E28EE525441B1A224B8073C51417BF65930F6525441D5719D640F3C5141000D441CFC5254413FE1485A173C514135CC8C59FF52544195B82C03283C5141C854E5A901535441769BD55F313C5141EA3E29DD02535441D70E2B9E353C514139AEC04F0253544189E4CCA2363C514157FB090401535441E6C45297373C5141FEC3A1C8FE52544145652BE3373C5141B32F90C6FC5254416DA29EE8373C5141F9B7B2FDFA525441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981195 - 226931
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -484  </desc>
+<a>
+01060000000100000001030000000200000010010000CDCCCC9CC6EA5041B81E851B3FAB5441AE47E15AD0EA5041B81E851B45AB5441E17A14BEDBEA5041EC51B8EE48AB54411F85EB61EAEA50419A9999D94DAB54411F85EBF1F0EA5041F6285CCF4FAB5441295C8F22FAEA504152B81E8552AB5441713D0AB7FEEA5041C3F5287C5AAB5441CDCCCCEC09EB5041CDCCCCAC5DAB5441C3F5280C12EB50415C8FC27560AB5441A4703DBA1AEB5041D7A3706D61AB5441AAFB6E1F1CEB5041408AA58B61AB5441C3F5287C1CEB5041713D0A3761AB54414D2E6D021DEB5041C0B8D79E61AB544152B81E751FEB50413D0AD7D361AB5441 [...]
+</a>
+
+<b>
+010600000001000000010300000005000000CC000000295C8FA2EBEA5041EC51B8CE12AB5441891B0C89D4EA504180B8342D22AB5441A2A90BD0D4EA50410230B79322AB5441F6285C2FD7EA5041B81E852B23AB54413D0AD7C3D9EA5041B81E856B22AB5441B81E852BDBEA5041B81E856B22AB54413D0AD723DDEA5041B81E85FB22AB54413D0AD713DEEA50417B14AE8721AB54417B14AE27DFEA5041F6285CFF21AB5441F6285C0FDFEA50413333335322AB54417B14AE57DFEA5041F6285CBF22AB54413D0AD7F3DFEA5041F6285C1F23AB5441F6285C2FE0EA50417B14AE9723AB544121CF0BF1DFEA504191FF768124AB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981195 - 422997
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -484  </desc>
+<a>
+01060000000100000001030000000200000010010000CDCCCC9CC6EA5041B81E851B3FAB5441AE47E15AD0EA5041B81E851B45AB5441E17A14BEDBEA5041EC51B8EE48AB54411F85EB61EAEA50419A9999D94DAB54411F85EBF1F0EA5041F6285CCF4FAB5441295C8F22FAEA504152B81E8552AB5441713D0AB7FEEA5041C3F5287C5AAB5441CDCCCCEC09EB5041CDCCCCAC5DAB5441C3F5280C12EB50415C8FC27560AB5441A4703DBA1AEB5041D7A3706D61AB5441AAFB6E1F1CEB5041408AA58B61AB5441C3F5287C1CEB5041713D0A3761AB54414D2E6D021DEB5041C0B8D79E61AB544152B81E751FEB50413D0AD7D361AB5441 [...]
+</a>
+
+<b>
+010600000001000000010300000005000000CC000000295C8FA2EBEA5041EC51B8CE12AB5441891B0C89D4EA504180B8342D22AB5441A2A90BD0D4EA50410230B79322AB5441F6285C2FD7EA5041B81E852B23AB54413D0AD7C3D9EA5041B81E856B22AB5441B81E852BDBEA5041B81E856B22AB54413D0AD723DDEA5041B81E85FB22AB54413D0AD713DEEA50417B14AE8721AB54417B14AE27DFEA5041F6285CFF21AB5441F6285C0FDFEA50413333335322AB54417B14AE57DFEA5041F6285CBF22AB54413D0AD7F3DFEA5041F6285C1F23AB5441F6285C2FE0EA50417B14AE9723AB544121CF0BF1DFEA504191FF768124AB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2905119 - 421767
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000100000001030000000100000014000000BC08CFC52A0251418D58328088C25441AE6871082B02514192576BBF8EC254418FC2F5882F025141000000A091C254417B14AE47310251418FC2F50893C25441000000803302514152B81E1595C25441295C8F7235025141AE47E1EA95C25441295C8F123702514114AE477197C25441295C8F9237025141A4703DEA96C25441AE47E16A3F02514148E17A649CC25441AE47E1EA470251410AD7A390A2C25441CDCCCCAC4D02514152B81E35A4C254418FC2F52856025141C3F5289CA4C25441E17A142E560251410AD7A3609DC2544148E17A044A025141E17A146E9AC25441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000008FC2F52856025141C3F5289CA4C25441E17A142E560251410AD7A3609DC2544148E17A044A025141E17A146E9AC25441713D0AF74A025141295C8F728BC25441AE47E10A3B025141E17A14DE88C25441365BBEF23A025141DBA5176F87C254417317721D2D0251410C9006D885C2544148E17A642C02514185EB51D888C2544164AD5F102B025141285EFC9C8EC254419A9999192F025141713D0A0791C254413D0AD70332025141F6285CDF93C25441E19189853202514114771E2E94C25441C126103A35025141141CA8D295C25441295C8F7235025141AE47E1EA95C25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987002 - 5242358
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 30  </desc>
+<a>
+0106000000040000000103000000010000000B03000077FC34C9655F514105C0F876199454415CA32D94655F5141B9256A7819945441FAE81C9D675F5141130F47171A945441CFDFFED96F5F51412465C9E91C945441E862BCFB7B5F5141DAC44BFB21945441D8972E587D5F51417860C0332294544175AB4A23815F514148865E8D2394544183060D02895F51414941E00626945441CD7FA1478B5F5141C4EEF7E0269454417037926E905F5141FDA2C48A28945441755861A7935F5141431CCA112A945441AE90262B935F5141C2753BC52A9454411ACF9227835F51410B971953259454419941422A745F51411FCB8EB71F945441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000C5020000358E208B2862514193A7ACF4B69454417439CCB23E6251417DE4F960BF94544192CB838D4A625141B2F7602DC5945441CC8090DC5162514132488F53C99454415EDB9B715462514149298B74CB945441B6A3B43C57625141F48AC8ABCD9454416042C11A5B625141B69BA4B3D19454419E7812935C625141AAF0A93FD3945441F759254E5D625141B1568804D49454419C3B955D5E62514135892E22D5945441F71811D765625141483C5326D6945441AC07C4656D625141F43E046CDD945441533CF0F473625141917DAFD6E39454416BECF71875625141B005BB8CE5945441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987002 - 5254527
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 30  </desc>
+<a>
+0106000000040000000103000000010000000B03000077FC34C9655F514105C0F876199454415CA32D94655F5141B9256A7819945441FAE81C9D675F5141130F47171A945441CFDFFED96F5F51412465C9E91C945441E862BCFB7B5F5141DAC44BFB21945441D8972E587D5F51417860C0332294544175AB4A23815F514148865E8D2394544183060D02895F51414941E00626945441CD7FA1478B5F5141C4EEF7E0269454417037926E905F5141FDA2C48A28945441755861A7935F5141431CCA112A945441AE90262B935F5141C2753BC52A9454411ACF9227835F51410B971953259454419941422A745F51411FCB8EB71F945441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000C5020000358E208B2862514193A7ACF4B69454417439CCB23E6251417DE4F960BF94544192CB838D4A625141B2F7602DC5945441CC8090DC5162514132488F53C99454415EDB9B715462514149298B74CB945441B6A3B43C57625141F48AC8ABCD9454416042C11A5B625141B69BA4B3D19454419E7812935C625141AAF0A93FD3945441F759254E5D625141B1568804D49454419C3B955D5E62514135892E22D5945441F71811D765625141483C5326D6945441AC07C4656D625141F43E046CDD945441533CF0F473625141917DAFD6E39454416BECF71875625141B005BB8CE5945441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987002 - 410369
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 30  </desc>
+<a>
+0106000000040000000103000000010000000B03000077FC34C9655F514105C0F876199454415CA32D94655F5141B9256A7819945441FAE81C9D675F5141130F47171A945441CFDFFED96F5F51412465C9E91C945441E862BCFB7B5F5141DAC44BFB21945441D8972E587D5F51417860C0332294544175AB4A23815F514148865E8D2394544183060D02895F51414941E00626945441CD7FA1478B5F5141C4EEF7E0269454417037926E905F5141FDA2C48A28945441755861A7935F5141431CCA112A945441AE90262B935F5141C2753BC52A9454411ACF9227835F51410B971953259454419941422A745F51411FCB8EB71F945441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000C5020000358E208B2862514193A7ACF4B69454417439CCB23E6251417DE4F960BF94544192CB838D4A625141B2F7602DC5945441CC8090DC5162514132488F53C99454415EDB9B715462514149298B74CB945441B6A3B43C57625141F48AC8ABCD9454416042C11A5B625141B69BA4B3D19454419E7812935C625141AAF0A93FD3945441F759254E5D625141B1568804D49454419C3B955D5E62514135892E22D5945441F71811D765625141483C5326D6945441AC07C4656D625141F43E046CDD945441533CF0F473625141917DAFD6E39454416BECF71875625141B005BB8CE5945441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987002 - 415044
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 30  </desc>
+<a>
+0106000000040000000103000000010000000B03000077FC34C9655F514105C0F876199454415CA32D94655F5141B9256A7819945441FAE81C9D675F5141130F47171A945441CFDFFED96F5F51412465C9E91C945441E862BCFB7B5F5141DAC44BFB21945441D8972E587D5F51417860C0332294544175AB4A23815F514148865E8D2394544183060D02895F51414941E00626945441CD7FA1478B5F5141C4EEF7E0269454417037926E905F5141FDA2C48A28945441755861A7935F5141431CCA112A945441AE90262B935F5141C2753BC52A9454411ACF9227835F51410B971953259454419941422A745F51411FCB8EB71F945441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000C5020000358E208B2862514193A7ACF4B69454417439CCB23E6251417DE4F960BF94544192CB838D4A625141B2F7602DC5945441CC8090DC5162514132488F53C99454415EDB9B715462514149298B74CB945441B6A3B43C57625141F48AC8ABCD9454416042C11A5B625141B69BA4B3D19454419E7812935C625141AAF0A93FD3945441F759254E5D625141B1568804D49454419C3B955D5E62514135892E22D5945441F71811D765625141483C5326D6945441AC07C4656D625141F43E046CDD945441533CF0F473625141917DAFD6E39454416BECF71875625141B005BB8CE5945441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>132736 - 3683613
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -42  </desc>
+<a>
+01060000000100000001030000000100000044000000AE47E14AED86514166666656F6995441CDCCCC0CED865141AE47E13AF29954417B14AEE7EC865141B81E852BEE9954413D0AD7E3EB865141C3F5287CE69954411F85EB61EB86514114AE4701E39954411F85EB61E8865141AE47E1EAD8995441F6285CDFE58651410AD7A350D199544152B81EC5E38651419A999939CB99544114AE4701E38651415C8FC285C999544148E17A54E2865141C3F5280CC79954418FC2F528E18651411F85EBC1C7995441333333E3DB865141666666B6CA995441F6285C1FDB865141A4703D6ACA995441A4703DCADA865141C3F528FCC9995441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000003010000F4CE9F9DEA865141E97764FAF7995441635CD8BAEA86514184E9A67BF8995441F6285CCFEA865141666666D6F89954412F7E83A2EA8651415C43C0C9F89954417BC6740EEA865141CBC0FD9FF89954418072C4D6E9865141C8BC4890F89954418413EC98E986514197C033ADF899544115532D75E9865141EC1C5CBEF89954418DF5456BE9865141A7161DC3F899544139DB945EE98651415EA834C9F899544144192A4FE9865141AD923CCDF89954410A543741E98651410576CECCF8995441C442AD32E986514153AE91CBF8995441BA905A1EE9865141873FBBCBF8995441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608334 - 5217901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+010600000007000000010300000001000000620200006D82FB7E9CA250410A28DA92A15355413A4E5D309CA250419F59B10DA2535541111D3E219BA2504109FBB826A4535541DB3D2F759AA25041203F1F9EA5535541EC2AE80C9AA25041013550C7A6535541C48AA25B99A250418854EAD5A85355411A055A3C99A25041E9812ED0A9535541979D72F298A2504137821CAFAB5355419F7356BF96A250410EF049EFB2535541AF85F0B594A25041FACB1502B7535541B234AC7293A25041E9D75620B9535541C146466991A25041D434DC81BC535541CAE74D6A8FA25041C453381CC1535541DFD818298AA250417494E473CD535541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000D961F3BB23A15041BEDA451BDF545541C5A362BC2FA15041AB8B4C76DF545541A3D1413B41A15041127F52F2DF545541182F44934CA1504177147043E05455416ACFA4215AA15041F9BAFFA8E054554127FCE4675AA15041586671ABE0545541683B9D9E5FA15041AC4D3629E15455412C48CF7F62A15041515FAD6EE15455411ACA71A369A15041C0AAE41AE254554170FF44156FA15041EE18DA27E35455410681062E6FA150416C9FAC2DE3545541E8F2917571A15041351E2952E05455411011DE6D6FA15041BF9EEC07E05455414C79620A6EA15041000F05D6DF545541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608334 - 5285096
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+010600000007000000010300000001000000620200006D82FB7E9CA250410A28DA92A15355413A4E5D309CA250419F59B10DA2535541111D3E219BA2504109FBB826A4535541DB3D2F759AA25041203F1F9EA5535541EC2AE80C9AA25041013550C7A6535541C48AA25B99A250418854EAD5A85355411A055A3C99A25041E9812ED0A9535541979D72F298A2504137821CAFAB5355419F7356BF96A250410EF049EFB2535541AF85F0B594A25041FACB1502B7535541B234AC7293A25041E9D75620B9535541C146466991A25041D434DC81BC535541CAE74D6A8FA25041C453381CC1535541DFD818298AA250417494E473CD535541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000CA000000037DFFCCC6A250419176EDC6925355418914DA12C9A25041352858F3915355418B26A5F8C1A2504104A1E71C7E5355418454031AC3A250418B853AEE79535541007EEA7BBCA25041B38FB35766535541E44BFC0AB9A250414962E58460535541AC4606D7B6A25041506F86CD5D5355411517AA39B3A2504168C1531357535541D461076CB2A25041F452F12A555355419D5CBCDCAAA250416C024ECE55535541F662A61AA5A250413E31BC8E58535541E35A841FA2A25041B0E42C305A535541D9EFA491A0A2504101F653ED5A535541A078A5BD9DA25041300274335C535541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608334 - 5285100
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+010600000007000000010300000001000000620200006D82FB7E9CA250410A28DA92A15355413A4E5D309CA250419F59B10DA2535541111D3E219BA2504109FBB826A4535541DB3D2F759AA25041203F1F9EA5535541EC2AE80C9AA25041013550C7A6535541C48AA25B99A250418854EAD5A85355411A055A3C99A25041E9812ED0A9535541979D72F298A2504137821CAFAB5355419F7356BF96A250410EF049EFB2535541AF85F0B594A25041FACB1502B7535541B234AC7293A25041E9D75620B9535541C146466991A25041D434DC81BC535541CAE74D6A8FA25041C453381CC1535541DFD818298AA250417494E473CD535541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009F000000E6A31463D1A15041FE2D9E8C9254554115866D59D1A15041EF273C9B925455414F0EF4C2D0A150416B6D106592545541AE47E18AE1A1504114AE47F198545541E670D2DAE0A15041CDF0D56B99545541B18F273FE7A1504151D807D39A545541295C8F7218A25041EC51B81E72545541E9A8BAE554A250414ABD9D8329545541AC81586A57A2504156985FA0265455416371EA8F5AA25041F9D38C04235455417B14AEF764A250415C8FC215175455415C8FC2A567A250413D0AD74314545541C5311AB767A25041F211882D145455419E6EECA767A2504119D5B53C14545541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608334 - 5312821
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -24  </desc>
+<a>
+010600000007000000010300000001000000620200006D82FB7E9CA250410A28DA92A15355413A4E5D309CA250419F59B10DA2535541111D3E219BA2504109FBB826A4535541DB3D2F759AA25041203F1F9EA5535541EC2AE80C9AA25041013550C7A6535541C48AA25B99A250418854EAD5A85355411A055A3C99A25041E9812ED0A9535541979D72F298A2504137821CAFAB5355419F7356BF96A250410EF049EFB2535541AF85F0B594A25041FACB1502B7535541B234AC7293A25041E9D75620B9535541C146466991A25041D434DC81BC535541CAE74D6A8FA25041C453381CC1535541DFD818298AA250417494E473CD535541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000720000007113F40055A250412CB068662E535541EBB76D8A56A250410B299F582F5355416CBE63ED57A25041E950203330535541CDBC2D1258A250415329DC4B30535541C43228005AA25041FEC3149630535541EC9D74BB5CA250418CFFDAFE30535541565FF3405FA25041AE8D915F315355418FE44AAE60A2504118934E9631535541F19C667B61A250416DCDDA99315355412F2120E867A250418F87EFD331535541427DE3DC6AA2504168B601F831535541A023FEC56BA2504137060B0332535541E02560836EA250412A0E402432535541680CEC9C70A250418F53B33D32535541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608334 - 201472
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+010600000007000000010300000001000000620200006D82FB7E9CA250410A28DA92A15355413A4E5D309CA250419F59B10DA2535541111D3E219BA2504109FBB826A4535541DB3D2F759AA25041203F1F9EA5535541EC2AE80C9AA25041013550C7A6535541C48AA25B99A250418854EAD5A85355411A055A3C99A25041E9812ED0A9535541979D72F298A2504137821CAFAB5355419F7356BF96A250410EF049EFB2535541AF85F0B594A25041FACB1502B7535541B234AC7293A25041E9D75620B9535541C146466991A25041D434DC81BC535541CAE74D6A8FA25041C453381CC1535541DFD818298AA250417494E473CD535541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000090000008744EC2141A1504176D898A9295555415E4B7D944BA15041642ECDCC2B555541C931E15A78A15041C1DE27DC3355554191B8288C79A1504187F5AD3732555541C456140E72A15041C1D01D1530555541D1A71D8550A150416A9B287C2A555541FFA3A31043A1504192E566B62755554133BFFDD542A15041857494F1275555418744EC2141A1504176D898A929555541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608334 - 406320
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+010600000007000000010300000001000000620200006D82FB7E9CA250410A28DA92A15355413A4E5D309CA250419F59B10DA2535541111D3E219BA2504109FBB826A4535541DB3D2F759AA25041203F1F9EA5535541EC2AE80C9AA25041013550C7A6535541C48AA25B99A250418854EAD5A85355411A055A3C99A25041E9812ED0A9535541979D72F298A2504137821CAFAB5355419F7356BF96A250410EF049EFB2535541AF85F0B594A25041FACB1502B7535541B234AC7293A25041E9D75620B9535541C146466991A25041D434DC81BC535541CAE74D6A8FA25041C453381CC1535541DFD818298AA250417494E473CD535541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000D961F3BB23A15041BEDA451BDF545541C5A362BC2FA15041AB8B4C76DF545541A3D1413B41A15041127F52F2DF545541182F44934CA1504177147043E05455416ACFA4215AA15041F9BAFFA8E054554127FCE4675AA15041586671ABE0545541683B9D9E5FA15041AC4D3629E15455412C48CF7F62A15041515FAD6EE15455411ACA71A369A15041C0AAE41AE254554170FF44156FA15041EE18DA27E35455410681062E6FA150416C9FAC2DE3545541E8F2917571A15041351E2952E05455411011DE6D6FA15041BF9EEC07E05455414C79620A6EA15041000F05D6DF545541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>253498 - 3178797
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -231  </desc>
+<a>
+010600000001000000010300000003000000400000001A93D334AEB65041DB7C0E7DF6255541068AFD37AEB650419CDFCF7BF625554183DD713FAEB65041E432E178F62555416E1A519AB6B65041B4698B55F325554187984894CDB650410510C568EA2555413305F4E1CEB65041DD54D276E9255541DB3CA09FD1B650412FD19B66E7255541B9C61AB1D4B650410634142EE525554180EA8899DAB65041C8A5B57BE1255541D934CFC7DEB65041FCD02BE5DF255541A1085564E3B65041B66AC124DE25554194CA6778EAB65041A492205FDB2555418702ACFDF0B65041671FA6ECD8255541A1E54711F3B65041031BEF34DC255541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005D000000416C005CADB65041099FB5ECF6255541FC11B153AAB6504120D4411AF8255541BA7018CFA9B650413264AB4EF8255541578E965CA8B65041DC4325E1F8255541E245D9B8A6B650416B77F869F925554190FB71CDA5B650415B94FCB8F9255541713D0A37A6B6504114AE47D1FB25554166666686A6B65041CDCCCCFCFC255541A4703D8AA7B6504100000000FE25554152B81E55A9B65041CDCCCCFCFC255541F6285C6FABB6504152B81E85FC255541E17A14EEADB650418FC2F5F8FB25554148E17A94B0B650419A999959FB255541333333C3B2B65041E17A14CEFA255541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>253498 - 3579146
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -231  </desc>
+<a>
+010600000001000000010300000003000000400000001A93D334AEB65041DB7C0E7DF6255541068AFD37AEB650419CDFCF7BF625554183DD713FAEB65041E432E178F62555416E1A519AB6B65041B4698B55F325554187984894CDB650410510C568EA2555413305F4E1CEB65041DD54D276E9255541DB3CA09FD1B650412FD19B66E7255541B9C61AB1D4B650410634142EE525554180EA8899DAB65041C8A5B57BE1255541D934CFC7DEB65041FCD02BE5DF255541A1085564E3B65041B66AC124DE25554194CA6778EAB65041A492205FDB2555418702ACFDF0B65041671FA6ECD8255541A1E54711F3B65041031BEF34DC255541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005D000000416C005CADB65041099FB5ECF6255541FC11B153AAB6504120D4411AF8255541BA7018CFA9B650413264AB4EF8255541578E965CA8B65041DC4325E1F8255541E245D9B8A6B650416B77F869F925554190FB71CDA5B650415B94FCB8F9255541713D0A37A6B6504114AE47D1FB25554166666686A6B65041CDCCCCFCFC255541A4703D8AA7B6504100000000FE25554152B81E55A9B65041CDCCCCFCFC255541F6285C6FABB6504152B81E85FC255541E17A14EEADB650418FC2F5F8FB25554148E17A94B0B650419A999959FB255541333333C3B2B65041E17A14CEFA255541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>253498 - 404712
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -231  </desc>
+<a>
+010600000001000000010300000003000000400000001A93D334AEB65041DB7C0E7DF6255541068AFD37AEB650419CDFCF7BF625554183DD713FAEB65041E432E178F62555416E1A519AB6B65041B4698B55F325554187984894CDB650410510C568EA2555413305F4E1CEB65041DD54D276E9255541DB3CA09FD1B650412FD19B66E7255541B9C61AB1D4B650410634142EE525554180EA8899DAB65041C8A5B57BE1255541D934CFC7DEB65041FCD02BE5DF255541A1085564E3B65041B66AC124DE25554194CA6778EAB65041A492205FDB2555418702ACFDF0B65041671FA6ECD8255541A1E54711F3B65041031BEF34DC255541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005D000000416C005CADB65041099FB5ECF6255541FC11B153AAB6504120D4411AF8255541BA7018CFA9B650413264AB4EF8255541578E965CA8B65041DC4325E1F8255541E245D9B8A6B650416B77F869F925554190FB71CDA5B650415B94FCB8F9255541713D0A37A6B6504114AE47D1FB25554166666686A6B65041CDCCCCFCFC255541A4703D8AA7B6504100000000FE25554152B81E55A9B65041CDCCCCFCFC255541F6285C6FABB6504152B81E85FC255541E17A14EEADB650418FC2F5F8FB25554148E17A94B0B650419A999959FB255541333333C3B2B65041E17A14CEFA255541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>253498 - 404770
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -231  </desc>
+<a>
+010600000001000000010300000003000000400000001A93D334AEB65041DB7C0E7DF6255541068AFD37AEB650419CDFCF7BF625554183DD713FAEB65041E432E178F62555416E1A519AB6B65041B4698B55F325554187984894CDB650410510C568EA2555413305F4E1CEB65041DD54D276E9255541DB3CA09FD1B650412FD19B66E7255541B9C61AB1D4B650410634142EE525554180EA8899DAB65041C8A5B57BE1255541D934CFC7DEB65041FCD02BE5DF255541A1085564E3B65041B66AC124DE25554194CA6778EAB65041A492205FDB2555418702ACFDF0B65041671FA6ECD8255541A1E54711F3B65041031BEF34DC255541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005D000000416C005CADB65041099FB5ECF6255541FC11B153AAB6504120D4411AF8255541BA7018CFA9B650413264AB4EF8255541578E965CA8B65041DC4325E1F8255541E245D9B8A6B650416B77F869F925554190FB71CDA5B650415B94FCB8F9255541713D0A37A6B6504114AE47D1FB25554166666686A6B65041CDCCCCFCFC255541A4703D8AA7B6504100000000FE25554152B81E55A9B65041CDCCCCFCFC255541F6285C6FABB6504152B81E85FC255541E17A14EEADB650418FC2F5F8FB25554148E17A94B0B650419A999959FB255541333333C3B2B65041E17A14CEFA255541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900954 - 53621
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+01060000000100000001030000000100000028000000AA7CF2354FE350411810B1974D265441666666964DE35041A4703DAA4B2654410AD7A3903CE350415C8FC2153A265441AE47E1FA38E350417B14AE673A26544152B81E7534E350411F85EB3140265441A4703DAA31E3504152B81E054326544152B81ED52BE3504148E17A8449265441F6285CEF23E35041A4703D6A52265441713D0A071CE35041000000505B2654410AD7A36015E35041713D0AC7622654411B0F9C6616E350415F4C12C765265441EC51B82E18E350410AD7A320672654415014EE5817E35041AE603C6168265441E51309FC16E35041810E4C3C69265441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003700000023FC4CBF25E350414846EA8B6C26544169ECC57F28E350410C6E2F4D6A2654412BA9B9262AE35041584CABD7682654415D1EE59A34E3504180664C9C5F265441357F675C3AE350415E19CEB86326544124ECB36A3AE3504154B004C363265441FDA4296C3AE3504114A20FC4632654419515BB6C3AE35041C78477C463265441A40225E446E35041A9520CAC6C265441D8A59FED53E35041034D5944762654415E7638E256E3504158E9CB7B782654419AD0033B59E3504167E65113772654412F56E78D59E350412ADC6EC47626544163B9E3AB5CE350416A1E3A3073265441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>801940 - 249284
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000D000000010300000001000000120100007B14AEA7E8F450417B14AE87F5B854416FB507B6EEF4504114621A4DF7B85441C3F528ECEFF4504148E17AC4F6B85441C3F5289CF1F45041CDCCCCACF6B85441C3F528FCF1F45041CDCCCCFCF7B85441C3F5285CF2F450418FC2F508F8B854410AD7A3C0F4F450418FC2F528F6B8544148E17A34F6F4504148E17A74F5B8544185EB5178F7F45041CDCCCC0CF7B854410AD7A3C0F7F4504148E17A64F6B854410AD7A310F9F4504148E17A34F6B8544148E17A64F9F45041CDCCCCACF3B854410AD7A3F0FAF4504148E17AA4EFB8544185EB5168FBF45041CDCCCC5CEFB85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004900000014AE4751AAF450418FC2F508FDB85441B67E8CA4ACF45041661F693DFCB854410A1BD6E5ADF45041AB9EC6BDFBB85441F68FB34AB2F4504144572330F9B854413AADC061B2F450419D86E41AF9B85441432E7AEEB2F45041414B1C7DF8B8544156F678CBB3F450418AED0219F7B85441FAE1C362B4F450417C233A25F6B85441D4EDB2E0B4F45041F5DA8B42F5B85441FD312CC1B5F4504102ABD1BEF3B8544152B81EA5B5F45041A4703D8AF2B8544184A70CADB5F45041F0222584F2B854414B6CE9ACB5F45041FB0C0382F2B85441211EE063B6F4504117C89DF7F1B85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>801940 - 356466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000D000000010300000001000000120100007B14AEA7E8F450417B14AE87F5B854416FB507B6EEF4504114621A4DF7B85441C3F528ECEFF4504148E17AC4F6B85441C3F5289CF1F45041CDCCCCACF6B85441C3F528FCF1F45041CDCCCCFCF7B85441C3F5285CF2F450418FC2F508F8B854410AD7A3C0F4F450418FC2F528F6B8544148E17A34F6F4504148E17A74F5B8544185EB5178F7F45041CDCCCC0CF7B854410AD7A3C0F7F4504148E17A64F6B854410AD7A310F9F4504148E17A34F6B8544148E17A64F9F45041CDCCCCACF3B854410AD7A3F0FAF4504148E17AA4EFB8544185EB5168FBF45041CDCCCC5CEFB85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004900000014AE4751AAF450418FC2F508FDB85441B67E8CA4ACF45041661F693DFCB854410A1BD6E5ADF45041AB9EC6BDFBB85441F68FB34AB2F4504144572330F9B854413AADC061B2F450419D86E41AF9B85441432E7AEEB2F45041414B1C7DF8B8544156F678CBB3F450418AED0219F7B85441FAE1C362B4F450417C233A25F6B85441D4EDB2E0B4F45041F5DA8B42F5B85441FD312CC1B5F4504102ABD1BEF3B8544152B81EA5B5F45041A4703D8AF2B8544184A70CADB5F45041F0222584F2B854414B6CE9ACB5F45041FB0C0382F2B85441211EE063B6F4504117C89DF7F1B85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983732 - 59546
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000014000000F6285CEFA34851410AD7A3800B57544148E17A74AB485141A4703DFA0E575441AE47E18AC0485141D7A370BD18575441CDCCCC6CCD4851413D0AD7E3115754411F85EB11D3485141E17A141E0E5754413D0AD723D248514114AE47110C5754419A999989CB485141EC51B85E0957544166666686C6485141D7A3705D06575441295C8F92C048514114AE4731035754417B14AE27B8485141713D0A97005754417B14AE07B24851410AD7A340FF565441F6285C2FAC48514185EB5168FE565441295C8F82A4485141A4703DEAFD5654413D0AD7539D4851411F85EB11FD565441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002700000004949B1BB648514115EAC4E8135754416ADF5897B74851418B00929814575441E4F35D95BD4851415673BF5E175754411FD8A052BF48514171923B2018575441B39DED8BC04851413BF5E1BC1857544194ACA419C1485141CF538771185754418386F172CD485141E4A5D3D211575441C8895C4ED2485141A418C5A00E5754411F85EB11D3485141E17A141E0E5754413D0AD723D248514114AE47110C5754419A999989CB485141EC51B85E0957544166666686C6485141D7A3705D065754412978ECADC448514142E79F6105575441461256B6C048514145BCE05403575441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983796 - 1636689
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000270000001B75E7977FAC504118D0A7574659554116D594837FAC5041EB9A76F346595541B4EC177F7FAC50416684C36247595541993952577FAC50415598CA46485955413B1C5A4D7FAC5041D0CE389348595541168D96677EAC5041D6DB42A54D5955415330550A7EAC50418CCDECBB4F595541AD398E2581AC504175FEB71048595541CDE000DB80AC504152B58EB73F595541FB9991E27FAC504102B3FF7037595541B912655280AC504184A971292B59554162FF987C81AC5041C487B47B255955413DAD6DDD83AC5041BEFB041121595541BD9E14BD84AC504138444A451F595541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000230000002FFCA0B07FAC5041A10B4F473A595541474B2D377FAC5041FD20DED83759554100A17B207FAC504159988F6437595541A58BA61B7FAC5041CE8ACB4B37595541317903047FAC50414ACBAB7E325955415DC3CC027FAC50419BDB8E3F3259554192FA9D347FAC50415891329E2C59554160E8F2027FAC5041AE5BCC9D2B595541A5A7A5FE7EAC50418A61BF8A2B595541D323B84D7FAC50414E7185C526595541144E81567FAC5041AC5329B52559554182295A5B7BAC5041C0B428BF245955412E9234C779AC504147C3CE0B27595541B6D5CF4978AC5041779B7D8329595541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983796 - 4294191
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000270000001B75E7977FAC504118D0A7574659554116D594837FAC5041EB9A76F346595541B4EC177F7FAC50416684C36247595541993952577FAC50415598CA46485955413B1C5A4D7FAC5041D0CE389348595541168D96677EAC5041D6DB42A54D5955415330550A7EAC50418CCDECBB4F595541AD398E2581AC504175FEB71048595541CDE000DB80AC504152B58EB73F595541FB9991E27FAC504102B3FF7037595541B912655280AC504184A971292B59554162FF987C81AC5041C487B47B255955413DAD6DDD83AC5041BEFB041121595541BD9E14BD84AC504138444A451F595541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000230000002FFCA0B07FAC5041A10B4F473A595541474B2D377FAC5041FD20DED83759554100A17B207FAC504159988F6437595541A58BA61B7FAC5041CE8ACB4B37595541317903047FAC50414ACBAB7E325955415DC3CC027FAC50419BDB8E3F3259554192FA9D347FAC50415891329E2C59554160E8F2027FAC5041AE5BCC9D2B595541A5A7A5FE7EAC50418A61BF8A2B595541D323B84D7FAC50414E7185C526595541144E81567FAC5041AC5329B52559554182295A5B7BAC5041C0B428BF245955412E9234C779AC504147C3CE0B27595541B6D5CF4978AC5041779B7D8329595541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984286 - 97118
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000024000000CDCCCC0CF7965141EC51B8FEB88F54410AD7A320FF965141D7A370FDB78F5441666666E606975141D7A370EDB58F5441000000101297514152B81E25B58F5441A4703D1A17975141E17A140EB48F5441666666B61897514100000050B38F5441AE47E1AA1C975141B81E852BB68F54413D0AD7631F975141CDCCCC5CB28F54417B14AE4723975141C3F528ECAC8F54418FC2F5D817975141CDCCCC8C9F8F5441295C8FC215975141CDCCCC4CA08F5441B81E859B0E97514166666636A08F54410AD7A3500A9751413D0AD723A18F544148E17AE40097514114AE4721A38F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003D000000AE47E17AD9965141EC51B8AEA08F544143B78D8DD8965141E4C411E4A08F54416B14AB54D6965141A26D4A72A18F5441F1A653E7D296514174E2FCC2A38F5441580E42D8D1965141B5403383A48F544121AA51A4D0965141EFC3A6F4A48F5441E39A6BC9CC965141DBF5376BA68F544117399747C9965141CD03FBBFA78F5441B3D8E0A4C696514190BEC7E4A88F54417DC6A898C6965141DA17B7EAA88F5441A2A13772C6965141CC1363FDA88F54413609D80FC696514190419723AE8F544105608D0EC8965141FB138762B78F5441E7B92EA2C99651416938677FBE8F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984286 - 298865
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000024000000CDCCCC0CF7965141EC51B8FEB88F54410AD7A320FF965141D7A370FDB78F5441666666E606975141D7A370EDB58F5441000000101297514152B81E25B58F5441A4703D1A17975141E17A140EB48F5441666666B61897514100000050B38F5441AE47E1AA1C975141B81E852BB68F54413D0AD7631F975141CDCCCC5CB28F54417B14AE4723975141C3F528ECAC8F54418FC2F5D817975141CDCCCC8C9F8F5441295C8FC215975141CDCCCC4CA08F5441B81E859B0E97514166666636A08F54410AD7A3500A9751413D0AD723A18F544148E17AE40097514114AE4721A38F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003D000000AE47E17AD9965141EC51B8AEA08F544143B78D8DD8965141E4C411E4A08F54416B14AB54D6965141A26D4A72A18F5441F1A653E7D296514174E2FCC2A38F5441580E42D8D1965141B5403383A48F544121AA51A4D0965141EFC3A6F4A48F5441E39A6BC9CC965141DBF5376BA68F544117399747C9965141CD03FBBFA78F5441B3D8E0A4C696514190BEC7E4A88F54417DC6A898C6965141DA17B7EAA88F5441A2A13772C6965141CC1363FDA88F54413609D80FC696514190419723AE8F544105608D0EC8965141FB138762B78F5441E7B92EA2C99651416938677FBE8F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>565433 - 55763
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -24  </desc>
+<a>
+0106000000010000000103000000010000003801000000000090B563514152B81E5593A35441B81E859BA4635141CDCCCCBC97A354415C8FC2159B6351413D0AD7039AA35441C3F528AC8F6351417B14AE779CA35441A4703DFA8663514114AE47719EA354411F85EB917F63514148E17A84A0A354419A9999F97C63514100000010A1A35441AE47E18A786351415C8FC265A2A35441E17A145E72635141C3F5286CA4A3544114AE4791556351415C8FC265B0A35441295C8F724D635141A4703D1AB4A35441E17A149E4663514166666686B7A354411F85EBE14063514133333373BAA35441295C8F123C63514152B81E45BDA35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009D01000014AE4701686351417B14AE27ADA354413B58661268635141C061C549ADA35441E17A145E69635141D7A370DDAFA35441B81E853B7263514100000040ACA35441C544C61A7563514110927F48ABA35441F333CEC8806351417629FE59A7A354410AD7A33081635141713D0A37A7A35441D7A3708D8863514148E17AF4A4A35441C88DF9638B6351417EB71A4EA4A35441E17A143E91635141713D0AF7A2A35441FDA1889B92635141F69082B1A2A35441DA40D7A89A6351414E6C6017A1A35441A4703D0AA3635141C3F5286C9FA35441E4F91B77A46351418217F2129FA35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>565433 - 99176
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -24  </desc>
+<a>
+0106000000010000000103000000010000003801000000000090B563514152B81E5593A35441B81E859BA4635141CDCCCCBC97A354415C8FC2159B6351413D0AD7039AA35441C3F528AC8F6351417B14AE779CA35441A4703DFA8663514114AE47719EA354411F85EB917F63514148E17A84A0A354419A9999F97C63514100000010A1A35441AE47E18A786351415C8FC265A2A35441E17A145E72635141C3F5286CA4A3544114AE4791556351415C8FC265B0A35441295C8F724D635141A4703D1AB4A35441E17A149E4663514166666686B7A354411F85EBE14063514133333373BAA35441295C8F123C63514152B81E45BDA35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009D01000014AE4701686351417B14AE27ADA354413958661268635141BF61C549ADA35441E17A145E69635141D7A370DDAFA35441B81E853B7263514100000040ACA35441C844C61A7563514111927F48ABA35441F533CEC8806351417129FE59A7A354410AD7A33081635141713D0A37A7A35441D7A3708D8863514148E17AF4A4A35441CB8DF9638B6351417CB71A4EA4A35441E17A143E91635141713D0AF7A2A35441FBA1889B92635141F49082B1A2A35441DA40D7A89A635141516C6017A1A35441A4703D0AA3635141C3F5286C9FA35441E6F91B77A46351417F17F2129FA35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>565433 - 258905
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -24  </desc>
+<a>
+0106000000010000000103000000010000003801000000000090B563514152B81E5593A35441B81E859BA4635141CDCCCCBC97A354415C8FC2159B6351413D0AD7039AA35441C3F528AC8F6351417B14AE779CA35441A4703DFA8663514114AE47719EA354411F85EB917F63514148E17A84A0A354419A9999F97C63514100000010A1A35441AE47E18A786351415C8FC265A2A35441E17A145E72635141C3F5286CA4A3544114AE4791556351415C8FC265B0A35441295C8F724D635141A4703D1AB4A35441E17A149E4663514166666686B7A354411F85EBE14063514133333373BAA35441295C8F123C63514152B81E45BDA35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009D01000014AE4701686351417B14AE27ADA354413958661268635141BF61C549ADA35441E17A145E69635141D7A370DDAFA35441B81E853B7263514100000040ACA35441C844C61A7563514111927F48ABA35441F533CEC8806351417129FE59A7A354410AD7A33081635141713D0A37A7A35441D7A3708D8863514148E17AF4A4A35441CB8DF9638B6351417CB71A4EA4A35441E17A143E91635141713D0AF7A2A35441FBA1889B92635141F49082B1A2A35441DA40D7A89A635141516C6017A1A35441A4703D0AA3635141C3F5286C9FA35441E6F91B77A46351417F17F2129FA35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>801939 - 249255
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+010600000006000000010300000001000000370000001F85EB118FF15041E17A14BEADB95441F6285C8F8FF1504100000080ABB9544152B81EC58FF15041713D0A67A8B954418FC2F5A891F15041EC51B84EA3B95441E17A14DE92F1504114AE47F1A1B9544148E17AB495F150418FC2F5C8A1B954410000002096F15041EC51B85E9EB954413D0AD76395F15041B81E857B9BB95441A4703DAA93F15041D7A3701D98B95441E17A140E90F1504185EB51E897B95441D7A370CD8DF150418FC2F58898B95441E17A14AE89F150413D0AD7139BB954413D0AD78385F150410AD7A3809EB95441EC51B83E82F150418FC2F508A2B95441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000094000000AF97FCB097F150418A70A74A90B95441CDCCCC0C97F150410000004090B9544152B81E6596F150413D0AD7838EB95441B9788D6696F1504186E54F768EB95441C66D766296F15041C004EE6B8EB95441CD45B27096F1504168F586168EB954418FC2F5B896F15041C3F5286C8BB9544171191EC096F15041A5EBB4508BB95441821B4AC196F150417ECC203F8BB9544151B0353B97F15041966BFE6489B954419969B54897F1504127D9CD4489B954418FC2F54897F150413D0AD74389B954418FC2F5D897F15041C3F528DC87B95441BF785AE397F150419E2B09D487B95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>801939 - 261160
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+010600000006000000010300000001000000370000001F85EB118FF15041E17A14BEADB95441F6285C8F8FF1504100000080ABB9544152B81EC58FF15041713D0A67A8B954418FC2F5A891F15041EC51B84EA3B95441E17A14DE92F1504114AE47F1A1B9544148E17AB495F150418FC2F5C8A1B954410000002096F15041EC51B85E9EB954413D0AD76395F15041B81E857B9BB95441A4703DAA93F15041D7A3701D98B95441E17A140E90F1504185EB51E897B95441D7A370CD8DF150418FC2F58898B95441E17A14AE89F150413D0AD7139BB954413D0AD78385F150410AD7A3809EB95441EC51B83E82F150418FC2F508A2B95441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000094000000AF97FCB097F150418A70A74A90B95441CDCCCC0C97F150410000004090B9544152B81E6596F150413D0AD7838EB95441B9788D6696F1504186E54F768EB95441C66D766296F15041C004EE6B8EB95441CD45B27096F1504168F586168EB954418FC2F5B896F15041C3F5286C8BB9544171191EC096F15041A5EBB4508BB95441821B4AC196F150417ECC203F8BB9544151B0353B97F15041966BFE6489B954419969B54897F1504127D9CD4489B954418FC2F54897F150413D0AD74389B954418FC2F5D897F15041C3F528DC87B95441BF785AE397F150419E2B09D487B95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>966094 - 2025063
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+010600000001000000010300000001000000080000009CF43774FF0951412374234411E95441BF77617BFF095141190A467611E9544188E1D28E040A51410F26D5D00FE95441B63AEC27040A5141850B95540EE954417AE0F580030A51410B25BEB20CE95441F07D6BC4010A5141D66A6B2F05E9544100000010010A5141A4703D5A01E954419CF43774FF0951412374234411E95441
+</a>
+
+<b>
+0106000000010000000103000000010000001300000000000010010A5141A4703D5A01E9544152B81ED5010A5141A4703D8A05E95441EC51B86E020A5141295C8F8208E95441D7A370FD020A51419A9999690BE95441A4703DEA040A5141AE47E13A10E95441C3F528AC040A5141F6285C9F0FE95441295C8FE2080A514114AE477110E954419A999969080A5141666666260AE95441AE47E19A070A5141D7A3708D05E954419A9999E9060A514152B81E5501E95441E17A148E060A51413D0AD733FEE85441A4703D0A060A51413D0AD703FAE85441D7A3708D050A514152B81E85F6E854417B14AE17050A51417B14AE07F4E85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>966094 - 4569934
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+010600000001000000010300000001000000080000009CF43774FF0951412374234411E95441BF77617BFF095141190A467611E9544188E1D28E040A51410F26D5D00FE95441B63AEC27040A5141850B95540EE954417AE0F580030A51410B25BEB20CE95441F07D6BC4010A5141D66A6B2F05E9544100000010010A5141A4703D5A01E954419CF43774FF0951412374234411E95441
+</a>
+
+<b>
+0106000000010000000103000000010000001300000000000010010A5141A4703D5A01E9544152B81ED5010A5141A4703D8A05E95441EC51B86E020A5141295C8F8208E95441D7A370FD020A51419A9999690BE95441A4703DEA040A5141AE47E13A10E95441C3F528AC040A5141F6285C9F0FE95441295C8FE2080A514114AE477110E954419A999969080A5141666666260AE95441AE47E19A070A5141D7A3708D05E954419A9999E9060A514152B81E5501E95441E17A148E060A51413D0AD733FEE85441A4703D0A060A51413D0AD703FAE85441D7A3708D050A514152B81E85F6E854417B14AE17050A51417B14AE07F4E85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984733 - 5179648
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 23  </desc>
+<a>
+01060000000C0000000103000000010000002F00000019528B31D3915041DF4183ECE82A55410D36734CD29150414032FE2AE92A5541E57DDC40DC915041E5B293D6F12A5541F9D9A746D7915041C59DBF35F52A5541479A729CDB91504169654C46FC2A55411B70CA5AE2915041022DD956032B55416AE99D4BE89150413766BED5072B5541AE9A2B64E191504129EE153C132B55418BC6B7C4F1915041DDAE99591D2B5541A6BFAED1F4915041926F1D77272B5541ABEAC8A2F9915041823E6C42312B55412A726741FF915041096336E83E2B55415FAB4CC003925041AC390036512B5541658A7B8C04925041867E3F43572B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001000000024BAF19209925041578C697C572B554193718A860A9250415AC9DA825B2B5541A428A13A1E9250416AF99E625A2B5541303188DE279250416EFDF3D3762B554162329CE533925041B8A2099B732B5541153410F52992504187513152582B55412D84AC14289250419189EB01572B55416F4C480E1E925041102DEDB6572B554191E9F40C1E9250410079A5AD572B55419C6D8F9E0A925041773554FA582B5541ABFC0AAA0A925041009A2639572B5541C95F58BB0A9250418FEA5194542B5541097B635A04925041A87028C7552B5541658A7B8C04925041867E3F43572B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984733 - 5300258
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 23  </desc>
+<a>
+01060000000C0000000103000000010000002F00000019528B31D3915041DF4183ECE82A55410D36734CD29150414032FE2AE92A5541E57DDC40DC915041E5B293D6F12A5541F9D9A746D7915041C59DBF35F52A5541479A729CDB91504169654C46FC2A55411B70CA5AE2915041022DD956032B55416AE99D4BE89150413766BED5072B5541AE9A2B64E191504129EE153C132B55418BC6B7C4F1915041DDAE99591D2B5541A6BFAED1F4915041926F1D77272B5541ABEAC8A2F9915041823E6C42312B55412A726741FF915041096336E83E2B55415FAB4CC003925041AC390036512B5541658A7B8C04925041867E3F43572B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001000000024BAF19209925041578C697C572B554193718A860A9250415AC9DA825B2B5541A428A13A1E9250416AF99E625A2B5541303188DE279250416EFDF3D3762B554162329CE533925041B8A2099B732B5541153410F52992504187513152582B55412D84AC14289250419189EB01572B55416F4C480E1E925041102DEDB6572B554191E9F40C1E9250410079A5AD572B55419C6D8F9E0A925041773554FA582B5541ABFC0AAA0A925041009A2639572B5541C95F58BB0A9250418FEA5194542B5541097B635A04925041A87028C7552B5541658A7B8C04925041867E3F43572B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984733 - 402665
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 23  </desc>
+<a>
+01060000000C0000000103000000010000002F00000019528B31D3915041DF4183ECE82A55410D36734CD29150414032FE2AE92A5541E57DDC40DC915041E5B293D6F12A5541F9D9A746D7915041C59DBF35F52A5541479A729CDB91504169654C46FC2A55411B70CA5AE2915041022DD956032B55416AE99D4BE89150413766BED5072B5541AE9A2B64E191504129EE153C132B55418BC6B7C4F1915041DDAE99591D2B5541A6BFAED1F4915041926F1D77272B5541ABEAC8A2F9915041823E6C42312B55412A726741FF915041096336E83E2B55415FAB4CC003925041AC390036512B5541658A7B8C04925041867E3F43572B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001000000024BAF19209925041578C697C572B554193718A860A9250415AC9DA825B2B5541A428A13A1E9250416AF99E625A2B5541303188DE279250416EFDF3D3762B554162329CE533925041B8A2099B732B5541153410F52992504187513152582B55412D84AC14289250419189EB01572B55416F4C480E1E925041102DEDB6572B554191E9F40C1E9250410079A5AD572B55419C6D8F9E0A925041773554FA582B5541ABFC0AAA0A925041009A2639572B5541C95F58BB0A9250418FEA5194542B5541097B635A04925041A87028C7552B5541658A7B8C04925041867E3F43572B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984733 - 423979
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 23  </desc>
+<a>
+01060000000C0000000103000000010000002F00000019528B31D3915041DF4183ECE82A55410D36734CD29150414032FE2AE92A5541E57DDC40DC915041E5B293D6F12A5541F9D9A746D7915041C59DBF35F52A5541479A729CDB91504169654C46FC2A55411B70CA5AE2915041022DD956032B55416AE99D4BE89150413766BED5072B5541AE9A2B64E191504129EE153C132B55418BC6B7C4F1915041DDAE99591D2B5541A6BFAED1F4915041926F1D77272B5541ABEAC8A2F9915041823E6C42312B55412A726741FF915041096336E83E2B55415FAB4CC003925041AC390036512B5541658A7B8C04925041867E3F43572B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001000000024BAF19209925041578C697C572B554193718A860A9250415AC9DA825B2B5541A428A13A1E9250416AF99E625A2B5541303188DE279250416EFDF3D3762B554162329CE533925041B8A2099B732B5541153410F52992504187513152582B55412D84AC14289250419189EB01572B55416F4C480E1E925041102DEDB6572B554191E9F40C1E9250410079A5AD572B55419C6D8F9E0A925041773554FA582B5541ABFC0AAA0A925041009A2639572B5541C95F58BB0A9250418FEA5194542B5541097B635A04925041A87028C7552B5541658A7B8C04925041867E3F43572B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>820470 - 3147675
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 9  </desc>
+<a>
+010600000001000000010300000004000000AF00000085EB516847D45041D7A3700D8429544148E17A0445D450418FC2F5D883295441333333C338D450410AD7A3D082295441EC51B83E36D4504152B81ED581295441000000802ED45041AE47E18A80295441B81E850B27D45041000000A07F295441CDCCCC9C1FD450415C8FC2A57D2954418FC2F5081BD450418FC2F5C87C295441D7A3708D1BD4504114AE475179295441F6285C9F13D4504152B81E35772954415C8FC2A511D45041EC51B8AE762954415C8FC2C50CD4504185EB517875295441CDCCCCAC0ED45041295C8F4278295441000000E013D45041000000F07B295441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000F4000000E17A145E13D45041666666C6F12954411F85EB3118D4504148E17A44F3295441C735B84A21D450410A2F4154BA29544135A9399025D4504187ACF42EBB295441288F2C3041D450414F0ACF92C329544169D257F94AD4504120329E81C62954418DAA54AA50D4504193A5B486C82954411FEEF42860D450418A7CD104CE29544158AF2A2B69D450418C94158BD1295441996296B46ED4504173BD2591D3295441E66F84CC7FD45041891D090AD5295441000000D088D45041AE47E1AAD5295441295C8F9284D45041CDCCCCBCEF2954419A9999899AD45041C3F5284CF3295441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>820470 - 3359118
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 9  </desc>
+<a>
+010600000001000000010300000004000000AF00000085EB516847D45041D7A3700D8429544148E17A0445D450418FC2F5D883295441333333C338D450410AD7A3D082295441EC51B83E36D4504152B81ED581295441000000802ED45041AE47E18A80295441B81E850B27D45041000000A07F295441CDCCCC9C1FD450415C8FC2A57D2954418FC2F5081BD450418FC2F5C87C295441D7A3708D1BD4504114AE475179295441F6285C9F13D4504152B81E35772954415C8FC2A511D45041EC51B8AE762954415C8FC2C50CD4504185EB517875295441CDCCCCAC0ED45041295C8F4278295441000000E013D45041000000F07B295441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000F4000000E17A145E13D45041666666C6F12954411F85EB3118D4504148E17A44F3295441C735B84A21D450410A2F4154BA29544135A9399025D4504187ACF42EBB295441288F2C3041D450414F0ACF92C329544169D257F94AD4504120329E81C62954418DAA54AA50D4504193A5B486C82954411FEEF42860D450418A7CD104CE29544158AF2A2B69D450418C94158BD1295441996296B46ED4504173BD2591D3295441E66F84CC7FD45041891D090AD5295441000000D088D45041AE47E1AAD5295441295C8F9284D45041CDCCCCBCEF2954419A9999899AD45041C3F5284CF3295441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985983 - 3102931
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000DC000000CA1938293B0B51416BAAF954F72155411B30C0B3390B51413B98428BF7215541981D547A360B51417DA1F827F92155419A9999692F0B5141713D0A17FC215541A4703DDA270B5141CDCCCCECFD21554114AE4701250B514133333363FD21554185EB5118230B51419A999969FD2155413D0AD703220B5141F6285CBFFC215541D7A3705D200B5141F6285CEFF921554114AE47F11E0B5141AE47E13AF82155411F85EB011C0B51418FC2F528F6215541A4703D1A160B514152B81EC5F321554100000050120B5141666666B6F0215541713D0AD70D0B514152B81EC5EB215541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004000000048E17A14CB0B5141D7A370BD33225541AD32B05FD10B51419E2395853222554156CB672DD80B51416B9693B431225541AC40869ADB0B51413F407139312255413DC55E5ADB0B51414C18CF5C252255414999D8CAE40B514137B57FC62322554116727CFFF40B51417267CD042122554140381B2CF80B51419DD0924522225541F2702BD7FB0B5141351E744527225541F2702BD7FB0B5141C9B12F802C225541F7DC302FFD0B5141BC6435382F225541886109EFFC0B51411D37C0B931225541725B9344FD0B51412697D47A33225541CDCCCC9C010C51413D0AD72333225541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985983 - 3473135
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000DC000000CA1938293B0B51416BAAF954F72155411B30C0B3390B51413B98428BF7215541981D547A360B51417DA1F827F92155419A9999692F0B5141713D0A17FC215541A4703DDA270B5141CDCCCCECFD21554114AE4701250B514133333363FD21554185EB5118230B51419A999969FD2155413D0AD703220B5141F6285CBFFC215541D7A3705D200B5141F6285CEFF921554114AE47F11E0B5141AE47E13AF82155411F85EB011C0B51418FC2F528F6215541A4703D1A160B514152B81EC5F321554100000050120B5141666666B6F0215541713D0AD70D0B514152B81EC5EB215541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004000000048E17A14CB0B5141D7A370BD33225541AD32B05FD10B51419E2395853222554156CB672DD80B51416B9693B431225541AC40869ADB0B51413F407139312255413DC55E5ADB0B51414C18CF5C252255414999D8CAE40B514137B57FC62322554116727CFFF40B51417267CD042122554140381B2CF80B51419DD0924522225541F2702BD7FB0B5141351E744527225541F2702BD7FB0B5141C9B12F802C225541F7DC302FFD0B5141BC6435382F225541886109EFFC0B51411D37C0B931225541725B9344FD0B51412697D47A33225541CDCCCC9C010C51413D0AD72333225541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>974285 - 1477390
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -31  </desc>
+<a>
+0106000000010000000103000000010000000D000000C3F5281C88E05041000000F06B2D554185EB512886E050415C8FC2756A2D5541F6A6167883E0504184924F0B692D5541666666B680E0504152B81E15682D55410AD7A3807EE05041000000D0672D5541D231112479E0504176D85CD2682D55418FC2F52873E050411F85EB816A2D554185EB51386FE050413D0AD7E36B2D55414764875B5FE050418A4DF979712D554191E791866BE050419B4FFBCC732D5541391E9B3076E050411B07FEF1762D5541137D9F3F7BE0504169270068792D5541C3F5281C88E05041000000F06B2D5541
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000069968C3688E050418B82B0D76B2D5541A8694C1386E050413FACE7416A2D5541AE9150A983E0504154F63F23692D55414356042783E050412366AFE7682D554197A0E65D82E050410D1D92A4682D554159B45ED380E050417C7FA71E682D5541B58EE56E80E05041BC61620C682D55416D09007C7EE050413CC279D0672D5541B8B258EE7BE05041D20E201B682D55415DBBD14579E05041BFD4CED1682D5541D3D90CF078E0504177C4B0E5682D5541D97F67EF78E050416D4C4BE7682D55411603F2FF75E05041ACD3C4B4692D5541A6FE1C2073E050411F3306856A2D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>974285 - 3438677
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -31  </desc>
+<a>
+0106000000010000000103000000010000000D000000C3F5281C88E05041000000F06B2D554185EB512886E050415C8FC2756A2D5541F6A6167883E0504184924F0B692D5541666666B680E0504152B81E15682D55410AD7A3807EE05041000000D0672D5541D231112479E0504176D85CD2682D55418FC2F52873E050411F85EB816A2D554185EB51386FE050413D0AD7E36B2D55414764875B5FE050418A4DF979712D554191E791866BE050419B4FFBCC732D5541391E9B3076E050411B07FEF1762D5541137D9F3F7BE0504169270068792D5541C3F5281C88E05041000000F06B2D5541
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000069968C3688E050418B82B0D76B2D5541A8694C1386E050413FACE7416A2D5541AE9150A983E0504154F63F23692D55414356042783E050412366AFE7682D554197A0E65D82E050410D1D92A4682D554159B45ED380E050417C7FA71E682D5541B58EE56E80E05041BC61620C682D55416D09007C7EE050413CC279D0672D5541B8B258EE7BE05041D20E201B682D55415DBBD14579E05041BFD4CED1682D5541D3D90CF078E0504177C4B0E5682D5541D97F67EF78E050416D4C4BE7682D55411603F2FF75E05041ACD3C4B4692D5541A6FE1C2073E050411F3306856A2D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>43979 - 57687
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001C0000007B14AE470CD9504114AE4791D6FE5441F6285C8F0AD950419A999909D7FE5441966593FE07D95041301E508CD6FE5441387FDE6B07D95041BB3F6E96D6FE5441CBA8A68B02D95041538720E4D6FE5441BA2CAF1BFFD85041091834A1D5FE54417E25C62AFCD85041CF01D768D4FE544182328ABCF8D85041FE8F45ECD2FE5441FE97F14DF5D850418D88987ED3FE54418FC2F578F5D8504166666676D6FE5441E17A14AEF5D85041333333C3DDFE5441000000D0F4D850417B14AEC7DDFE5441713D0A37EFD8504148E17AE4DDFE54411F85EBF1DDD85041713D0AA7D5FE5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000008FC2F578F5D8504166666676D6FE54419CA7418DF5D850418ABB7140D9FE5441F6E25F8DF5D85041894F9944D9FE5441F232D08FF5D85041E712659AD9FE5441FE5E196F0CD950419AB5468AD9FE5441C73FBE6C0CD950412148CB5CD9FE544122AD5E6B0CD9504171134842D9FE54417B420B680CD9504117411302D9FE5441EE45AF5A0CD95041AA832B00D8FE54415ACA732F0CD95041DF7DE697D6FE5441F6285C8F0AD950419A999909D7FE5441966593FE07D95041301E508CD6FE5441387FDE6B07D95041BB3F6E96D6FE544119C76D8B02D950413BF987EDD6FE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985999 - 3170589
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 9  </desc>
+<a>
+0106000000010000000103000000010000002A000000B748C51ECF5651415B8723A5AE7D5441F5C74847D25651411A5C659E8D7D54416947CB88D45651413B95E3E4747D5441457A66FAD55651418ABF449B647D54416CBC8FFDD6565141FE60291F5A7D5441779333EED75651411DE614D1597D544157AD0085D656514195B1236F697D5441FDADFDCFD35651410784D141877D5441A72155DFD15651410F659D8B9D7D54410862134BD0565141F260B0B0AE7D5441EC51B8FED056514185EB5178AF7D5441E17A143EDC565141EC51B82EAD7D544114AE4731E5565141E17A14FEAA7D5441F6285C4FEE5651417B14AE37A87D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000002FB63745C55651412849A2D9627D5441944748FEC556514178DB30D4627D54415DE6EC87CA5651413FEB032D627D5441DB90CD0ACE56514137FA006E617D5441582E5094D656514107193C855E7D5441EA0DE4F8D6565141110DE8215A7D54416062629DCF5651416B8442E15C7D544101010305CF565141BEF415195D7D54418F085E6ECC5651419D568E6F5D7D5441A25F7D42C756514154858A1A5E7D54411EFA6E3BC5565141BCB91B515E7D54416758DAA8C0565141AE352BCC5E7D5441DB0CBDADBB56514154FB37525F7D54412B66E4F4B9565141825890805F7D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985999 - 3488163
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 9  </desc>
+<a>
+0106000000010000000103000000010000002A000000B748C51ECF5651415B8723A5AE7D5441F5C74847D25651411A5C659E8D7D54416947CB88D45651413B95E3E4747D5441457A66FAD55651418ABF449B647D54416CBC8FFDD6565141FE60291F5A7D5441779333EED75651411DE614D1597D544157AD0085D656514195B1236F697D5441FDADFDCFD35651410784D141877D5441A72155DFD15651410F659D8B9D7D54410862134BD0565141F260B0B0AE7D5441EC51B8FED056514185EB5178AF7D5441E17A143EDC565141EC51B82EAD7D544114AE4731E5565141E17A14FEAA7D5441F6285C4FEE5651417B14AE37A87D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000002FB63745C55651412849A2D9627D5441944748FEC556514178DB30D4627D54415DE6EC87CA5651413FEB032D627D5441DB90CD0ACE56514137FA006E617D5441582E5094D656514107193C855E7D5441EA0DE4F8D6565141110DE8215A7D54416062629DCF5651416B8442E15C7D544101010305CF565141BEF415195D7D54418F085E6ECC5651419D568E6F5D7D5441A25F7D42C756514154858A1A5E7D54411EFA6E3BC5565141BCB91B515E7D54416758DAA8C0565141AE352BCC5E7D5441DB0CBDADBB56514154FB37525F7D54412B66E4F4B9565141825890805F7D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985999 - 86483
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 8  </desc>
+<a>
+0106000000010000000103000000010000002A000000B748C51ECF5651415B8723A5AE7D5441F5C74847D25651411A5C659E8D7D54416947CB88D45651413B95E3E4747D5441457A66FAD55651418ABF449B647D54416CBC8FFDD6565141FE60291F5A7D5441779333EED75651411DE614D1597D544157AD0085D656514195B1236F697D5441FDADFDCFD35651410784D141877D5441A72155DFD15651410F659D8B9D7D54410862134BD0565141F260B0B0AE7D5441EC51B8FED056514185EB5178AF7D5441E17A143EDC565141EC51B82EAD7D544114AE4731E5565141E17A14FEAA7D5441F6285C4FEE5651417B14AE37A87D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000210000007B9197051F575141A0FFF7705C7D5441D212E9111F575141F3EE48D55B7D5441EB7EFE0808575141221BB3285C7D5441E659A47F00575141ECA59A385C7D5441C5DEE51EF35651415637B4805C7D544137A903D5ED56514106A419765C7D5441E34519ADDC565141CC3972BB5C7D5441A64BB088D7565141D75DB6345E7D54413DAAB0BAD65651417278E11C677D54417A5B995AD4565141D328888C817D5441474177EDD25651419C17396C917D5441A52155DFD15651410B659D8B9D7D54410862134BD0565141F160B0B0AE7D5441EC51B8FED056514185EB5178AF7D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985999 - 86484
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 8  </desc>
+<a>
+0106000000010000000103000000010000002A000000B748C51ECF5651415B8723A5AE7D5441F5C74847D25651411A5C659E8D7D54416947CB88D45651413B95E3E4747D5441457A66FAD55651418ABF449B647D54416CBC8FFDD6565141FE60291F5A7D5441779333EED75651411DE614D1597D544157AD0085D656514195B1236F697D5441FDADFDCFD35651410784D141877D5441A72155DFD15651410F659D8B9D7D54410862134BD0565141F260B0B0AE7D5441EC51B8FED056514185EB5178AF7D5441E17A143EDC565141EC51B82EAD7D544114AE4731E5565141E17A14FEAA7D5441F6285C4FEE5651417B14AE37A87D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000003B3CDBFDC0565141AFA48DECB17D54419A6C28A9CA56514148617375B07D5441B26DD16DCE5651414C89D7BCAF7D5441E713C571CE5651418C7498B6AF7D544107ACCF7BCE5651415B33B9A6AF7D5441DE456520CF5651411E792594AE7D5441230F8CB2D25651414624F6B9887D5441A8450F81D456514113A34A15757D544187946FE6D4565141390F7EC4707D5441487A66FAD55651418DBF449B647D54414C02AC72D65651416593A0BD5F7D544114AD8A85D5565141AC57FDBF5F7D5441C26D0E73C656514122D5814A627D5441D9814B40C3565141B2B297A8627D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985999 - 234590
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 9  </desc>
+<a>
+0106000000010000000103000000010000002A000000B748C51ECF5651415B8723A5AE7D5441F5C74847D25651411A5C659E8D7D54416947CB88D45651413B95E3E4747D5441457A66FAD55651418ABF449B647D54416CBC8FFDD6565141FE60291F5A7D5441779333EED75651411DE614D1597D544157AD0085D656514195B1236F697D5441FDADFDCFD35651410784D141877D5441A72155DFD15651410F659D8B9D7D54410862134BD0565141F260B0B0AE7D5441EC51B8FED056514185EB5178AF7D5441E17A143EDC565141EC51B82EAD7D544114AE4731E5565141E17A14FEAA7D5441F6285C4FEE5651417B14AE37A87D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000002FB63745C55651412849A2D9627D5441944748FEC556514178DB30D4627D54415DE6EC87CA5651413FEB032D627D5441DB90CD0ACE56514137FA006E617D5441582E5094D656514107193C855E7D5441EA0DE4F8D6565141110DE8215A7D54416062629DCF5651416B8442E15C7D544101010305CF565141BEF415195D7D54418F085E6ECC5651419D568E6F5D7D5441A25F7D42C756514154858A1A5E7D54411EFA6E3BC5565141BCB91B515E7D54416758DAA8C0565141AE352BCC5E7D5441DB0CBDADBB56514154FB37525F7D54412B66E4F4B9565141825890805F7D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985999 - 370848
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 9  </desc>
+<a>
+0106000000010000000103000000010000002A000000B748C51ECF5651415B8723A5AE7D5441F5C74847D25651411A5C659E8D7D54416947CB88D45651413B95E3E4747D5441457A66FAD55651418ABF449B647D54416CBC8FFDD6565141FE60291F5A7D5441779333EED75651411DE614D1597D544157AD0085D656514195B1236F697D5441FDADFDCFD35651410784D141877D5441A72155DFD15651410F659D8B9D7D54410862134BD0565141F260B0B0AE7D5441EC51B8FED056514185EB5178AF7D5441E17A143EDC565141EC51B82EAD7D544114AE4731E5565141E17A14FEAA7D5441F6285C4FEE5651417B14AE37A87D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000002FB63745C55651412849A2D9627D5441944748FEC556514178DB30D4627D54415DE6EC87CA5651413FEB032D627D5441DB90CD0ACE56514137FA006E617D5441582E5094D656514107193C855E7D5441EA0DE4F8D6565141110DE8215A7D54416062629DCF5651416B8442E15C7D544101010305CF565141BEF415195D7D54418F085E6ECC5651419D568E6F5D7D5441A25F7D42C756514154858A1A5E7D54411EFA6E3BC5565141BCB91B515E7D54416758DAA8C0565141AE352BCC5E7D5441DB0CBDADBB56514154FB37525F7D54412B66E4F4B9565141825890805F7D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>552671 - 58333
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000200000001030000000100000049000000666666761EE8504148E17AF4D5F25441EC51B83E23E8504148E17AE4D6F25441713D0A2729E8504152B81EA5DAF254410000000030E85041AE47E10ACAF25441666666361FE85041333333C3C9F254415C8FC2C516E85041AE47E13ACAF25441869563A7ECE75041D2EE843ED1F25441ACF95844D3E75041BA8EAB59CBF254416544D8AFC3E75041716A2F68C4F254413607E38EBBE75041DACBB457C0F25441A8710C72B4E750418E7C774FBEF2544133333303B1E750411F85EB81C1F254419A999989A4E750419A999969BEF254411F85EB81A3E750411F85EB51BEF25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006B0000005C8FC24507E75041000000F0C2F2544138F3ED581AE7504115BA1E57C9F25441A87298ED1AE75041C5B70589C9F25441F4831FDF1DE750414AF5F485CAF2544190EE977029E7504152840668CEF25441E39CAF8430E75041911949C8D0F25441037637F331E75041CCF3BB42D1F25441EF2CCF4932E75041E732705FD1F2544170BA37EB4BE7504131F970DED9F25441528D49E25FE750410E13AE7CE0F25441820A812D60E75041DCF69C95E0F254414A31CBC260E7504133AD19C7E0F254412224A29E6CE75041B5DE6EB5E4F254417205A92A6EE750419CB0B538E5F25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>552671 - 119309
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000200000001030000000100000049000000666666761EE8504148E17AF4D5F25441EC51B83E23E8504148E17AE4D6F25441713D0A2729E8504152B81EA5DAF254410000000030E85041AE47E10ACAF25441666666361FE85041333333C3C9F254415C8FC2C516E85041AE47E13ACAF25441869563A7ECE75041D2EE843ED1F25441ACF95844D3E75041BA8EAB59CBF254416544D8AFC3E75041716A2F68C4F254413607E38EBBE75041DACBB457C0F25441A8710C72B4E750418E7C774FBEF2544133333303B1E750411F85EB81C1F254419A999989A4E750419A999969BEF254411F85EB81A3E750411F85EB51BEF25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006C000000666666761EE8504148E17AF4D5F25441EC51B83E23E8504148E17AE4D6F25441713D0A2729E8504152B81EA5DAF254410000000030E85041AE47E10ACAF254416363DCDA22E8504189A9C0D2C9F254414089B0AD22E85041AFC9FFD1C9F2544102609FB220E85041DDB08AC9C9F25441666666361FE85041333333C3C9F254412FECBEF91BE85041629819F1C9F2544176CF323C17E85041ABCF5134CAF254415C8FC2C516E85041AE47E13ACAF2544127DD16A704E850416139613FCDF25441869563A7ECE75041D2EE843ED1F25441ACF95844D3E75041BA8EAB59CBF25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>552671 - 301393
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000200000001030000000100000049000000666666761EE8504148E17AF4D5F25441EC51B83E23E8504148E17AE4D6F25441713D0A2729E8504152B81EA5DAF254410000000030E85041AE47E10ACAF25441666666361FE85041333333C3C9F254415C8FC2C516E85041AE47E13ACAF25441869563A7ECE75041D2EE843ED1F25441ACF95844D3E75041BA8EAB59CBF254416544D8AFC3E75041716A2F68C4F254413607E38EBBE75041DACBB457C0F25441A8710C72B4E750418E7C774FBEF2544133333303B1E750411F85EB81C1F254419A999989A4E750419A999969BEF254411F85EB81A3E750411F85EB51BEF25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006C000000666666761EE8504148E17AF4D5F25441EC51B83E23E8504148E17AE4D6F25441713D0A2729E8504152B81EA5DAF254410000000030E85041AE47E10ACAF254416363DCDA22E8504189A9C0D2C9F254414089B0AD22E85041AFC9FFD1C9F2544102609FB220E85041DDB08AC9C9F25441666666361FE85041333333C3C9F254412FECBEF91BE85041629819F1C9F2544176CF323C17E85041ABCF5134CAF254415C8FC2C516E85041AE47E13ACAF2544127DD16A704E850416139613FCDF25441869563A7ECE75041D2EE843ED1F25441ACF95844D3E75041BA8EAB59CBF25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2907071 - 3046889
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000002000000DB0000003D0AD78346A95041295C8F62333254413D0AD7B348A950419A9999B92E325441713D0AF74CA950417B14AE17263254410000008053A9504152B81E951D325441A4703D5A57A9504152B81EC518325441295C8F5262A95041EC51B86E17325441295C8F926BA95041EC51B84E16325441EC51B8DE75A95041D7A3700D153254417B14AEA77FA950415C8FC245163254413333334389A95041CDCCCCDC16325441F6285C7F8CA950413D0AD743163254410AD7A3208FA950410000009015325441CDCCCC1C90A950415C8FC27515325441EC51B8AE99A950413D0AD7A317325441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000007508379147A950419EF58031133254413D3E294045A95041A12F1C9618325441656DD5DA43A950413D70C4F11B325441C3F3D24542A95041C76F23C01F32544173E5207640A950412C1FB21B24325441D3ED95843DA950415E271C242B325441F140AC7846A95041F250279E2F32544178F9AFF647A95041582163F02D32544133113CD04CA950413D512996233254416D64A8C151A95041FB80993E1D325441DB9F32DC55A950415C69636214325441CDC2030656A950415C69636214325441CAB61D9C56A950413D27603D10325441BE182F9156A95041B256611F0F325441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2907071 - 3583293
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000002000000DB0000003D0AD78346A95041295C8F62333254413D0AD7B348A950419A9999B92E325441713D0AF74CA950417B14AE17263254410000008053A9504152B81E951D325441A4703D5A57A9504152B81EC518325441295C8F5262A95041EC51B86E17325441295C8F926BA95041EC51B84E16325441EC51B8DE75A95041D7A3700D153254417B14AEA77FA950415C8FC245163254413333334389A95041CDCCCCDC16325441F6285C7F8CA950413D0AD743163254410AD7A3208FA950410000009015325441CDCCCC1C90A950415C8FC27515325441EC51B8AE99A950413D0AD7A317325441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000007508379147A950419EF58031133254413D3E294045A95041A12F1C9618325441656DD5DA43A950413D70C4F11B325441C3F3D24542A95041C76F23C01F32544173E5207640A950412C1FB21B24325441D3ED95843DA950415E271C242B325441F140AC7846A95041F250279E2F32544178F9AFF647A95041582163F02D32544133113CD04CA950413D512996233254416D64A8C151A95041FB80993E1D325441DB9F32DC55A950415C69636214325441CDC2030656A950415C69636214325441CAB61D9C56A950413D27603D10325441BE182F9156A95041B256611F0F325441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>211460 - 4132577
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -28  </desc>
+<a>
+0106000000020000000103000000010000000B000000E17A14DEF3295141B81E858B6B4055415C8FC215F3295141D7A3707D5C40554166666616F2295141AE47E16A5C405541295C8FE2D3295141295C8F025A4055411F85EB71D8295141A4703D7A80405541333333E3D8295141295C8F2280405541AE47E1EADC295141AE47E10A7D40554114AE4771E62951411F85EBD175405541CDCCCC2CEE295141AE47E1FA6F405541333333F3EF2951418FC2F5986E405541E17A14DEF3295141B81E858B6B4055410103000000010000000C00000014AE4741C3295141295C8FF244405541AE47E10AB82951410AD7A3804A4055410AD7A3 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000029A56D82F2295141734FBB725C4055412FBF2778F229514107FD0C805A4055417D189926F22951415FCEB7984D405541C5A59CFFF12951412963CA523E405541A5D22295F12951414BBE7EE23640554117D9CE57EB29514117D9CEC736405541759318A4EA295141819543D32E405541C1630D29DD2951410449C34636405541EDB4A63BCF2951419819C6503E405541D3DA4522CD295141F6D543B83F40554154E3A583CE295141BE9F1AC759405541AC39C9B4CB295141823CBBC95A40554181C54858BF295141F51F3C3C5F405541456A3168B62951416DDD6D7362405541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>211460 - 4132585
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -26  </desc>
+<a>
+0106000000020000000103000000010000000B000000E17A14DEF3295141B81E858B6B4055415C8FC215F3295141D7A3707D5C40554166666616F2295141AE47E16A5C405541295C8FE2D3295141295C8F025A4055411F85EB71D8295141A4703D7A80405541333333E3D8295141295C8F2280405541AE47E1EADC295141AE47E10A7D40554114AE4771E62951411F85EBD175405541CDCCCC2CEE295141AE47E1FA6F405541333333F3EF2951418FC2F5986E405541E17A14DEF3295141B81E858B6B4055410103000000010000000C00000014AE4741C3295141295C8FF244405541AE47E10AB82951410AD7A3804A4055410AD7A3 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000D34D6200D82951418716D91E81405541333333E3D8295141295C8F2280405541AE47E1EADC295141AE47E10A7D40554114AE4771E62951411F85EBD175405541CDCCCC2CEE295141AE47E1FA6F405541333333F3EF2951418FC2F5986E405541E17A14DEF3295141B81E858B6B4055415C8FC215F3295141D7A3707D5C40554129A56D82F2295141734FBB725C40554133333383F2295141E92631985C405541E923EDADE7295141EE577D965B4055413B9EE4ECDC2951418F05AB965A40554109EA47ECD829514124B433475A405541295C8FE2D3295141295C8F025A405541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>346410 - 1848169
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -594  </desc>
+<a>
+0106000000010000000103000000010000000E000000EEDEF462F3B450417BA84EA5B14B5441628FFF76F0B4504123406EDAB04B5441000000B0E9B4504185EB51E8AE4B544188023EF6E7B4504143126D77AE4B544152B81EF5E7B45041A4703D7AAE4B54411F85EB61D4B4504185EB5198DF4B5441E1625616C2B45041F391986D0E4C544188F9A916CBB45041DEDC28AE0D4C54415EB8BBB6CFB45041298FFC510D4C5441D00F0241E6B45041F58CCAE4D54B544165BBEF42E5B4504112039DA6D54B5441B0496FF0EAB450411DF7F9B8C64B54411027E987F1B45041A99A8E53B64B5441EEDEF462F3B450417BA84EA5B14B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000EFDEF462F3B450417AA84EA5B14B5441628FFF76F0B4504125406EDAB04B5441000000B0E9B4504185EB51E8AE4B544185023EF6E7B4504147126D77AE4B544152B81EF5E7B45041A4703D7AAE4B54411F85EB61D4B4504185EB5198DF4B5441E3625616C2B45041F291986D0E4C544183F9A916CBB45041E3DC28AE0D4C544166A10A41CEB45041D18A136F0D4C544100000060CEB45041D7A3701D0D4C5441E17A140EE6B4504152B81E85D64B544114AE47C1F4B45041CDCCCCBCB14B5441EFDEF462F3B450417AA84EA5B14B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>346410 - 3570758
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -594  </desc>
+<a>
+0106000000010000000103000000010000000E000000EEDEF462F3B450417BA84EA5B14B5441628FFF76F0B4504123406EDAB04B5441000000B0E9B4504185EB51E8AE4B544188023EF6E7B4504143126D77AE4B544152B81EF5E7B45041A4703D7AAE4B54411F85EB61D4B4504185EB5198DF4B5441E1625616C2B45041F391986D0E4C544188F9A916CBB45041DEDC28AE0D4C54415EB8BBB6CFB45041298FFC510D4C5441D00F0241E6B45041F58CCAE4D54B544165BBEF42E5B4504112039DA6D54B5441B0496FF0EAB450411DF7F9B8C64B54411027E987F1B45041A99A8E53B64B5441EEDEF462F3B450417BA84EA5B14B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000EFDEF462F3B450417AA84EA5B14B5441628FFF76F0B4504125406EDAB04B5441000000B0E9B4504185EB51E8AE4B544185023EF6E7B4504147126D77AE4B544152B81EF5E7B45041A4703D7AAE4B54411F85EB61D4B4504185EB5198DF4B5441E3625616C2B45041F291986D0E4C544183F9A916CBB45041E3DC28AE0D4C544166A10A41CEB45041D18A136F0D4C544100000060CEB45041D7A3701D0D4C5441E17A140EE6B4504152B81E85D64B544114AE47C1F4B45041CDCCCCBCB14B5441EFDEF462F3B450417AA84EA5B14B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>924345 - 2994880
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+010600000001000000010300000001000000260000007FE1709D14CB5041E4F32BEF483C544152B81EE526CB5041A4703D4A553C54413D0AD7832ACB5041295C8F52573C5441F6285C4F30CB5041EC51B8EE5B3C5441F6285C7F65CB5041F6285CBF5B3C54410000008085CB5041333333A35B3C54415C8FC22580CB5041CDCCCCAC2B3C5441295C8FC27ECB5041C3F5287C2A3C5441B81E855B65CB5041E17A148E2B3C5441B81E851B4CCB5041EC51B89E2C3C5441C024805934CB50412F70F61F2C3C5441AE47E10A32CB50410AD7A3102C3C5441713D0A8732CB5041CDCCCCEC3C3C5441666666862BCB5041295C8F223D3C5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000B229103C0DCB5041302A1CBF303C5441CDCCCC3C06CB50415C8FC2C5303C5441CE69BE9C05CB50412FD9CC722F3C5441E73B2AFB05CB504155BC7B402C3C544185EB5198FBCA50415C8FC2A52B3C5441F6285CFFFACA504148E17AB42C3C54410AD7A3A0FCCA504114AE47812F3C54419A99991905CB50410AD7A3903B3C54413333337308CB50410AD7A3903F3C5441501C776D0BCB50412D6ED593423C54412911782E0ECB50419724F595443C54414869F5A412CB5041179C62C4413C5441D2B2C60812CB50413BDDD8CC3D3C544168A7898711CB5041EB8181843A3C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>924345 - 3457141
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+010600000001000000010300000001000000260000007FE1709D14CB5041E4F32BEF483C544152B81EE526CB5041A4703D4A553C54413D0AD7832ACB5041295C8F52573C5441F6285C4F30CB5041EC51B8EE5B3C5441F6285C7F65CB5041F6285CBF5B3C54410000008085CB5041333333A35B3C54415C8FC22580CB5041CDCCCCAC2B3C5441295C8FC27ECB5041C3F5287C2A3C5441B81E855B65CB5041E17A148E2B3C5441B81E851B4CCB5041EC51B89E2C3C5441C024805934CB50412F70F61F2C3C5441AE47E10A32CB50410AD7A3102C3C5441713D0A8732CB5041CDCCCCEC3C3C5441666666862BCB5041295C8F223D3C5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000B229103C0DCB5041302A1CBF303C5441CDCCCC3C06CB50415C8FC2C5303C5441CE69BE9C05CB50412FD9CC722F3C5441E73B2AFB05CB504155BC7B402C3C544185EB5198FBCA50415C8FC2A52B3C5441F6285CFFFACA504148E17AB42C3C54410AD7A3A0FCCA504114AE47812F3C54419A99991905CB50410AD7A3903B3C54413333337308CB50410AD7A3903F3C5441501C776D0BCB50412D6ED593423C54412911782E0ECB50419724F595443C54414869F5A412CB5041179C62C4413C5441D2B2C60812CB50413BDDD8CC3D3C544168A7898711CB5041EB8181843A3C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>193076 - 3006221
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+01060000000100000001030000000100000013000000E5D37048F13051418635AF22017D5441311FAD09FA30514171A2CB74007D544197704B8704315141FF88F18CFF7C54415C0FCAB20B315141D9D5A83FFF7C5441B87A6B13143151418D6F17A5FE7C54417433ED211931514178DC33F7FD7C5441A83FB19A1C3151413C9607FCFC7C54414E654FFB2031514143D06F7EFA7C54412FEC6E301E315141F5BD4949F57C5441D52C626A1A315141FA30C857F67C544109547BBC15315141EE83E1C6F77C544138081600103151419670699BF87C54415C0FCAB20B315141F3F65FD5F87C5441098A256F05315141AC034D49F97C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C00000099C26E5EF0305141BDE9FC30F57C5441E3F3A7B9F0305141649D18E2F97C5441D9A392D5F0305141E22CA7E1F97C54412AC783D4F0305141303D8CD0F97C54413DC12CDEF230514193B663D9F97C5441B0B84464F9305141104DE1BEF97C54414F680BBEFE30514165B83287F97C544127ABDC04FF305141038A4383F97C54416EA7EDC9FF30514197FC4E7CF97C5441FE840EDA013151413C04D766F97C5441E759E6270931514158576D04F97C5441580FCAB20B315141F6F65FD5F87C54415E364CEB0E31514177CCFAA9F87C54417ED0E9C410315141A278EC7EF87C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>193076 - 3822498
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+01060000000100000001030000000100000013000000E5D37048F13051418635AF22017D5441311FAD09FA30514171A2CB74007D544197704B8704315141FF88F18CFF7C54415C0FCAB20B315141D9D5A83FFF7C5441B87A6B13143151418D6F17A5FE7C54417433ED211931514178DC33F7FD7C5441A83FB19A1C3151413C9607FCFC7C54414E654FFB2031514143D06F7EFA7C54412FEC6E301E315141F5BD4949F57C5441D52C626A1A315141FA30C857F67C544109547BBC15315141EE83E1C6F77C544138081600103151419670699BF87C54415C0FCAB20B315141F3F65FD5F87C5441098A256F05315141AC034D49F97C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C00000099C26E5EF0305141BDE9FC30F57C5441E3F3A7B9F0305141649D18E2F97C5441D9A392D5F0305141E22CA7E1F97C54412AC783D4F0305141303D8CD0F97C54413DC12CDEF230514193B663D9F97C5441B0B84464F9305141104DE1BEF97C54414F680BBEFE30514165B83287F97C544127ABDC04FF305141038A4383F97C54416EA7EDC9FF30514197FC4E7CF97C5441FE840EDA013151413C04D766F97C5441E759E6270931514158576D04F97C5441580FCAB20B315141F6F65FD5F87C54415E364CEB0E31514177CCFAA9F87C54417ED0E9C410315141A278EC7EF87C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>193210 - 1516221
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000010000000103000000010000001000000048E17AE467B05041295C8FC21BC3544185EB519864B050413D0AD79339C354411F85EB3160B05041295C8F6261C35441F6285CDF6BB0504148E17AB462C354417B14AEF775B0504185EB51D863C354411F85EB817AB050415C8FC21564C35441E17A14FE7EB05041AE47E1AA63C3544152B81EF582B050410000000062C3544114AE47E186B05041000000E05FC354411F85EBE18AB0504114AE47815DC35441E17A149E8EB0504148E17AB43BC35441000000D090B05041333333D327C35441B81E857B87B0504185EB510824C35441666666B67DB050411F85EBD121C35441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C638765D6FB050419E7CFDD51DC35441B382A2196EB05041DCC7077C1DC3544153C7A2056BB05041687E6D293EC35441193E32EB67B050414A30114262C3544190F639A968B0504178398C5762C35441F6285CDF6BB0504148E17AB462C354417B14AEF775B0504185EB51D863C354411F85EB817AB050415C8FC21564C35441E17A14FE7EB05041AE47E1AA63C3544152B81EF582B050410000000062C354410331A89F83B050418FB99CA361C35441CD130BB084B0504190CC472761C35441BD39815385B05041F4B86F6759C35441E95E9C3A87B0504198DB874B47C35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>193210 - 3640411
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000010000000103000000010000001000000048E17AE467B05041295C8FC21BC3544185EB519864B050413D0AD79339C354411F85EB3160B05041295C8F6261C35441F6285CDF6BB0504148E17AB462C354417B14AEF775B0504185EB51D863C354411F85EB817AB050415C8FC21564C35441E17A14FE7EB05041AE47E1AA63C3544152B81EF582B050410000000062C3544114AE47E186B05041000000E05FC354411F85EBE18AB0504114AE47815DC35441E17A149E8EB0504148E17AB43BC35441000000D090B05041333333D327C35441B81E857B87B0504185EB510824C35441666666B67DB050411F85EBD121C35441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C638765D6FB050419E7CFDD51DC35441B382A2196EB05041DCC7077C1DC3544153C7A2056BB05041687E6D293EC35441193E32EB67B050414A30114262C3544190F639A968B0504178398C5762C35441F6285CDF6BB0504148E17AB462C354417B14AEF775B0504185EB51D863C354411F85EB817AB050415C8FC21564C35441E17A14FE7EB05041AE47E1AA63C3544152B81EF582B050410000000062C354410331A89F83B050418FB99CA361C35441CD130BB084B0504190CC472761C35441BD39815385B05041F4B86F6759C35441E95E9C3A87B0504198DB874B47C35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6991 - 58982
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+0106000000010000000103000000010000000B000000CDCCCC6CD5B650417B14AE9783E15441D7A370ED7AB650419A9999A974E154411F85EBD174B65041B81E857B99E154411F85EBA175B65041713D0AA79AE154418FC2F59897B6504114AE4741A0E154413D0AD7339AB65041C3F528BC90E15441F6285C7FD3B65041F6285C6F9AE15441E17A14EED3B65041C3F5282C95E1544114AE4791D4B65041A4703D3A8CE15441A4703D1AD5B6504114AE47D18AE15441CDCCCC6CD5B650417B14AE9783E15441
+</a>
+
+<b>
+0106000000010000000103000000010000003A0000000579F0A4D1B65041825C01F882E154417B2C9CE3D0B650410E461CD882E154411C20BB1BC5B6504190598FE680E15441741825ADBFB65041DF34250180E154410491571FB6B65041E1EFA46D7EE15441543618B8AFB65041B6CD345F7DE1544160C32666AAB65041EF5D847E7CE154419B4AF6C7A6B650412E99B7E57BE15441BB0151DC97B650416952906F79E15441083BE34590B6504162991B2F78E15441E4E7DFD18AB650411441CC4877E154410DE693C786B6504123A9299E76E15441C992D2A180B650410789879A75E15441B6A670ED7AB65041139A99A974E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7081 - 142552
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000011000000E17A14EEF7BA5041000000105ADB54410AD7A370EFBA504185EB51C85ADB544148E17A54E9BA5041333333335BDB5441B81E85DBE3BA5041D7A3706D5BDB5441AE47E19AE2BA5041333333835BDB544148E17AA4E0BA5041B81E856B5DDB5441C3F5287CA3BA5041B81E85DB98DB544133333363A7BA50415C8FC2F59ADB544166666646B0BA50419A9999999FDB544166666636B9BA504133333313A4DB544152B81EA5BCBA5041A4703DBAA5DB54418FC2F558E3BA5041CDCCCC1C80DB54411F85EB71E4BA5041C3F5280C7FDB5441713D0AB706BB5041CDCCCCBC5DDB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003200000082227755AFBA5041F8FDCF1B9FDB5441996E2BAFB5BA5041D204F44EA2DB5441CB51168DB9BA50414200EF3CA4DB544139641FA5BCBA504191C93CBAA5DB544170A202D5C2BA50411CFADAB69FDB54417C28DA98C4BA5041F0B3B5FF9DDB54411D2F16ADC5BA50414AB93CF39CDB5441BB607FA5CABA50410668941E98DB54418D1E974DCCBA5041344E678296DB5441530A0DDECCBA5041BB8900F695DB5441FA96D312CDBA5041F89EB5C295DB54419530A68FD7BA5041AFD853918BDB54411D7CB5E6D9BA5041BFC9194B89DB5441774B2C37DFBA50411E40DD2084DB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>11035 - 52507
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000010000000AE47E10A76225141F6285C6F449D544152B81E657122514133333303449D544152B81E957022514148E17AA43F9D5441C3F528BC6F22514152B81E653D9D54417B14AE176022514114AE47613F9D54418FC2F5F84F225141CDCCCC6C419D544148E17A5457225141AE47E12A709D5441000000D063225141000000D0709D54417B14AE77752251419A9999B9719D54411F85EB3176225141B81E851B6B9D5441713D0A6777225141333333F3619D544152B81E0578225141B81E85AB5C9D54418FC2F5087822514114AE4761579D54415C8FC2B577225141EC51B85E529D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000B253055478225141C42BE0C7619D54414C75D41779225141D289B8CC5D9D5441BDE5074B792251416CBC09DD569D544161406361792251419FF7AFD5539D5441DE40B13F79225141AECDC16C529D5441E4BF2127792251414AA2AC65519D54412A97DF7C7822514124C01F7E4B9D54415C8FC2B57722514166666696449D544172CBF54076225141C66A0277449D54417BDD828E76225141569D1CED469D544153E8B146772251415EA8D3054D9D54411E6A1AD877225141E980B458539D5441F0502FF5772251416806EE0C559D5441AEAE7DEB77225141A8FB0205579D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>11035 - 62818
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000010000000AE47E10A76225141F6285C6F449D544152B81E657122514133333303449D544152B81E957022514148E17AA43F9D5441C3F528BC6F22514152B81E653D9D54417B14AE176022514114AE47613F9D54418FC2F5F84F225141CDCCCC6C419D544148E17A5457225141AE47E12A709D5441000000D063225141000000D0709D54417B14AE77752251419A9999B9719D54411F85EB3176225141B81E851B6B9D5441713D0A6777225141333333F3619D544152B81E0578225141B81E85AB5C9D54418FC2F5087822514114AE4761579D54415C8FC2B577225141EC51B85E529D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000B253055478225141C42BE0C7619D54414C75D41779225141D289B8CC5D9D5441BDE5074B792251416CBC09DD569D544161406361792251419FF7AFD5539D5441DE40B13F79225141AECDC16C529D5441E4BF2127792251414AA2AC65519D54412A97DF7C7822514124C01F7E4B9D54415C8FC2B57722514166666696449D544172CBF54076225141C66A0277449D54417BDD828E76225141569D1CED469D544153E8B146772251415EA8D3054D9D54411E6A1AD877225141E980B458539D5441F0502FF5772251416806EE0C559D5441AEAE7DEB77225141A8FB0205579D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>971934 - 3130518
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -50  </desc>
+<a>
+01060000000100000001030000000400000074000000CDCCCCACA8475141000000E014BE5441EC51B87EA94751416666665615BE5441C3F5289CA94751415C8FC20516BE544166666636AD475141B81E856B16BE54410AD7A3A0B0475141C3F528CC16BE54417B14AE47B44751413333333317BE544185EB5128B84751410AD7A3A017BE544114AE4761BE4751410AD7A35018BE5441F6285CDFBF4751419A99995918BE54419A9999A9C04751413D0AD7F318BE5441B81E856BC1475141E17A148E19BE5441E17A147EC2475141F6285CDF19BE5441713D0A97C347514148E17A641ABE54419A999949C44751419A9999791ABE5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003700000051E634B4C0475141287C382210BE5441A12C9A2BC04751414A29AE5612BE544109CBC4AABF475141B8B7076B14BE5441F5F2022CBF47514117ECCC7616BE544158C35DD9BE475141F1024CCC17BE54411752D7B8BE475141F57FB15218BE544114AE4761BE4751410AD7A35018BE54412591D441BE475141A343596419BE5441AE47E13ABE47514114AE47A119BE5441B38F6798BE47514128C9B4191ABE544123738463BF475141ED17541F1BBE5441C5076874C0475141566ACA7E1CBE544114AE4721C1475141D7A3705D1DBE5441E17A149EC2475141666666361DBE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>971934 - 3351026
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -50  </desc>
+<a>
+01060000000100000001030000000400000074000000CDCCCCACA8475141000000E014BE5441EC51B87EA94751416666665615BE5441C3F5289CA94751415C8FC20516BE544166666636AD475141B81E856B16BE54410AD7A3A0B0475141C3F528CC16BE54417B14AE47B44751413333333317BE544185EB5128B84751410AD7A3A017BE544114AE4761BE4751410AD7A35018BE5441F6285CDFBF4751419A99995918BE54419A9999A9C04751413D0AD7F318BE5441B81E856BC1475141E17A148E19BE5441E17A147EC2475141F6285CDF19BE5441713D0A97C347514148E17A641ABE54419A999949C44751419A9999791ABE5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003700000051E634B4C0475141287C382210BE5441A12C9A2BC04751414A29AE5612BE544109CBC4AABF475141B8B7076B14BE5441F5F2022CBF47514117ECCC7616BE544158C35DD9BE475141F1024CCC17BE54411752D7B8BE475141F57FB15218BE544114AE4761BE4751410AD7A35018BE54412591D441BE475141A343596419BE5441AE47E13ABE47514114AE47A119BE5441B38F6798BE47514128C9B4191ABE544123738463BF475141ED17541F1BBE5441C5076874C0475141566ACA7E1CBE544114AE4721C1475141D7A3705D1DBE5441E17A149EC2475141666666361DBE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13927 - 1422450
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -508  </desc>
+<a>
+010600000001000000010300000001000000270000009A999999001C5141CDCCCC2CFC21554152B81EA5FE1B5141C3F5280CFD21554166666676FD1B5141AE47E13AFE215541E17A14BEFC1B51418FC2F5B8FF21554133333313FC1B51413D0AD743012255419A9999C9FA1B5141A4703D9A022255413D0AD793F81B51410000006003225541713D0AE7F51B5141D7A370DD04225541AE47E13AF31B5141E17A144E06225541E17A147EF01B5141295C8FB2072255410AD7A350F01B5141CDCCCC2C082255418FC2F5E8EF1B51418FC2F59808225541000000D0EF1B514133333333092255415C8FC275EF1B51415C8FC2F509225541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000260000009A999999001C5141CDCCCC2CFC21554152B81EA5FE1B5141C3F5280CFD21554166666676FD1B5141AE47E13AFE215541E17A14BEFC1B51418FC2F5B8FF21554133333313FC1B51413D0AD743012255419A9999C9FA1B5141A4703D9A022255413D0AD793F81B51410000006003225541713D0AE7F51B5141D7A370DD04225541AE47E13AF31B5141E17A144E06225541E17A147EF01B5141295C8FB2072255410AD7A350F01B5141CDCCCC2C082255418FC2F5E8EF1B51418FC2F59808225541000000D0EF1B514133333333092255415C8FC275EF1B51415C8FC2F509225541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13927 - 3534514
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -508  </desc>
+<a>
+010600000001000000010300000001000000270000009A999999001C5141CDCCCC2CFC21554152B81EA5FE1B5141C3F5280CFD21554166666676FD1B5141AE47E13AFE215541E17A14BEFC1B51418FC2F5B8FF21554133333313FC1B51413D0AD743012255419A9999C9FA1B5141A4703D9A022255413D0AD793F81B51410000006003225541713D0AE7F51B5141D7A370DD04225541AE47E13AF31B5141E17A144E06225541E17A147EF01B5141295C8FB2072255410AD7A350F01B5141CDCCCC2C082255418FC2F5E8EF1B51418FC2F59808225541000000D0EF1B514133333333092255415C8FC275EF1B51415C8FC2F509225541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000260000009A999999001C5141CDCCCC2CFC21554152B81EA5FE1B5141C3F5280CFD21554166666676FD1B5141AE47E13AFE215541E17A14BEFC1B51418FC2F5B8FF21554133333313FC1B51413D0AD743012255419A9999C9FA1B5141A4703D9A022255413D0AD793F81B51410000006003225541713D0AE7F51B5141D7A370DD04225541AE47E13AF31B5141E17A144E06225541E17A147EF01B5141295C8FB2072255410AD7A350F01B5141CDCCCC2C082255418FC2F5E8EF1B51418FC2F59808225541000000D0EF1B514133333333092255415C8FC275EF1B51415C8FC2F509225541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>19079 - 265641
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -169  </desc>
+<a>
+0106000000010000000103000000010000000F0000001F85EBE10D725141295C8FF2369B54411F85EBE10D72514152B81ED52E9B5441CDCCCC3CFE715141713D0A072F9B54419A9999E9FD7151417B14AE67289B54411F85EBD1F77151411F85EB51279B5441295C8F92F5715141CDCCCC7C309B544152B81EF5F17151417B14AE873D9B544152B81EB5F0715141E17A14BE409B5441E17A143EEF7151415C8FC245439B54415C8FC2A5EC715141713D0A57469B54415C8FC2F5EC715141CDCCCCAC4D9B54413D0AD7B30E725141F6285C6F4E9B5441000000300E7251419A9999294C9B5441D7A370AD0E725141713D0A47379B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000B81E851BFB7151415C8FC205649B54413A9955ADFF71514196DB0DAA649B5441BD908AD9FF7151412FCAE6F6639B5441B8F22BF7067251413F404EEF649B5441828C2554077251411F541AA9659B5441D16F275C0C72514160023B67669B544141CABC6E2A72514199FA75A56A9B5441EBDE4EB7307251418B5204876B9B54410E7A616035725141FDD826336C9B5441C6D9F89A367251416D21A3626C9B5441814BF6E9347251412D47E121619B54418D957DC3237251411BFFD5155F9B544186A1C065237251415CD1BD374F9B5441208CCCE7227251413B42FA324F9B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>27037 - 59307
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+010600000001000000010300000001000000120000000AD7A39099E85041D7A370EDECFD5441AE47E1EAA5E850413D0AD7E3EAFD5441EC51B85EA1E85041F6285C5FD7FD5441A4703D5AA0E85041A4703DCACEFD544100000040A0E850410AD7A3E0C3FD544148E17A449DE85041B81E857BA3FD54419A9999A98CE8504100000010A3FD544185EB51588AE8504100000010A3FD54415C8FC2D588E8504114AE47C1A3FD54417B14AE478AE8504133333323B0FD5441000000908BE85041D7A3702DBBFD54415C8FC2F58CE850410AD7A360C2FD5441333333D38FE850418FC2F578CBFD5441A4703D8A92E8504114AE4771D4FD5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000260000006F2E33CFA3E85041C3B893D7E1FD5441620DEEE2A1E85041044ACB96D9FD5441EC51B85EA1E85041F6285C5FD7FD5441D5ACF215A1E850414C2A89F9D4FD5441FE5CDD0EA1E850417F14CABDD4FD544188839690A0E85041DDADA894D0FD5441618CE47EA0E85041E5EB66FFCFFD5441A4703D5AA0E85041A4703DCACEFD5441B08DAC55A0E85041C2C921E4CCFD544100000040A0E850410AD7A3E0C3FD5441C4A046889EE850413CDB7D38B1FD544173D949509EE85041D39C5FD8AEFD5441F804A4239EE850413D4E6CF3ACFD544153086F109EE85041A080CD22ACFD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>27067 - 59317
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -19  </desc>
+<a>
+0106000000010000000103000000010000000D000000C3F5282C98E95041E17A14EECBFF544152B81E459FE9504152B81EA5B6FF54411F85EBF19EE9504152B81E35B5FF5441B81E857B9DE950411F85EB21B0FF544148E17AF49AE950419A999979A2FF54413333337397E950410000008094FF54415C8FC2D596E95041AE47E19A94FF544114AE47E195E9504152B81EC594FF54410AD7A3408EE950415C8FC22597FF54410AD7A3C092E95041D7A370BDAFFF54417B14AE2797E95041B81E85CBC7FF544152B81E7597E950413D0AD773C9FF5441C3F5282C98E95041E17A14EECBFF5441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000B81E857B9DE950411F85EB21B0FF5441963372729CE95041DFB99389AAFF54414E88CFF99BE950415958B7FDA7FF544162BFDC479BE95041444B293CA4FF54415A91104E9AE95041535013E29FFF544141E4C9289AE950412820734D9FFF54417FAAE39999E9504126E5AF139DFF5441122F0E4999E9504167A563D19BFF544100CDE1FC98E95041AE79ACA19AFF5441E1956E2998E950411198965697FF544196F7BB7797E950416C2A149294FF5441E3C093E18EE950419E8098F396FF5441A2C685448EE95041736BFA3A97FF544150D961628FE95041C08433559DFF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>30106 - 4022982
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -97  </desc>
+<a>
+0106000000010000000103000000010000001A000000CDCCCC4C384A5141EC51B8DE4D885441F6285C4F504A5141713D0A474D885441EC51B82E504A5141A4703D7A45885441CDCCCC5C514A514185EB51D84488544166666666544A51415C8FC2F5438854419A999939574A514152B81EB5438854413D0AD7735C4A5141A4703DCA4388544185EB5178614A5141A4703DCA4388544185EB5178614A5141D7A3701D4A88544185EB5198614A51413D0AD7A34F885441CDCCCC4C624A5141D7A370CD58885441F6285C6F664A5141666666165888544152B81ED5694A51410000003057885441CDCCCCBC734A51415C8FC23557885441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000085EB5198614A51413D0AD7A34F885441731535DD614A5141CF8FE8C258885441F6285C6F664A5141666666165888544152B81ED5694A51410000003057885441CDCCCCBC734A51415C8FC235578854410AD7A3F0794A51417B14AE3758885441333333C3804A514152B81E8559885441000000D0814A5141713D0AB7588854419A9999E9824A5141CDCCCC8C49885441CDCCCC9C844A51411F85EB3132885441666666E6874A51419A9999D904885441B81E85FB864A51417B14AEB70388544114AE4761854A51413333338303885441A4703DEA644A5141333333C302885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>232507 - 203812
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000027000000A4703D2A62AB5041F6285C7F1D605441CDCCCC8C5EAB504114AE4711196054417B14AEE756AB5041C3F5280C0B60544148E17A7454AB5041333333030C6054410AD7A3A04CAB50415C8FC2F50D605441F6285CFF45AB5041B81E85DB006054411F85EBB13BAB5041C3F5289CEC5F54410AD7A3F038AB50410AD7A330E75F54415C8FC2552FAB5041C3F528CCE85F5441B81E859B28AB50411F85EB01EA5F54415C8FC2D526AB504152B81EB5EA5F5441CDCCCC5C26AB5041713D0AF7EB5F54413D0AD77336AB5041000000300B605441D7A370DD3CAB5041000000F008605441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000360000008D1E852BA3AB5041878FC28535605441EDCE8930A8AB50413ABD9E0F36605441F9DFE73EA8AB5041E3542911366054418FC2F5C8B3AB5041767A144E37605441E1B7A1CAB3AB5041CC9FA70D376054418FC7C3CEB3AB5041C0925F6E3660544191B415D0B3AB5041AD6E803B3660544112AE47D1B3AB504122A4700D3660544145A0F85E9EAB5041161594C033605441BBEA71AE9CAB5041A41E30923360544152B81E5582AB5041EC51B8BE3060544184BDC5FD7EAB504136270A12306054413485EBB17BAB5041E614AE672F605441095C8F7276AB504176D7A3102D605441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>232507 - 377960
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000027000000A4703D2A62AB5041F6285C7F1D605441CDCCCC8C5EAB504114AE4711196054417B14AEE756AB5041C3F5280C0B60544148E17A7454AB5041333333030C6054410AD7A3A04CAB50415C8FC2F50D605441F6285CFF45AB5041B81E85DB006054411F85EBB13BAB5041C3F5289CEC5F54410AD7A3F038AB50410AD7A330E75F54415C8FC2552FAB5041C3F528CCE85F5441B81E859B28AB50411F85EB01EA5F54415C8FC2D526AB504152B81EB5EA5F5441CDCCCC5C26AB5041713D0AF7EB5F54413D0AD77336AB5041000000300B605441D7A370DD3CAB5041000000F008605441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000360000008D1E852BA3AB5041878FC28535605441EDCE8930A8AB50413ABD9E0F36605441F9DFE73EA8AB5041E3542911366054418FC2F5C8B3AB5041767A144E37605441E1B7A1CAB3AB5041CC9FA70D376054418FC7C3CEB3AB5041C0925F6E3660544191B415D0B3AB5041AD6E803B3660544112AE47D1B3AB504122A4700D3660544145A0F85E9EAB5041161594C033605441BBEA71AE9CAB5041A41E30923360544152B81E5582AB5041EC51B8BE3060544184BDC5FD7EAB504136270A12306054413485EBB17BAB5041E614AE672F605441095C8F7276AB504176D7A3102D605441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>583948 - 69345
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -125  </desc>
+<a>
+01060000000100000001030000000100000015000000023F275C16E050419B8D01B97EEA5441E85A37DC16E050413D9FF4D87AEA54411CCB67EC16E05041C0C840E078EA5441E45D920B17E050418132ECE677EA5441D8CC7C5917E05041109758A675EA5441873D7C1418E050418618B18271EA5441713D0AE71AE050411F85EB7163EA5441F6285C4F21E0504148E17A0461EA54410000008029E05041E17A145E5DEA5441295C8FB223E05041295C8F5258EA5441D7A3704D20E05041EC51B85E55EA5441713D0A1718E0504185EB51D85AEA54419A9999D90FE050419A99996960EA54411F85EB210DE05041F6285C3F62EA5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000000000008029E05041E17A145E5DEA5441F6285C4F21E0504148E17A0461EA54410840096F1BE050411B71723E63EA544128F1B71C1BE050410D3BCAF363EA5441CC25F69C18E05041B907F8CD70EA544103147AB817E050417C34C99F75EA5441D54E9E3E17E050411CF1013E78EA5441F61087B516E05041DEB02DDF7BEA5441A4703D5A16E050415C8FC2D57EEA54413D0AD74319E05041C3F5289C7FEA544185EB519824E050418FC2F54882EA5441295C8F422FE050411F85EB7185EA5441E5EAD73F30E05041DF42E5E285EA5441E263280532E05041EC8A78407EEA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>583948 - 1536298
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -125  </desc>
+<a>
+01060000000100000001030000000100000015000000023F275C16E050419B8D01B97EEA5441E85A37DC16E050413D9FF4D87AEA54411CCB67EC16E05041C0C840E078EA5441E45D920B17E050418132ECE677EA5441D8CC7C5917E05041109758A675EA5441873D7C1418E050418618B18271EA5441713D0AE71AE050411F85EB7163EA5441F6285C4F21E0504148E17A0461EA54410000008029E05041E17A145E5DEA5441295C8FB223E05041295C8F5258EA5441D7A3704D20E05041EC51B85E55EA5441713D0A1718E0504185EB51D85AEA54419A9999D90FE050419A99996960EA54411F85EB210DE05041F6285C3F62EA5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000000000008029E05041E17A145E5DEA5441F6285C4F21E0504148E17A0461EA54410540096F1BE050411671723E63EA544128F1B71C1BE050410D3BCAF363EA5441CC25F69C18E05041B907F8CD70EA544103147AB817E050417C34C99F75EA5441D54E9E3E17E050411CF1013E78EA5441F61087B516E05041DEB02DDF7BEA5441A4703D5A16E050415C8FC2D57EEA54413D0AD74319E05041C3F5289C7FEA544185EB519824E050418FC2F54882EA5441295C8F422FE050411F85EB7185EA5441E3EAD73F30E05041DB42E5E285EA5441E263280532E05041EC8A78407EEA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>198514 - 396603
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -53  </desc>
+<a>
+01060000000100000001030000000100000039000000295C8F4290F350419A9999B99A0B55418FC2F56893F35041333333C39C0B5541A4703DBA95F350419A9999699D0B554114AE47319BF35041B81E85AB9C0B55411F85EB31A0F350417B14AE479B0B5541000000B0A2F35041CDCCCC3C990B554114AE4771A8F35041CDCCCC1C970B5541A4703D5AADF350419A999989950B5541CDCCCCCCABF350419A999999960B5541F6285CAFA5F35041B81E853B9B0B5541B81E850BA0F3504148E17AD49E0B55417B14AE5799F3504148E17A24A20B5541D7A3705D96F35041F6285C3FA40B5541E17A149E92F35041CDCCCCCCA50B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000000000409EF350411F85EB31AA0B55417A7FD14B9EF350418B1C7976AA0B5541B0A04FFCA2F35041A14E537FA80B554116BA5592A6F350418FEF0DEBA50B554198FFE9F6AAF3504142D2CBC7A10B55415F7636A4ADF350418517B1929E0B554114AE4799AEF3504183C0CA019B0B5541FE14C38BAFF35041B33B0BDC980B55418D2F96BDB2F35041242138AA950B5541A0B371EDB4F35041C131E658920B5541A0B371ADB5F35041D5DF2DBA900B5541B106983DB3F350413E9741FA910B5541FB941525B2F3504135F70A98920B5541428C9370AFF350416FDC1A57940B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>43678 - 1525387
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -57  </desc>
+<a>
+010600000001000000010300000001000000090000003D0AD78303D9504152B81E2526FF544185EB514800D95041D7A3703D27FF544185EB5178FCD85041000000D028FF5441E17A144EEFD85041EC51B8FE2EFF544152B81E95F0D85041AE47E15A36FF5441EC51B8BEF1D85041CDCCCCCC35FF5441D7A370ADF1D850419A99995933FF54417B14AE1702D95041000000502DFF54413D0AD78303D9504152B81E2526FF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000EC51B8BEF1D85041CDCCCCCC35FF544114C226AFF1D85041A9891FA233FF5441946B14AFF1D85041F270169F33FF5441FE9514F9F6D850413881FD6631FF5441537E0A2102D9504196ED3FB22CFF54413D0AD78303D9504152B81E2526FF544185EB514800D95041D7A3703D27FF544185EB5178FCD85041000000D028FF5441E17A144EEFD85041EC51B8FE2EFF544152B81E95F0D85041AE47E15A36FF5441EC51B8BEF1D85041CDCCCCCC35FF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>43678 - 3202647
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -57  </desc>
+<a>
+010600000001000000010300000001000000090000003D0AD78303D9504152B81E2526FF544185EB514800D95041D7A3703D27FF544185EB5178FCD85041000000D028FF5441E17A144EEFD85041EC51B8FE2EFF544152B81E95F0D85041AE47E15A36FF5441EC51B8BEF1D85041CDCCCCCC35FF5441D7A370ADF1D850419A99995933FF54417B14AE1702D95041000000502DFF54413D0AD78303D9504152B81E2526FF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000EC51B8BEF1D85041CDCCCCCC35FF544114C226AFF1D85041A9891FA233FF5441946B14AFF1D85041F270169F33FF5441FE9514F9F6D850413881FD6631FF5441537E0A2102D9504196ED3FB22CFF54413D0AD78303D9504152B81E2526FF544185EB514800D95041D7A3703D27FF544185EB5178FCD85041000000D028FF5441E17A144EEFD85041EC51B8FE2EFF544152B81E95F0D85041AE47E15A36FF5441EC51B8BEF1D85041CDCCCCCC35FF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>46604 - 1530156
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+01060000000100000001030000000100000008000000AE47E18A3AD35041F6285CDF1C095541C3F528DC33D350415C8FC2F5360955411F85EB415AD3504185EB51E8310955419A99995960D350419A9999891C09554185EB519866D3504114AE47A1060955418FC2F58841D35041AE47E16A080955411F85EBF13FD35041D7A370AD09095541AE47E18A3AD35041F6285CDF1C095541
+</a>
+
+<b>
+01060000000100000001030000000100000019000000EFCCC5BB59D35041808FA0820E095541DDC2306B5AD3504191EC53EB090955415D8FC26D5AD3504107AC1CDA09095541DCF97EB25AD350418B6CE70B09095541DCF97EB25AD3504160C2B5C207095541075AB7B35AD3504114D940B9070955414B0CB8B35AD3504156967FB807095541663B1FB85AD3504171C61B97070955411ED402C55AD35041DFE6373307095541DD2F0B535AD35041AE16103907095541FACA1DCA59D35041F671653F0709554185DD45CC59D3504184FCBC31070955418FC2F58841D35041AE47E16A080955411F85EBF13FD35041D7A370AD09095541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>46604 - 3485440
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+01060000000100000001030000000100000008000000AE47E18A3AD35041F6285CDF1C095541C3F528DC33D350415C8FC2F5360955411F85EB415AD3504185EB51E8310955419A99995960D350419A9999891C09554185EB519866D3504114AE47A1060955418FC2F58841D35041AE47E16A080955411F85EBF13FD35041D7A370AD09095541AE47E18A3AD35041F6285CDF1C095541
+</a>
+
+<b>
+01060000000100000001030000000100000019000000EFCCC5BB59D35041808FA0820E095541DDC2306B5AD3504191EC53EB090955415D8FC26D5AD3504107AC1CDA09095541DCF97EB25AD350418B6CE70B09095541DCF97EB25AD3504160C2B5C207095541075AB7B35AD3504114D940B9070955414B0CB8B35AD3504156967FB807095541663B1FB85AD3504171C61B97070955411ED402C55AD35041DFE6373307095541DD2F0B535AD35041AE16103907095541FACA1DCA59D35041F671653F0709554185DD45CC59D3504184FCBC31070955418FC2F58841D35041AE47E16A080955411F85EBF13FD35041D7A370AD09095541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>55231 - 2909492
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000001E000000713D0AB7276051410AD7A300849154413D0AD7332660514114AE47B181915441713D0A772260514185EB51587A9154410AD7A3C00F6051419A9999A9539154415C8FC2F50D60514185EB51985291544166666646ED5F51417B14AE2754915441D7A370CDA35F51419A9999A957915441F6285C1F7D5F5141295C8F8259915441E17A143E7C5F51413D0AD7C35A915441713D0AA7805F514100000010699154411F85EBD1825F5141B81E85DB73915441713D0A97835F51418FC2F5A87C915441E17A147E835F5141E17A14BE8491544100000050825F5141B81E85CB8C915441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000E2000000D7A3705DAE5F51415C8FC21596915441BC6BD892AE5F5141E78E5B0F96915441DF119DAEB05F5141CE2BA6CE95915441AA405093B25F514175D18A9495915441A2C9CF47B45F5141A3C436609591544165C14623B65F51418DD73627959154418F6D59DFB85F5141FFBA49D394915441026A647EB95F514173BB38C094915441607524DDBC5F5141FE15CB5894915441805C2843BF5F5141BB112F0F949154413CD01630C25F5141B17F66B59391544196D6F626C55F514181C26C5A93915441B7031A3FC85F5141D03476FB9291544102774781CA5F5141E10A26B692915441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>55231 - 3206347
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000001E000000713D0AB7276051410AD7A300849154413D0AD7332660514114AE47B181915441713D0A772260514185EB51587A9154410AD7A3C00F6051419A9999A9539154415C8FC2F50D60514185EB51985291544166666646ED5F51417B14AE2754915441D7A370CDA35F51419A9999A957915441F6285C1F7D5F5141295C8F8259915441E17A143E7C5F51413D0AD7C35A915441713D0AA7805F514100000010699154411F85EBD1825F5141B81E85DB73915441713D0A97835F51418FC2F5A87C915441E17A147E835F5141E17A14BE8491544100000050825F5141B81E85CB8C915441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000E2000000D7A3705DAE5F51415C8FC21596915441BC6BD892AE5F5141E78E5B0F96915441DF119DAEB05F5141CE2BA6CE95915441AA405093B25F514175D18A9495915441A2C9CF47B45F5141A3C436609591544165C14623B65F51418DD73627959154418F6D59DFB85F5141FFBA49D394915441026A647EB95F514173BB38C094915441607524DDBC5F5141FE15CB5894915441805C2843BF5F5141BB112F0F949154413CD01630C25F5141B17F66B59391544196D6F626C55F514181C26C5A93915441B7031A3FC85F5141D03476FB9291544102774781CA5F5141E10A26B692915441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>55357 - 5219097
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000C000000000000C0105F5141E17A14AE539B5441713D0A372F5F5141E17A147E5F9B5441000000B0455F514148E17A44249B5441F6285C8F1B5F5141AE47E1FA0C9B54410AD7A3D01A5F5141666666E60C9B5441D7A370AD1A5F514148E17AE40D9B544114AE47D1195F5141AE47E1CA0C9B54410AD7A3900F5F5141000000B00B9B5441D7A3700D0B5F5141333333132F9B54418FC2F588065F5141B81E857B529B54411F85EB21105F5141C3F5289C539B5441000000C0105F5141E17A14AE539B5441
+</a>
+
+<b>
+010600000001000000010300000001000000190000007C7B07392F5F51419166D6785F9B5441D733D3573A5F514177C1442A429B5441BBBBACAE455F5141C70EC849249B54412CEA1BC8325F5141D01D0ED1199B54412881895F1D5F5141048078FB0D9B5441A7D1A8C81A5F51411C4C01200D9B5441650FFCE4165F5141AFD23A7A0C9B54410AD7A3900F5F5141000000B00B9B5441CDCCCCBC015F5141295C8F320A9B5441D7A3708DF15E51413D0AD773089B5441333333F3EA5E5141E17A14BE079B544148E17AD4D85E5141B81E85CB059B544152B81EB5D75E5141E17A14AE069B5441CDCCCC5CD35E5141E17A14BE289B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>58233 - 1838748
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -107  </desc>
+<a>
+010600000001000000010300000001000000230000001F85EB515EB0504152B81E25D44E5441AE47E19A63B0504148E17A94D54E5441F6285C5F61B05041295C8F22D04E54418FC2F5585EB050418FC2F508D14E54410AD7A3005EB0504133333373CE4E5441F6285CCF61B050411F85EB21CE4E5441D7A3706D6AB050410AD7A390C94E54415C8FC26573B050417B14AE07C94E54413D0AD7F376B05041E17A141EC94E54413D0AD7D377B05041E17A14BEBC4E54419A9999F95FB050413D0AD773B84E5441E17A141E5DB0504152B81EA5B74E5441A4703D1A5CB0504166666626BC4E5441A4703D3A54B050418FC2F528BB4E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F0000002E7F09E861B05041F42C0BFFE04E54415BA8E4EB61B05041D9DFE7F9E04E5441DCD5D0F461B050416A3A51A6DE4E5441BED36C9562B050410E46F732DB4E5441B8D6314762B0504121357CC0D84E54412A8EF3F260B0504141950A08D74E544185EB51D85DB050411F85EB21D64E54418881FFD85DB05041C8C1FB1DD64E5441097D97AE59B05041BCC02725D54E54413A6918E555B05041A3A3523ED44E5441EF11993053B0504132EB598DD34E5441105A44AA50B050419258E8B5D24E5441E8707E4350B05041FB379828D24E5441E17A143E50B050411F85EB31D24E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>58233 - 3816459
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -107  </desc>
+<a>
+010600000001000000010300000001000000230000001F85EB515EB0504152B81E25D44E5441AE47E19A63B0504148E17A94D54E5441F6285C5F61B05041295C8F22D04E54418FC2F5585EB050418FC2F508D14E54410AD7A3005EB0504133333373CE4E5441F6285CCF61B050411F85EB21CE4E5441D7A3706D6AB050410AD7A390C94E54415C8FC26573B050417B14AE07C94E54413D0AD7F376B05041E17A141EC94E54413D0AD7D377B05041E17A14BEBC4E54419A9999F95FB050413D0AD773B84E5441E17A141E5DB0504152B81EA5B74E5441A4703D1A5CB0504166666626BC4E5441A4703D3A54B050418FC2F528BB4E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F0000002E7F09E861B05041F42C0BFFE04E54415BA8E4EB61B05041D9DFE7F9E04E5441DCD5D0F461B050416A3A51A6DE4E5441BED36C9562B050410E46F732DB4E5441B8D6314762B0504121357CC0D84E54412A8EF3F260B0504141950A08D74E544185EB51D85DB050411F85EB21D64E54418881FFD85DB05041C8C1FB1DD64E5441097D97AE59B05041BCC02725D54E54413A6918E555B05041A3A3523ED44E5441EF11993053B0504132EB598DD34E5441105A44AA50B050419258E8B5D24E5441E8707E4350B05041FB379828D24E5441E17A143E50B050411F85EB31D24E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>58660 - 1840484
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 8  </desc>
+<a>
+0106000000010000000103000000010000001100000085EB513843AB5041E17A142E444D544185EB511846AB50418FC2F558744D5441000000E048AB50415C8FC235A24D5441D7A3702D4AAB50413D0AD763A34D5441A4703DAA71AB5041B81E85BBA14D54418FC2F56894AB504185EB5148A04D54419A99998995AB5041AE47E1FA9E4D5441D7A370DD90AB50415C8FC2656D4D544114AE47818FAB5041295C8FE25E4D5441A4703D0A8EAB50410AD7A3B05C4D5441666666D686AB5041EC51B8DE584D5441000000507CAB5041D7A370BD534D54411F85EBE169AB5041AE47E19A4B4D5441CDCCCCCC60AB50415C8FC275484D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000005000000A71ED91F46AB5041445B27D5744D544119D6804047AB50412A522F6F874D54416A8BEA3C94AB5041E5379630914D5441DA5FF0F492AB504188DD3C98834D5441A71ED91F46AB5041445B27D5744D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>58660 - 3329596
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 8  </desc>
+<a>
+0106000000010000000103000000010000001100000085EB513843AB5041E17A142E444D544185EB511846AB50418FC2F558744D5441000000E048AB50415C8FC235A24D5441D7A3702D4AAB50413D0AD763A34D5441A4703DAA71AB5041B81E85BBA14D54418FC2F56894AB504185EB5148A04D54419A99998995AB5041AE47E1FA9E4D5441D7A370DD90AB50415C8FC2656D4D544114AE47818FAB5041295C8FE25E4D5441A4703D0A8EAB50410AD7A3B05C4D5441666666D686AB5041EC51B8DE584D5441000000507CAB5041D7A370BD534D54411F85EBE169AB5041AE47E19A4B4D5441CDCCCCCC60AB50415C8FC275484D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000005000000A71ED91F46AB5041445B27D5744D544119D6804047AB50412A522F6F874D54416A8BEA3C94AB5041E5379630914D5441DA5FF0F492AB504188DD3C98834D5441A71ED91F46AB5041445B27D5744D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>60052 - 57799
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000020000000103000000010000001C00000014AE47E1E9B450413333339338D95441333333F3E7B4504185EB514837D954410AD7A3E0E6B450417B14AEB735D954410AD7A300E5B45041CDCCCC7C35D9544114AE4781E0B450417B14AEE738D9544152B81EE5DEB450411F85EBC13CD954418FC2F5A8DBB450418FC2F5D840D95441CDCCCC1CD2B45041D7A3703D4AD9544114AE4711CCB45041713D0AB74FD95441CDCCCC5CC6B4504114AE473152D954415C8FC275C3B450411F85EB6154D95441AE47E15AC1B4504114AE479156D9544100000040BEB45041EC51B85E59D954413D0AD783B2B450413333339360D95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000003333337374B450419A99993962D954416737BA3F73B450416491CC7761D954414B3F157C71B45041993BFB9161D954419A99992970B4504152B81EF561D954415C8FC2756EB450416666668662D9544152B81EF56DB45041E17A140E64D95441C3F5280C6AB45041E17A149E6AD9544148E17A7468B45041CDCCCC1C6CD95441713D0AB766B45041CDCCCC4C6DD9544152B81E9564B4504152B81EF56CD95441CDCCCCCC62B45041EC51B8AE6AD9544148E17A3461B45041295C8F326AD95441B81E85EB5FB450411F85EBE16BD9544148E17A645EB45041E17A14FE6CD95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>468013 - 1728447
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -153  </desc>
+<a>
+0106000000010000000103000000010000000700000048E17A0483A35041C3F5287C301E5541713D0A4780A35041A4703D4A2F1E5541EC51B8FE7BA35041C3F5284C3E1E554114AE47117AA350413D0AD7D33D1E5541666666F676A35041A4703DCA481E5541EC51B89E7BA350417B14AE274A1E554148E17A0483A35041C3F5287C301E5541
+</a>
+
+<b>
+0106000000010000000103000000010000000900000048E17A0483A35041C3F5287C301E5541713D0A4780A35041A4703D4A2F1E5541EC51B8FE7BA35041C3F5284C3E1E554114AE47117AA350413D0AD7D33D1E5541666666F676A35041A4703DCA481E5541E548E6927AA35041F03630D9491E5541FD380A0B78A3504192982DC8521E55418FC2F53879A3504148E17A74521E554148E17A0483A35041C3F5287C301E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>468013 - 3368410
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -153  </desc>
+<a>
+0106000000010000000103000000010000000700000048E17A0483A35041C3F5287C301E5541713D0A4780A35041A4703D4A2F1E5541EC51B8FE7BA35041C3F5284C3E1E554114AE47117AA350413D0AD7D33D1E5541666666F676A35041A4703DCA481E5541EC51B89E7BA350417B14AE274A1E554148E17A0483A35041C3F5287C301E5541
+</a>
+
+<b>
+0106000000010000000103000000010000000900000048E17A0483A35041C3F5287C301E5541713D0A4780A35041A4703D4A2F1E5541EC51B8FE7BA35041C3F5284C3E1E554114AE47117AA350413D0AD7D33D1E5541666666F676A35041A4703DCA481E5541E548E6927AA35041F03630D9491E5541FD380A0B78A3504192982DC8521E55418FC2F53879A3504148E17A74521E554148E17A0483A35041C3F5287C301E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>65002 - 2998417
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000001E00000066666636D5E35041F6285C2F596054417B14AE47D2E35041F6285C5F5D60544152B81E25CCE35041CDCCCC2C61605441F6285C1FCBE3504148E17A6463605441B81E85BBCFE35041713D0A6765605441D7A3705DE2E350417B14AE876D6054418FC2F528F0E35041AE47E18A73605441AE47E11AF1E3504152B81EF573605441B81E855BE7E35041F6285C4F8A605441EC51B84EE7E35041F6285C6F8B60544166666666E8E35041E17A141E8D605441666666D6FAE35041CDCCCC0C9A605441666666B620E45041295C8FD2AE605441666666E621E45041295C8F92AE605441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000003F53FB00F5E350418A1CDA5E396054416B8E1FCBDBE35041CABC3B3468605441C14F7218DAE35041932D5F676860544146B85AC0CBE350415CB1540762605441F6285C1FCBE3504148E17A6463605441B81E85BBCFE35041713D0A67656054410E59CC5BE2E350419DBFF6866D6054411089D495E2E35041994F8EFF6C605441FBBC8595E3E35041B25FD5E76660544136DD79AEE5E3504152EB3BB661605441DBD72E79ECE3504149EBD56D53605441012CD491EFE35041200619094E60544154A92EF7F2E35041AAC530D7496054419F517928F9E35041D8A1C6BF42605441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>65002 - 3590044
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000001E00000066666636D5E35041F6285C2F596054417B14AE47D2E35041F6285C5F5D60544152B81E25CCE35041CDCCCC2C61605441F6285C1FCBE3504148E17A6463605441B81E85BBCFE35041713D0A6765605441D7A3705DE2E350417B14AE876D6054418FC2F528F0E35041AE47E18A73605441AE47E11AF1E3504152B81EF573605441B81E855BE7E35041F6285C4F8A605441EC51B84EE7E35041F6285C6F8B60544166666666E8E35041E17A141E8D605441666666D6FAE35041CDCCCC0C9A605441666666B620E45041295C8FD2AE605441666666E621E45041295C8F92AE605441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000003F53FB00F5E350418A1CDA5E396054416B8E1FCBDBE35041CABC3B3468605441C14F7218DAE35041932D5F676860544146B85AC0CBE350415CB1540762605441F6285C1FCBE3504148E17A6463605441B81E85BBCFE35041713D0A67656054410E59CC5BE2E350419DBFF6866D6054411089D495E2E35041994F8EFF6C605441FBBC8595E3E35041B25FD5E76660544136DD79AEE5E3504152EB3BB661605441DBD72E79ECE3504149EBD56D53605441012CD491EFE35041200619094E60544154A92EF7F2E35041AAC530D7496054419F517928F9E35041D8A1C6BF42605441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>67920 - 1441893
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -78  </desc>
+<a>
+010600000001000000010300000001000000110000008FC2F5A8D3F15041B81E85BB5010554166666626D5F150411F85EB41511055418FC2F578D8F15041D7A3706D52105541CDCCCC8CDEF150415C8FC2855310554152B81EE5E0F15041A4703D1A54105541AE47E16AE1F15041713D0AB73B1055417B14AE67E0F15041F6285C5F3A10554166666696DDF150413D0AD7B33510554152B81E35DBF15041B81E85DB3110554114AE47C1DBF15041295C8FB22D10554185EB5138D9F15041EC51B8FE2C10554152B81E15D4F15041713D0A272D105541295C8F22D3F15041F6285C2F2D1055410AD7A350D3F15041B81E85EB30105541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D8F4BA5CD3F15041A13802685010554166666626D5F150411F85EB41511055418FC2F578D8F15041D7A3706D52105541CDCCCC8CDEF150415C8FC2855310554152B81EE5E0F15041A4703D1A54105541AE47E16AE1F15041713D0AB73B1055417B14AE67E0F15041F6285C5F3A1055417D3E478EDDF150414A11B8A63510554144908009DCF15041332E32DC311055419F74BB93DCF150418196CDF12D10554185EB5138D9F15041EC51B8FE2C10554152B81E15D4F15041713D0A272D1055418707C0DDD1F15041A398CF3A2D10554154037A58D2F15041A5586B1431105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>67920 - 3441998
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -78  </desc>
+<a>
+010600000001000000010300000001000000110000008FC2F5A8D3F15041B81E85BB5010554166666626D5F150411F85EB41511055418FC2F578D8F15041D7A3706D52105541CDCCCC8CDEF150415C8FC2855310554152B81EE5E0F15041A4703D1A54105541AE47E16AE1F15041713D0AB73B1055417B14AE67E0F15041F6285C5F3A10554166666696DDF150413D0AD7B33510554152B81E35DBF15041B81E85DB3110554114AE47C1DBF15041295C8FB22D10554185EB5138D9F15041EC51B8FE2C10554152B81E15D4F15041713D0A272D105541295C8F22D3F15041F6285C2F2D1055410AD7A350D3F15041B81E85EB30105541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D8F4BA5CD3F15041A13802685010554166666626D5F150411F85EB41511055418FC2F578D8F15041D7A3706D52105541CDCCCC8CDEF150415C8FC2855310554152B81EE5E0F15041A4703D1A54105541AE47E16AE1F15041713D0AB73B1055417B14AE67E0F15041F6285C5F3A1055417D3E478EDDF150414A11B8A63510554144908009DCF15041332E32DC311055419F74BB93DCF150418196CDF12D10554185EB5138D9F15041EC51B8FE2C10554152B81E15D4F15041713D0A272D1055418707C0DDD1F15041A398CF3A2D10554154037A58D2F15041A5586B1431105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>471071 - 1061146
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000F000000D7A3703DC8275141F6285C9F727A54413D0AD7E3C7275141333333C3707A5441E17A147EC82751417B14AED76E7A544166666686C92751410AD7A3E06C7A54418FC2F5C8C82751413D0AD7A36A7A5441C3F528FCC8275141CDCCCCBC697A5441B81E854B752751410AD7A3203A7A544148E17AF47027514148E17A24417A544185EB51F868275141E17A140E4E7A54419A9999797A2751417B14AE47587A544100000040BF2751417B14AE677F7A54419A9999D9C127514185EB51387F7A54415C8FC215C52751418FC2F548797A544114AE47E1C7275141295C8F62747A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000572B5350712751417AC7BD95407A5441607B4BB76F275141A56CD825437A544185EB51F868275141E17A140E4E7A54419A9999797A2751417B14AE47587A544100000040BF2751417B14AE677F7A54419A9999D9C127514185EB51387F7A54415C8FC215C52751418FC2F548797A544114AE47E1C7275141295C8F62747A54419EF0C822C8275141D8683F31737A54410044A41FC8275141D8683F31737A54414134952BC82751415425C9F6727A5441572B5350712751417AC7BD95407A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>471071 - 3538369
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000F000000D7A3703DC8275141F6285C9F727A54413D0AD7E3C7275141333333C3707A5441E17A147EC82751417B14AED76E7A544166666686C92751410AD7A3E06C7A54418FC2F5C8C82751413D0AD7A36A7A5441C3F528FCC8275141CDCCCCBC697A5441B81E854B752751410AD7A3203A7A544148E17AF47027514148E17A24417A544185EB51F868275141E17A140E4E7A54419A9999797A2751417B14AE47587A544100000040BF2751417B14AE677F7A54419A9999D9C127514185EB51387F7A54415C8FC215C52751418FC2F548797A544114AE47E1C7275141295C8F62747A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000572B5350712751417AC7BD95407A5441607B4BB76F275141A56CD825437A544185EB51F868275141E17A140E4E7A54419A9999797A2751417B14AE47587A544100000040BF2751417B14AE677F7A54419A9999D9C127514185EB51387F7A54415C8FC215C52751418FC2F548797A544114AE47E1C7275141295C8F62747A54419EF0C822C8275141D8683F31737A54410044A41FC8275141D8683F31737A54414134952BC82751415425C9F6727A5441572B5350712751417AC7BD95407A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960135 - 855352
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -29  </desc>
+<a>
+01060000000100000001030000000100000016000000695933E40B6451411738E76B87715441DE3168DEFE6351417D8A3D478B7154417BC1F000FF635141E99F42AC8B7154419050C4600F64514114654EEF867154416086131B13645141C9F5D2DA85715441D734C43D1664514153C5DAFB8471544199D0A8B81C6451419225670883715441EF4E13D520645141B9E13ED081715441FF62A7DF24645141D91185D680715441B300C1D828645141E2D2CDE17F715441D5C1F2EB296451415467D5977F71544199C06CD62E645141C676040D7E7154412B1877403264514182931ABA7C715441CECAE82932645141649364657C715441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000A4703D4A3B6451418FC2F5F88571544185EB51284464514114AE470184715441AE47E17A60645141B81E85BB7D7154418FC2F5D8646451413D0AD7C37C715441A4703D6A60645141D7A3706D67715441CDCCCCEC5F645141EC51B88E67715441C3F5280C5464514114AE47516A71544185EB51E846645141000000606D715441F6285C6F3964514152B81E85707154419A9999692D6451413D0AD7C37371544148E17AD41C645141295C8F4278715441D7A370EDFC635141713D0A777E71544148E17AD4FB635141C3F528CC7E71544100000080FE635141333333638B715441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960135 - 1256368
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+01060000000100000001030000000100000016000000695933E40B6451411738E76B87715441DE3168DEFE6351417D8A3D478B7154417BC1F000FF635141E99F42AC8B7154419050C4600F64514114654EEF867154416086131B13645141C9F5D2DA85715441D734C43D1664514153C5DAFB8471544199D0A8B81C6451419225670883715441EF4E13D520645141B9E13ED081715441FF62A7DF24645141D91185D680715441B300C1D828645141E2D2CDE17F715441D5C1F2EB296451415467D5977F71544199C06CD62E645141C676040D7E7154412B1877403264514182931ABA7C715441CECAE82932645141649364657C715441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003100000073FF49F0EE635141140712FE907154417B14AE97ED635141A4703D8A91715441A4703DEAEA63514114AE479192715441CDCCCC4CD2635141EC51B80E9A715441E17A14AED46351419A999959AA715441295C8FD2F36351415C8FC2059C71544114AE4771F86351411F85EB01997154413D0AD7831A6451419A9999998E715441D7A3708D2A645141000000B089715441A4703D4A3B6451418FC2F5F88571544185EB51284464514114AE470184715441AE47E17A60645141B81E85BB7D7154418FC2F5D8646451413D0AD7C37C715441A4703D6A60645141D7A3706D67715441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960135 - 3468357
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+01060000000100000001030000000100000016000000695933E40B6451411738E76B87715441DE3168DEFE6351417D8A3D478B7154417BC1F000FF635141E99F42AC8B7154419050C4600F64514114654EEF867154416086131B13645141C9F5D2DA85715441D734C43D1664514153C5DAFB8471544199D0A8B81C6451419225670883715441EF4E13D520645141B9E13ED081715441FF62A7DF24645141D91185D680715441B300C1D828645141E2D2CDE17F715441D5C1F2EB296451415467D5977F71544199C06CD62E645141C676040D7E7154412B1877403264514182931ABA7C715441CECAE82932645141649364657C715441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003100000073FF49F0EE635141140712FE907154417B14AE97ED635141A4703D8A91715441A4703DEAEA63514114AE479192715441CDCCCC4CD2635141EC51B80E9A715441E17A14AED46351419A999959AA715441295C8FD2F36351415C8FC2059C71544114AE4771F86351411F85EB01997154413D0AD7831A6451419A9999998E715441D7A3708D2A645141000000B089715441A4703D4A3B6451418FC2F5F88571544185EB51284464514114AE470184715441AE47E17A60645141B81E85BB7D7154418FC2F5D8646451413D0AD7C37C715441A4703D6A60645141D7A3706D67715441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>971998 - 58524
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -35  </desc>
+<a>
+0106000000010000000103000000010000000A000000D20B5DDF04BD50412DD3D1E3B2CF54418F5529AC3FBD504107BB88F3BDCF5441B81E85AB3FBD5041A4703DCABDCF5441D7A3706D3FBD50417B14AEB7ADCF54418FC2F58839BD5041713D0AC7ABCF54417B14AE172CBD5041E17A14FEA7CF5441C3F5284C20BD5041AE47E16AA5CF54413D0AD70313BD50415C8FC225A3CF5441B81E859B04BD5041295C8F52A1CF5441D20B5DDF04BD50412DD3D1E3B2CF5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000002405F2AD04BD504158DDF417A6CF544161AE40E004BD5041E97151E3B2CF5441CA4834EC1BBD5041FFF7E039B7CF544197B485562FBD5041BE9CE3E0BACF5441692C37AA3FBD50410BBB85F2BDCF5441B81E85AB3FBD5041A4703DCABDCF5441F7BCDD9D3FBD5041F74B4941BACF544120C9EC5A3FBD5041A9931BB4ADCF54418388831739BD504197D418A7ABCF54418623C09438BD5041E52C4782ABCF5441247B53BC37BD5041C6E75645ABCF54416E05C3CD2BBD5041BD71D9F4A7CF5441B47BC2111FBD5041F0032635A5CF54419B02F6C41EBD504184020628A5CF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>208500 - 1621857
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -145  </desc>
+<a>
+0106000000010000000103000000010000001A000000D7A370ED28935041B81E855B4144554148E17A0429935041713D0A37424455418FC2F5982893504152B81E9543445541B81E855B25935041A4703D3A434455416666660625935041A4703D3A434455413D0AD7C324935041EC51B8CE45445541713D0AF724935041C3F5287C48445541B81E853B269350419A9999B94944554148E17A44279350411F85EB014A44554148E17AC428935041713D0AE74944554114AE47512B93504152B81E9548445541E17A14FE2D935041C3F5281C46445541713D0A372D935041333333A33E445541A4703D7A2B935041F6285C5F3E445541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000576E5BEE28935041EAC82D5B414455418FC2F5982893504152B81E95434455411CE3BFBC279350414F92F86D434455414A57436027935041C5356E83444455417622B1F326935041AF0998604544554119C7E85E26935041C2FF19C1454455415ED69CC724935041B8EE390146445541713D0AF724935041C3F5287C48445541B81E853B269350419A9999B94944554148E17A44279350411F85EB014A44554148E17AC428935041713D0AE74944554114AE47512B93504152B81E9548445541E17A14FE2D935041C3F5281C46445541713D0A372D935041333333A33E445541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>208500 - 4281603
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -145  </desc>
+<a>
+0106000000010000000103000000010000001A000000D7A370ED28935041B81E855B4144554148E17A0429935041713D0A37424455418FC2F5982893504152B81E9543445541B81E855B25935041A4703D3A434455416666660625935041A4703D3A434455413D0AD7C324935041EC51B8CE45445541713D0AF724935041C3F5287C48445541B81E853B269350419A9999B94944554148E17A44279350411F85EB014A44554148E17AC428935041713D0AE74944554114AE47512B93504152B81E9548445541E17A14FE2D935041C3F5281C46445541713D0A372D935041333333A33E445541A4703D7A2B935041F6285C5F3E445541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000576E5BEE28935041EAC82D5B414455418FC2F5982893504152B81E95434455411CE3BFBC279350414F92F86D434455414A57436027935041C5356E83444455417622B1F326935041AF0998604544554119C7E85E26935041C2FF19C1454455415ED69CC724935041B8EE390146445541713D0AF724935041C3F5287C48445541B81E853B269350419A9999B94944554148E17A44279350411F85EB014A44554148E17AC428935041713D0AE74944554114AE47512B93504152B81E9548445541E17A14FE2D935041C3F5281C46445541713D0A372D935041333333A33E445541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>86154 - 56608
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 9  </desc>
+<a>
+01060000000100000001030000000100000014000000295C8FC2F1B45041E17A14FE6A085541713D0A17F3B450411F85EB516A085541B81E85FBF4B450418FC2F57865085541E17A142EF7B45041295C8F32610855417B14AEB7F9B45041333333335E0855410AD7A380FCB45041E17A14AE5B0855417B14AED70BB55041F6285C0F520855413D0AD7030CB55041D7A370CD50085541AE47E1FAFBB45041666666D63F0855418FC2F598F1B45041295C8FE234085541CDCCCC0CE9B45041EC51B8DE2B085541713D0AC7CDB450410AD7A3303B085541D7A370ADC9B450410AD7A3E03D08554148E17AF4C5B450415C8FC21541085541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000002501DDBAD1B450416770006962085541295C8FC2F1B45041E17A14FE6A085541713D0A17F3B450411F85EB516A085541B81E85FBF4B450418FC2F57865085541E17A142EF7B45041295C8F32610855417B14AEB7F9B45041333333335E0855410AD7A380FCB45041E17A14AE5B0855417B14AED70BB55041F6285C0F520855413D0AD7030CB55041D7A370CD50085541CDCCCC0CE9B45041EC51B8DE2B085541713D0AC7CDB450410AD7A3303B085541D7A370ADC9B450410AD7A3E03D08554148E17AF4C5B450415C8FC21541085541713D0A57BCB45041000000804A085541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>91539 - 39658
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000100000001030000000100000008000000666666A6CCBB5041D7A3707D2B76544152B81EE5C8BB504185EB51682D765441D7A3700DC5BB5041EC51B85E2F76544185EB51D8C7BB50415C8FC235437654417B14AEA7CBBB5041CDCCCC5C43765441713D0AD7CFBB50417B14AE87437654418FC2F5B8CCBB50410AD7A3702B765441666666A6CCBB5041D7A3707D2B765441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000D15BD25AC5BB504111517F84317654415F2CCD73C5BB5041E72A5F1F3276544134C7BB2CC9BB504116A83B8030765441E491CAF9CBBB504137E1D8913176544103C73517CFBB50411C0458BD3D7654415D015F82CEBB504116BA363F39765441666666A6CCBB5041D7A3707D2B765441D7A3700DC5BB5041EC51B85E2F765441D15BD25AC5BB504111517F8431765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>91539 - 78678
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000100000001030000000100000008000000666666A6CCBB5041D7A3707D2B76544152B81EE5C8BB504185EB51682D765441D7A3700DC5BB5041EC51B85E2F76544185EB51D8C7BB50415C8FC235437654417B14AEA7CBBB5041CDCCCC5C43765441713D0AD7CFBB50417B14AE87437654418FC2F5B8CCBB50410AD7A3702B765441666666A6CCBB5041D7A3707D2B765441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000D15BD25AC5BB504111517F84317654415F2CCD73C5BB5041E72A5F1F3276544134C7BB2CC9BB504116A83B8030765441E491CAF9CBBB504137E1D8913176544103C73517CFBB50411C0458BD3D7654415D015F82CEBB504116BA363F39765441666666A6CCBB5041D7A3707D2B765441D7A3700DC5BB5041EC51B85E2F765441D15BD25AC5BB504111517F8431765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>92278 - 1796120
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000002A000000000000602BA7504114AE4741147854419A9999B92AA75041B81E853B117854418FC2F5482AA7504185EB51480E7854411F85EB6128A75041666666760C785441CDCCCC3C27A75041B81E856B0A7854413D0AD7C327A75041AE47E12A087854411F85EB412FA75041CDCCCC6CFF77544152B81E6531A7504152B81E45FF7754410AD7A30034A750415C8FC29500785441B81E85DB37A7504152B81E1504785441C3F5289C3AA750413333338304785441EC51B84E3EA750413D0AD783FA775441B81E852B3FA75041A4703D7AF87754410AD7A3C041A7504185EB5158F6775441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000000000602BA7504114AE4741147854419A9999B92AA75041B81E853B117854418FC2F5482AA7504185EB51480E7854411F85EB6128A75041666666760C785441CDCCCC3C27A75041B81E856B0A7854413D0AD7C327A75041AE47E12A087854411F85EB412FA75041CDCCCC6CFF77544152B81E6531A7504152B81E45FF7754410AD7A30034A750415C8FC29500785441B81E85DB37A7504152B81E1504785441C3F5289C3AA750413333338304785441EC51B84E3EA750413D0AD783FA775441B81E852B3FA75041A4703D7AF87754410AD7A3C041A7504185EB5158F6775441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>92278 - 3401927
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000002A000000000000602BA7504114AE4741147854419A9999B92AA75041B81E853B117854418FC2F5482AA7504185EB51480E7854411F85EB6128A75041666666760C785441CDCCCC3C27A75041B81E856B0A7854413D0AD7C327A75041AE47E12A087854411F85EB412FA75041CDCCCC6CFF77544152B81E6531A7504152B81E45FF7754410AD7A30034A750415C8FC29500785441B81E85DB37A7504152B81E1504785441C3F5289C3AA750413333338304785441EC51B84E3EA750413D0AD783FA775441B81E852B3FA75041A4703D7AF87754410AD7A3C041A7504185EB5158F6775441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000000000602BA7504114AE4741147854419A9999B92AA75041B81E853B117854418FC2F5482AA7504185EB51480E7854411F85EB6128A75041666666760C785441CDCCCC3C27A75041B81E856B0A7854413D0AD7C327A75041AE47E12A087854411F85EB412FA75041CDCCCC6CFF77544152B81E6531A7504152B81E45FF7754410AD7A30034A750415C8FC29500785441B81E85DB37A7504152B81E1504785441C3F5289C3AA750413333338304785441EC51B84E3EA750413D0AD783FA775441B81E852B3FA75041A4703D7AF87754410AD7A3C041A7504185EB5158F6775441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235506 - 272239
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -212  </desc>
+<a>
+0106000000010000000103000000010000001B0000005C8FC27522A151415C8FC2D563A054418FC2F5282BA15141E17A14CE5EA054419A9999792DA1514114AE47315DA054417B14AE072FA15141295C8FB25BA054415C8FC23530A15141E17A148E59A054411F85EB2131A15141295C8F9254A05441F6285C2F2BA15141D7A3709D51A054418FC2F53828A15141A4703DFA52A05441295C8F021BA1514185EB51B853A05441B81E85EB20A15141C3F528CC4CA05441AE47E16A20A1514152B81E954BA054419A9999E920A15141C3F5284C4BA05441E17A145E20A151419A9999994AA054415C8FC2951FA15141295C8F624AA05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000B36AC6E623A15141E3EF680063A054417F7241A426A15141135CD76A61A05441C4603AE727A15141DC35BAA160A054411BC632242BA15141685F58B05EA054417173288E2DA15141286A65195DA05441F972F6062FA15141A06A97A05BA054417516431630A151417E9E109159A05441A740F4A230A15141F53C504057A0544154441EC430A1514117F5308D56A05441DD465FEC30A15141ADBBC6B355A0544105C4811C2FA15141EA4BA3C454A054412244A66A2DA15141A0A376FD53A054411BF58E442BA15141692FAC1153A05441282569F229A1514152DE20FC52A05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235713 - 1176925
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+0106000000010000000103000000010000000C000000666666560A9F51413D0AD79318A154415C8FC2E50B9F514152B81EE519A1544166666676129F51413D0AD7A315A1544166666616FF9E5141333333F304A154413D0AD7C3EB9E5141EC51B84EF4A05441000000A0DB9E5141B81E855BE3A054413D0AD713DA9E51410AD7A390E7A0544133333363D79E5141C3F528CCECA0544185EB5158E69E5141295C8F92FAA0544185EB5138EE9E5141AE47E14A02A154418FC2F598F69E5141C3F5281C09A15441666666560A9F51413D0AD79318A15441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000077A647A80A9F514109E4FDD818A154418DCE9C35009F5141EC693BA410A15441668FC7F3F09E5141634D178404A154417ADC8BEEEF9E51418EBB80AF03A154412F1D0171EE9E5141CD4C027902A15441DDAACAC6EC9E514122FB9FE000A1544130D28284D79E5141FD68D6EAECA0544133333363D79E5141C3F528CCECA0544152B81EA5D69E5141E17A143EEEA0544152B81E35D59E51411F85EB41F1A05441295C8F62D39E51413D0AD713F5A05441E17A14EEDE9E5141666666B6FFA054410AD7A3B0E39E51417B14AE7704A15441C3F5282CF09E51415C8FC2D50EA15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235713 - 3478977
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+0106000000010000000103000000010000000C000000666666560A9F51413D0AD79318A154415C8FC2E50B9F514152B81EE519A1544166666676129F51413D0AD7A315A1544166666616FF9E5141333333F304A154413D0AD7C3EB9E5141EC51B84EF4A05441000000A0DB9E5141B81E855BE3A054413D0AD713DA9E51410AD7A390E7A0544133333363D79E5141C3F528CCECA0544185EB5158E69E5141295C8F92FAA0544185EB5138EE9E5141AE47E14A02A154418FC2F598F69E5141C3F5281C09A15441666666560A9F51413D0AD79318A15441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000077A647A80A9F514109E4FDD818A154418DCE9C35009F5141EC693BA410A15441668FC7F3F09E5141634D178404A154417ADC8BEEEF9E51418EBB80AF03A154412F1D0171EE9E5141CD4C027902A15441DDAACAC6EC9E514122FB9FE000A1544130D28284D79E5141FD68D6EAECA0544133333363D79E5141C3F528CCECA0544152B81EA5D69E5141E17A143EEEA0544152B81E35D59E51411F85EB41F1A05441295C8F62D39E51413D0AD713F5A05441E17A14EEDE9E5141666666B6FFA054410AD7A3B0E39E51417B14AE7704A15441C3F5282CF09E51415C8FC2D50EA15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>102830 - 2889953
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -44  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703DAAC8575141000000A0069254410AD7A350AF57514152B81E05DF915441CDCCCC1CA0575141EC51B80ED09154417B14AE577B575141E17A14EEB39154410AD7A3B07B5751418FC2F578B891544148E17AF47A5751415C8FC285BD915441EC51B8BE78575141EC51B8FEC09154415C8FC2A576575141000000B0C69154419A9999E9755751411F85EB61C9915441AE47E15A735751417B14AEA7C991544148E17A847357514148E17A14D1915441666666C6735751419A9999B9D6915441C3F5285C8B575141C3F5284CDA915441B81E859B8B5751419A9999C9E2915441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000006880E4527B575141420D1BFDB3915441A5BBCE6F8C5751413013A201C19154418D152D67A1575141A668E153D1915441A4EB9B4CA957514126613353D89154411F1A28DBAD57514128E89480D69154412DB11168A957514168E4F570D0915441161DE2DDA25751410D9C5E4EC8915441DF7DDF0C9F5751416067B9D5C3915441F274536D935751416DEE1EBCB791544101DE00C28E57514129579D97B3915441F85C3D398857514191B71E0DAF915441A2DB81D57E575141E00E37FDA89154417D2272D17D5751413C59222CAC9154416880E4527B575141420D1BFDB3915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>102830 - 5230330
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -44  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703DAAC8575141000000A0069254410AD7A350AF57514152B81E05DF915441CDCCCC1CA0575141EC51B80ED09154417B14AE577B575141E17A14EEB39154410AD7A3B07B5751418FC2F578B891544148E17AF47A5751415C8FC285BD915441EC51B8BE78575141EC51B8FEC09154415C8FC2A576575141000000B0C69154419A9999E9755751411F85EB61C9915441AE47E15A735751417B14AEA7C991544148E17A847357514148E17A14D1915441666666C6735751419A9999B9D6915441C3F5285C8B575141C3F5284CDA915441B81E859B8B5751419A9999C9E2915441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000006880E4527B575141420D1BFDB3915441A5BBCE6F8C5751413013A201C19154418D152D67A1575141A668E153D1915441A4EB9B4CA957514121613353D89154411B1A28DBAD57514124E89480D69154412DB11168A957514168E4F570D0915441161DE2DDA25751410D9C5E4EC8915441DF7DDF0C9F5751416067B9D5C3915441F274536D935751416DEE1EBCB791544101DE00C28E57514129579D97B3915441F85C3D398857514191B71E0DAF915441A2DB81D57E575141E00E37FDA89154417D2272D17D5751413C59222CAC9154416880E4527B575141420D1BFDB3915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>102830 - 5242399
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -44  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703DAAC8575141000000A0069254410AD7A350AF57514152B81E05DF915441CDCCCC1CA0575141EC51B80ED09154417B14AE577B575141E17A14EEB39154410AD7A3B07B5751418FC2F578B891544148E17AF47A5751415C8FC285BD915441EC51B8BE78575141EC51B8FEC09154415C8FC2A576575141000000B0C69154419A9999E9755751411F85EB61C9915441AE47E15A735751417B14AEA7C991544148E17A847357514148E17A14D1915441666666C6735751419A9999B9D6915441C3F5285C8B575141C3F5284CDA915441B81E859B8B5751419A9999C9E2915441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000006880E4527B575141420D1BFDB3915441A5BBCE6F8C5751413013A201C19154418D152D67A1575141A668E153D1915441A4EB9B4CA957514121613353D89154411B1A28DBAD57514124E89480D69154412DB11168A957514168E4F570D0915441161DE2DDA25751410D9C5E4EC8915441DF7DDF0C9F5751416067B9D5C3915441F274536D935751416DEE1EBCB791544101DE00C28E57514129579D97B3915441F85C3D398857514191B71E0DAF915441A2DB81D57E575141E00E37FDA89154417D2272D17D5751413C59222CAC9154416880E4527B575141420D1BFDB3915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>102830 - 408824
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -44  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703DAAC8575141000000A0069254410AD7A350AF57514152B81E05DF915441CDCCCC1CA0575141EC51B80ED09154417B14AE577B575141E17A14EEB39154410AD7A3B07B5751418FC2F578B891544148E17AF47A5751415C8FC285BD915441EC51B8BE78575141EC51B8FEC09154415C8FC2A576575141000000B0C69154419A9999E9755751411F85EB61C9915441AE47E15A735751417B14AEA7C991544148E17A847357514148E17A14D1915441666666C6735751419A9999B9D6915441C3F5285C8B575141C3F5284CDA915441B81E859B8B5751419A9999C9E2915441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000006880E4527B575141420D1BFDB3915441A5BBCE6F8C5751413013A201C19154418D152D67A1575141A668E153D1915441A4EB9B4CA957514121613353D89154411B1A28DBAD57514124E89480D69154412DB11168A957514168E4F570D0915441161DE2DDA25751410D9C5E4EC8915441DF7DDF0C9F5751416067B9D5C3915441F274536D935751416DEE1EBCB791544101DE00C28E57514129579D97B3915441F85C3D398857514191B71E0DAF915441A2DB81D57E575141E00E37FDA89154417D2272D17D5751413C59222CAC9154416880E4527B575141420D1BFDB3915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>102830 - 410373
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -44  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703DAAC8575141000000A0069254410AD7A350AF57514152B81E05DF915441CDCCCC1CA0575141EC51B80ED09154417B14AE577B575141E17A14EEB39154410AD7A3B07B5751418FC2F578B891544148E17AF47A5751415C8FC285BD915441EC51B8BE78575141EC51B8FEC09154415C8FC2A576575141000000B0C69154419A9999E9755751411F85EB61C9915441AE47E15A735751417B14AEA7C991544148E17A847357514148E17A14D1915441666666C6735751419A9999B9D6915441C3F5285C8B575141C3F5284CDA915441B81E859B8B5751419A9999C9E2915441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000006880E4527B575141420D1BFDB3915441A5BBCE6F8C5751413013A201C19154418D152D67A1575141A668E153D1915441A4EB9B4CA957514121613353D89154411B1A28DBAD57514124E89480D69154412DB11168A957514168E4F570D0915441161DE2DDA25751410D9C5E4EC8915441DF7DDF0C9F5751416067B9D5C3915441F274536D935751416DEE1EBCB791544101DE00C28E57514129579D97B3915441F85C3D398857514191B71E0DAF915441A2DB81D57E575141E00E37FDA89154417D2272D17D5751413C59222CAC9154416880E4527B575141420D1BFDB3915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103978 - 3806180
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000070000001F85EB919A6151415C8FC2B5739A544185EB5108976151413D0AD793709A5441EC51B87E78615141CDCCCCBCD09A5441333333837F615141666666F6D39A5441E17A144E8B6151411F85EB31D99A5441000000F0A76151417B14AE077F9A54411F85EB919A6151415C8FC2B5739A5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000004EEFFFEFA76151410F49AE077F9A54411094D9779F615141AE1EA0DB779A5441BA2AB74D9F615141BD1424B5779A544138E9E8F79E615141B62D486F779A54411F85EB919A6151415C8FC2B5739A544185EB5108976151413D0AD793709A5441EC51B87E78615141CDCCCCBCD09A5441333333837F615141666666F6D39A5441BF7F587C81615141142484A2D49A5441572B4B6D81615141488CDCCFD49A54411CFEC5488B61514167BD902FD99A54414220B3D88B6151416183667DD79A5441599F28938C615141F2A23B32D59A5441AE5741B6906151419F63172BC89A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>104861 - 2999544
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -633  </desc>
+<a>
+0106000000010000000103000000010000001300000052B81EB5E30D514148E17AA439445441EC51B84E920D51413D0AD7C3304454415C8FC235420D5141CDCCCCFC2D445441295C8F12410D51411F85EBF12E4454418FC2F598400D5141295C8FB23344544114AE4791400D5141A4703DAA3D4454410AD7A370400D5141E17A144E404454410AD7A320400D51419A99999943445441EC51B87E3F0D5141713D0A7747445441CDCCCCCC3C0D514148E17A6451445441F6285C9F3D0D5141EC51B8BE524454410AD7A3E05A0D51410AD7A34058445441EC51B88E660D514114AE47C15944544100000070900D51419A9999195F445441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001200000025489F6A610D51419898FA175944544123E133C4610D514174DE521A2F445441134EC5C2610D5141B4E2E1142F4454415C8FC235420D5141CDCCCCFC2D445441295C8F12410D51411F85EBF12E4454418FC2F598400D5141295C8FB23344544114AE4791400D5141A4703DAA3D4454410AD7A370400D5141E17A144E404454410AD7A320400D51419A99999943445441EC51B87E3F0D5141713D0A7747445441CDCCCCCC3C0D514148E17A6451445441F6285C9F3D0D5141EC51B8BE52445441980178004B0D5141EA8A864355445441EB536D354C0D51410F78FC6550445441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>104861 - 3375862
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -633  </desc>
+<a>
+0106000000010000000103000000010000001300000052B81EB5E30D514148E17AA439445441EC51B84E920D51413D0AD7C3304454415C8FC235420D5141CDCCCCFC2D445441295C8F12410D51411F85EBF12E4454418FC2F598400D5141295C8FB23344544114AE4791400D5141A4703DAA3D4454410AD7A370400D5141E17A144E404454410AD7A320400D51419A99999943445441EC51B87E3F0D5141713D0A7747445441CDCCCCCC3C0D514148E17A6451445441F6285C9F3D0D5141EC51B8BE524454410AD7A3E05A0D51410AD7A34058445441EC51B88E660D514114AE47C15944544100000070900D51419A9999195F445441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001200000025489F6A610D51419898FA175944544123E133C4610D514174DE521A2F445441134EC5C2610D5141B4E2E1142F4454415C8FC235420D5141CDCCCCFC2D445441295C8F12410D51411F85EBF12E4454418FC2F598400D5141295C8FB23344544114AE4791400D5141A4703DAA3D4454410AD7A370400D5141E17A144E404454410AD7A320400D51419A99999943445441EC51B87E3F0D5141713D0A7747445441CDCCCCCC3C0D514148E17A6451445441F6285C9F3D0D5141EC51B8BE52445441980178004B0D5141EA8A864355445441EB536D354C0D51410F78FC6550445441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>108202 - 960539
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000000C0000007B14AE17BE125141A4703D9A22495541713D0AD7C1125141713D0AE72C495541000000B0C41251413D0AD7A3374955418FC2F5C8C512514148E17AA43949554100000030CC1251418FC2F528374955411F85EB11CD12514185EB519835495541D7A370EDD61251419A9999A9204955410AD7A3B0D712514185EB51881E4955419A999959D8125141B81E85AB1B495541CDCCCC4CCC125141D7A370DD1D49554185EB51E8C7125141A4703DAA1E4955417B14AE17BE125141A4703D9A22495541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000B89E7E61A812514191FA39F22F4955410B54ECAAA7125141606C15D931495541E9C73718A7125141BF10339133495541AD107388AA1251414803CE5C334955410EB59040AC125141B1CAD84733495541D820B9E3AD1251418359EE1D334955415A518B2EB0125141277719CA32495541CB3B0330B2125141277719CA32495541F1890027B4125141903E24B5324955414449E847B6125141CC94447632495541B5336049B81251415287DF41324955414449682BBA12514132FB2AAF31495541C6793A76BC125141B68CA1C83049554139C5D629BF12514186BA92EC2F495541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>108638 - 55006
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000130000008FC2F5C8A54D51411F85EB51DC735441B81E85DBA44D5141F6285C6FDE735441666666A6A44D5141AE47E11ADF73544114AE47C1A44D5141EC51B89EDF73544185EB5178A84D514148E17AB4E07354419A999949AC4D5141D7A3706DE1735441D7A3702DAF4D5141B81E850BE2735441E17A14EEB04D5141B81E850BE2735441EC51B8CEB14D5141EC51B8FEE17354417B14AE87B24D5141295C8F52E17354411F85EBC1BE4D5141713D0A37CF7354410AD7A330BE4D5141000000C0CE73544185EB5168B34D5141A4703D0AD07354417B14AE47AF4D51415C8FC2B5D0735441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000051000000937512CAAF4D51412F39C5BBCF735441BED3CDF0AB4D5141F7006175D073544120A10189AA4D5141335C93D2D0735441637E6CEDA94D514103BBF510D173544178EE5CB7A84D5141D41C498DD17354410934E925A54D51418B63936DD3735441B716B932A04D514169E70F82D6735441F728B3A49D4D5141B6801440D8735441996E4FD39B4D514135171091D9735441F02D25EC9A4D51414E76AB3EDA735441017AC8C29A4D51411390E184DA735441300E8F279A4D5141AA8DDE97DB735441E17A140E9B4D5141B81E858BDB735441EC51B8EE9B4D5141B81E858BDB735441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>108638 - 91689
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000130000008FC2F5C8A54D51411F85EB51DC735441B81E85DBA44D5141F6285C6FDE735441666666A6A44D5141AE47E11ADF73544114AE47C1A44D5141EC51B89EDF73544185EB5178A84D514148E17AB4E07354419A999949AC4D5141D7A3706DE1735441D7A3702DAF4D5141B81E850BE2735441E17A14EEB04D5141B81E850BE2735441EC51B8CEB14D5141EC51B8FEE17354417B14AE87B24D5141295C8F52E17354411F85EBC1BE4D5141713D0A37CF7354410AD7A330BE4D5141000000C0CE73544185EB5168B34D5141A4703D0AD07354417B14AE47AF4D51415C8FC2B5D0735441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000510000008E7512CAAF4D51413039C5BBCF735441BED3CDF0AB4D5141F7006175D073544120A10189AA4D5141335C93D2D0735441637E6CEDA94D514103BBF510D173544178EE5CB7A84D5141D41C498DD17354410C34E925A54D51418A63936DD3735441B716B932A04D514169E70F82D6735441F728B3A49D4D5141B6801440D87354419D6E4FD39B4D51413A171091D9735441ED2D25EC9A4D51415076AB3EDA735441027AC8C29A4D51411390E184DA735441300E8F279A4D5141AA8DDE97DB735441E17A140E9B4D5141B81E858BDB735441EC51B8EE9B4D5141B81E858BDB735441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>108638 - 293737
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000130000008FC2F5C8A54D51411F85EB51DC735441B81E85DBA44D5141F6285C6FDE735441666666A6A44D5141AE47E11ADF73544114AE47C1A44D5141EC51B89EDF73544185EB5178A84D514148E17AB4E07354419A999949AC4D5141D7A3706DE1735441D7A3702DAF4D5141B81E850BE2735441E17A14EEB04D5141B81E850BE2735441EC51B8CEB14D5141EC51B8FEE17354417B14AE87B24D5141295C8F52E17354411F85EBC1BE4D5141713D0A37CF7354410AD7A330BE4D5141000000C0CE73544185EB5168B34D5141A4703D0AD07354417B14AE47AF4D51415C8FC2B5D0735441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000510000008E7512CAAF4D51413039C5BBCF735441BED3CDF0AB4D5141F7006175D073544120A10189AA4D5141335C93D2D0735441637E6CEDA94D514103BBF510D173544178EE5CB7A84D5141D41C498DD17354410C34E925A54D51418A63936DD3735441B716B932A04D514169E70F82D6735441F728B3A49D4D5141B6801440D87354419D6E4FD39B4D51413A171091D9735441ED2D25EC9A4D51415076AB3EDA735441027AC8C29A4D51411390E184DA735441300E8F279A4D5141AA8DDE97DB735441E17A140E9B4D5141B81E858BDB735441EC51B8EE9B4D5141B81E858BDB735441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>110585 - 171476
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -168  </desc>
+<a>
+01060000000100000001030000000100000039000000E17A14AE423051411F85EB31C0D054410AD7A3D044305141295C8FF2BFD05441A4703DCA4130514166666616B4D054416666666641305141AE47E10AAFD05441AE47E1DA4230514148E17A44AED05441AE47E18A46305141D7A370CDB6D0544152B81EA549305141C3F5283CBCD054415C8FC2C54B305141E17A147EBED05441666666764D3051419A999999BDD0544148E17A944F3051418FC2F5F8BBD054411F85EB515030514100000010BAD054415C8FC23551305141295C8F32B8D05441333333A351305141EC51B8BEB6D05441295C8FE252305141A4703D6AADD05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004C0000000AD7A37054305141000000C088D054414FDDDDC053305141845FF23786D054416794F40F53305141DE7F01FD83D054415EFC39DB503051417DDACEE980D05441FEE6B42E4E305141CA2F31C67ED0544199A071244E3051411D1802BF7ED05441AE47E1CA4C305141A4703D0A7ED05441569675C64B30514185AAD1167DD05441458C0ED74A30514111BD3C6F7CD054413C2CFD6E483051410C0D343B7BD05441E0FE29C34630514109EDD86D7AD05441B23E07F341305141898F69C37AD0544106D41F6A4130514133A24CB27AD054410444720341305141DEB42FA17AD05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>110585 - 352992
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -168  </desc>
+<a>
+01060000000100000001030000000100000039000000E17A14AE423051411F85EB31C0D054410AD7A3D044305141295C8FF2BFD05441A4703DCA4130514166666616B4D054416666666641305141AE47E10AAFD05441AE47E1DA4230514148E17A44AED05441AE47E18A46305141D7A370CDB6D0544152B81EA549305141C3F5283CBCD054415C8FC2C54B305141E17A147EBED05441666666764D3051419A999999BDD0544148E17A944F3051418FC2F5F8BBD054411F85EB515030514100000010BAD054415C8FC23551305141295C8F32B8D05441333333A351305141EC51B8BEB6D05441295C8FE252305141A4703D6AADD05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004C0000000AD7A37054305141000000C088D054414FDDDDC053305141845FF23786D054416794F40F53305141DE7F01FD83D054415EFC39DB503051417DDACEE980D05441FEE6B42E4E305141CA2F31C67ED0544199A071244E3051411D1802BF7ED05441AE47E1CA4C305141A4703D0A7ED05441569675C64B30514185AAD1167DD05441458C0ED74A30514111BD3C6F7CD054413C2CFD6E483051410C0D343B7BD05441E0FE29C34630514109EDD86D7AD05441B23E07F341305141898F69C37AD0544106D41F6A4130514133A24CB27AD054410444720341305141DEB42FA17AD05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>115495 - 356539
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000600000000000000F6D050413D0AD783CA9354411F85EBF1F8D0504148E17AE4CB935441295C8F0229D15041D7A370DD759354418FC2F53826D150410AD7A3C0749354416666660614D15041E17A141E9593544100000000F6D050413D0AD783CA935441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000026E399AF08D1504148A08448A99354419BA6EA8202D15041DB83A943B4935441468D0608F6D05041410A9887CA935441E8A1201DF6D05041D7D17691CA9354411FD01350F6D0504185A94BA9CA93544185440552F6D05041B55734AACA9354415AFC07F0F8D05041F4B598E3CB935441E1F3E72715D15041FE66746699935441295C8F0229D15041D7A370DD759354416EBEA19B28D15041ED6C5CB475935441D8FDDA6B28D1504107184BA1759354419AAB6BEC27D1504121066F6E75935441AFB8873327D150410EFB242A75935441BAE8569A0AD15041D6DD1F41A7935441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>122107 - 32561
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001B00000014AE4751A6135141C3F528DCA1C154411F85EBB19E1351411F85EB91AAC15441295C8FA292135141AE47E15AB7C1544133333343861351411F85EBD1C3C154413D0AD7737B13514152B81EA5CDC15441295C8F027413514185EB51A8D3C15441333333436F13514133333333D8C154411F85EB417A1351410AD7A3E0DFC15441A4703DBA831351413D0AD723E7C15441F6285CDF8D135141EC51B84EF0C15441713D0AC78F13514148E17A34F0C15441B81E85CB93135141D7A3706DECC1544166666656A0135141A4703DDADEC15441000000B0A413514114AE4771DBC15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000295C8FC26E135141EC51B8AED8C154416C0B39A179135141C9052FEFE0C1544111E5E4D382135141C56048EBE7C15441F6285CDF8D135141EC51B84EF0C154419ADFED74871351417AC98A82EAC1544107B3FC6A81135141DD2C695EE5C154417C15C59F7E135141ABFAE939E3C15441A409CA1D7A1351419E2F69C7DFC154414A33D724751351413AEE8B4EDCC1544111677CD4721351410D05ECB0DAC15441FE84584D6F135141D8D5483AD8C15441295C8FC26E135141EC51B8AED8C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>122107 - 72666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001B00000014AE4751A6135141C3F528DCA1C154411F85EBB19E1351411F85EB91AAC15441295C8FA292135141AE47E15AB7C1544133333343861351411F85EBD1C3C154413D0AD7737B13514152B81EA5CDC15441295C8F027413514185EB51A8D3C15441333333436F13514133333333D8C154411F85EB417A1351410AD7A3E0DFC15441A4703DBA831351413D0AD723E7C15441F6285CDF8D135141EC51B84EF0C15441713D0AC78F13514148E17A34F0C15441B81E85CB93135141D7A3706DECC1544166666656A0135141A4703DDADEC15441000000B0A413514114AE4771DBC15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000295C8FC26E135141EC51B8AED8C154416C0B39A179135141C9052FEFE0C1544111E5E4D382135141C56048EBE7C15441F6285CDF8D135141EC51B84EF0C154419ADFED74871351417AC98A82EAC1544107B3FC6A81135141DD2C695EE5C154417C15C59F7E135141ABFAE939E3C15441A409CA1D7A1351419E2F69C7DFC154414A33D724751351413AEE8B4EDCC1544111677CD4721351410D05ECB0DAC15441FE84584D6F135141D8D5483AD8C15441295C8FC26E135141EC51B8AED8C15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>124489 - 2993281
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000010000000103000000010000000D000000C3F5284CE1C85041000000608BF9544152B81EE5DFC850410AD7A35095F95441B81E85CBF5C8504185EB518896F95441B81E859B03C95041F6285C1F96F954417B14AE5711C950419A9999A996F95441CDCCCC2C1BC95041AE47E18A96F95441295C8FF224C95041713D0A1797F95441B81E85BB29C95041B81E850B98F95441295C8F922DC950411F85EB019AF95441295C8FB22DC9504148E17A9494F954413D0AD7B311C950413333333392F954418FC2F50812C950410AD7A3108EF95441C3F5284CE1C85041000000608BF95441
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000005DB0006604C950417D1B522796F954414B75A5C90AC95041B287A06796F954414654911D0DC95041B75B0E7F96F954415D4681550FC950414688629596F95441E70C441F11C950417ECD61A796F95441725BF25B12C95041B5706CA696F9544199889B5A13C950418ACB50A396F95441CDCCCC2C1BC95041AE47E18A96F95441519C17091CC950413EC6389796F954413AB972B020C95041F58AF7D996F95441CA50F01422C95041E76EF0ED96F954419483364823C95041BB7227FF96F954415C39F46C24C9504140068E0F97F9544151B6C41125C9504167C5441D97F95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>124489 - 3785954
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000010000000103000000010000000D000000C3F5284CE1C85041000000608BF9544152B81EE5DFC850410AD7A35095F95441B81E85CBF5C8504185EB518896F95441B81E859B03C95041F6285C1F96F954417B14AE5711C950419A9999A996F95441CDCCCC2C1BC95041AE47E18A96F95441295C8FF224C95041713D0A1797F95441B81E85BB29C95041B81E850B98F95441295C8F922DC950411F85EB019AF95441295C8FB22DC9504148E17A9494F954413D0AD7B311C950413333333392F954418FC2F50812C950410AD7A3108EF95441C3F5284CE1C85041000000608BF95441
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000005DB0006604C950417D1B522796F954414B75A5C90AC95041B287A06796F954414654911D0DC95041B75B0E7F96F954415D4681550FC950414688629596F95441E70C441F11C950417ECD61A796F95441725BF25B12C95041B5706CA696F9544199889B5A13C950418ACB50A396F95441CDCCCC2C1BC95041AE47E18A96F95441519C17091CC950413EC6389796F954413AB972B020C95041F58AF7D996F95441CA50F01422C95041E76EF0ED96F954419483364823C95041BB7227FF96F954415C39F46C24C9504140068E0F97F9544151B6C41125C9504167C5441D97F95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>132219 - 1224582
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000001400000048E17A943E815141F6285C5FAA8E544152B81E953D81514185EB5198AC8E5441333333E338815141EC51B85EAF8E544185EB51B833815141EC51B83EAE8E54411F85EBF11581514114AE4751C08E5441295C8FA2CE805141EC51B8FEEA8E5441AE47E13AAC8051410AD7A3E0FF8E5441F6285C6FAF8051415C8FC245058F54419A9999B9EC805141EC51B84EE08E5441D7A3701D34815141F6285CDFB48E54411F85EB814481514148E17A34AA8E5441B81E85FB49815141C3F528DCB28E544185EB51784A8151411F85EBF1B18E54411F85EB314B815141B81E850BB18E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000C2F812C144815141C67DD9239B8E544181A1561C428151418ECBF9589C8E5441A820C33740815141FB8B434B9D8E5441F9782D99418151413A8783BE9F8E54418520F21A438151411F7DA149A28E5441D1ECB884458151410A5CB75CA68E54419E01BFB3488151417E0AD8BCAB8E5441666666A64B815141713D0AB7B08E54418B5D79FA4C81514175940639B08E5441B42291A44E8151415B8D5125AF8E544132164E465081514197295222AE8E5441586655D7518151417D229D0EAD8E5441259E963E538151411162531CAC8E544194D3F04954815141F4E58DEFAA8E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>132219 - 3986060
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000001400000048E17A943E815141F6285C5FAA8E544152B81E953D81514185EB5198AC8E5441333333E338815141EC51B85EAF8E544185EB51B833815141EC51B83EAE8E54411F85EBF11581514114AE4751C08E5441295C8FA2CE805141EC51B8FEEA8E5441AE47E13AAC8051410AD7A3E0FF8E5441F6285C6FAF8051415C8FC245058F54419A9999B9EC805141EC51B84EE08E5441D7A3701D34815141F6285CDFB48E54411F85EB814481514148E17A34AA8E5441B81E85FB49815141C3F528DCB28E544185EB51784A8151411F85EBF1B18E54411F85EB314B815141B81E850BB18E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000C2F812C144815141C67DD9239B8E544181A1561C428151418ECBF9589C8E5441A820C33740815141FB8B434B9D8E5441F9782D99418151413A8783BE9F8E54418520F21A438151411F7DA149A28E5441D1ECB884458151410A5CB75CA68E54419E01BFB3488151417E0AD8BCAB8E5441666666A64B815141713D0AB7B08E54418B5D79FA4C81514175940639B08E5441B42291A44E8151415B8D5125AF8E544132164E465081514197295222AE8E5441586655D7518151417D229D0EAD8E5441259E963E538151411162531CAC8E544194D3F04954815141F4E58DEFAA8E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238023 - 396527
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000001800000085EB5148F5BD50413333332397D05441EC51B85E12BE5041C3F5289C9DD05441CDCCCC8C1DBE504114AE478195D054417B14AE3722BE504114AE472193D054416666662626BE5041295C8F2292D05441000000302BBE5041F6285C3F92D054415C8FC2952EBE504152B81EB591D05441295C8F9231BE504185EB511890D05441EC51B82E35BE5041CDCCCCEC8CD0544148E17A7438BE50410000006089D05441333333533ABE50418FC2F56886D05441295C8F123CBE50410AD7A3D07FD05441A4703DBA36BE50411F85EB417DD05441EC51B8FE2CBE50413D0AD79378D05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001600000017E27A141FBE50415C3D0AE778D05441B808E7131EBE5041FAFE05D478D0544120C731121EBE50419496E5D378D05441E73233E31CBE5041FCA370BD78D054416274776B04BE5041A469C94B73D05441CDCCCC6C01BE50413333334382D054419E32C20B35BE5041590B800B8DD05441E508CD2035BE50416EC705F98CD05441EC51B82E35BE5041CDCCCCEC8CD054411089AAEE36BE5041D17DDE068BD0544105E17A7438BE50418BFFFF5F89D054417A3233533ABE504116C3F56886D05441245C8F123CBE504108D7A3D07FD05441AA475CB23BBE50418D299CA27FD05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>142742 - 969167
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000700000014AE477132EE504185EB513823C1544185EB51682EEE50418FC2F5C81CC1544114AE476119EE504152B81EA501C154415C8FC2A5F5ED504185EB51F8DEC0544152B81E55E9ED5041D7A3704DEFC05441AE47E11A27EE50413D0AD7732AC1544114AE477132EE504185EB513823C15441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000CAC1D0EE29EE504139C6770217C1544185EB51682EEE50418FC2F5C81CC1544144A9417132EE50413E52483823C15441CDCCCC2C33EE50410AD7A3C022C15441AE47E1CA33EE50413D0AD77321C15441F41A39D533EE5041D69B0C5521C15441DE4B75A933EE5041C48F093221C15441A4C42E4333EE50418231B2D620C15441398A28F633EE50416ECEF45721C15441002A847A2FEE5041EFD81FD11AC15441C8C9DFFE2AEE5041C64ED11415C15441BB6F638027EE50410DBF113111C154413CD9C4C91FEE50412B46CDC008C154411232D39C1DEE5041D6397DC606C15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238741 - 58142
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+01060000000100000001030000000100000023000000A4703D3AF2BB5041A4703DDA26CC54413D0AD793EDBB504114AE473126CC544152B81EE5E8BB504152B81ED525CC5441AE47E1AACBBB5041C3F528CC24CC54410AD7A3E0C2BB50415C8FC24524CC544100000070B4BB50410000001022CC5441AE47E12AB0BB50416666663621CC544152B81E15ACBB5041C3F528AC1FCC5441713D0A87A8BB5041AE47E13A1DCC5441D7A3700D9CBB5041AE47E1AA25CC5441295C8F328BBB50413D0AD7B331CC544152B81E5585BB50418FC2F5A836CC54413D0AD7D37FBB504148E17A343CCC54418FC2F5E87ABB50417B14AE2742CC5441 [...]
+</a>
+
+<b>
+010600000002000000010300000001000000520000000EFE673176BB504176E1F66848CC5441F205A99972BB5041377405664ECC54410F58E1F770BB5041D5E4EE2B51CC5441E278CA8BCEBB5041B434FD7854CC5441EB984749D3BB50419D9223A854CC544148E17A74D8BB5041713D0AD754CC544116C78133DABB50410FB9EBEC54CC54414055205ADFBB50414BCE272055CC5441027313B8E0BB5041D7BDCF2855CC5441E2824DE1E1BB50417129289554CC544116B88E94E6BB50416B674C2C52CC54419EE3954AE9BB504111F59C5D50CC5441D1CAD3B6E9BB50415A6567F74FCC54418E5F7EC5EABB50419DD0BCE84ECC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238741 - 120643
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000023000000A4703D3AF2BB5041A4703DDA26CC54413D0AD793EDBB504114AE473126CC544152B81EE5E8BB504152B81ED525CC5441AE47E1AACBBB5041C3F528CC24CC54410AD7A3E0C2BB50415C8FC24524CC544100000070B4BB50410000001022CC5441AE47E12AB0BB50416666663621CC544152B81E15ACBB5041C3F528AC1FCC5441713D0A87A8BB5041AE47E13A1DCC5441D7A3700D9CBB5041AE47E1AA25CC5441295C8F328BBB50413D0AD7B331CC544152B81E5585BB50418FC2F5A836CC54413D0AD7D37FBB504148E17A343CCC54418FC2F5E87ABB50417B14AE2742CC5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000520000000BFE673176BB504173E1F66848CC5441F305A99972BB5041337405664ECC54410A58E1F770BB5041D0E4EE2B51CC5441E078CA8BCEBB5041B434FD7854CC5441E6984749D3BB5041A29223A854CC544148E17A74D8BB5041713D0AD754CC544115C78133DABB50410CB9EBEC54CC54414055205ADFBB504150CE272055CC5441047313B8E0BB5041D8BDCF2855CC5441E0824DE1E1BB50417529289554CC544114B88E94E6BB50416C674C2C52CC5441A2E3954AE9BB50410EF59C5D50CC5441CECAD3B6E9BB50415F6567F74FCC54418C5F7EC5EABB5041A1D0BCE84ECC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238741 - 357511
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000023000000A4703D3AF2BB5041A4703DDA26CC54413D0AD793EDBB504114AE473126CC544152B81EE5E8BB504152B81ED525CC5441AE47E1AACBBB5041C3F528CC24CC54410AD7A3E0C2BB50415C8FC24524CC544100000070B4BB50410000001022CC5441AE47E12AB0BB50416666663621CC544152B81E15ACBB5041C3F528AC1FCC5441713D0A87A8BB5041AE47E13A1DCC5441D7A3700D9CBB5041AE47E1AA25CC5441295C8F328BBB50413D0AD7B331CC544152B81E5585BB50418FC2F5A836CC54413D0AD7D37FBB504148E17A343CCC54418FC2F5E87ABB50417B14AE2742CC5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000520000000BFE673176BB504173E1F66848CC5441F305A99972BB5041337405664ECC54410A58E1F770BB5041D0E4EE2B51CC5441E078CA8BCEBB5041B434FD7854CC5441E6984749D3BB5041A29223A854CC544148E17A74D8BB5041713D0AD754CC544115C78133DABB50410CB9EBEC54CC54414055205ADFBB504150CE272055CC5441047313B8E0BB5041D8BDCF2855CC5441E0824DE1E1BB50417529289554CC544114B88E94E6BB50416C674C2C52CC5441A2E3954AE9BB50410EF59C5D50CC5441CECAD3B6E9BB50415F6567F74FCC54418C5F7EC5EABB5041A1D0BCE84ECC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411593 - 1637645
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -47  </desc>
+<a>
+0106000000010000000103000000010000000F0000006565F6E573A15041D3F4428C775655413BA60BB873A15041009EF5427756554157F2BC7669A15041012C75947A5655419035B36185A1504171D72B31A6565541D8E9E5BC8EA1504118993B87B4565541E17A142E95A150411F85EB11AE565541E17A14DE8FA150419A9999B9A8565541EC51B8BE90A15041EC51B89EA75655412417B1A07EA1504134BD986D895655419A9999497EA15041295C8F9289565541B4D870D97DA1504172288D21885655414E8180067CA150416C53C27B83565541AD1578B07AA15041DF5D728581565541B81E851B78A1504148E17A447E565541 [...]
+</a>
+
+<b>
+01060000000100000001030000000900000066000000C9B088AC62A15041D5DD699580565541FA477C2464A150417D62974B855655419E969FD45EA15041701AAC4C8B565541DB60953A5CA15041A0F74A4E8E565541538705025BA150411FA976B78F565541295C8F8259A15041295C8F7291565541D7A370AD57A1504152B81EE58D565541C3F528CC55A15041E17A147E895655415C8FC2C548A150411F85EB118B56554152B81E8548A150410000007094565541B81E851B48A15041D7A3702D9E56554148E17A9447A150411F85EBC1A75655413D0AD7F346A15041713D0A67B65655410AD7A30046A150417B14AEB7C2565541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411593 - 5286048
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -47  </desc>
+<a>
+0106000000010000000103000000010000000F0000006565F6E573A15041D3F4428C775655413BA60BB873A15041009EF5427756554157F2BC7669A15041012C75947A5655419035B36185A1504171D72B31A6565541D8E9E5BC8EA1504118993B87B4565541E17A142E95A150411F85EB11AE565541E17A14DE8FA150419A9999B9A8565541EC51B8BE90A15041EC51B89EA75655412417B1A07EA1504134BD986D895655419A9999497EA15041295C8F9289565541B4D870D97DA1504172288D21885655414E8180067CA150416C53C27B83565541AD1578B07AA15041DF5D728581565541B81E851B78A1504148E17A447E565541 [...]
+</a>
+
+<b>
+01060000000100000001030000000900000066000000C9B088AC62A15041D5DD699580565541FA477C2464A150417D62974B855655419E969FD45EA15041701AAC4C8B565541DB60953A5CA15041A0F74A4E8E565541538705025BA150411FA976B78F565541295C8F8259A15041295C8F7291565541D7A370AD57A1504152B81EE58D565541C3F528CC55A15041E17A147E895655415C8FC2C548A150411F85EB118B56554152B81E8548A150410000007094565541B81E851B48A15041D7A3702D9E56554148E17A9447A150411F85EBC1A75655413D0AD7F346A15041713D0A67B65655410AD7A30046A150417B14AEB7C2565541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411593 - 243174
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -47  </desc>
+<a>
+0106000000010000000103000000010000000F0000006565F6E573A15041D3F4428C775655413BA60BB873A15041009EF5427756554157F2BC7669A15041012C75947A5655419035B36185A1504171D72B31A6565541D8E9E5BC8EA1504118993B87B4565541E17A142E95A150411F85EB11AE565541E17A14DE8FA150419A9999B9A8565541EC51B8BE90A15041EC51B89EA75655412417B1A07EA1504134BD986D895655419A9999497EA15041295C8F9289565541B4D870D97DA1504172288D21885655414E8180067CA150416C53C27B83565541AD1578B07AA15041DF5D728581565541B81E851B78A1504148E17A447E565541 [...]
+</a>
+
+<b>
+01060000000100000001030000000900000066000000C9B088AC62A15041D5DD699580565541FA477C2464A150417D62974B855655419E969FD45EA15041701AAC4C8B565541DB60953A5CA15041A0F74A4E8E565541538705025BA150411FA976B78F565541295C8F8259A15041295C8F7291565541D7A370AD57A1504152B81EE58D565541C3F528CC55A15041E17A147E895655415C8FC2C548A150411F85EB118B56554152B81E8548A150410000007094565541B81E851B48A15041D7A3702D9E56554148E17A9447A150411F85EBC1A75655413D0AD7F346A15041713D0A67B65655410AD7A30046A150417B14AEB7C2565541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411593 - 419661
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -47  </desc>
+<a>
+0106000000010000000103000000010000000F0000006565F6E573A15041D3F4428C775655413BA60BB873A15041009EF5427756554157F2BC7669A15041012C75947A5655419035B36185A1504171D72B31A6565541D8E9E5BC8EA1504118993B87B4565541E17A142E95A150411F85EB11AE565541E17A14DE8FA150419A9999B9A8565541EC51B8BE90A15041EC51B89EA75655412417B1A07EA1504134BD986D895655419A9999497EA15041295C8F9289565541B4D870D97DA1504172288D21885655414E8180067CA150416C53C27B83565541AD1578B07AA15041DF5D728581565541B81E851B78A1504148E17A447E565541 [...]
+</a>
+
+<b>
+01060000000100000001030000000900000066000000C9B088AC62A15041D5DD699580565541FA477C2464A150417D62974B855655419E969FD45EA15041701AAC4C8B565541DB60953A5CA15041A0F74A4E8E565541538705025BA150411FA976B78F565541295C8F8259A15041295C8F7291565541D7A370AD57A1504152B81EE58D565541C3F528CC55A15041E17A147E895655415C8FC2C548A150411F85EB118B56554152B81E8548A150410000007094565541B81E851B48A15041D7A3702D9E56554148E17A9447A150411F85EBC1A75655413D0AD7F346A15041713D0A67B65655410AD7A30046A150417B14AEB7C2565541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158936 - 158819
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000000B0000007B14AE67733E5141000000D0950C554114AE47E17E3E5141EC51B8DEA40C554152B81E05813E5141B81E85ABA70C55419A9999498E3E5141C3F5280CB90C55411F85EB01913E5141295C8F72B70C5541E17A141E963E514148E17A04B40C554148E17A64983E514185EB5128B20C55410AD7A3C08A3E51417B14AE47A00C554148E17A047D3E5141666666468E0C554152B81E857B3E514114AE47B18F0C55417B14AE67733E5141000000D0950C5541
+</a>
+
+<b>
+0106000000040000000103000000010000001B000000EAC5BC42673E5141C387E819A60C554139759E606D3E5141AB2B4E1BAD0C5541116019CB6E3E5141137FD8B9AE0C5541412896A1723E51412E3618BDB30C554151DB410B793E5141558D24CFBB0C554128396EA37B3E51412215B625BF0C554191DF62C07C3E5141BB8C5A94C00C55410C1E13C67D3E5141511E0FE5C10C55413CB77412803E514151447BD1C00C55417AB63DE3823E51415313AF52BF0C5541FF582FEC893E51416F223B96BB0C554168009F568E3E5141B3228004B90C5541E7D00F48803E5141857327B4A60C554161263240733E5141FC7DCBED950C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>159935 - 310830
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000005A0000009A9999F98040514114AE4701DC0E554152B81E557F405141E17A140EDC0E5541713D0A477F405141B81E85EBDC0E5541000000F07F4051410AD7A390EA0E55410AD7A300BC40514148E17AF4F40E5541A4703D6ABE405141E17A146EF50E5541713D0A77BE405141B81E854BEC0E5541D7A3702DC14051417B14AEA7E70E55418FC2F5C8C3405141295C8F82E80E5541C3F528BCC740514114AE4761EE0E55419A999949CC405141EC51B87EF20E5541A4703D0ACE405141F6285C7FF80E554100000080D1405141A4703DEAE70E5541CDCCCC3CD3405141EC51B81EE40E5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000AE47E14A0541514162105821FD0E55414A0C02930B415141560E2D9A020F554108AC1C0211415141D578E9B6080F554154E3A56B124151414E621098090F554142FD178422415141B0264B551B0F554114AE4781284151419A999999210F5541C22E775D2B415141BA6AA653240F55414260E5882B41514148E17A74240F5541D62AE7CB3241514188AD64692B0F5541000000C035415141A4703D3A2E0F55417B14AEA73B4151411F85EB313B0F5541D521C29C43415141185A4ACD430F55418D976E3A49415141C520B09A460F554176B67B7D4D4151418644C732470F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164649 - 3096479
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -428  </desc>
+<a>
+0106000000010000000103000000010000001B000000713D0A375F3951413D0AD7C391095541CDCCCCFC5B395141A4703D6A920955411F85EBA15839514152B81EA593095541A4703D2A56395141EC51B80E950955411F85EB6153395141295C8F229709554148E17A0451395141AE47E1AA9909554148E17AB448395141F6285CAFA50955417B14AE6746395141F6285C9FA90955415C8FC2D54439514100000010AD09554185EB51E84239514133333303B30955411F85EBE14339514114AE4751B3095541A4703D9A443951418FC2F588B1095541CDCCCCAC45395141C3F528FCB10955419A99995945395141C3F528CCB2095541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000002FE8D60C51395141C6AFEDA1990955417B69CC0251395141219D4FAD99095541DC42BC334F3951410796C44A9C095541F655810A4E395141ED527AF89D0955410186271E4C395141C2C546C0A009554192F9B0AA4A395141F3514ED9A209554148E17AB448395141F6285CAFA50955417B14AE6746395141F6285C9FA90955415C8FC2D54439514100000010AD0955413CD968C24339514109B3FA61B009554185EB51E84239514133333303B30955411F85EBE14339514114AE4751B3095541A4703D9A443951418FC2F588B1095541CDCCCCAC45395141C3F528FCB1095541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164649 - 3289198
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -428  </desc>
+<a>
+0106000000010000000103000000010000001B000000713D0A375F3951413D0AD7C391095541CDCCCCFC5B395141A4703D6A920955411F85EBA15839514152B81EA593095541A4703D2A56395141EC51B80E950955411F85EB6153395141295C8F229709554148E17A0451395141AE47E1AA9909554148E17AB448395141F6285CAFA50955417B14AE6746395141F6285C9FA90955415C8FC2D54439514100000010AD09554185EB51E84239514133333303B30955411F85EBE14339514114AE4751B3095541A4703D9A443951418FC2F588B1095541CDCCCCAC45395141C3F528FCB10955419A99995945395141C3F528CCB2095541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000002FE8D60C51395141C6AFEDA1990955417B69CC0251395141219D4FAD99095541DC42BC334F3951410796C44A9C095541F655810A4E395141ED527AF89D0955410186271E4C395141C2C546C0A009554192F9B0AA4A395141F3514ED9A209554148E17AB448395141F6285CAFA50955417B14AE6746395141F6285C9FA90955415C8FC2D54439514100000010AD0955413CD968C24339514109B3FA61B009554185EB51E84239514133333303B30955411F85EBE14339514114AE4751B3095541A4703D9A443951418FC2F588B1095541CDCCCCAC45395141C3F528FCB1095541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>165181 - 233035
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -501  </desc>
+<a>
+0106000000010000000103000000010000000E000000B81E85CBF2435141AE47E18ADD075541666666C6F24351413D0AD723E8075541E17A14FEF3435141C3F528ECEF075541B81E85BBF44351419A9999D9F10755419A9999E91E4451417B14AE27EE075541333333B31E445141B81E854BDD0755410AD7A3702144514152B81E35C70755417B14AE271E44514100000090C40755413D0AD7D31B445141C3F528CCC4075541A4703D2A1844514166666616C507554185EB5198FD4351418FC2F558CA075541CDCCCC0CF243514114AE47E1CC075541C3F5284CF24351411F85EBA1CF075541B81E85CBF2435141AE47E18ADD075541
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000000DDE5935F3435141F3953AA0CC075541C98556BCF34351415D15096ED4075541B37933F6F34351410A2A1D22D9075541589393251144514158AD28A1D50755414A68EFD31F4451411AEEB7E4D30755418635785E21445141C8577D26C70755414720D736214451417BC69406C7075541472DE00E21445141081267E6C6075541CFD009A620445141F07DFD91C60755414B8AF81D15445141AB9E63F3C607554148E17A141244514114AE47E1C6075541F36A8620F6435141E85854FCCB075541AE938496F4435141232EC252CC0755410DDE5935F3435141F3953AA0CC075541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>165187 - 214188
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -43  </desc>
+<a>
+01060000000100000001030000000100000034000000F6285C8F45445141F6285CDFC4075541C3F5285C4344514148E17A14C5075541B81E855B3E445141333333F3C507554148E17A543B445141B81E85BBC5075541713D0A37384451417B14AEE7C5075541666666B636445141713D0AD7C5075541EC51B88E344451413D0AD783C9075541F6285CAF33445141D7A370CDCA075541A4703D6A32445141AE47E12ACD075541C3F5284C3144514185EB5138D0075541AE47E13A3044514100000010D4075541EC51B80E2F445141295C8F42D9075541295C8F422E44514152B81E15DD075541000000D02C445141295C8F52E1075541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004A000000AF44380A25445141677ECCAF010855416666660625445141AE47E1BA01085541AE47E1DA23445141713D0AA70308554182EC8E5023445141131FE7B00508554132795C9F22445141EDD6704D08085541BB2F6E122344514172AAB6960808554164A0A9E424445141DCC898BF090855417118AFF7254451416B51B86E0A08554167F508AA264451412EBDEEA60A0855417B14AE9729445141333333930B085541A7C7B80D2D445141E25AE9670D085541E8E6F4782D445141E535A3A00D085541F3C5C305304451415C748F320F0855415828A92B314451417465ED980F085541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239735 - 255556
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000000C0000008FC2F588D0C05041295C8F72FCCE544148E17AA4D3C05041E17A14CEF6CE5441B81E858BD7C0504100000050EACE544114AE47B1B6C0504114AE4791BACE5441CDCCCCFCB1C05041AE47E16ABECE54418FC2F568A5C050419A9999F9C9CE5441A4703D5A9BC05041C3F5287CD4CE5441C3F5282CA0C050415C8FC285D6CE54413D0AD773A4C0504166666686D9CE544133333303A8C0504152B81E65DDCE54419A9999B9C6C0504185EB51080ACF54418FC2F588D0C05041295C8F72FCCE5441
+</a>
+
+<b>
+0106000000010000000103000000010000002100000076956D74D5C05041CDE65746E7CE544185DD9606D5C050419E92B6A6E6CE5441450FFEDAD1C05041000A03E1F0CE5441F39A11F7CFC05041CDC92A4AF5CE544136101EEACDC050413B6136DDF9CE5441C93CF05BCCC05041E69BE3B3FCCE544125E65BEAC5C05041A8B9A68605CF54418473992EC5C050417F317A8104CF5441CB220167A9C050416BD0FA22DCCE5441610DC2BAA5C0504144BB6F2AD8CE54418A4805E3A0C050413EA42DCCD4CE54411C6DC9D9A0C0504170223EC7D4CE5441A4F5C1E19CC050417B0707E3D2CE5441D97C9C659BC0504116F14670D4CE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239735 - 350872
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000000C0000008FC2F588D0C05041295C8F72FCCE544148E17AA4D3C05041E17A14CEF6CE5441B81E858BD7C0504100000050EACE544114AE47B1B6C0504114AE4791BACE5441CDCCCCFCB1C05041AE47E16ABECE54418FC2F568A5C050419A9999F9C9CE5441A4703D5A9BC05041C3F5287CD4CE5441C3F5282CA0C050415C8FC285D6CE54413D0AD773A4C0504166666686D9CE544133333303A8C0504152B81E65DDCE54419A9999B9C6C0504185EB51080ACF54418FC2F588D0C05041295C8F72FCCE5441
+</a>
+
+<b>
+0106000000010000000103000000010000002100000076956D74D5C05041CDE65746E7CE544185DD9606D5C050419E92B6A6E6CE5441450FFEDAD1C05041000A03E1F0CE5441F39A11F7CFC05041CDC92A4AF5CE544136101EEACDC050413B6136DDF9CE5441C93CF05BCCC05041E69BE3B3FCCE544125E65BEAC5C05041A8B9A68605CF54418473992EC5C050417F317A8104CF5441CB220167A9C050416BD0FA22DCCE5441610DC2BAA5C0504144BB6F2AD8CE54418A4805E3A0C050413EA42DCCD4CE54411C6DC9D9A0C0504170223EC7D4CE5441A4F5C1E19CC050417B0707E3D2CE5441D97C9C659BC0504116F14670D4CE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>168472 - 3152614
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000F000000295C8F62F9C1504148E17AF436945441C3F5285CFAC150411F85EBB136945441295C8F0233C25041CDCCCCAC2794544185EB51E832C2504152B81EC5269454418FC2F58830C25041F6285CDF1F945441295C8F222FC250418FC2F5C81C945441B81E85EB2BC25041A4703DFA1094544152B81EF52AC250411F85EB310B945441AE47E18A29C250417B14AE470A945441E17A14BEF9C15041F6285CDF16945441A4703D7AE1C150413D0AD7231A94544152B81E65E0C15041C3F5288C1B945441C3F528CCE3C1504114AE47913694544148E17A54E5C150417B14AE473C945441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000300A86C409C25041953E9BA6129454413C8BFB3A0DC250414C73C6581E94544187E3D4522DC2504107A2DB21169454413B3D0ADB2CC250415C6DE8691494544165988B252CC25041166858CF1194544171AE9FE92BC250419706D9EE10945441D9A0C6CA2BC25041F92B8535109454410DA9E0AB2BC2504165F7687C0F94544180F44D8B2BC25041F33744B90E9454419C4BF7142BC2504126193D180C945441AC2065E82AC25041727ED4380B9454417B329C6E2AC25041E9C450DE0A9454417EE7B26A29C25041D56828500A945441E5055C241CC250416FD46BCF0D945441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>168472 - 3543808
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000F000000295C8F62F9C1504148E17AF436945441C3F5285CFAC150411F85EBB136945441295C8F0233C25041CDCCCCAC2794544185EB51E832C2504152B81EC5269454418FC2F58830C25041F6285CDF1F945441295C8F222FC250418FC2F5C81C945441B81E85EB2BC25041A4703DFA1094544152B81EF52AC250411F85EB310B945441AE47E18A29C250417B14AE470A945441E17A14BEF9C15041F6285CDF16945441A4703D7AE1C150413D0AD7231A94544152B81E65E0C15041C3F5288C1B945441C3F528CCE3C1504114AE47913694544148E17A54E5C150417B14AE473C945441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000300A86C409C25041953E9BA6129454413C8BFB3A0DC250414C73C6581E94544187E3D4522DC2504107A2DB21169454413B3D0ADB2CC250415C6DE8691494544165988B252CC25041166858CF1194544171AE9FE92BC250419706D9EE10945441D9A0C6CA2BC25041F92B8535109454410DA9E0AB2BC2504165F7687C0F94544180F44D8B2BC25041F33744B90E9454419C4BF7142BC2504126193D180C945441AC2065E82AC25041727ED4380B9454417B329C6E2AC25041E9C450DE0A9454417EE7B26A29C25041D56828500A945441E5055C241CC250416FD46BCF0D945441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173005 - 2916661
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000020000003A0000005C8FC25568FE50410000007018525441EC51B84E63FE5041E17A140E16525441713D0A875FFE504185EB51F8135254419A9999F95EFE5041AE47E18A13525441EC51B89E5EFE50410AD7A31015525441CDCCCCAC5DFE5041D7A3709D14525441F6285C8F5DFE5041E17A14CE135254418FC2F5685DFE5041D7A370AD125254413D0AD7E351FE50417B14AE57185254418FC2F54859FE50418FC2F5A8205254419A9999A95CFE5041713D0AB723525441713D0A675FFE50419A9999492452544185EB515862FE5041333333732D52544148E17A9462FE50410AD7A31031525441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000000AF14CA395FE5041231C25A96B52544137C4A7DB99FE50415F4637816C5254418B76F46B9DFE5041E82E2D096C525441CE946F24A3FE504184E80EA16A52544161EB02FDA9FE50414681E2906852544140C35F4DAEFE5041A74DCC8867525441C3F5281CAEFE50410AD7A38063525441C3F5286CADFE50411F85EB3160525441379145FEACFE5041CC9E0A7F5C5254419757ABECACFE50415EA65DE75B525441AE47E1DAACFE5041E17A144E5B525441A3919E84ACFE5041940B2E715A52544159DEB307ACFE50411B804931595254418FC2F5E8ABFE5041295C8FE258525441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173005 - 5249061
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000020000003A0000005C8FC25568FE50410000007018525441EC51B84E63FE5041E17A140E16525441713D0A875FFE504185EB51F8135254419A9999F95EFE5041AE47E18A13525441EC51B89E5EFE50410AD7A31015525441CDCCCCAC5DFE5041D7A3709D14525441F6285C8F5DFE5041E17A14CE135254418FC2F5685DFE5041D7A370AD125254413D0AD7E351FE50417B14AE57185254418FC2F54859FE50418FC2F5A8205254419A9999A95CFE5041713D0AB723525441713D0A675FFE50419A9999492452544185EB515862FE5041333333732D52544148E17A9462FE50410AD7A31031525441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000000AF14CA395FE5041231C25A96B52544137C4A7DB99FE50415F4637816C5254418B76F46B9DFE5041E82E2D096C525441CE946F24A3FE504184E80EA16A52544161EB02FDA9FE50414681E2906852544140C35F4DAEFE5041A74DCC8867525441C3F5281CAEFE50410AD7A38063525441C3F5286CADFE50411F85EB3160525441379145FEACFE5041CC9E0A7F5C5254419757ABECACFE50415EA65DE75B525441AE47E1DAACFE5041E17A144E5B525441A3919E84ACFE5041940B2E715A52544159DEB307ACFE50411B804931595254418FC2F5E8ABFE5041295C8FE258525441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173295 - 3021751
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -94  </desc>
+<a>
+01060000000100000001030000000300000022000000B81E854B00F15041333333434E2154410000003005F15041666666B64F2154410000004006F15041713D0A0750215441000000300CF150411F85EBC152215441E17A146E16F1504152B81E9558215441CDCCCCDC1AF150411F85EBD1592154419A99992919F15041CDCCCC6C572154417B14AE5718F15041713D0AD755215441F6285C0F13F15041CDCCCCDC46215441F6285C1F0CF15041E17A140E332154413D0AD7530AF150411F85EB812E2154410000004009F15041000000202D215441A4703DEA04F15041713D0A272E215441333333A3F5F050411F85EB1131215441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000034000000FD524C63D8F05041C62AD9DD14215441061F3CF3DEF05041D66D2E361F2154418CA95A30E0F050412F85BE631F215441014DCC42E1F05041E70CDBBA1E215441BE6821FEE2F050418347A2D21D215441212E5AE6E3F05041B9E14C511E2154412BBCCD25E3F050415E8C830D1F215441CBBFD90DE0F0504143DA95F320215441333333D3EFF05041000000D039215441F07012B3F0F050413ACFD46D37215441D97D9921F1F05041FEF495403621544114AE4741F1F05041A4703DEA3521544184E57A10F2F05041AF61A38A34215441CB4DF535F2F050415451F05A34215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173295 - 5315226
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -94  </desc>
+<a>
+01060000000100000001030000000300000022000000B81E854B00F15041333333434E2154410000003005F15041666666B64F2154410000004006F15041713D0A0750215441000000300CF150411F85EBC152215441E17A146E16F1504152B81E9558215441CDCCCCDC1AF150411F85EBD1592154419A99992919F15041CDCCCC6C572154417B14AE5718F15041713D0AD755215441F6285C0F13F15041CDCCCCDC46215441F6285C1F0CF15041E17A140E332154413D0AD7530AF150411F85EB812E2154410000004009F15041000000202D215441A4703DEA04F15041713D0A272E215441333333A3F5F050411F85EB1131215441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000034000000FD524C63D8F05041C62AD9DD14215441061F3CF3DEF05041D66D2E361F2154418CA95A30E0F050412F85BE631F215441014DCC42E1F05041E70CDBBA1E215441BE6821FEE2F050418347A2D21D215441212E5AE6E3F05041B9E14C511E2154412BBCCD25E3F050415E8C830D1F215441CBBFD90DE0F0504143DA95F320215441333333D3EFF05041000000D039215441F07012B3F0F050413ACFD46D37215441D97D9921F1F05041FEF495403621544114AE4741F1F05041A4703DEA3521544184E57A10F2F05041AF61A38A34215441CB4DF535F2F050415451F05A34215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>240587 - 5321530
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+010600000001000000010300000001000000080000005C8FC2E576D0504114AE47D1E0E35441333333837AD0504148E17AB407E454417B14AEC79DD05041B81E850B0AE45441713D0A47C1D050415C8FC2650CE454410AD7A390BDD0504114AE4781E5E354410AD7A330BCD0504100000030E4E354413D0AD70378D05041A4703DAADFE354415C8FC2E576D0504114AE47D1E0E35441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000E1F5E741BFD050412E6A373CF7E354410AD7A390BDD0504114AE4781E5E354410AD7A330BCD0504100000030E4E3544121930CB893D050416499B680E1E354418B28790593D050410DFEDD74E1E354413D0AD70378D05041A4703DAADFE354415C8FC2E576D0504114AE47D1E0E3544172EBA26677D05041681EA33BE6E35441580DBA7777D05041988F7BF3E6E35441ED37328B78D05041C96CC786F2E3544130291FA178D050416650A372F3E354418D6608A678D050412DC577A7F3E35441141DF95CBFD0504145E0C557F8E35441DAC2C04EBFD050415B33CDC2F7E35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>179779 - 4168981
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -163  </desc>
+<a>
+010600000001000000010300000001000000150000000AD7A3403D2D51411F85EB41022B55419A999919482D5141295C8F320A2B554166666636492D514152B81EA5052B554185EB51384B2D5141EC51B8DE012B5541AE47E18A4D2D514185EB51B8FE2A554148E17A744F2D5141AE47E13AFC2A554152B81ED54E2D5141333333C3FA2A55415C8FC2754D2D5141CDCCCCACF92A554114AE4711452D51415C8FC205F52A554148E17A942F2D51415C8FC2F5EF2A5541C3F5285C292D514148E17A04EC2A554152B81E95272D514185EB51D8EB2A55415C8FC295182D51410AD7A3B0F12A554114AE4771092D51417B14AE97F72A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000433F0909472D51412BB6DC820D2B5541D722400A3D2D51413E12A0BE022B5541DA917E8D3C2D5141D087CD5F022B554159A22D6A3C2D5141E8A7A361022B5541BB6E2595342D5141A274E6C9022B5541A7B6064E332D5141F41556E8022B55414C129ED42B2D514137545D9A032B55418159938E292D51415CE984D0032B554148E17AB4252D5141E9263150042B5541B4D373B6242D51416B904FCF032B554118DC06C51C2D5141D1DD9EE2FC2A5541BA490CF21A2D5141B81E854BFB2A5541B29DEF57122D5141A4703D5AFE2A55419CE58911032D5141763390D5042B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>961914 - 1197881
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+0106000000010000000103000000010000003E000000C4340AF1CF3F51414792F498FC755441B5C1224FD03F514184DC635BF875544169C15F5BCA3F5141451B16C6F7755441642B89AEBE3F5141D412965EF7755441CC7EBF71B63F514125F819DBF6755441C8119A8BB03F5141A03EEA2AF6755441F03FE148AF3F5141B26D0FEFFA755441A4C6141CAF3F51411A2EECEDFA755441FE630E62A13F5141B57910B7FB755441E4153C51A13F5141E40B4603FE75544166D0E5E0993F5141D026A05FFE755441380BCFC2913F514184890BAAFF75544180B8A83A913F5141FE4EC62F15765441427763A5913F514126FB4A8A22765441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000044000000AE47E1DA913F5141D7A370BDFF755441A8E9379F913F5141145D524A057654417BB8A83A913F5141FA4EC62F157654413E7763A5913F514126FB4A8A22765441E8968623923F5141A03FC67E2D76544163B878F2963F514175A8C9F12E765441CBB7A196993F5141862EB45130765441887621F39B3F514122A9645E32765441E2DB243AA03F5141F76EF91A367654414D009720A63F514167A5417D3976544155F4AA30AD3F51410688FAC63B7654416C30C3B8B23F5141F41568923E765441B162C21CBA3F51410BA5A5EA3F765441FB8F2D37BF3F5141ECF8CE5D3F765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>961914 - 3823778
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+0106000000010000000103000000010000003E000000C4340AF1CF3F51414792F498FC755441B5C1224FD03F514184DC635BF875544169C15F5BCA3F5141451B16C6F7755441642B89AEBE3F5141D412965EF7755441CC7EBF71B63F514125F819DBF6755441C8119A8BB03F5141A03EEA2AF6755441F03FE148AF3F5141B26D0FEFFA755441A4C6141CAF3F51411A2EECEDFA755441FE630E62A13F5141B57910B7FB755441E4153C51A13F5141E40B4603FE75544166D0E5E0993F5141D026A05FFE755441380BCFC2913F514184890BAAFF75544180B8A83A913F5141FE4EC62F15765441427763A5913F514126FB4A8A22765441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000044000000AE47E1DA913F5141D7A370BDFF755441A8E9379F913F5141145D524A057654417BB8A83A913F5141FA4EC62F157654413E7763A5913F514126FB4A8A22765441E8968623923F5141A03FC67E2D76544163B878F2963F514175A8C9F12E765441CBB7A196993F5141862EB45130765441887621F39B3F514122A9645E32765441E2DB243AA03F5141F76EF91A367654414D009720A63F514167A5417D3976544155F4AA30AD3F51410688FAC63B7654416C30C3B8B23F5141F41568923E765441B162C21CBA3F51410BA5A5EA3F765441FB8F2D37BF3F5141ECF8CE5D3F765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>873019 - 3988976
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -64  </desc>
+<a>
+01060000000100000001030000000100000015000000CDCCCCFC4E6B51419A99991925AC5441295C8F724A6B51419A99996925AC54418FC2F508456B51418FC2F5B825AC5441EC51B83E416B5141333333D325AC5441295C8FB23E6B51410000000026AC5441D7A3702D3D6B514114AE47E12EAC54415C8FC2A53A6B5141666666B63DAC544114AE47113E6B5141A4703DFA3EAC5441000000703F6B5141A4703D2A3FAC5441713D0A87466B5141AE47E1EA3EAC5441B81E856B506B5141AE47E17A3EAC5441AE47E1BA5D6B5141AE47E16A3EAC54419A9999195F6B5141C3F528AC3DAC54418FC2F5885F6B5141EC51B8AE3BAC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000067000000A3050D9E3A6B5141024E543F2FAC5441B70798E63A6B51416B6EB1602EAC5441E44C39463B6B51417780AE632DAC54414528D7FA3B6B5141F859DDE42BAC5441D599C8E23C6B514108DD04F229AC54414CA82ED53D6B514152B8AFE827AC5441586FF9633E6B51416B0B08BB26AC5441B6F3FD8C3E6B51413F355E7226AC5441C2946E7A416B5141AFC9AC3B26AC54410CB1AA17436B51419688922A26AC54419B073618456B514117B06B1426AC5441FBB44DAB456B5141C3C0710A26AC5441B3749703486B5141C42595CD25AC5441B0C1A48F4A6B5141C76C7C8025AC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>188845 - 56102
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000013000000713D0A172CE7504114AE47B1262E5541E17A140E38E75041C3F5281C1B2E55410AD7A37038E75041CDCCCCBC1A2E5541C3F5282C35E75041C3F5282C182E55410AD7A31033E7504185EB51D8152E55411F85EB912EE75041C3F5282C122E5541C3F5286C22E75041B81E851B092E55411F85EBB11DE75041CDCCCC4C0C2E5541666666E617E75041713D0A37102E5541666666F61AE750419A9999890F2E5541666666E61BE750418FC2F568122E5541A4703DBA18E75041CDCCCC2C132E55410AD7A3C019E75041666666D6162E5541A4703D2A1BE7504185EB51081C2E5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000E17A140E38E75041C3F5281C1B2E554177AB343A38E75041958777F11A2E55412961586B38E7504123C2A4B81A2E5541C3F5282C35E75041C3F5282C182E5541527D53BA32E75041A9C8CC91152E5541CE759D9032E75041C6A1B86F152E5541E72326392EE750413F608CF6112E5541C6264FBE2AE75041049821510F2E5541F603705E22E75041FE6CC924092E55416AF6D8D31DE750413C7CE3350C2E5541A966FBB81DE7504141EE07480C2E55411F85EBB11DE75041CDCCCC4C0C2E5541E3767F2018E750416E42CA0F102E554135F2D31C19E7504155A15DF20F2E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189143 - 56378
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000620000005C8FC205CBE65041713D0A477F2B5541EC51B8BECBE65041333333137F2B55418FC2F588CCE6504114AE47E17E2B554100000090CDE6504148E17AA47E2B5541D7A3707DCEE65041666666667E2B5541AE47E19ACFE65041B81E851B7E2B55411F85EBF1D0E65041295C8FC27D2B5541713D0A07D2E650415C8FC2757D2B554185EB5188D6E65041C3F5284C7C2B5541F6285C1FD7E6504148E17A147C2B554133333363D8E6504114AE47917B2B55410AD7A3B0D9E65041D7A3700D7B2B554152B81E05DBE65041000000807A2B5541EC51B80EDCE650411F85EB117A2B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005800000063D3D1A5CCE6504113DFE98A672B55419A9999A9CCE65041A4703D6A6D2B554117AA28A9CCE65041C02C876A6D2B55414A172AA9CCE650418089096D6D2B554186567DCFCBE650412985A4F86D2B5541B81E858BCAE65041C3F528CC6E2B554178B54B84CAE6504190A60DCD6E2B554140771B68C6E650413EA3294F6F2B5541C3F5285CC6E650410AD7A3506F2B554106F8B6B2C3E65041097740BC6D2B554141BFBD9BB9E65041BAC3C9286E2B5541384D4C73B6E65041F23518726E2B5541F4A2BDA7B4E6504176831FD56E2B55416C437247B4E6504136821A91702B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189938 - 55033
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+010600000001000000010300000001000000050000008FC2F598D9ED50417B14AEE7BF8E544100000050BEED5041AE47E17AF28E5441333333F3C4ED50417B14AE67F78E5441713D0A67E0ED5041F6285C0FC48E54418FC2F598D9ED50417B14AEE7BF8E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000333333F3C4ED50417B14AE67F78E5441257A35E2CDED504100F93CB2E68E544181E54B42D4ED50418A2FC9A2DA8E5441CF339A50DCED50413FE47D97CB8E54414DF6DB60E0ED5041530D960BC48E5441CD69AE9DDAED5041920FDF86C08E5441177CE298D9ED5041973ED8F1BF8E54416E33F5FFD5ED50419065D592C68E5441623778FFC9ED504190B3F1D1DC8E544130923F0DC8ED50411A3B706DE08E54417CEC7C70BEED5041F767FC92F28E5441333333F3C4ED50417B14AE67F78E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>127073 - 202508
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -122  </desc>
+<a>
+01060000000100000001030000000100000009000000EC51B86EC4B65041C3F528CC7D4455411F85EB71C7B65041B81E85EB7C445541333333B3C1B65041AE47E11A6A4455410AD7A3B0BBB6504166666636574455418FC2F508BAB65041333333C35744554100000080B8B65041A4703D3A58445541A4703DAABBB650415C8FC2F56144554152B81E95BEB650419A9999196B445541EC51B86EC4B65041C3F528CC7D445541
+</a>
+
+<b>
+01060000000100000001030000000100000044000000B7C8112FC7B65041F01DFEFE7C4455411E85EB71C7B65041B61E85EB7C445541E7DDD793C6B6504103B836147A445541077D2508C6B6504103B836147A445541CAECA23AC4B65041C46F752D79445541A7BCCCA0C3B6504154C707137744554187BCCCA0C3B65041EE665BDF7544554165875B07C4B6504192D13D1275445541ABA4E153C3B650416FA1677874445541FF26AFD3C2B65041B1D6D81174445541848CF606C3B650415059A69173445541848CF606C3B650413211E5AA724455415D740BBAC2B65041ADAB9D77724455419C79A6B9C1B6504118E6A91071445541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37432 - 2913192
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+0106000000010000000103000000010000000C0000000AD7A3A02C9A5041666666F603FD5441295C8FE2299A5041E17A14CEC6FC544133333373279A5041F6285C5F8EFC5441A4703DBA269A50411F85EB318DFC54415C8FC275259A50413D0AD7A38CFC544148E17AF40F9A5041AE47E1DA8EFC5441AE47E1EA0D9A5041295C8F828FFC544152B81E05099A50416666667691FC5441F6285C6F0B9A504152B81E55C8FC5441C3F5282C0E9A50416666668606FD54410AD7A3302B9A50413333338305FD54410AD7A3A02C9A5041666666F603FD5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C3F5282C0E9A50416666668606FD5441B1843E80169A50418F78013C06FD5441DDF22E4A169A50411D22896302FD54419138B540139A5041DAC76D3DC6FC54413ABC967E109A504119F78D9C8FFC5441F036CA71109A50417F21F9CD8EFC544148E17AF40F9A5041AE47E1DA8EFC54415CB3FC0D0E9A5041032746778FFC5441DBB2CB05099A50418B6A367691FC544122830B21099A5041FF82DEF093FC5441F86254C1099A50415BCE9D2AA2FC544152A81F3D0A9A5041733A4727ADFC54415C9B60850A9A5041F91BEB90B3FC5441019AFAF20A9A5041D8B01E4BBDFC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>41613 - 1660281
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+010600000001000000010300000001000000150000009A99998904BC504100000030BE2455416666665609BC5041A4703D7ABE2455411F85EB5109BC5041D7A3703DBA245541F6285C4F09BC504185EB5138B82455418FC2F54809BC5041EC51B8DEB324554152B81E15FDBB5041295C8FA2B32455411F85EB81FDBB50413D0AD773B0245541F6285CCFF3BB504166666656AD2455418FC2F518F3BB50419A9999D9AE2455410AD7A3B0E1BB5041EC51B8AEA62455418FC2F5C8DFBB50415C8FC2B5AA2455418FC2F5F8DBBB504100000020AA245541C3F5287CCEBB504152B81E55A4245541B81E856BCDBB50410AD7A370B0245541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000000AD7A3B0E1BB5041EC51B8AEA6245541A0C36BF6DFBB5041D5223B90AA2455414E6210A0DFBB504123DBF95EAB2455418FC2F5F8DBBB504100000020AA245541D122DB89CEBB5041D7A3700DA524554126C0E6A0CDBB5041FDCB65C6B02455414260E570CDBB5041C1CAA1A5B12455417B14AE77DCBB50413D0AD7F3B62455410F73C6A7E5BB5041CEE85097B92455414CDDA90CEEBB50412C5239E9BB245541713D0AE7FBBB5041CDCCCCACBD245541402254A8FCBB504190D962B8BD24554152B81E15FDBB5041295C8FA2B3245541D41AD932FDBB50410B02F3C3B2245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>41613 - 4313974
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+010600000001000000010300000001000000150000009A99998904BC504100000030BE2455416666665609BC5041A4703D7ABE2455411F85EB5109BC5041D7A3703DBA245541F6285C4F09BC504185EB5138B82455418FC2F54809BC5041EC51B8DEB324554152B81E15FDBB5041295C8FA2B32455411F85EB81FDBB50413D0AD773B0245541F6285CCFF3BB504166666656AD2455418FC2F518F3BB50419A9999D9AE2455410AD7A3B0E1BB5041EC51B8AEA62455418FC2F5C8DFBB50415C8FC2B5AA2455418FC2F5F8DBBB504100000020AA245541C3F5287CCEBB504152B81E55A4245541B81E856BCDBB50410AD7A370B0245541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000000AD7A3B0E1BB5041EC51B8AEA6245541A0C36BF6DFBB5041D5223B90AA2455414E6210A0DFBB504123DBF95EAB2455418FC2F5F8DBBB504100000020AA245541D122DB89CEBB5041D7A3700DA524554126C0E6A0CDBB5041FDCB65C6B02455414260E570CDBB5041C1CAA1A5B12455417B14AE77DCBB50413D0AD7F3B62455410F73C6A7E5BB5041CEE85097B92455414CDDA90CEEBB50412C5239E9BB245541713D0AE7FBBB5041CDCCCCACBD245541402254A8FCBB504190D962B8BD24554152B81E15FDBB5041295C8FA2B3245541D41AD932FDBB50410B02F3C3B2245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976052 - 976033
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000270000009196C89412695141D7F78ED01B645441E74549741269514169DDC0951B645441EB493473126951414B5C7D951B6454410739BE3C0769514190719749076454416285BAA0136951413A417150E9635441DEC1D7AB13695141D9A5F6B5E5635441F7968FCC0E6951411B88C2DBE5635441EB3FF5320C69514174EA11D0EA6354414583F1440769514125FDC5CDF5635441252805AF0269514149F50BF3FF6354415BA215D9FD6851418DF4266A0B645441AB65D9B6F96851411FC3B0DD15645441EC51B80EF96851415C8FC2C5166454415C8FC225F8685141C3F5288C16645441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000217F87DD276951410EA1A88F1F645441622C54AB2A69514121F6E0471F645441CDCCCCEC2E695141713D0A771D64544100000000336951411F85EB711A64544152B81E1537695141C3F528CC16645441EB870A203A695141FFFB320B15645441A26C5FF03D695141F539690812645441B84A1B9044695141964002390F6454416E2F706048695141EDC34ED10D64544129C815654D6951412FD18032086454413FA6D10454695141C5BB27C601645441F530FE3A576951410F31FB8FFE635441BA8B6D425F695141FF60B8BEF96354411BDFFCAB62695141F59EEEBBF6635441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>48412 - 1701736
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000000B00000085EB5188608F5041F6285C3F9B2A5541295C8F724B8F504148E17A34932A5541295C8F62368F50419A9999398B2A5541EC51B8EE278F5041C3F5282C8D2A554114AE4741388F50419A999949962A554185EB51B8408F50410AD7A390992A5541B81E85EB4A8F5041A4703D0A9D2A554114AE47B1568F504148E17A84A12A554185EB5188618F504114AE47F1A52A55415C8FC245618F504100000030A02A554185EB5188608F5041F6285C3F9B2A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001900000034D51EC55C8F50419D1397FFA32A55411C7D5FB4578F5041AB933EEEA12A5541BB766B5C548F5041EC0C79A1A02A554127546B044F8F504162742C999E2A55419157C1004C8F504191B2AE739D2A55416DD2ADF8428F50419262FF549A2A5541C69BA6EC3E8F50414C04AADE982A5541BAC5E2553A8F504171CFD017972A5541FD34D472388F5041583C7033962A55414C88122D368F5041A4006620952A554108ECED70328F5041293D750A932A554165193F8F2D8F504168749850902A55416C677CEF2A8F5041009576D98E2A5541EC51B8EE278F5041C3F5282C8D2A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>48412 - 3414853
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000000B00000085EB5188608F5041F6285C3F9B2A5541295C8F724B8F504148E17A34932A5541295C8F62368F50419A9999398B2A5541EC51B8EE278F5041C3F5282C8D2A554114AE4741388F50419A999949962A554185EB51B8408F50410AD7A390992A5541B81E85EB4A8F5041A4703D0A9D2A554114AE47B1568F504148E17A84A12A554185EB5188618F504114AE47F1A52A55415C8FC245618F504100000030A02A554185EB5188608F5041F6285C3F9B2A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001900000034D51EC55C8F50419D1397FFA32A55411C7D5FB4578F5041AB933EEEA12A5541BB766B5C548F5041EC0C79A1A02A554127546B044F8F504162742C999E2A55419157C1004C8F504191B2AE739D2A55416DD2ADF8428F50419262FF549A2A5541C69BA6EC3E8F50414C04AADE982A5541BAC5E2553A8F504171CFD017972A5541FD34D472388F5041583C7033962A55414C88122D368F5041A4006620952A554108ECED70328F5041293D750A932A554165193F8F2D8F504168749850902A55416C677CEF2A8F5041009576D98E2A5541EC51B8EE278F5041C3F5282C8D2A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72024 - 53861
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -14  </desc>
+<a>
+0106000000010000000103000000010000000B000000A4703DBA33BD50418FC2F558473155413333339326BD5041713D0AB7523155411F85EBE121BD504148E17AE4553155410000002024BD5041AE47E10A5A3155418FC2F55839BD50418FC2F5E848315541F6285C3F4EBD50410AD7A350373155410AD7A3804BBD5041E17A14CE323155418FC2F56848BD5041B81E851B35315541B81E851B45BD5041CDCCCC7C373155417B14AE173FBD50417B14AEE73C315541A4703DBA33BD50418FC2F55847315541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000003333339326BD5041713D0AB752315541B0314A9224BD5041CEAF5A1254315541731D4B5624BD5041123D1D40543155417C6135E821BD50410C1C1EF055315541D0432E3E22BD50413D0A388F563155413B75F87C22BD504131276B03573155414577B73B24BD5041924081F4593155418C0FC98327BD5041178E554E57315541C532D03B2ABD5041BBDE711C55315541B1ECE95F31BD504172EDC33D4F31554193E50CFB39BD5041FB698060483155419CF767063BBD5041A0846C7F473155418C6891364CBD504145BC130739315541069B7B3C4EBD5041C0B0E94B37315541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72443 - 3086676
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000000B0000001F85EB1133C55041F6285C7F4331554152B81E352FC55041666666E6403155411F85EB812AC550415C8FC2A55E3155415C8FC24549C550413D0AD723673155410AD7A32067C5504114AE47316F315541A4703D6A69C550416666661646315541D7A370BD42C55041B81E853B40315541295C8FB241C5504148E17A14413155415C8FC22541C55041EC51B8FE4A3155416666662640C550410AD7A3F04A3155411F85EB1133C55041F6285C7F43315541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000001DA5B9B62CC5504170DB4A9B503155411F85EB812AC550415C8FC2A55E315541317F43BE33C55041C86A6933613155415E4141E834C55041BB9FAE8461315541029D2AD136C550410FB1A40B62315541420DBA2D4DC550414D258D316831554139DC415760C55041512EAC5C6D3155413777CBF25FC550417D14C3426D315541DD2E6A4E61C550410641B0A06D315541FB773B2667C55041683DDB346F315541BD8EB83368C550419D8B18D1603155411DA5B9B62CC5504170DB4A9B50315541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72443 - 3412372
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000000B0000001F85EB1133C55041F6285C7F4331554152B81E352FC55041666666E6403155411F85EB812AC550415C8FC2A55E3155415C8FC24549C550413D0AD723673155410AD7A32067C5504114AE47316F315541A4703D6A69C550416666661646315541D7A370BD42C55041B81E853B40315541295C8FB241C5504148E17A14413155415C8FC22541C55041EC51B8FE4A3155416666662640C550410AD7A3F04A3155411F85EB1133C55041F6285C7F43315541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000001DA5B9B62CC5504170DB4A9B503155411F85EB812AC550415C8FC2A55E315541317F43BE33C55041C86A6933613155415E4141E834C55041BB9FAE8461315541029D2AD136C550410FB1A40B62315541420DBA2D4DC550414D258D316831554139DC415760C55041512EAC5C6D3155413777CBF25FC550417D14C3426D315541DD2E6A4E61C550410641B0A06D315541FB773B2667C55041683DDB346F315541BD8EB83368C550419D8B18D1603155411DA5B9B62CC5504170DB4A9B50315541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>79128 - 3181040
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000100000001030000000100000015000000F6285C2FCA9150416666664667245541AE47E15ACB915041A4703DFA7424554166666676CD91504148E17A947E245541E17A14CEDC915041C3F5280C8C24554185EB5148EB915041295C8F227F24554185EB5158E79150419A9999B9782455419A999989E29150410000006074245541CDCCCC7CDA91504148E17A04702455418FC2F588D79150417B14AEC76C24554185EB5138CF91504152B81EC56E24554148E17A84CE91504148E17A54682455413D0AD783DB915041EC51B8EE64245541C3F5281CDA9150411F85EB415E245541B81E85EBE29150418FC2F57859245541 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000064000000A4703DFAC9915041E17A144E24245541CDCCCC3CCB9150415C8FC2E5232455417B14AEA7DC915041295C8F92472455411F85EB71DF915041F6285C7F49245541EC51B81EE8915041713D0A774A24554114AE47B1F5915041CDCCCCDC4E245541B81E851BFC9150410AD7A3D051245541D7A3706D1C925041F6285C2F67245541D7A370ED1E925041EC51B83E6824554148E17A0428925041713D0A176C2455410AD7A3E02A92504114AE47F16C24554114AE475134925041A4703DFA6D245541AE47E1FA4C925041295C8FA26D245541D7A3702D4E925041000000006D245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>79128 - 5173014
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000100000001030000000100000015000000F6285C2FCA9150416666664667245541AE47E15ACB915041A4703DFA7424554166666676CD91504148E17A947E245541E17A14CEDC915041C3F5280C8C24554185EB5148EB915041295C8F227F24554185EB5158E79150419A9999B9782455419A999989E29150410000006074245541CDCCCC7CDA91504148E17A04702455418FC2F588D79150417B14AEC76C24554185EB5138CF91504152B81EC56E24554148E17A84CE91504148E17A54682455413D0AD783DB915041EC51B8EE64245541C3F5281CDA9150411F85EB415E245541B81E85EBE29150418FC2F57859245541 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000063000000A4703DFAC9915041E17A144E24245541CDCCCC3CCB9150415C8FC2E5232455417B14AEA7DC915041295C8F92472455411F85EB71DF915041F6285C7F49245541EC51B81EE8915041713D0A774A24554114AE47B1F5915041CDCCCCDC4E245541B81E851BFC9150410AD7A3D051245541D7A3706D1C925041F6285C2F67245541D7A370ED1E925041EC51B83E6824554148E17A0428925041713D0A176C2455410AD7A3E02A92504114AE47F16C24554114AE475134925041A4703DFA6D245541AE47E1FA4C925041295C8FA26D245541D7A3702D4E925041000000006D245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>79128 - 52608
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000100000001030000000100000015000000F6285C2FCA9150416666664667245541AE47E15ACB915041A4703DFA7424554166666676CD91504148E17A947E245541E17A14CEDC915041C3F5280C8C24554185EB5148EB915041295C8F227F24554185EB5158E79150419A9999B9782455419A999989E29150410000006074245541CDCCCC7CDA91504148E17A04702455418FC2F588D79150417B14AEC76C24554185EB5138CF91504152B81EC56E24554148E17A84CE91504148E17A54682455413D0AD783DB915041EC51B8EE64245541C3F5281CDA9150411F85EB415E245541B81E85EBE29150418FC2F57859245541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000439B1226CD9150410D1D7B267D24554130FE4FE1CC91504164822FED7B2455418F86760DCC915041FD0BED277824554128E96768CB915041AC62DE3775245541AE47E15ACB915041A4703DFA74245541F6285C2FCA915041666666466724554166A8440DCA915041A054B9256524554165095F42C99150413E56177C5824554147A98A29C891504189479C204D245541569C6CF2C69150416CA754F143245541E1DC5848C591504116A3D1523B245541A34C55CCC3915041D6C701343B245541E367CC8CC4915041E2DA9C07412455411A12F9D4C4915041A9F02B2A45245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>79128 - 86055
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000100000001030000000100000015000000F6285C2FCA9150416666664667245541AE47E15ACB915041A4703DFA7424554166666676CD91504148E17A947E245541E17A14CEDC915041C3F5280C8C24554185EB5148EB915041295C8F227F24554185EB5158E79150419A9999B9782455419A999989E29150410000006074245541CDCCCC7CDA91504148E17A04702455418FC2F588D79150417B14AEC76C24554185EB5138CF91504152B81EC56E24554148E17A84CE91504148E17A54682455413D0AD783DB915041EC51B8EE64245541C3F5281CDA9150411F85EB415E245541B81E85EBE29150418FC2F57859245541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000439B1226CD9150410D1D7B267D24554130FE4FE1CC91504164822FED7B2455418F86760DCC915041FD0BED277824554128E96768CB915041AC62DE3775245541AE47E15ACB915041A4703DFA74245541F6285C2FCA915041666666466724554166A8440DCA915041A054B9256524554165095F42C99150413E56177C5824554147A98A29C891504189479C204D245541569C6CF2C69150416CA754F143245541E1DC5848C591504116A3D1523B245541A34C55CCC3915041D6C701343B245541E367CC8CC4915041E2DA9C07412455411A12F9D4C4915041A9F02B2A45245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>82958 - 425659
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -771  </desc>
+<a>
+0106000000010000000103000000010000000C000000333333235D8D5041F6285C7F68205541D7A370ED5B8D5041C3F5283C7420554114AE47E15B8D50411F85EBB1742055419A9999A95A8D5041D7A3706D7820554148E17AA45B8D50413D0AD7F378205541F6285CCF638D5041333333037B205541CDCCCC8C648D50419A99995978205541CDCCCC8C678D5041AE47E1EA7820554114AE47D1678D50415C8FC21577205541713D0AB7698D5041A4703D0A6A205541295C8FC2698D504185EB51B869205541333333235D8D5041F6285C7F68205541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000D7A370ED5B8D5041C3F5283C7420554114AE47E15B8D50411F85EBB1742055419A9999A95A8D5041D7A3706D78205541F5F5757A5B8D50419A6754DD78205541590EFCD5638D504172695DEB7A205541426C02D6638D5041108146EB7A205541451F5CD6638D5041B1C403EA7A205541CED562EC648D50416FFCC3957520554114AE4791668D50418FC2F56869205541333333235D8D5041F6285C7F68205541D7A370ED5B8D5041C3F5283C74205541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>126796 - 10004
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001700000014AE473145B95041C3F5288C4B4055411F85EB3141B95041A4703D2A53405541295C8FB23EB950416666663659405541E17A14FE3BB9504185EB5138624055419A9999D93AB95041295C8FD2664055411F85EBB13BB950418FC2F58868405541295C8FB25CB950419A9999F976405541713D0A5762B950411F85EB7179405541CDCCCC9C6CB95041000000F07D405541EC51B82E6EB950413D0AD7437D405541713D0A1771B950410000003075405541A4703DDA71B9504114AE471173405541AE47E12A72B950411F85EB3172405541CDCCCC6C7AB9504148E17A445B405541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000001F85EB3141B95041A4703D2A53405541B05495933EB950411DF58C9D5940554190775E023EB950413E311B815B405541799623B83DB95041FCB949785C4055417E63CE7F3FB950412F3A6C345D4055412E854D0543B9504162120FB054405541A1D9A8DE46B95041082A85944C405541ADB9A19E4BB950417174D7CC444055410CFD9FA952B95041E77412E43A405541D7A370AD51B950418FC2F5383A405541B81E85CB50B95041F6285C2F3A405541D7A3706D4AB950410AD7A3404340554114AE473145B95041C3F5288C4B4055411F85EB3141B95041A4703D2A53405541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>182846 - 1733918
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000016000000F6285C5FAF985041666666D68DFD5441333333D3B29850418FC2F5688FFD544100000050B898504148E17A4492FD544152B81EA5BB9850418FC2F53894FD54419A9999E9C09850410000005097FD54415C8FC2C5C7985041A4703D1A9CFD54411F85EBD1CB985041C3F5280C9FFD5441F6285C0FD6985041666666167DFD5441E17A14CEDF98504152B81EC55CFD544114AE47E1D198504152B81EA559FD5441295C8F42EA98504114AE475109FD544133333313AD985041B81E85AB1DFD54410AD7A310A2985041F6285CDF1CFD544133333333919850410AD7A3804DFD5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000D7A370DDA99850410AD7A3808BFD5441F6285C5FAF985041666666D68DFD5441333333D3B29850418FC2F5688FFD544100000050B898504148E17A4492FD544152B81EA5BB9850418FC2F53894FD54419A9999E9C09850410000005097FD54415C8FC2C5C7985041A4703D1A9CFD54411F85EBD1CB985041C3F5280C9FFD5441F6285C0FD6985041666666167DFD5441E17A14CEDF98504152B81EC55CFD5441A4703D9AFA98504148E17AE403FD5441295C8F42EA98504114AE475109FD544133333313AD985041B81E85AB1DFD54410AD7A310A2985041F6285CDF1CFD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>182846 - 3445555
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000016000000F6285C5FAF985041666666D68DFD5441333333D3B29850418FC2F5688FFD544100000050B898504148E17A4492FD544152B81EA5BB9850418FC2F53894FD54419A9999E9C09850410000005097FD54415C8FC2C5C7985041A4703D1A9CFD54411F85EBD1CB985041C3F5280C9FFD5441F6285C0FD6985041666666167DFD5441E17A14CEDF98504152B81EC55CFD544114AE47E1D198504152B81EA559FD5441295C8F42EA98504114AE475109FD544133333313AD985041B81E85AB1DFD54410AD7A310A2985041F6285CDF1CFD544133333333919850410AD7A3804DFD5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000D7A370DDA99850410AD7A3808BFD5441F6285C5FAF985041666666D68DFD5441333333D3B29850418FC2F5688FFD544100000050B898504148E17A4492FD544152B81EA5BB9850418FC2F53894FD54419A9999E9C09850410000005097FD54415C8FC2C5C7985041A4703D1A9CFD54411F85EBD1CB985041C3F5280C9FFD5441F6285C0FD6985041666666167DFD5441E17A14CEDF98504152B81EC55CFD5441A4703D9AFA98504148E17AE403FD5441295C8F42EA98504114AE475109FD544133333313AD985041B81E85AB1DFD54410AD7A310A2985041F6285CDF1CFD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>222544 - 2991521
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -28  </desc>
+<a>
+010600000001000000010300000001000000110000007B14AEC70C2A5141E17A142EACB8544133333373142A514148E17AA4B2B85441A4703DDA152A5141C3F528DCB1B85441713D0AD7222A514100000040ABB8544185EB51282E2A5141C3F5288CA3B8544148E17AC4322A5141D7A370BDA0B854413D0AD7C3392A51419A9999799CB85441F6285CFF482A51417B14AE3794B854411F85EB215D2A5141F6285CDF8AB8544166666676662A5141C3F528CC86B85441EC51B8CE6E2A5141295C8FA283B85441000000B06D2A51415C8FC2E580B8544114AE4781652A51417B14AE9782B85441333333135C2A51411F85EBB183B85441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000110000001326ADB1032A514153AC0BD3A3B85441467F8F510D2A5141A9FAE2E7ABB8544129C80642192A51413B9D117AA4B854418CED037D2A2A51413975F8D699B85441FF3C2888382A5141DD22BF3392B85441B170290F452A514142B2A2988BB854419FAFEF014E2A5141A34AABE086B854411382E12E502A5141E772FBBA85B85441E7A5181D532A51419DDF0C3484B85441133B9E5A462A5141DE5997ED84B854412EAFA9E93C2A5141FF4A4CE085B85441979D4409342A5141A41C8B9A87B85441F3CB390B242A5141D6D04D5F8DB85441EEC269E5142A5141D80C8A1296B85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>230510 - 150336
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000040000000103000000020000000800000085EB51685BFD5041B81E851B402954417B14AEA75EFD50410AD7A3A0512954410AD7A39061FD50418FC2F52861295441B81E85BB67FD50419A9999C97F2954419A99996970FD504114AE47F17E2954418FC2F50868FD50417B14AE875429544114AE471164FD50419A9999E93F29544185EB51685BFD5041B81E851B40295441050000005C8FC2A560FD504152B81EE540295441A4703D0A64FD50413D0AD79340295441C3F5281C64FD5041AE47E12A42295441C3F528DC60FD504152B81E85422954415C8FC2A560FD504152B81EE5402954410103000000010000000A0000 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000F76E0E1E27FE5041AB4A1FD56C295441B9D0D3D428FE5041B268E3AB6C2954414EA7483129FE5041D1F232A36C295441C066954929FE5041175AF5A06C295441C6FAAB9729FE50418B8FC1996C2954418F151EB529FE5041744C0A976C29544105C4042527FE504109A54AC8612954410AD7A3C024FE50411F85EBB157295441AE47E12A1EFE504152B81EB53B2954414F2B29AC11FE5041A1A270FD3B29544146532D6F13FE50417509330644295441A4703DFA17FE5041E17A14BE58295441A4703D9A1CFE5041295C8FD26D295441E17A145E24FE50417B14AE176D295441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>230510 - 290099
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000040000000103000000020000000800000085EB51685BFD5041B81E851B402954417B14AEA75EFD50410AD7A3A0512954410AD7A39061FD50418FC2F52861295441B81E85BB67FD50419A9999C97F2954419A99996970FD504114AE47F17E2954418FC2F50868FD50417B14AE875429544114AE471164FD50419A9999E93F29544185EB51685BFD5041B81E851B40295441050000005C8FC2A560FD504152B81EE540295441A4703D0A64FD50413D0AD79340295441C3F5281C64FD5041AE47E12A42295441C3F528DC60FD504152B81E85422954415C8FC2A560FD504152B81EE5402954410103000000010000000A0000 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000F76E0E1E27FE5041AB4A1FD56C295441B9D0D3D428FE5041B268E3AB6C2954414EA7483129FE5041D1F232A36C295441C066954929FE5041175AF5A06C295441C6FAAB9729FE50418B8FC1996C2954418F151EB529FE5041744C0A976C29544105C4042527FE504109A54AC8612954410AD7A3C024FE50411F85EBB157295441AE47E12A1EFE504152B81EB53B2954414F2B29AC11FE5041A1A270FD3B29544146532D6F13FE50417509330644295441A4703DFA17FE5041E17A14BE58295441A4703D9A1CFE5041295C8FD26D295441E17A145E24FE50417B14AE176D295441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>99455 - 3082006
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000000F000000AAC4C227788350416D0791EFF11B54417780D7447783504110D8543CF11B54411DEDE0BE73835041BC6CD80CF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B54417B14AEC7718350419A999939F91B54410AD7A3F07183504133333343FA1B54413333334372835041CDCCCC5CFF1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C54410AD7A3D07783504166666656031C5441A4703D5A7883504133333303FF1B5441A4703D7A78835041333333A3F91B5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000007B14AE6777835041B81E853B061C544189F2BB14788350413D27166A011C5441C811B85A7883504136229AEEFE1B5441B1C92C6D78835041133EFFD4FB1B54411305C67478835041EBE17921F91B5441578C1E457883504175099BB6F41B54411BEC9428788350410EEA6211F21B5441D1FE145C778350411E22B04EF11B5441215B5F1877835041997FFD39F11B54410BB901D976835041C078A736F11B5441CE4C93C775835041AD3C4228F11B54417BB0BCC873835041594B5D0DF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>99455 - 3398618
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000000F000000AAC4C227788350416D0791EFF11B54417780D7447783504110D8543CF11B54411DEDE0BE73835041BC6CD80CF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B54417B14AEC7718350419A999939F91B54410AD7A3F07183504133333343FA1B54413333334372835041CDCCCC5CFF1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C54410AD7A3D07783504166666656031C5441A4703D5A7883504133333303FF1B5441A4703D7A78835041333333A3F91B5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000007B14AE6777835041B81E853B061C544189F2BB14788350413D27166A011C5441C811B85A7883504136229AEEFE1B5441B1C92C6D78835041133EFFD4FB1B54411305C67478835041EBE17921F91B5441578C1E457883504175099BB6F41B54411BEC9428788350410EEA6211F21B5441D1FE145C778350411E22B04EF11B5441215B5F1877835041997FFD39F11B54410BB901D976835041C078A736F11B5441CE4C93C775835041AD3C4228F11B54417BB0BCC873835041594B5D0DF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>905702 - 1663649
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+0106000000010000000103000000010000001F0000003D0AD763B8D650411F85EB31591F55418FC2F5C8C0D65041713D0A87631F55419A9999D9C3D65041EC51B80E671F5541C3F528CCC5D650417B14AEC7631F554148E17AC4C8D650417B14AED75E1F5541C3F5282CCAD650413D0AD7F35B1F554148E17AC4CDD65041AE47E15A551F5541333333F3CFD65041B81E855B511F554100000080D1D65041295C8FD24E1F5541B81E854BCDD650413D0AD7F34A1F5541F6285C1FC9D65041EC51B88E471F5541666666A6C4D6504148E17A64441F5541CDCCCC1CC3D650410AD7A370411F5541F6285C0FC1D65041F6285C5F3D1F5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000024000000458576E4C9D65041CB6CE18E5C1F5541479E7461CAD65041865D08925B1F5541391F6A96CBD6504176EF085B591F55412A2ACA0DCCD65041DD84F57F581F55411690C961CED65041C7505C76541F55413E6B67E7CFD650414D6817C9511F55410DD02A7ED1D650412E8DDFD04E1F5541B81E854BCDD650413D0AD7F34A1F5541F6285C1FC9D65041EC51B88E471F5541666666A6C4D6504148E17A64441F5541CDCCCC1CC3D650410AD7A370411F5541F6285C0FC1D65041F6285C5F3D1F5541B81E851BC0D65041AE47E10A3D1F554166666646B2D6504185EB5158371F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>905702 - 3307022
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+0106000000010000000103000000010000001F0000003D0AD763B8D650411F85EB31591F55418FC2F5C8C0D65041713D0A87631F55419A9999D9C3D65041EC51B80E671F5541C3F528CCC5D650417B14AEC7631F554148E17AC4C8D650417B14AED75E1F5541C3F5282CCAD650413D0AD7F35B1F554148E17AC4CDD65041AE47E15A551F5541333333F3CFD65041B81E855B511F554100000080D1D65041295C8FD24E1F5541B81E854BCDD650413D0AD7F34A1F5541F6285C1FC9D65041EC51B88E471F5541666666A6C4D6504148E17A64441F5541CDCCCC1CC3D650410AD7A370411F5541F6285C0FC1D65041F6285C5F3D1F5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000024000000458576E4C9D65041CB6CE18E5C1F5541479E7461CAD65041865D08925B1F5541391F6A96CBD6504176EF085B591F55412A2ACA0DCCD65041DD84F57F581F55411690C961CED65041C7505C76541F55413E6B67E7CFD650414D6817C9511F55410DD02A7ED1D650412E8DDFD04E1F5541B81E854BCDD650413D0AD7F34A1F5541F6285C1FC9D65041EC51B88E471F5541666666A6C4D6504148E17A64441F5541CDCCCC1CC3D650410AD7A370411F5541F6285C0FC1D65041F6285C5F3D1F5541B81E851BC0D65041AE47E10A3D1F554166666646B2D6504185EB5158371F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888719 - 585595
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000280000005224AB7F02E050412F4E728DA8ED5441902EFC1501E050415283BDA8A8ED5441C46EA5F1FEDF5041D6EDEDF2A8ED54414578FF6AFDDF5041849DF743A9ED54411360EC1CF8DF5041483DB15DAAED5441F7D03276EFDF504123DAED4CACED5441E0D48CEBEBDF504119F48722ADED54410E963056E9DF5041952758BEADED544168ECB47CE7DF5041C208E52DAEED5441D7A3703DE7DF5041CDCCCC3CAEED54413A15C287E5DF5041DFA43BC3A9ED5441829F385BE5DF5041E105AA4EA9ED5441326D2A71E4DF5041F0130FEAA6ED5441D183131CE4DF5041008E590BA6ED5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001500000052B81EF5C5DF50417B14AE779EED5441EC51B8CECBDF50410AD7A390ABED544133333303E4DF5041A4703DCAA5ED5441D7A3703DE7DF5041CDCCCC3CAEED5441E17A146EF4DF504114AE4721ABED5441A4703DEAFFDF5041F6285CBFA8ED5441295C8F7205E0504148E17A54A8ED544185EB518805E050418FC2F548A7ED5441E17A142E08E05041A4703DDA86ED5441AE47E12A07E050413D0AD72387ED54410AD7A3B0FCDF504114AE47C18AED544133333363F6DF5041A4703DBA8BED5441AE47E17AF3DF5041CDCCCC1C8DED5441E17A149EEEDF504114AE475190ED5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888719 - 1527177
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000280000005224AB7F02E050412F4E728DA8ED5441902EFC1501E050415283BDA8A8ED5441C46EA5F1FEDF5041D6EDEDF2A8ED54414578FF6AFDDF5041849DF743A9ED54411360EC1CF8DF5041483DB15DAAED5441F7D03276EFDF504123DAED4CACED5441E0D48CEBEBDF504119F48722ADED54410E963056E9DF5041952758BEADED544168ECB47CE7DF5041C208E52DAEED5441D7A3703DE7DF5041CDCCCC3CAEED54413A15C287E5DF5041DFA43BC3A9ED5441829F385BE5DF5041E105AA4EA9ED5441326D2A71E4DF5041F0130FEAA6ED5441D183131CE4DF5041008E590BA6ED5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001500000052B81EF5C5DF50417B14AE779EED5441EC51B8CECBDF50410AD7A390ABED544133333303E4DF5041A4703DCAA5ED5441D7A3703DE7DF5041CDCCCC3CAEED5441E17A146EF4DF504114AE4721ABED5441A4703DEAFFDF5041F6285CBFA8ED5441295C8F7205E0504148E17A54A8ED544185EB518805E050418FC2F548A7ED5441E17A142E08E05041A4703DDA86ED5441AE47E12A07E050413D0AD72387ED54410AD7A3B0FCDF504114AE47C18AED544133333363F6DF5041A4703DBA8BED5441AE47E17AF3DF5041CDCCCC1C8DED5441E17A149EEEDF504114AE475190ED5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888719 - 4200594
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000280000005224AB7F02E050412F4E728DA8ED5441902EFC1501E050415283BDA8A8ED5441C46EA5F1FEDF5041D6EDEDF2A8ED54414578FF6AFDDF5041849DF743A9ED54411360EC1CF8DF5041483DB15DAAED5441F7D03276EFDF504123DAED4CACED5441E0D48CEBEBDF504119F48722ADED54410E963056E9DF5041952758BEADED544168ECB47CE7DF5041C208E52DAEED5441D7A3703DE7DF5041CDCCCC3CAEED54413A15C287E5DF5041DFA43BC3A9ED5441829F385BE5DF5041E105AA4EA9ED5441326D2A71E4DF5041F0130FEAA6ED5441D183131CE4DF5041008E590BA6ED5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001500000052B81EF5C5DF50417B14AE779EED5441EC51B8CECBDF50410AD7A390ABED544133333303E4DF5041A4703DCAA5ED5441D7A3703DE7DF5041CDCCCC3CAEED5441E17A146EF4DF504114AE4721ABED5441A4703DEAFFDF5041F6285CBFA8ED5441295C8F7205E0504148E17A54A8ED544185EB518805E050418FC2F548A7ED5441E17A142E08E05041A4703DDA86ED5441AE47E12A07E050413D0AD72387ED54410AD7A3B0FCDF504114AE47C18AED544133333363F6DF5041A4703DBA8BED5441AE47E17AF3DF5041CDCCCC1C8DED5441E17A149EEEDF504114AE475190ED5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>873759 - 181966
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -23  </desc>
+<a>
+0106000000010000000103000000010000000E0000008FC2F59866AE5041CDCCCC0CA5005541F6285C1F62AE5041EC51B88EAC005541EC51B8FE5AAE5041713D0A77B50055411F85EB3151AE5041713D0A87C000554185EB51C847AE5041AE47E1EACA005541F6285CEF4CAE5041295C8FA2CE0055417B14AEF751AE5041713D0A67C8005541EC51B89E56AE504166666676C3005541E17A14BE65AE50417B14AE37B5005541EC51B89E69AE5041EC51B85EB1005541295C8F426CAE504185EB5158AC00554114AE47416DAE5041CDCCCC0CAA005541AE47E1AA6CAE50413D0AD753A80055418FC2F59866AE5041CDCCCC0CA5005541
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000F6285C1F62AE5041EC51B88EAC0055417A07F0D65FAE504132201869AF00554100530A005DAE5041DECFC66CB30055411772DBAF5AAE50411EFA0FD0B50055411F85EB3151AE5041713D0A87C000554131BAA70B48AE5041FE4D8DA0CA005541E08EE6CD4CAE504108667B11CE00554169EED7154DAE5041C74EB4D3CD005541AAD4303151AE504191E9DB5CC90055417B14AEF751AE5041713D0A67C8005541EC51B89E56AE504166666676C30055413EDA2E845AAE5041C6581C04BF005541D5D8D6A15CAE504105704E8BBD005541387D666760AE504122AA4BDDB9005541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889276 - 999824
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+0106000000010000000103000000010000004D000000CDCCCC7CD96851411F85EBA1CA335441295C8FC2D96851419A999979CD33544148E17AC4DA68514148E17A24CD3354417B14AE97E0685141E17A148ECA33544148E17A84E2685141713D0A07CA33544166666626E46851418FC2F518CA3354419A999939E56851419A9999E9CA33544185EB51F8E56851417B14AED7CB335441A4703D6AE6685141C3F528ECCC335441B81E859BE668514114AE4781CE33544114AE4781E668514100000090D03354419A999929E668514114AE4701D3335441000000B0E5685141A4703D2AD5335441EC51B8CEE46851411F85EB91D7335441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005C000000790CA4BB35695141FFEE85CCD4335441000000E0386951410AD7A360D3335441666A78FA38695141E30F7468D33354413EB3E84539695141625E1F48D33354412A8C828C3B6951411388B02AD43354414C8D5F5B3E6951418B030BBBD6335441C610B4333F6951413BEECD92D63354411CFE50193F6951413779DF6ED6335441295C8F823C695141713D0AB7D3335441AE47E1DA326951419A9999E9CE335441333333B32B695141A4703D5ACB3354413D0AD74326695141666666A6C8335441EC51B89E1F695141666666C6C9335441295C8FD21A695141C3F528BCCA335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889276 - 3337306
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+0106000000010000000103000000010000004D000000CDCCCC7CD96851411F85EBA1CA335441295C8FC2D96851419A999979CD33544148E17AC4DA68514148E17A24CD3354417B14AE97E0685141E17A148ECA33544148E17A84E2685141713D0A07CA33544166666626E46851418FC2F518CA3354419A999939E56851419A9999E9CA33544185EB51F8E56851417B14AED7CB335441A4703D6AE6685141C3F528ECCC335441B81E859BE668514114AE4781CE33544114AE4781E668514100000090D03354419A999929E668514114AE4701D3335441000000B0E5685141A4703D2AD5335441EC51B8CEE46851411F85EB91D7335441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005C000000790CA4BB35695141FFEE85CCD4335441000000E0386951410AD7A360D3335441666A78FA38695141E30F7468D33354413EB3E84539695141625E1F48D33354412A8C828C3B6951411388B02AD43354414C8D5F5B3E6951418B030BBBD6335441C610B4333F6951413BEECD92D63354411CFE50193F6951413779DF6ED6335441295C8F823C695141713D0AB7D3335441AE47E1DA326951419A9999E9CE335441333333B32B695141A4703D5ACB3354413D0AD74326695141666666A6C8335441EC51B89E1F695141666666C6C9335441295C8FD21A695141C3F528BCCA335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>501374 - 1261859
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -851  </desc>
+<a>
+01060000000100000001030000000100000063000000445481A95D5951414F8E696F13B15441B61E7201605951418C41AAD813B154419F8FC224625951417A7C643714B1544161A9846063595141C75D7E6114B15441295AB37C64595141C75D7E6114B15441F7A14E79655951411AD6046C14B15441A65F5E33675951412C9B4A0D14B15441EF760E2269595141F815E36413B15441BDBEA91E6A595141170902C712B15441D250F2646B595141E3839A1E12B15441E18688296D59514176E25EED10B154418616BF226F5951411306695D0FB154414299147E705951415D1A80E20DB15441064A439A71595141956951C60CB15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000670000005B9DEC6D65595141426B8B6B14B15441FAA14E79655951411ED6046C14B15441A75F5E33675951412F9B4A0D14B15441F1760E2269595141FA15E36413B15441CDC66FDC695951410C4466F012B15441C0BEA91E6A5951411A0902C712B1544191B5F23F6B5951411916B33112B15441D550F2646B595141E5839A1E12B154411A059AFB6C5951415D0A590C11B15441E28688296D59514179E25EED10B154418116BF226F5951411306695D0FB154413F99147E70595141621A80E20DB15441024A439A71595141956951C60CB15441260A65A172595141C521B6C90BB15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>501374 - 3400346
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -851  </desc>
+<a>
+01060000000100000001030000000100000063000000445481A95D5951414F8E696F13B15441B61E7201605951418C41AAD813B154419F8FC224625951417A7C643714B1544161A9846063595141C75D7E6114B15441295AB37C64595141C75D7E6114B15441F7A14E79655951411AD6046C14B15441A65F5E33675951412C9B4A0D14B15441EF760E2269595141F815E36413B15441BDBEA91E6A595141170902C712B15441D250F2646B595141E3839A1E12B15441E18688296D59514176E25EED10B154418616BF226F5951411306695D0FB154414299147E705951415D1A80E20DB15441064A439A71595141956951C60CB15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000670000005B9DEC6D65595141426B8B6B14B15441FAA14E79655951411ED6046C14B15441A75F5E33675951412F9B4A0D14B15441F1760E2269595141FA15E36413B15441CDC66FDC695951410C4466F012B15441C0BEA91E6A5951411A0902C712B1544191B5F23F6B5951411916B33112B15441D550F2646B595141E5839A1E12B154411A059AFB6C5951415D0A590C11B15441E28688296D59514179E25EED10B154418116BF226F5951411306695D0FB154413F99147E70595141621A80E20DB15441024A439A71595141956951C60CB15441260A65A172595141C521B6C90BB15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>875616 - 963350
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000C000000B81E85DB75EB5041713D0A273FDE54413D0AD78379EB50419A9999F93ADE544185EB51987FEB50417B14AE8733DE5441A4703DEA78EB50410000000028DE544148E17AC477EB50417B14AEE725DE5441F6285CDF6AEB5041EC51B83E2EDE5441E17A14EE69EB5041333333C32EDE54418FC2F5586CEB5041D7A370BD34DE5441CDCCCC1C6FEB50415C8FC2F53ADE54415C8FC22572EB504114AE470140DE5441E17A142E74EB5041F6285C2F3EDE5441B81E85DB75EB5041713D0A273FDE5441
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000713D0A674FEB504114AE4731FFDD5441666666A64CEB5041B81E85FBFFDD5441000000C04AEB504148E17A8400DE54411F85EBE144EB5041B81E85DB01DE5441333333A345EB504152B81E2504DE5441295C8F7248EB5041E17A14DE07DE54415C8FC28549EB5041F6285C6F09DE544172BCE4254FEB50418E968C4912DE54410C82075A50EB504115A5374F14DE544108FA8E3452EB5041A029B27C17DE5441EC51B8CE54EB50418FC2F5F81BDE5441A4703DCA57EB50411F85EB6120DE54419A9999D958EB50415C8FC2F521DE5441F6285CAF59EB5041E17A148E23DE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>876215 - 1493949
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -764  </desc>
+<a>
+0106000000010000000103000000010000001C0000007B14AEB7A4E350415C8FC21580F054417B14AE77A6E35041EC51B87E7EF054418FC2F568A8E35041D7A3707D7CF054410AD7A330AAE35041A4703D2A7AF05441A4703D3AACE35041F6285CBF77F05441F6285C3FADE35041B81E85EB76F054413D0AD753AEE350410000004076F05441C3F5281CB0E35041D7A370AD75F054410AD7A3C0B2E35041B81E852B75F0544152B81E25B7E35041713D0A4774F0544152B81EF5B8E3504148E17AC473F05441CDCCCC9CBAE35041A4703D3A73F05441B81E85FBBBE35041F6285C8F72F054418FC2F528BDE350419A99996971F05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000007B14AEB7A4E350415C8FC21580F054417B14AE77A6E35041EC51B87E7EF054418FC2F568A8E35041D7A3707D7CF054410AD7A330AAE35041A4703D2A7AF05441A4703D3AACE35041F6285CBF77F05441F6285C3FADE35041B81E85EB76F054413D0AD753AEE350410000004076F05441C3F5281CB0E35041D7A370AD75F054410AD7A3C0B2E35041B81E852B75F0544152B81E25B7E35041713D0A4774F0544152B81EF5B8E3504148E17AC473F05441CDCCCC9CBAE35041A4703D3A73F05441B81E85FBBBE35041F6285C8F72F054418FC2F528BDE350419A99996971F05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>876215 - 3397485
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -764  </desc>
+<a>
+0106000000010000000103000000010000001C0000007B14AEB7A4E350415C8FC21580F054417B14AE77A6E35041EC51B87E7EF054418FC2F568A8E35041D7A3707D7CF054410AD7A330AAE35041A4703D2A7AF05441A4703D3AACE35041F6285CBF77F05441F6285C3FADE35041B81E85EB76F054413D0AD753AEE350410000004076F05441C3F5281CB0E35041D7A370AD75F054410AD7A3C0B2E35041B81E852B75F0544152B81E25B7E35041713D0A4774F0544152B81EF5B8E3504148E17AC473F05441CDCCCC9CBAE35041A4703D3A73F05441B81E85FBBBE35041F6285C8F72F054418FC2F528BDE350419A99996971F05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000007B14AEB7A4E350415C8FC21580F054417B14AE77A6E35041EC51B87E7EF054418FC2F568A8E35041D7A3707D7CF054410AD7A330AAE35041A4703D2A7AF05441A4703D3AACE35041F6285CBF77F05441F6285C3FADE35041B81E85EB76F054413D0AD753AEE350410000004076F05441C3F5281CB0E35041D7A370AD75F054410AD7A3C0B2E35041B81E852B75F0544152B81E25B7E35041713D0A4774F0544152B81EF5B8E3504148E17AC473F05441CDCCCC9CBAE35041A4703D3A73F05441B81E85FBBBE35041F6285C8F72F054418FC2F528BDE350419A99996971F05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>623189 - 1434609
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000010000000103000000020000001200000048E17AA4A9E25041EC51B8BE4A095541D7A370ADAAE25041333333C34A095541333333C3AAE25041EC51B8DE4909554166666636ABE250415C8FC22545095541CDCCCC9CAAE2504152B81E854309554114AE4711A6E25041D7A370ED41095541AE47E19AA2E250417B14AEF740095541333333E39EE2504152B81E65400955413D0AD7039BE2504148E17A9440095541E17A14EE96E25041D7A3703D41095541B81E859B78E250418FC2F588480955410AD7A3B077E25041D7A3706D490955410AD7A39076E25041A4703DCA55095541B81E85EB75E250410AD7A3E05C095541 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000001200000048E17AA4A9E25041EC51B8BE4A095541D7A370ADAAE25041333333C34A095541333333C3AAE25041EC51B8DE4909554166666636ABE250415C8FC22545095541CDCCCC9CAAE2504152B81E854309554114AE4711A6E25041D7A370ED41095541AE47E19AA2E250417B14AEF740095541333333E39EE2504152B81E65400955413D0AD7039BE2504148E17A9440095541E17A14EE96E25041D7A3703D41095541B81E859B78E250418FC2F588480955410AD7A3B077E25041D7A3706D490955410AD7A39076E25041A4703DCA55095541B81E85EB75E250410AD7A3E05C095541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>623189 - 3467345
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000010000000103000000020000001200000048E17AA4A9E25041EC51B8BE4A095541D7A370ADAAE25041333333C34A095541333333C3AAE25041EC51B8DE4909554166666636ABE250415C8FC22545095541CDCCCC9CAAE2504152B81E854309554114AE4711A6E25041D7A370ED41095541AE47E19AA2E250417B14AEF740095541333333E39EE2504152B81E65400955413D0AD7039BE2504148E17A9440095541E17A14EE96E25041D7A3703D41095541B81E859B78E250418FC2F588480955410AD7A3B077E25041D7A3706D490955410AD7A39076E25041A4703DCA55095541B81E85EB75E250410AD7A3E05C095541 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000001200000048E17AA4A9E25041EC51B8BE4A095541D7A370ADAAE25041333333C34A095541333333C3AAE25041EC51B8DE4909554166666636ABE250415C8FC22545095541CDCCCC9CAAE2504152B81E854309554114AE4711A6E25041D7A370ED41095541AE47E19AA2E250417B14AEF740095541333333E39EE2504152B81E65400955413D0AD7039BE2504148E17A9440095541E17A14EE96E25041D7A3703D41095541B81E859B78E250418FC2F588480955410AD7A3B077E25041D7A3706D490955410AD7A39076E25041A4703DCA55095541B81E85EB75E250410AD7A3E05C095541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>250078 - 2934137
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000025000000AE47E17ABA2D514114AE47D142755441EC51B82EB82D5141D7A3705D4A755441A4703D9ABE2D5141A4703D8A4C7554419A9999D9C42D5141CDCCCCCC4E755441E17A143ECC2D51413D0AD7835175544152B81EB5D12D5141AE47E1AA53755441B81E85CBCD2D51418FC2F5985A75544114AE47E1CC2D514148E17A245E755441B81E85ABC92D514148E17A5469755441E17A142EC82D5141333333036E7554417B14AE57C62D5141A4703DDA737554417B14AED7CC2D51419A9999B9757554417B14AEA7D22D5141666666667775544185EB5188D72D51415C8FC24579755441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000EE5F4AEAD12D51412D60DC10547554419F0E23ADCF2D5141C3DDE54357755441FF45C2C4CD2D5141B29B27B35A755441C56F6CA3CA2D5141ED5E7CF46575544198597377C72D51411732CE5F70755441D75DCD5EC62D51412990E80074755441F53D7B07CD2D5141226BD1E475755441EEE874D3D42D5141CB8B6375787554410F3837E5D82D5141E83359227A7554411EF4497ADD2D5141012592E97B7554410265C764E32D514109831B347E755441046578B3ED2D5141BE03F8408275544146C6029BF32D5141E759757E847554417F23675FF62D514113C1C47C85755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>250078 - 3801200
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000025000000AE47E17ABA2D514114AE47D142755441EC51B82EB82D5141D7A3705D4A755441A4703D9ABE2D5141A4703D8A4C7554419A9999D9C42D5141CDCCCCCC4E755441E17A143ECC2D51413D0AD7835175544152B81EB5D12D5141AE47E1AA53755441B81E85CBCD2D51418FC2F5985A75544114AE47E1CC2D514148E17A245E755441B81E85ABC92D514148E17A5469755441E17A142EC82D5141333333036E7554417B14AE57C62D5141A4703DDA737554417B14AED7CC2D51419A9999B9757554417B14AEA7D22D5141666666667775544185EB5188D72D51415C8FC24579755441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000EE5F4AEAD12D51412D60DC10547554419F0E23ADCF2D5141C3DDE54357755441FF45C2C4CD2D5141B29B27B35A755441C56F6CA3CA2D5141ED5E7CF46575544198597377C72D51411732CE5F70755441D75DCD5EC62D51412990E80074755441F53D7B07CD2D5141226BD1E475755441EEE874D3D42D5141CB8B6375787554410F3837E5D82D5141E83359227A7554411EF4497ADD2D5141012592E97B7554410265C764E32D514109831B347E755441046578B3ED2D5141BE03F8408275544146C6029BF32D5141E759757E847554417F23675FF62D514113C1C47C85755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>254667 - 1871449
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000200000053000000D7A370EDB29F50418FC2F528E03354417B14AED7BB9F50418FC2F5D8DE3354413D0AD7E3C19F5041E17A14CEDD335441A4703DDAC79F5041D7A3703DDC335441295C8F22CC9F5041000000F0DA33544152B81EF5D29F504166666656D9335441EC51B89ED79F5041CDCCCCBCD7335441295C8F42DB9F50418FC2F528D63354411F85EB71DE9F504114AE47E1D33354411F85EBA1E29F50411F85EB71D03354419A999909E69F50419A9999B9CC33544133333373E69F50411F85EB31CD335441713D0A47F29F5041CDCCCCACDA335441295C8F12FD9F504185EB5158DF335441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000007010000AAF840043CA0504172265BABCB3354419A99995945A050417B14AED7CC3354414C17705945A05041FD10E709D03354413552A57745A0504198761E69E23354416A57F87D45A05041050FBC6AE23354411F85EBC14BA0504148E17A04E4335441A4703D6A4FA05041A4703D9AE53354410AD7A33055A050415C8FC295E7335441713D0AE758A0504185EB5198E93354415C8FC23560A05041666666D6EB3354419A99994969A05041A4703D6AEB335441EC51B87E6DA05041A4703DCAEE3354418FC2F5286FA050413D0AD7A3F0335441AE47E1AA6FA050413D0AD733F1335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>259069 - 303376
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+01060000000100000001030000000100000058000000666666D6323C51418FC2F578E687544185EB51C82F3C5141D7A3709DE6875441AE47E1BA2C3C5141F6285C7FE78754418FC2F5282A3C5141713D0A77E8875441333333B3283C51410AD7A360EA875441AE47E11A283C5141000000A0EB87544114AE47D1273C5141F6285CCFEC8754410AD7A330283C5141D7A3700DEE8754418FC2F5B8293C5141CDCCCC2CF0875441C3F5289C2A3C51410AD7A370F28754419A9999B92B3C5141F6285CAFF387544185EB51482D3C5141B81E85ABF4875441E17A145E2E3C5141A4703DEAF4875441AE47E14A2F3C514152B81E75F5875441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000C7FD5CF7173C5141D6541648AC87544171F917011C3C5141A4192E21AE875441F7F3CD1B213C51410337F251AF875441A4703D7A233C514133333343AF8754415C8FC275243C5141E17A143EAF875441E9AF1FCB273C5141C8829BBEAE8754413488AC7C283C5141592524F1AC875441E3F613E82A3C51411964621DAD87544108E8FEFA2C3C51411964621DAD875441BD7048C1313C51415103FCE0AC875441F23C47E9343C5141FF01A736AF8754415C8FC265353C5141CDCCCC5CAF8754415C8FC285373C5141713D0A17B1875441295C8F72393C514133333373B4875441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262138 - 207329
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001100000014AE47E17C6D51410AD7A390503B544114AE47F1896D51417B14AE275E3B54415C8FC2358A6D51419A9999895E3B5441333333E39F6D5141C3F5286C753B5441C3F5289CAF6D51418FC2F548853B5441F6285C1FB06D514148E17AE4853B544166666656B06D51415C8FC225863B5441CDCCCC6CB36D5141EC51B8EE833B5441D7A370BDB66D51413D0AD783813B5441F6285C7FB66D5141295C8F42813B544152B81E35B06D514152B81ED5853B5441CDCCCCACAF6D5141CDCCCC3C853B5441CDCCCCECB56D51417B14AEB7803B54417B14AEC7906D5141CDCCCC9C583B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001000000014AE47F1896D51417B14AE275E3B544176C0B5358A6D51410A4987895E3B5441C7C36B3A8A6D51410F45858E5E3B54418B95C5BB906D51416B04A88B583B544199F8806D906D5141824EF62D583B54415E5026AF8F6D514124FB1550573B544101775E938F6D5141425CAC31573B54413549A4F78E6D5141BA493187563B54415D37E25E8D6D5141A980B5C7543B5441BA1B166D896D5141F8843E76503B544147B9477F876D5141C3B9A7594E3B5441F401FDBF856D5141E2CE01704C3B544121B5C3F4806D51414F18DCE64E3B5441499BCF5F7E6D5141376642604F3B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262138 - 355829
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001100000014AE47E17C6D51410AD7A390503B544114AE47F1896D51417B14AE275E3B54415C8FC2358A6D51419A9999895E3B5441333333E39F6D5141C3F5286C753B5441C3F5289CAF6D51418FC2F548853B5441F6285C1FB06D514148E17AE4853B544166666656B06D51415C8FC225863B5441CDCCCC6CB36D5141EC51B8EE833B5441D7A370BDB66D51413D0AD783813B5441F6285C7FB66D5141295C8F42813B544152B81E35B06D514152B81ED5853B5441CDCCCCACAF6D5141CDCCCC3C853B5441CDCCCCECB56D51417B14AEB7803B54417B14AEC7906D5141CDCCCC9C583B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001000000014AE47F1896D51417B14AE275E3B544176C0B5358A6D51410A4987895E3B5441C7C36B3A8A6D51410F45858E5E3B54418B95C5BB906D51416B04A88B583B544199F8806D906D5141824EF62D583B54415E5026AF8F6D514124FB1550573B544101775E938F6D5141425CAC31573B54413549A4F78E6D5141BA493187563B54415D37E25E8D6D5141A980B5C7543B5441BA1B166D896D5141F8843E76503B544147B9477F876D5141C3B9A7594E3B5441F401FDBF856D5141E2CE01704C3B544121B5C3F4806D51414F18DCE64E3B5441499BCF5F7E6D5141376642604F3B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263819 - 142822
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -31  </desc>
+<a>
+0106000000010000000103000000010000000E000000C3F5286CE217514148E17AD4E9865441C3F528CCD8175141A4703D9AEA8654415C8FC205D1175141AE47E1FAEA8654415C8FC2D5CB175141713D0AD7EA865441F6285C6FCA1751417B14AEA7EB86544185EB5148C617514185EB5198EE865441666666E6C6175141EC51B85EF5865441C3F5281CD51751417B14AED7F3865441B81E85EBE517514114AE4751F186544166666606F91751411F85EBC1EF865441CDCCCC6CFA1751413D0AD763EF86544148E17AF4F31751419A9999D9E786544148E17AF4ED1751418FC2F5C8E8865441C3F5286CE217514148E17AD4E9865441
+</a>
+
+<b>
+010600000001000000010300000001000000160000001A84A559F6175141C7D42BA4EA86544148E17AF4F31751419A9999D9E786544148E17AF4ED1751418FC2F5C8E8865441C3F5286CE217514148E17AD4E98654419E557252DF17514188AD6515EA865441AD377131DF175141E007D516EA865441C3F528CCD8175141A4703D9AEA8654415C8FC205D1175141AE47E1FAEA8654415C8FC2D5CB175141713D0AD7EA865441D15515DACA175141C5408D69EB865441D2A8A1D9C8175141383863CBEC865441A0D7B949C61751416EDDBEA7EE86544124284D61C6175141864868AAEF8654412BA15774C61751413957517BF0865441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264367 - 3107727
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001700000048E17A14D318514152B81E75478454417B14AE07D318514148E17AB44D845441C3F528BCD2185141C3F528FC5084544185EB51A8D218514148E17AD451845441AE47E10AD218514152B81EA558845441713D0A77D1185141F6285C3F6284544100000080D11851418FC2F588668454411F85EB81D61851413D0AD7B36A84544152B81EE5DC185141F6285C3F6D84544166666626E4185141AE47E1FA6E845441D7A370BDEB185141666666E66F84544148E17A44EC185141EC51B8DE6B84544148E17A54ED1851410000004062845441CDCCCC4CE618514148E17A9462845441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000C316687BD1185141C394D459648454412327F67BD118514123B386ED61845441EBF3F3BDD118514146913DA45D84544195BD66A8D21851416ADE97D3518454418290C90AD31851410A1837304C845441C5806312D3185141C2431A4E47845441C340B354D218514186E782FB3D845441C203DF73C6185141ECED50C840845441EF852A3AC6185141C6D7F65550845441EA710D4DC8185141E6D3E3FE5D845441C316687BD1185141C394D45964845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264367 - 3482630
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001700000048E17A14D318514152B81E75478454417B14AE07D318514148E17AB44D845441C3F528BCD2185141C3F528FC5084544185EB51A8D218514148E17AD451845441AE47E10AD218514152B81EA558845441713D0A77D1185141F6285C3F6284544100000080D11851418FC2F588668454411F85EB81D61851413D0AD7B36A84544152B81EE5DC185141F6285C3F6D84544166666626E4185141AE47E1FA6E845441D7A370BDEB185141666666E66F84544148E17A44EC185141EC51B8DE6B84544148E17A54ED1851410000004062845441CDCCCC4CE618514148E17A9462845441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000C316687BD1185141C394D459648454412327F67BD118514123B386ED61845441EBF3F3BDD118514146913DA45D84544195BD66A8D21851416ADE97D3518454418290C90AD31851410A1837304C845441C5806312D3185141C2431A4E47845441C340B354D218514186E782FB3D845441C203DF73C6185141ECED50C840845441EF852A3AC6185141C6D7F65550845441EA710D4DC8185141E6D3E3FE5D845441C316687BD1185141C394D45964845441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>269232 - 3075369
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000001300000048E17A04A4985141000000F05193544152B81EB59C9851413D0AD763489354410000004093985141E17A149E439354410AD7A37089985141CDCCCC0C3E935441A4703D0A809851417B14AED739935441CDCCCC2C7C98514114AE47D1389354417B14AE4774985141713D0A8738935441A4703D5A78985141B81E851B4C935441C3F528AC80985141C3F5281C74935441C3F528AC89985141EC51B8FE7493544152B81E658C98514114AE47417593544185EB51988D985141F6285CCF7293544185EB5128909851411F85EB2171935441D7A3706D93985141EC51B8CE6F935441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000C5977B7D91985141DC66AE97709354414EA2A280939851411FE0B0CC6F9354410805C02E9798514178441A696F935441897CF57B989851413878EC476F9354412F53F8279C9851414A081B6B70935441ED7987789D985141195947017193544104BFD208A0985141D0E3982772935441B18176F9A19851412963510673935441892B24D2A39851413E044BDA7393544145CDE579A49851418BB4544074935441905394F5A5985141875EA72B759354410A25FB38A898514157D5C292769354419FD27EE4A99851417AEBBA9B77935441E17A143EAB9851411F85EB7178935441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>269232 - 3376497
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000001300000048E17A04A4985141000000F05193544152B81EB59C9851413D0AD763489354410000004093985141E17A149E439354410AD7A37089985141CDCCCC0C3E935441A4703D0A809851417B14AED739935441CDCCCC2C7C98514114AE47D1389354417B14AE4774985141713D0A8738935441A4703D5A78985141B81E851B4C935441C3F528AC80985141C3F5281C74935441C3F528AC89985141EC51B8FE7493544152B81E658C98514114AE47417593544185EB51988D985141F6285CCF7293544185EB5128909851411F85EB2171935441D7A3706D93985141EC51B8CE6F935441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000C5977B7D91985141DC66AE97709354414EA2A280939851411FE0B0CC6F9354410805C02E9798514178441A696F935441897CF57B989851413878EC476F9354412F53F8279C9851414A081B6B70935441ED7987789D985141195947017193544104BFD208A0985141D0E3982772935441B18176F9A19851412963510673935441892B24D2A39851413E044BDA7393544145CDE579A49851418BB4544074935441905394F5A5985141875EA72B759354410A25FB38A898514157D5C292769354419FD27EE4A99851417AEBBA9B77935441E17A143EAB9851411F85EB7178935441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>269997 - 55013
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000100000001030000000100000014000000B81E85DB608F5141A4703DEAD78E5441EC51B80E608F51410AD7A310CB8E5441AE47E14A588F5141A4703D7ACF8E544185EB51D8568F5141CDCCCC4CD08E5441713D0AE7548F5141F6285CDFD18E54410AD7A3C04F8F5141B81E850BD68E54417B14AEF74A8F51413D0AD743DB8E5441295C8F42468F51413D0AD7F3E18E5441AE47E13A448F51415C8FC205E68E544166666646418F51410AD7A3C0ED8E5441295C8FB23D8F514166666666F48E5441EC51B89E3F8F514152B81E25F48E544185EB51184C8F5141666666D6F28E544152B81EB55F8F514148E17A54F28E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000CDCCCC1C408F5141A4703D5ADE8E544193E53E0B408F514199DE0575DE8E54418315E709408F514158C15C78DE8E54416DE2EECD3F8F5141448F91D2DE8E5441EC51B85E3C8F514100000010E48E544129E646733B8F514183D26CBEE48E54415C07E4783A8F51417736A481E58E54413DB79CF0388F5141A2160AB2E78E544185349857338F51411B90CEEAEB8E5441EC2DDDDF2B8F5141846B9054EA8E54418690837C2B8F5141B5D66C0CF08E54412D2073482B8F5141120E8F0BF38E5441BB0B81162B8F514111D0331EF68E5441E6633DFC2D8F51410C49B3E8F78E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275046 - 3361837
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000000D000000B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54417B14AE97B92D51418FC2F5F87B3C5441713D0A17BA2D5141AE47E16A963C5441D7A3704DBA2D5141EC51B84EA23C5441AE47E1DABA2D514148E17A54BD3C5441E17A14DEBA2D51419A9999E9BD3C54418FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000008FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54415287AC97B92D514144D9A1F87B3C544136AB1718BA2D5141DA9CC4A5963C54414BDDE007B92D5141DFAC7E33953C5441028739EAB92D514174B3776DBD3C5441D8EE8E24BA2D5141CE1FC8B2BD3C54418FC2F5D8BA2D51411F85EB81BE3C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275777 - 3142195
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+0106000000010000000103000000010000000B000000A4703DDA792551411F85EBC1203D54410AD7A32079255141C3F5280C1B3D54418FC2F5C8722551413D0AD7031C3D5441AE47E1CA712551418FC2F5A8133D5441E17A145E70255141CDCCCC7C073D54413D0AD70370255141333333B3043D5441F6285CFF6125514148E17A74063D5441AE47E1FA63255141295C8F92163D544152B81EF565255141713D0AA7263D544114AE479173255141EC51B89E223D5441A4703DDA792551411F85EBC1203D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000003333333354255141295C8F422A3D5441CDCCCCDC61255141D7A370DD273D54414172F90E66255141522E619F263D544176581296632551416CE9FF5E133D54418113D6E961255141F7A32B77063D54411F85EB313F255141EC51B8CE0A3D5441EC51B84E3E255141CDCCCCEC0B3D5441B81E858B40255141A4703D0A1E3D54417B14AEC74225514185EB5128303D54413333333354255141295C8F422A3D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275777 - 3397259
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+0106000000010000000103000000010000000B000000A4703DDA792551411F85EBC1203D54410AD7A32079255141C3F5280C1B3D54418FC2F5C8722551413D0AD7031C3D5441AE47E1CA712551418FC2F5A8133D5441E17A145E70255141CDCCCC7C073D54413D0AD70370255141333333B3043D5441F6285CFF6125514148E17A74063D5441AE47E1FA63255141295C8F92163D544152B81EF565255141713D0AA7263D544114AE479173255141EC51B89E223D5441A4703DDA792551411F85EBC1203D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000003333333354255141295C8F422A3D5441CDCCCCDC61255141D7A370DD273D54414172F90E66255141522E619F263D544176581296632551416CE9FF5E133D54418113D6E961255141F7A32B77063D54411F85EB313F255141EC51B8CE0A3D5441EC51B84E3E255141CDCCCCEC0B3D5441B81E858B40255141A4703D0A1E3D54417B14AEC74225514185EB5128303D54413333333354255141295C8F422A3D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276956 - 2933548
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001B000000CDCCCC7CC0AD50411F85EBE1B1D15441E17A141EC1AD5041B81E855BAFD15441D7A370BDC4AD5041713D0AE798D154417B14AE67C7AD504152B81E8589D154417B14AE17C3AD504152B81EC586D15441B81E85CBBBAD50413333332386D154413D0AD783BAAD5041F6285CEF85D15441AE47E1BABAAD50419A9999A984D1544166666656B6AD50418FC2F54884D1544114AE4791B6AD50415C8FC2E582D154417B14AEF7BAAD5041713D0A4783D1544114AE4771CCAD504185EB51C884D1544148E17A94D2AD50419A9999895FD1544148E17AB4D6AD50413333338346D15441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000B81E85BBBBAD5041F6285C8F63D15441EC51B87EC0AD5041333333E362D15441CC9B6C63C3AD504195E1698561D1544149F31844C6AD5041C6A4598D60D15441A35889E1C7AD5041F8F70A0660D15441CBFA0977CAAD5041C484D6AB5FD1544170D4B30BCFAD50414C8DB36F5FD1544148E17A94D2AD50419A9999895FD1544158507609D3AD50415A80E8C35CD154413781F1F7D3AD5041CB461F1D57D15441411CDF5ED5AD504190EF9F9B4ED15441FFBC46DCD5AD504131EDD5A24BD154418CFCDB7FD6AD5041DC9E6EC247D1544148E17AB4D6AD50413333338346D15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276956 - 3787815
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001B000000CDCCCC7CC0AD50411F85EBE1B1D15441E17A141EC1AD5041B81E855BAFD15441D7A370BDC4AD5041713D0AE798D154417B14AE67C7AD504152B81E8589D154417B14AE17C3AD504152B81EC586D15441B81E85CBBBAD50413333332386D154413D0AD783BAAD5041F6285CEF85D15441AE47E1BABAAD50419A9999A984D1544166666656B6AD50418FC2F54884D1544114AE4791B6AD50415C8FC2E582D154417B14AEF7BAAD5041713D0A4783D1544114AE4771CCAD504185EB51C884D1544148E17A94D2AD50419A9999895FD1544148E17AB4D6AD50413333338346D15441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000B81E85BBBBAD5041F6285C8F63D15441EC51B87EC0AD5041333333E362D15441CC9B6C63C3AD504195E1698561D1544149F31844C6AD5041C6A4598D60D15441A35889E1C7AD5041F8F70A0660D15441CBFA0977CAAD5041C484D6AB5FD1544170D4B30BCFAD50414C8DB36F5FD1544148E17A94D2AD50419A9999895FD1544158507609D3AD50415A80E8C35CD154413781F1F7D3AD5041CB461F1D57D15441411CDF5ED5AD504190EF9F9B4ED15441FFBC46DCD5AD504131EDD5A24BD154418CFCDB7FD6AD5041DC9E6EC247D1544148E17AB4D6AD50413333338346D15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277031 - 2932220
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000017000000B81E852B6FAA5041C3F528DC8AD25441713D0AD75AAA5041F6285C1F73D25441295C8F8252AA5041713D0AC769D25441295C8F724FAA504148E17AE46BD25441D7A370FD49AA50416666668674D254415C8FC20548AA50410AD7A37078D254410000006046AA5041D7A3709D7CD25441CDCCCCBC44AA50411F85EB7181D254411F85EB5143AA5041713D0A4786D2544114AE478141AA5041D7A3700D8AD25441AE47E11A3CAA504152B81EF591D254410AD7A39036AA504185EB516899D254419A9999D942AA5041000000A0A9D2544185EB51D851AA50418FC2F5A8BBD25441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000240000000AD7A39036AA504185EB516899D25441239B021F3AAA504197B27D159ED25441D167252B41AA5041E51FEA2A95D254413CDAA9BE45AA5041E070C6DE8ED254414763BC2A47AA50411B92EC1F8CD25441210819B448AA504151A2EA2889D254414FA168EE48AA5041A51B037C88D25441701C85D949AA504182C8DFC585D254414E7310364BAA5041865A63C681D25441D8661CA54BAA5041C7FD27B87FD254415B1E57A24CAA5041684A72377BD254418E295ECC4CAA50415360F6717AD25441FA8A573D4DAA5041B5B3CDB477D25441609206A74DAA50412138E80576D25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277031 - 3769154
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000017000000B81E852B6FAA5041C3F528DC8AD25441713D0AD75AAA5041F6285C1F73D25441295C8F8252AA5041713D0AC769D25441295C8F724FAA504148E17AE46BD25441D7A370FD49AA50416666668674D254415C8FC20548AA50410AD7A37078D254410000006046AA5041D7A3709D7CD25441CDCCCCBC44AA50411F85EB7181D254411F85EB5143AA5041713D0A4786D2544114AE478141AA5041D7A3700D8AD25441AE47E11A3CAA504152B81EF591D254410AD7A39036AA504185EB516899D254419A9999D942AA5041000000A0A9D2544185EB51D851AA50418FC2F5A8BBD25441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000240000000AD7A39036AA504185EB516899D25441239B021F3AAA504197B27D159ED25441D167252B41AA5041E51FEA2A95D254413CDAA9BE45AA5041E070C6DE8ED254414763BC2A47AA50411B92EC1F8CD25441210819B448AA504151A2EA2889D254414FA168EE48AA5041A51B037C88D25441701C85D949AA504182C8DFC585D254414E7310364BAA5041865A63C681D25441D8661CA54BAA5041C7FD27B87FD254415B1E57A24CAA5041684A72377BD254418E295ECC4CAA50415360F6717AD25441FA8A573D4DAA5041B5B3CDB477D25441609206A74DAA50412138E80576D25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277181 - 2928641
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -14  </desc>
+<a>
+01060000000100000001030000000100000012000000000000506BAC5041D7A3700D52CF5441333333A384AC50417B14AE6748CF54417B14AE5799AC50413333331340CF54410AD7A3F096AC504185EB51983BCF54411F85EB6193AC50417B14AE8736CF54417B14AED78EAC50413333333331CF5441713D0A978BAC50411F85EB612DCF54418FC2F5C885AC50417B14AE2726CF54411F85EBC182AC5041A4703DEA21CF5441C3F5286C81AC5041F6285CDF1FCF5441C3F5285C4DAC5041C3F5288C29CF5441B81E858B44AC5041F6285C2F2BCF54410AD7A3B053AC5041333333833CCF5441E17A14CE58AC5041C3F5289C42CF5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000A47E4EF95AAC504117BA2C6F3FCF5441CBAFA17460AC5041C2DC8D3E48CF5441FF9368AA61AC50414CDFD32F4ACF5441453537B762AC5041713A65C84BCF54413A4EB0B863AC5041C97E0C354DCF54418EF5A4A264AC5041AF44816B4ECF5441A100F45E65AC5041646363654FCF54417474BD0666AC5041798D543A50CF5441B5ADABB566AC50410D591C9750CF5441264456F568AC5041EAEE6DAA51CF5441C07293586AAC50410E04347B51CF5441A4703D3A85AC5041F6285CAF47CF544128ECC98E80AC5041729B836B3FCF5441726A3DE483AC5041CDCD04D63ACF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277181 - 3807130
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -14  </desc>
+<a>
+01060000000100000001030000000100000012000000000000506BAC5041D7A3700D52CF5441333333A384AC50417B14AE6748CF54417B14AE5799AC50413333331340CF54410AD7A3F096AC504185EB51983BCF54411F85EB6193AC50417B14AE8736CF54417B14AED78EAC50413333333331CF5441713D0A978BAC50411F85EB612DCF54418FC2F5C885AC50417B14AE2726CF54411F85EBC182AC5041A4703DEA21CF5441C3F5286C81AC5041F6285CDF1FCF5441C3F5285C4DAC5041C3F5288C29CF5441B81E858B44AC5041F6285C2F2BCF54410AD7A3B053AC5041333333833CCF5441E17A14CE58AC5041C3F5289C42CF5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000A47E4EF95AAC504117BA2C6F3FCF5441CBAFA17460AC5041C2DC8D3E48CF5441FF9368AA61AC50414CDFD32F4ACF5441453537B762AC5041713A65C84BCF54413A4EB0B863AC5041C97E0C354DCF54418EF5A4A264AC5041AF44816B4ECF5441A100F45E65AC5041646363654FCF54417474BD0666AC5041798D543A50CF5441B5ADABB566AC50410D591C9750CF5441264456F568AC5041EAEE6DAA51CF5441C07293586AAC50410E04347B51CF5441A4703D3A85AC5041F6285CAF47CF544128ECC98E80AC5041729B836B3FCF5441726A3DE483AC5041CDCD04D63ACF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277275 - 2934060
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000010000000103000000010000001D0000007B14AEF792AC504148E17A042CD354418FC2F5589AAC50415C8FC2E52BD35441A4703D5AAAAC5041295C8F6229D35441295C8F52A8AC504114AE471126D354410AD7A3F0A1AC504114AE47A11BD3544100000090A0AC504114AE476119D354418FC2F5889AAC5041F6285C7F0ED354413D0AD7C394AC5041D7A370DD05D3544185EB51088DAC5041F6285C3FFBD254416666664684AC5041D7A3701DEED254418FC2F5F879AC504133333393E1D2544185EB516874AC5041CDCCCCCCDAD25441333333436AAC50413D0AD773CED2544148E17AA469AC5041D7A370ADCDD25441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000110000000958416B7BAC5041152A48B629D35441295C8F827BAC50415C8FC2C529D35441D90DA28486AC50415BB376D32AD354417D936B228EAC5041086C118E2BD35441B94666E791AC5041A9E06BEA2BD3544171A2906E96AC504193210FF62BD354414C5002519AAC5041AB733EE52BD354412592F414A1AC5041164D19D92AD354410E40204BAAAC5041CF32EA4829D354415042755AA8AC5041A2012F1E26D35441D5AE7706A6AC5041CBA0C14F22D35441ECE31415A4AC50414C6C89221FD35441256710F9A1AC5041B5779DAF1BD354419E14317C8EAC50417FEFCFA622D35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277275 - 3799638
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000010000000103000000010000001D0000007B14AEF792AC504148E17A042CD354418FC2F5589AAC50415C8FC2E52BD35441A4703D5AAAAC5041295C8F6229D35441295C8F52A8AC504114AE471126D354410AD7A3F0A1AC504114AE47A11BD3544100000090A0AC504114AE476119D354418FC2F5889AAC5041F6285C7F0ED354413D0AD7C394AC5041D7A370DD05D3544185EB51088DAC5041F6285C3FFBD254416666664684AC5041D7A3701DEED254418FC2F5F879AC504133333393E1D2544185EB516874AC5041CDCCCCCCDAD25441333333436AAC50413D0AD773CED2544148E17AA469AC5041D7A370ADCDD25441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000110000000958416B7BAC5041152A48B629D35441295C8F827BAC50415C8FC2C529D35441D90DA28486AC50415BB376D32AD354417D936B228EAC5041086C118E2BD35441B94666E791AC5041A9E06BEA2BD3544171A2906E96AC504193210FF62BD354414C5002519AAC5041AB733EE52BD354412592F414A1AC5041164D19D92AD354410E40204BAAAC5041CF32EA4829D354415042755AA8AC5041A2012F1E26D35441D5AE7706A6AC5041CBA0C14F22D35441ECE31415A4AC50414C6C89221FD35441256710F9A1AC5041B5779DAF1BD354419E14317C8EAC50417FEFCFA622D35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277999 - 1476711
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000200000016000000000000201EE55041E17A14DE2E2D55418FC2F5A821E550413D0AD713362D55413D0AD72323E550418FC2F518392D5541713D0AB726E550419A9999293B2D5541B81E85EB2BE55041AE47E17A392D5541B81E85AB2EE55041F6285CBF362D55415C8FC2C530E55041EC51B86E312D5541D7A3704D32E5504166666606272D55417B14AE3732E55041B81E856B1D2D5541295C8F5231E5504114AE47F1162D5541AE47E10A31E550419A9999E9142D5541666666B62EE5504152B81E450D2D5541CDCCCC4C2CE55041CDCCCC4C082D5541EC51B86E29E55041295C8F42042D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000004A4FA8981DE5504156B333100B2D554143A1ED491DE550413F7C4D8A0B2D554124954C021DE55041E08D7DF20B2D5541B79159391CE550413DF79A390D2D5541A629C24F2FE55041824CFA96172D55418D124D592FE5504112AF00A9172D5541E17A146E2FE55041A4703D8A172D55415FD5BA2231E55041F1C89A061B2D55416B0EEE2C31E55041E33D731B1B2D5541244138012EE55041EB23C474212D5541D75EA96C29E55041FBCF49E02A2D55415C4637B624E550419A679EFF342D55413F6486AF24E550415808D00D352D554111F5FCAB24E55041FAC65015352D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277999 - 3817424
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000200000016000000000000201EE55041E17A14DE2E2D55418FC2F5A821E550413D0AD713362D55413D0AD72323E550418FC2F518392D5541713D0AB726E550419A9999293B2D5541B81E85EB2BE55041AE47E17A392D5541B81E85AB2EE55041F6285CBF362D55415C8FC2C530E55041EC51B86E312D5541D7A3704D32E5504166666606272D55417B14AE3732E55041B81E856B1D2D5541295C8F5231E5504114AE47F1162D5541AE47E10A31E550419A9999E9142D5541666666B62EE5504152B81E450D2D5541CDCCCC4C2CE55041CDCCCC4C082D5541EC51B86E29E55041295C8F42042D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000004A4FA8981DE5504156B333100B2D554143A1ED491DE550413F7C4D8A0B2D554124954C021DE55041E08D7DF20B2D5541B79159391CE550413DF79A390D2D5541A629C24F2FE55041824CFA96172D55418D124D592FE5504112AF00A9172D5541E17A146E2FE55041A4703D8A172D55415FD5BA2231E55041F1C89A061B2D55416B0EEE2C31E55041E33D731B1B2D5541244138012EE55041EB23C474212D5541D75EA96C29E55041FBCF49E02A2D55415C4637B624E550419A679EFF342D55413F6486AF24E550415808D00D352D554111F5FCAB24E55041FAC65015352D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277999 - 146156
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000100000001030000000200000016000000000000201EE55041E17A14DE2E2D55418FC2F5A821E550413D0AD713362D55413D0AD72323E550418FC2F518392D5541713D0AB726E550419A9999293B2D5541B81E85EB2BE55041AE47E17A392D5541B81E85AB2EE55041F6285CBF362D55415C8FC2C530E55041EC51B86E312D5541D7A3704D32E5504166666606272D55417B14AE3732E55041B81E856B1D2D5541295C8F5231E5504114AE47F1162D5541AE47E10A31E550419A9999E9142D5541666666B62EE5504152B81E450D2D5541CDCCCC4C2CE55041CDCCCC4C082D5541EC51B86E29E55041295C8F42042D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002500000043A1ED491DE550413F7C4D8A0B2D554124954C021DE55041E08D7DF20B2D5541B79159391CE550413DF79A390D2D5541A629C24F2FE55041824CFA96172D55418D124D592FE5504112AF00A9172D5541E17A146E2FE55041A4703D8A172D55415FD5BA2231E55041F1C89A061B2D55416B0EEE2C31E55041E33D731B1B2D5541244138012EE55041EB23C474212D5541D75EA96C29E55041FBCF49E02A2D55415C4637B624E550419A679EFF342D55413F6486AF24E550415808D00D352D554111F5FCAB24E55041FAC65015352D55412382D5A824E5504116A9011C352D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277999 - 352067
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000100000001030000000200000016000000000000201EE55041E17A14DE2E2D55418FC2F5A821E550413D0AD713362D55413D0AD72323E550418FC2F518392D5541713D0AB726E550419A9999293B2D5541B81E85EB2BE55041AE47E17A392D5541B81E85AB2EE55041F6285CBF362D55415C8FC2C530E55041EC51B86E312D5541D7A3704D32E5504166666606272D55417B14AE3732E55041B81E856B1D2D5541295C8F5231E5504114AE47F1162D5541AE47E10A31E550419A9999E9142D5541666666B62EE5504152B81E450D2D5541CDCCCC4C2CE55041CDCCCC4C082D5541EC51B86E29E55041295C8F42042D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002500000043A1ED491DE550413F7C4D8A0B2D554124954C021DE55041E08D7DF20B2D5541B79159391CE550413DF79A390D2D5541A629C24F2FE55041824CFA96172D55418D124D592FE5504112AF00A9172D5541E17A146E2FE55041A4703D8A172D55415FD5BA2231E55041F1C89A061B2D55416B0EEE2C31E55041E33D731B1B2D5541244138012EE55041EB23C474212D5541D75EA96C29E55041FBCF49E02A2D55415C4637B624E550419A679EFF342D55413F6486AF24E550415808D00D352D554111F5FCAB24E55041FAC65015352D55412382D5A824E5504116A9011C352D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>278446 - 53700
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000010000000103000000010000002500000052B81E85F0F4504100000030682C554166666636EEF450417B14AEA7662C55418FC2F578ECF450419A999939692C554152B81E75EAF450419A9999A96C2C5541713D0A37E7F4504152B81E65722C554114AE4701E6F45041D7A3707D742C554114AE4771EBF450410AD7A3E0772C554152B81E55EAF450413D0AD7637A2C5541713D0A07E9F450413D0AD7437C2C55415C8FC265E6F450413D0AD7038A2C55419A9999D9E6F45041A4703D0A8F2C5541713D0A67EAF45041000000B08D2C5541EC51B8AEEFF45041F6285C2F842C554185EB5198F3F4504148E17A34812C5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000F6285C1FF8F450410AD7A3B0892C55417F43FA3EF8F450419B0AD0B4892C5541EF82A660F9F45041228D6393892C554162ECB2DBF9F4504173D847EB892C55415C8FC2F5F9F45041EC51B8EE892C5541B81E85EBFAF450415C8FC2958A2C55410AD7A3A0FBF45041D7A3704D8B2C55412E1B83AFFBF450418EF39B6B8B2C5541F6942DEDFBF45041566D46A98B2C554100570AC810F55041FC826A866A2C55416B3C2BC015F55041DA0B9ED06F2C5541333333D315F55041333333B36F2C5541B600ECFC17F55041EB26BD21722C55418E71439D19F55041487B9A526F2C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>280165 - 265548
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001A00000014AE47B183F850417B14AE57617F5441A4703D0A7AF850413D0AD7B3657F5441CDCCCCDC7BF850410AD7A390717F54419A9999A979F85041E17A14BE737F5441B81E85DB77F85041AE47E14A747F544114AE47D175F85041295C8F22747F544148E17A8472F85041CDCCCC5C727F5441666666166CF850415C8FC295737F5441000000D069F85041CDCCCC1C6F7F5441EC51B81E65F85041333333C3717F544114AE47A165F8504166666676737F5441CDCCCC4C68F85041B81E857B777F54418FC2F5E869F850410AD7A380787F5441295C8F626CF85041666666A6787F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F0000002336C51768F850414878AD2B777F544104C65F4068F85041B092AA58777F544154345A6968F850413AEC9B8D777F54412C1E284069F85041C540B215787F5441746268EC69F85041DC70D880787F5441381E05F76AF850412B07BC90787F54417FE302F96CF85041A308089D787F5441DBA6956C70F85041EFBF93C6787F54410425870074F85041CC6D14E3787F544151BBA1E277F850411AC20302797F5441058670EF7EF850413DBFA034797F5441C8A94BDD87F85041771B8E88797F54410FDAD76E8FF8504113FEE2CA797F54417275F82096F85041A8B2C1FE797F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>282525 - 398150
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000200000012000000E17A140EFEAC504152B81EC55CE1544148E17AE4F7AC50410AD7A38053E1544152B81EE5F5AC5041E17A14AE4EE15441AE47E1EAF0AC5041295C8FF247E15441CDCCCCACEEAC5041AE47E14A46E1544152B81E85E0AC5041295C8F323EE15441CDCCCC1CDFAC504185EB51083EE154410AD7A3F0D5AC50410AD7A3E037E154410AD7A3E0CCAC5041333333C32EE154418FC2F538CDAC5041295C8FA22BE15441D7A3702DC3AC5041EC51B87E31E15441EC51B87ED1AC504148E17AC43DE15441333333D3DCAC50410AD7A36047E15441CDCCCCFCE0AC5041E17A14AE4CE15441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000554F621BCDAC50417F33ACAE2CE15441C629F538CDAC50414BB58FA22BE15441E5A3702DC3AC5041E451B87E31E154414AB99660C7AC50410E8B4D1835E15441EC51B87ED1AC504148E17AC43DE1544114E9A12EDCAC5041B22B0ED546E15441333333D3DCAC50410AD7A36047E1544154AC095ADDAC50416805680C48E15441988B9377DDAC504175E4083248E1544123889278DDAC50418CB64D3348E154418360F07DDDAC504192D1233A48E15441390DED39DEAC504198959C2949E15441D8CCCCFCE0AC5041CC7A14AE4CE154410B295C2FE4AC5041503D0A174FE15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>283969 - 3132607
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+010600000001000000010300000001000000200000008FC2F568283E51419A9999E9460555419A999949263E51413D0AD7B34705554152B81E35243E5141A4703D7A480555413D0AD783253E5141CDCCCC5C4C055541CDCCCC4C273E51410AD7A32051055541B81E85CB283E51415C8FC2F55605554152B81E952E3E51418FC2F5F870055541A4703DDA343E51419A9999A9890555411F85EB91353E5141AE47E12A8E055541F6285C7F363E5141C3F528DC930555418FC2F558373E5141CDCCCCCC980555418FC2F5E8373E5141D7A370DD9B05554133333363393E51413D0AD723A1055541A4703DDA3A3E5141A4703D7AA0055541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000000AD7A3D0403E51413D0AD7139D055541666666364D3E51418FC2F52895055541612D4431493E5141BA5F9FB3880555414834CA11463E51411A8898F17E05554156F96F1B453E5141092D952178055541BD5BB725433E5141C26FF8A972055541BB4DA165413E5141FAF5DF646B0555415681F0303E3E5141CC41E5515C055541F9CE95E83C3E5141F52625ED53055541AF2920303C3E51412A98E9134F0555410B2BC7083C3E5141762D240B4E055541C85CA6D43B3E514133170D3C4D055541873D0479373E5141E0E07CCC4C05554181E0B4C7383E5141DF70192B56055541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>283969 - 3493779
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+010600000001000000010300000001000000200000008FC2F568283E51419A9999E9460555419A999949263E51413D0AD7B34705554152B81E35243E5141A4703D7A480555413D0AD783253E5141CDCCCC5C4C055541CDCCCC4C273E51410AD7A32051055541B81E85CB283E51415C8FC2F55605554152B81E952E3E51418FC2F5F870055541A4703DDA343E51419A9999A9890555411F85EB91353E5141AE47E12A8E055541F6285C7F363E5141C3F528DC930555418FC2F558373E5141CDCCCCCC980555418FC2F5E8373E5141D7A370DD9B05554133333363393E51413D0AD723A1055541A4703DDA3A3E5141A4703D7AA0055541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000000AD7A3D0403E51413D0AD7139D055541666666364D3E51418FC2F52895055541612D4431493E5141BA5F9FB3880555414834CA11463E51411A8898F17E05554156F96F1B453E5141092D952178055541BD5BB725433E5141C26FF8A972055541BB4DA165413E5141FAF5DF646B0555415681F0303E3E5141CC41E5515C055541F9CE95E83C3E5141F52625ED53055541AF2920303C3E51412A98E9134F0555410B2BC7083C3E5141762D240B4E055541C85CA6D43B3E514133170D3C4D055541873D0479373E5141E0E07CCC4C05554181E0B4C7383E5141DF70192B56055541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>284951 - 3132607
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+0106000000010000000103000000010000000D000000CDCCCCBC2D3E5141713D0A57440555411F85EBE12E3E51410AD7A3C0470555417B14AE772F3E5141D7A370AD47055541AE47E1CA333E5141E17A14FE4F0555417B14AEE7353E51419A99997952055541E17A14FE383E51418FC2F5F85405554133333343383E514148E17AE45005554185EB5178373E5141AE47E1FA4B05554133333303333E5141EC51B8FE4A055541C3F5286C323E514148E17A144905554148E17AA4303E51413D0AD7F34405554152B81ED52E3E5141EC51B87E40055541CDCCCCBC2D3E5141713D0A5744055541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000000AD7A3D0403E51413D0AD7139D055541666666364D3E51418FC2F52895055541612D4431493E5141BA5F9FB3880555414834CA11463E51411A8898F17E05554156F96F1B453E5141092D952178055541BD5BB725433E5141C26FF8A972055541BB4DA165413E5141FAF5DF646B0555415681F0303E3E5141CC41E5515C055541F9CE95E83C3E5141F52625ED53055541AF2920303C3E51412A98E9134F0555410B2BC7083C3E5141762D240B4E055541C85CA6D43B3E514133170D3C4D055541873D0479373E5141E0E07CCC4C05554181E0B4C7383E5141DF70192B56055541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>284951 - 3493779
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+0106000000010000000103000000010000000D000000CDCCCCBC2D3E5141713D0A57440555411F85EBE12E3E51410AD7A3C0470555417B14AE772F3E5141D7A370AD47055541AE47E1CA333E5141E17A14FE4F0555417B14AEE7353E51419A99997952055541E17A14FE383E51418FC2F5F85405554133333343383E514148E17AE45005554185EB5178373E5141AE47E1FA4B05554133333303333E5141EC51B8FE4A055541C3F5286C323E514148E17A144905554148E17AA4303E51413D0AD7F34405554152B81ED52E3E5141EC51B87E40055541CDCCCCBC2D3E5141713D0A5744055541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000000AD7A3D0403E51413D0AD7139D055541666666364D3E51418FC2F52895055541612D4431493E5141BA5F9FB3880555414834CA11463E51411A8898F17E05554156F96F1B453E5141092D952178055541BD5BB725433E5141C26FF8A972055541BB4DA165413E5141FAF5DF646B0555415681F0303E3E5141CC41E5515C055541F9CE95E83C3E5141F52625ED53055541AF2920303C3E51412A98E9134F0555410B2BC7083C3E5141762D240B4E055541C85CA6D43B3E514133170D3C4D055541873D0479373E5141E0E07CCC4C05554181E0B4C7383E5141DF70192B56055541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287019 - 4257022
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+010600000001000000010300000001000000100000007B14AE97A8D550410000006089C1544133333393ABD55041AE47E11A8CC1544152B81E35ADD55041CDCCCC3C73C15441B81E85DBA0D55041AE47E1BA6FC15441E17A146E93D55041A4703DFA6CC15441A4703D8A95D55041A4703D4A52C154417B14AEF78DD55041B81E85CB51C15441333333C383D55041D7A3702D52C154417B14AE7780D550417B14AED752C154418FC2F5487CD55041E17A147E54C15441F6285C1F7AD55041D7A3704D76C154413D0AD78386D550419A9999C978C15441C3F528DC9BD55041B81E855B80C1544148E17A44A0D5504114AE471183C15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000002366A23494D550414EEEE83352C154417B14AEF78DD55041B81E85CB51C15441333333C383D55041D7A3702D52C154417B14AE7780D550417B14AED752C154418FC2F5487CD55041E17A147E54C15441F6285C1F7AD55041D7A3704D76C154413D0AD78386D550419A9999C978C15441C3F528DC9BD55041B81E855B80C1544148E17A44A0D5504114AE471183C1544114AE4771A4D5504185EB51F885C154417B14AE97A8D550410000006089C1544133333393ABD55041AE47E11A8CC15441FCE04338ADD55041EFBB411073C15441DCA6DF00A8D5504128666EC271C15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287019 - 4257050
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+010600000001000000010300000001000000100000007B14AE97A8D550410000006089C1544133333393ABD55041AE47E11A8CC1544152B81E35ADD55041CDCCCC3C73C15441B81E85DBA0D55041AE47E1BA6FC15441E17A146E93D55041A4703DFA6CC15441A4703D8A95D55041A4703D4A52C154417B14AEF78DD55041B81E85CB51C15441333333C383D55041D7A3702D52C154417B14AE7780D550417B14AED752C154418FC2F5487CD55041E17A147E54C15441F6285C1F7AD55041D7A3704D76C154413D0AD78386D550419A9999C978C15441C3F528DC9BD55041B81E855B80C1544148E17A44A0D5504114AE471183C15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000A972BB3A94D5504120D5634852C154418195433B94D55041560E2D4A52C15441D924CF2D94D550418963EDEF52C154410E2DB27593D55041273108CC5BC15441E7FBA92192D550410681959B6CC154410CF893B197D5504150A556BA6DC1544127BC741099D5504126FAFF006EC15441D145F6C29BD55041067F75AF6EC15441DA7E06F3A0D55041F1D8FFFE6FC15441DCA6DF00A8D5504128666EC271C15441FCE04338ADD55041EFBB411073C154411F85EBF1AED55041C3F528CC58C154410000007098D55041B81E856B52C154414468BA5896D5504129A2F15A52C15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287492 - 223353
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000028000000AE47E1CA85A65141E17A14BECDA7544114AE47317DA6514166666606DCA75441C3F5289C7AA65141B81E859BDBA754413D0AD71374A65141EC51B86ED3A754413D0AD7536BA65141295C8F52DFA75441000000506EA651418FC2F5D8E1A7544185EB51E870A6514148E17A84E0A75441EC51B80E77A65141C3F5287CE4A75441F6285C8F78A651419A9999D9E7A754411F85EB9176A65141CDCCCC6CEBA75441713D0A2779A6514100000010EDA75441E17A14BE7AA6514114AE4721EAA75441F6285C1F80A65141C3F5284CDFA75441000000108AA6514148E17A54CBA75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000B7E6936C8BA651410C47869EDCA754410799643A8CA65141FE729AF8DAA75441067FE01E8EA65141DDA5A22FD7A7544107BEBB1D8EA651416FD0FD2DD7A754415CD1F9588DA65141899746EDD6A75441EFDD6EBD8BA651418B30EA65D6A75441A0AB93A889A65141E60BA7B6D5A75441477C9F3789A65141A998757FD6A754419D89614588A65141887D86C1D6A75441E996235387A651411EDC80ABD6A754419301E04A86A65141D48A48CFD5A754416829911685A65141E8612C61D5A7544197FFEEF483A6514151495F98D7A75441F8BAB2A983A65141FA5D812FD8A75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287492 - 393512
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000028000000AE47E1CA85A65141E17A14BECDA7544114AE47317DA6514166666606DCA75441C3F5289C7AA65141B81E859BDBA754413D0AD71374A65141EC51B86ED3A754413D0AD7536BA65141295C8F52DFA75441000000506EA651418FC2F5D8E1A7544185EB51E870A6514148E17A84E0A75441EC51B80E77A65141C3F5287CE4A75441F6285C8F78A651419A9999D9E7A754411F85EB9176A65141CDCCCC6CEBA75441713D0A2779A6514100000010EDA75441E17A14BE7AA6514114AE4721EAA75441F6285C1F80A65141C3F5284CDFA75441000000108AA6514148E17A54CBA75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000B7E6936C8BA651410C47869EDCA754410799643A8CA65141FE729AF8DAA75441067FE01E8EA65141DDA5A22FD7A7544107BEBB1D8EA651416FD0FD2DD7A754415CD1F9588DA65141899746EDD6A75441EFDD6EBD8BA651418B30EA65D6A75441A0AB93A889A65141E60BA7B6D5A75441477C9F3789A65141A998757FD6A754419D89614588A65141887D86C1D6A75441E996235387A651411EDC80ABD6A754419301E04A86A65141D48A48CFD5A754416829911685A65141E8612C61D5A7544197FFEEF483A6514151495F98D7A75441F8BAB2A983A65141FA5D812FD8A75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288768 - 150985
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000080000000103000000010000000F000000A4703D9A6E0E5141A4703DFA1F2E5441EC51B8DE6F0E5141AE47E1DA0E2E5441333333D3700E514148E17AA4052E5441E17A147E710E5141D7A370BD002E5441295C8F52700E5141B81E85CB002E544185EB51A8700E5141713D0AE7FE2D5441295C8F426D0E51413D0AD783FF2D5441AE47E16A6A0E5141295C8F92002E544114AE47B1680E514100000030022E54410AD7A3B0670E51410AD7A300102E544133333393660E5141D7A370ED1C2E544185EB51E8650E51410AD7A310262E5441713D0A37650E51419A999919312E544152B81E556D0E5141AE47E15A312E5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000000AD7A3D02F0E5141295C8F922E2E544130F1BB10300E51417FB2B31E232E54416FD10F44300E51414A1ED7AC162E544194165457300E51416BB08181162E5441C8689859300E5141FF10D019162E5441815A7CB62E0E5141F2911289152E54412323BB442D0E5141B6F39009152E54412FF0C09C250E5141A0E8AF65122E5441433EF603250E51416796FF30122E5441D3CFD826240E5141A4C1BFE4112E5441A66790C2230E51418FE02AC2112E5441A84A9FD5220E5141F4DC7570112E5441C012DFBE220E51417706D7CB162E54411DC4F5BD220E5141D92E271D1B2E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288768 - 392985
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000080000000103000000010000000F000000A4703D9A6E0E5141A4703DFA1F2E5441EC51B8DE6F0E5141AE47E1DA0E2E5441333333D3700E514148E17AA4052E5441E17A147E710E5141D7A370BD002E5441295C8F52700E5141B81E85CB002E544185EB51A8700E5141713D0AE7FE2D5441295C8F426D0E51413D0AD783FF2D5441AE47E16A6A0E5141295C8F92002E544114AE47B1680E514100000030022E54410AD7A3B0670E51410AD7A300102E544133333393660E5141D7A370ED1C2E544185EB51E8650E51410AD7A310262E5441713D0A37650E51419A999919312E544152B81E556D0E5141AE47E15A312E5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000000AD7A3D02F0E5141295C8F922E2E544130F1BB10300E51417FB2B31E232E54416FD10F44300E51414A1ED7AC162E544194165457300E51416BB08181162E5441C8689859300E5141FF10D019162E5441815A7CB62E0E5141F2911289152E54412323BB442D0E5141B6F39009152E54412FF0C09C250E5141A0E8AF65122E5441433EF603250E51416796FF30122E5441D3CFD826240E5141A4C1BFE4112E5441A66790C2230E51418FE02AC2112E5441A84A9FD5220E5141F4DC7570112E5441C012DFBE220E51417706D7CB162E54411DC4F5BD220E5141D92E271D1B2E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>290160 - 3105964
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000D00000085EB51D8A39450416666663675FB5441295C8F82AC945041F6285CCF71FB544114AE4741B6945041E17A14EE69FB54411F85EBF1C09450410000008063FB5441666666D6CF945041EC51B88E56FB54413D0AD703CE9450418FC2F5B850FB5441D7A3703DB89450413D0AD7D356FB544185EB51A8B3945041E17A148E58FB544114AE4791739450419A9999F978FB544185EB512874945041D7A3703D7BFB544148E17A048994504152B81EB577FB54419A9999B98F945041713D0A1779FB544185EB51D8A39450416666663675FB5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000C0D9BA8CBB945041FC1B024266FB544111F872EDB594504155CED4DA68FB544109721D99A99450414F93708F6EFB54411EF60367A3945041E3E2718971FB5441F3FF6D089F945041F6FED7A273FB54411EEFDBDA9A945041D6C827C275FB544185D5F13897945041EC51F8A777FB544185EB51D8A39450416666663675FB5441295C8F82AC945041F6285CCF71FB5441E01EAD2CB6945041330750FC69FB544122A17295BE945041878B96EB64FB5441C0D9BA8CBB945041FC1B024266FB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>290160 - 3473207
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000D00000085EB51D8A39450416666663675FB5441295C8F82AC945041F6285CCF71FB544114AE4741B6945041E17A14EE69FB54411F85EBF1C09450410000008063FB5441666666D6CF945041EC51B88E56FB54413D0AD703CE9450418FC2F5B850FB5441D7A3703DB89450413D0AD7D356FB544185EB51A8B3945041E17A148E58FB544114AE4791739450419A9999F978FB544185EB512874945041D7A3703D7BFB544148E17A048994504152B81EB577FB54419A9999B98F945041713D0A1779FB544185EB51D8A39450416666663675FB5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000C0D9BA8CBB945041FC1B024266FB544111F872EDB594504155CED4DA68FB544109721D99A99450414F93708F6EFB54411EF60367A3945041E3E2718971FB5441F3FF6D089F945041F6FED7A273FB54411EEFDBDA9A945041D6C827C275FB544185D5F13897945041EC51F8A777FB544185EB51D8A39450416666663675FB5441295C8F82AC945041F6285CCF71FB5441E01EAD2CB6945041330750FC69FB544122A17295BE945041878B96EB64FB5441C0D9BA8CBB945041FC1B024266FB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>302239 - 215920
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -124  </desc>
+<a>
+010600000001000000010300000001000000110000000AD7A3603A3D5141D7A3706D8F2355410AD7A380223D51415C8FC2759C2355413D0AD773123D5141EC51B85EA52355410AD7A3000D3D51418FC2F5D8A8235541AE47E11A083D51410AD7A340AC235541F6285C7F033D51410AD7A300B02355417B14AE670E3D514152B81E65B92355419A999949113D51410AD7A3E0BB235541B81E85AB173D5141D7A370EDB5235541F6285C9F393D5141E17A149EA0235541666666863C3D514148E17AA49E235541EC51B87E423D51419A9999599A23554185EB5198423D51410AD7A3809923554114AE47E13D3D5141713D0AD791235541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003400000091ED61520B3D514121001904AA2355418FEAEA3E0B3D5141EE73A111AA23554141934E8E0A3D514142746B8CAA2355412CFC88820A3D514122A99A94AA2355416D09D87F0A3D51415EA77996AA235541B5A783B9033D51415788B732B0235541CE8110C5033D51411FB1A93CB0235541ABB271E5063D514192A2DFEDB22355418D3395ED063D5141F2BFE1F4B2235541F10B05F6063D5141519A25FCB223554143F9EB59113D5141F5B97BC8BB23554127CC2E28123D514112E22311BB235541B81E85AB173D5141D7A370EDB52355417B895005193D51411EAA6714B5235541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>302239 - 392516
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -45  </desc>
+<a>
+010600000001000000010300000001000000110000000AD7A3603A3D5141D7A3706D8F2355410AD7A380223D51415C8FC2759C2355413D0AD773123D5141EC51B85EA52355410AD7A3000D3D51418FC2F5D8A8235541AE47E11A083D51410AD7A340AC235541F6285C7F033D51410AD7A300B02355417B14AE670E3D514152B81E65B92355419A999949113D51410AD7A3E0BB235541B81E85AB173D5141D7A370EDB5235541F6285C9F393D5141E17A149EA0235541666666863C3D514148E17AA49E235541EC51B87E423D51419A9999599A23554185EB5198423D51410AD7A3809923554114AE47E13D3D5141713D0AD791235541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000320000008EED61520B3D514122001904AA2355418FEAEA3E0B3D5141E973A111AA2355413D934E8E0A3D51413F746B8CAA2355417909D87F0A3D514156A77996AA235541B0A783B9033D51415888B732B0235541CA8110C5033D51411CB1A93CB0235541A9B271E5063D514193A2DFEDB2235541200B05F6063D51419D9925FCB223554143F9EB59113D5141F5B97BC8BB2355417CCC2E28123D5141C3E12311BB235541B81E85AB173D5141D7A370EDB52355417F895005193D514121AA6714B523554176A0B3F0193D514159AAC967B42355417B4DAE401C3D51417D7FFF33B2235541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>320455 - 3034982
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -530  </desc>
+<a>
+0106000000010000000103000000010000001C00000014AE4791B080514148E17A349B6D544185EB5128B68051410AD7A3309D6D544152B81E55B680514148E17AD49C6D5441295C8F02B780514148E17AF4996D54415C8FC265B98051419A9999D9936D544166666646BC80514148E17AF48D6D54419A999989BF805141295C8F72896D544152B81E75C08051419A999999876D54410AD7A3F0C080514152B81E85856D544152B81E55C1805141333333C3826D5441333333F3C2805141D7A3704D7E6D5441F6285CAFC5805141CDCCCC0C7A6D5441713D0AC7C280514185EB5148786D544148E17A84B8805141A4703DEA716D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000C3F5285CA480514114AE4721626D544114AE47F19C805141000000B05C6D5441E17A143E958051415C8FC2855A6D54410000002092805141E17A14FE5B6D5441BC61CF6491805141538AFA025F6D5441311F36EC9580514176B7E03D606D544133946C35978051410FA564D65D6D5441A9C609069D8051413447815A606D54410DEF18DB9C805141669488FE646D5441294825F1988051416F52CFB56C6D54410A05AC489A8051414F0F560D6E6D5441BB5E988E99805141EED0B3CA706D5441A3F22FE197805141D8D98166706D544105A6086D96805141D002716B736D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>320455 - 3515640
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -530  </desc>
+<a>
+0106000000010000000103000000010000001C00000014AE4791B080514148E17A349B6D544185EB5128B68051410AD7A3309D6D544152B81E55B680514148E17AD49C6D5441295C8F02B780514148E17AF4996D54415C8FC265B98051419A9999D9936D544166666646BC80514148E17AF48D6D54419A999989BF805141295C8F72896D544152B81E75C08051419A999999876D54410AD7A3F0C080514152B81E85856D544152B81E55C1805141333333C3826D5441333333F3C2805141D7A3704D7E6D5441F6285CAFC5805141CDCCCC0C7A6D5441713D0AC7C280514185EB5148786D544148E17A84B8805141A4703DEA716D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000C3F5285CA480514114AE4721626D544114AE47F19C805141000000B05C6D5441E17A143E958051415C8FC2855A6D54410000002092805141E17A14FE5B6D5441BC61CF6491805141538AFA025F6D5441311F36EC9580514176B7E03D606D544133946C35978051410FA564D65D6D5441A9C609069D8051413447815A606D54410DEF18DB9C805141669488FE646D5441294825F1988051416F52CFB56C6D54410A05AC489A8051414F0F560D6E6D5441BB5E988E99805141EED0B3CA706D5441A3F22FE197805141D8D98166706D544105A6086D96805141D002716B736D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>661056 - 51245
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+0106000000010000000103000000010000002C00000048E17A2478C25041713D0A4775CA5441713D0A1782C2504114AE476183CA54418FC2F54873C2504148E17A9484CA5441D7A3708D6CC25041713D0A0785CA54417B14AE7767C250411F85EBA185CA54418FC2F55866C25041666666A67ECA54413D0AD72365C25041B81E85DB75CA5441A4703D6A63C25041AE47E1AA6DCA5441A4703D3A60C25041B81E855B64CA54410AD7A3E05EC2504185EB514862CA5441F6285CAF5AC25041D7A3706D64CA5441CDCCCCAC53C2504114AE47D168CA5441F6285C7F4AC250419A9999796FCA5441295C8F4244C250415C8FC2D573CA5441 [...]
+</a>
+
+<b>
+010600000002000000010300000001000000360000009820F1F05EC25041CC6A606162CA5441BBBD5E7A5DC2504189F29EFF62CA544119880C7259C250416FCD273465CA5441CDCCCCAC53C2504114AE47D168CA5441CC9051E54CC250419A9639BC6DCA5441F6285C7F4AC250419A9999796FCA5441295C8F4244C250415C8FC2D573CA54411398B1D043C25041A367A50474CA5441E8AC47D143C25041ED40E10674CA5441C3F6F2F844C250411D75D3A477CA54417D859CFC45C250415C1C571B7CCA544171DD7B0946C250410130E27B7CCA5441F662280347C250412CA8C12D83CA544162CA343447C250416D48926C84CA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>729708 - 1619048
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -734  </desc>
+<a>
+01060000000100000001030000000100000008000000CDCCCCDC13AE50413D0AD763BC3955415C8FC28527AE5041F6285CEFC039554149BA3B862CAE50412D2C7C17C23955411ADACD1E2BAE5041E887ACADA73955412147D42526AE5041789DFE8FA63955418FC2F5D81CAE50410AD7A360A43955419A9999391BAE50410AD7A300AD395541CDCCCCDC13AE50413D0AD763BC395541
+</a>
+
+<b>
+010600000001000000010300000001000000080000008FC2F5D81CAE50410AD7A360A43955419A9999391BAE50410AD7A300AD395541CDCCCCDC13AE50413D0AD763BC3955416FAC78C027AE50418C0EF0FCC03955419BF7C1D22CAE50419D807F12A839554138D014C12AAE50415899FF97A73955411F47D42526AE5041759DFE8FA63955418FC2F5D81CAE50410AD7A360A4395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>729708 - 3428028
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -734  </desc>
+<a>
+01060000000100000001030000000100000008000000CDCCCCDC13AE50413D0AD763BC3955415C8FC28527AE5041F6285CEFC039554149BA3B862CAE50412D2C7C17C23955411ADACD1E2BAE5041E887ACADA73955412147D42526AE5041789DFE8FA63955418FC2F5D81CAE50410AD7A360A43955419A9999391BAE50410AD7A300AD395541CDCCCCDC13AE50413D0AD763BC395541
+</a>
+
+<b>
+010600000001000000010300000001000000080000008FC2F5D81CAE50410AD7A360A43955419A9999391BAE50410AD7A300AD395541CDCCCCDC13AE50413D0AD763BC3955416FAC78C027AE50418C0EF0FCC03955419BF7C1D22CAE50419D807F12A839554138D014C12AAE50415899FF97A73955411F47D42526AE5041759DFE8FA63955418FC2F5D81CAE50410AD7A360A4395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618821 - 1563477
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -51  </desc>
+<a>
+0106000000010000000103000000010000000500000012EBB1D1F2BF5041AF561C13A8F55441D7A3706DE0BF5041B81E855BAAF5544100000040F2BF50418FC2F528ACF554417F167E8DF3BF5041F8DB8389ABF5544112EBB1D1F2BF5041AF561C13A8F55441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000985EFB6DDDBF5041E0F6C5D6A9F55441C62DEACED9BF50419E228D27A9F554415DE1F84DDABF504168A0C571AAF55441FAD66410DBBF50412EDFE19CABF55441FAD66410DBBF504127F4DBF4ACF554415254CB89DABF504149C558F1AEF554417EE08DE8D9BF5041EF461111B1F55441C62DEACED9BF5041FA8937F8B2F554414A98CC01D9BF504116E5482CB5F55441CD02AF34D8BF50412553AAADB8F55441A15EF658D8BF5041FEC5A064BAF5544196D1C894D8BF5041546DFB8DBCF554416A1E19D0DCBF504183E32C7BBAF55441565CA4B7DFBF504138946DF7B0F55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618821 - 3278742
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -51  </desc>
+<a>
+0106000000010000000103000000010000000500000012EBB1D1F2BF5041AF561C13A8F55441D7A3706DE0BF5041B81E855BAAF5544100000040F2BF50418FC2F528ACF554417F167E8DF3BF5041F8DB8389ABF5544112EBB1D1F2BF5041AF561C13A8F55441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000985EFB6DDDBF5041E0F6C5D6A9F55441C62DEACED9BF50419E228D27A9F554415DE1F84DDABF504168A0C571AAF55441FAD66410DBBF50412EDFE19CABF55441FAD66410DBBF504127F4DBF4ACF554415254CB89DABF504149C558F1AEF554417EE08DE8D9BF5041EF461111B1F55441C62DEACED9BF5041FA8937F8B2F554414A98CC01D9BF504116E5482CB5F55441CD02AF34D8BF50412553AAADB8F55441A15EF658D8BF5041FEC5A064BAF5544196D1C894D8BF5041546DFB8DBCF554416A1E19D0DCBF504183E32C7BBAF55441565CA4B7DFBF504138946DF7B0F55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>466263 - 4372015
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -304  </desc>
+<a>
+0106000000010000000103000000010000000F000000A4703DBAC9A0504133333393E02E554148E17A64C8A0504166666646FD2E5541AE47E18AE0A05041295C8F92002F554185EB5128FAA0504148E17A14042F5541B81E85EBFAA0504166666636032F554114AE4791FAA05041C3F5289C012F5541295C8F02F9A050417B14AE57FD2E5541000000B0F6A050415C8FC255F82E55419A999949F4A05041CDCCCC6CF52E5541EC51B8FEF0A050410AD7A360F22E5541D7A370DDF1A05041EC51B82EEF2E554133333343EAA0504166666676E22E5541F6285CFFDDA05041AE47E14AE22E55413D0AD7C3CAA0504152B81EB5DF2E5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A4703DBAC9A0504133333393E02E554148E17A64C8A0504166666646FD2E5541A2D5EB86DEA0504130171C4C002F5541E55A2822DFA050417DBFF044FC2E5541A261BC58DFA050413F2B8B47FA2E5541D578E966DEA05041F6285C6FF92E5541FA7E6AECDEA0504191ED7C47F52E5541190ADEF9E1A0504148F597DFF52E5541754D5368E1A05041B5B8095BF92E554175931834E0A05041295C8FB2FA2E5541461E47EADFA0504131E1D455FD2E5541A261BC58DFA05041552B31AEFF2E55419BEB7291DFA050419D878070002F554185EB5128FAA0504148E17A14042F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321833 - 3088067
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001B000000666666D6C71551418FC2F598418454418FC2F5A8BB155141333333F34A84544100000070AD155141AE47E1AA5484544152B81EF59B155141D7A3706D60845441B81E853B8F155141000000E068845441B81E859B8E155141A4703D4A69845441333333938F155141713D0AE76A8454413D0AD77390155141A4703D9A6C84544114AE4781901551413D0AD7B36C845441AE47E12A93155141295C8F026B845441295C8F529A1551413D0AD79366845441A4703D6A9E1551411F85EB416484544114AE4781A51551411F85EB3160845441A4703D2AAD155141F6285CFF5B845441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000E29DF131E5155141F2582AC604845441F37986D0C715514181B051DF1F845441DCB9E7DFB7155141D3347E992E845441A79B7CD9B41551417AC16A693184544154D139A8B2155141D7D92E7333845441483FCAEAAB155141893FC3013A84544108BBB0B7A01551414EC7CFF44484544197213526951551412979284B50845441BCF4673690155141D2FD19CC54845441CFC947FD8C1551416F7787855784544174450DAF8A155141EA187632598454413AA9791486155141949E20EE5C845441445BBBAB83155141AF68468F5E845441730051B58A1551418CB975496B845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321833 - 3431620
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001B000000666666D6C71551418FC2F598418454418FC2F5A8BB155141333333F34A84544100000070AD155141AE47E1AA5484544152B81EF59B155141D7A3706D60845441B81E853B8F155141000000E068845441B81E859B8E155141A4703D4A69845441333333938F155141713D0AE76A8454413D0AD77390155141A4703D9A6C84544114AE4781901551413D0AD7B36C845441AE47E12A93155141295C8F026B845441295C8F529A1551413D0AD79366845441A4703D6A9E1551411F85EB416484544114AE4781A51551411F85EB3160845441A4703D2AAD155141F6285CFF5B845441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000E29DF131E5155141F2582AC604845441F37986D0C715514181B051DF1F845441DCB9E7DFB7155141D3347E992E845441A79B7CD9B41551417AC16A693184544154D139A8B2155141D7D92E7333845441483FCAEAAB155141893FC3013A84544108BBB0B7A01551414EC7CFF44484544197213526951551412979284B50845441BCF4673690155141D2FD19CC54845441CFC947FD8C1551416F7787855784544174450DAF8A155141EA187632598454413AA9791486155141949E20EE5C845441445BBBAB83155141AF68468F5E845441730051B58A1551418CB975496B845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>323608 - 1851955
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001C00000052B81EA588C850419A9999D9F2A6544114AE474183C8504114AE47E1FBA654410AD7A38081C85041C3F5289CFEA65441B81E850B75C850411F85EB8113A754410AD7A3B07AC8504185EB514814A754410AD7A3608FC85041713D0AA7F1A654410AD7A30093C8504152B81EC5ECA6544185EB51D896C85041A4703DCAE6A65441295C8F329BC850413D0AD7C3DDA654415C8FC2659DC850418FC2F5B8D6A65441E17A146E9EC85041E17A14FECFA65441000000609DC85041295C8FE2C8A65441B81E859B9CC8504114AE4781C5A65441A4703D6A9BC85041AE47E14AC2A65441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000C4CD303C97C85041D8694A4DBAA654418588712797C850414D99C128BAA65441E17A14EE92C850415C8FC245B3A65441FF4E8C5793C8504149BA9B7AB4A65441BB1D135A95C850414A865054BAA654416F20B95296C85041FCCC033DBDA654415C8FC22597C85041E17A14AEBFA65441218BB4E996C850418868033BC1A65441D3A43BF996C850418C399736C3A654414FCBAC2F97C8504109AA42D5C6A6544107996B4997C8504170365F7AC7A654411B38003797C85041B4E79D66C8A65441F104A7FE96C85041DE931499CAA654410000009096C850419A9999E9CEA65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>323608 - 3479531
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001C00000052B81EA588C850419A9999D9F2A6544114AE474183C8504114AE47E1FBA654410AD7A38081C85041C3F5289CFEA65441B81E850B75C850411F85EB8113A754410AD7A3B07AC8504185EB514814A754410AD7A3608FC85041713D0AA7F1A654410AD7A30093C8504152B81EC5ECA6544185EB51D896C85041A4703DCAE6A65441295C8F329BC850413D0AD7C3DDA654415C8FC2659DC850418FC2F5B8D6A65441E17A146E9EC85041E17A14FECFA65441000000609DC85041295C8FE2C8A65441B81E859B9CC8504114AE4781C5A65441A4703D6A9BC85041AE47E14AC2A65441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000C4CD303C97C85041D8694A4DBAA654418588712797C850414D99C128BAA65441E17A14EE92C850415C8FC245B3A65441FF4E8C5793C8504149BA9B7AB4A65441BB1D135A95C850414A865054BAA654416F20B95296C85041FCCC033DBDA654415C8FC22597C85041E17A14AEBFA65441218BB4E996C850418868033BC1A65441D3A43BF996C850418C399736C3A654414FCBAC2F97C8504109AA42D5C6A6544107996B4997C8504170365F7AC7A654411B38003797C85041B4E79D66C8A65441F104A7FE96C85041DE931499CAA654410000009096C850419A9999E9CEA65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326721 - 1354039
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+01060000000100000001030000000100000013000000666666F686225141B81E850B01BC544185EB51D88422514148E17AB405BC54417B14AE6784225141C3F528AC06BC5441A4703DBA82225141CDCCCC5C0ABC5441C3F5289C802251415C8FC2050FBC54418FC2F51887225141B81E85AB12BC5441C3F5286C8B225141295C8F6215BC544114AE47619122514114AE47411ABC54419A9999199A225141CDCCCC5C20BC54415C8FC2059D22514148E17A5419BC5441713D0A479F2251417B14AEE713BC54415C8FC2B59F225141E17A14DE12BC5441D7A3706DA22251415C8FC2550CBC5441295C8F32A5225141B81E85AB05BC5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000666666F686225141B81E850B01BC544185EB51D88422514148E17AB405BC54417B14AE6784225141C3F528AC06BC5441A4703DBA82225141CDCCCC5C0ABC5441C3F5289C802251415C8FC2050FBC5441F14ACE1786225141002EF36B12BC54419EEC41FC892251418393A6C814BC544147B22B7A8B225141DB5C036E15BC5441B48731618E22514178FD66CD17BC54418994EF9B8F22514172CFB0CE18BC54416395710D91225141DC56BFFC19BC5441F7ED43FE92225141021789621BBC5441A4097A329522514154BDB5ED1CBC544100050D43972251418861068A1EBC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326721 - 3476552
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+01060000000100000001030000000100000013000000666666F686225141B81E850B01BC544185EB51D88422514148E17AB405BC54417B14AE6784225141C3F528AC06BC5441A4703DBA82225141CDCCCC5C0ABC5441C3F5289C802251415C8FC2050FBC54418FC2F51887225141B81E85AB12BC5441C3F5286C8B225141295C8F6215BC544114AE47619122514114AE47411ABC54419A9999199A225141CDCCCC5C20BC54415C8FC2059D22514148E17A5419BC5441713D0A479F2251417B14AEE713BC54415C8FC2B59F225141E17A14DE12BC5441D7A3706DA22251415C8FC2550CBC5441295C8F32A5225141B81E85AB05BC5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000666666F686225141B81E850B01BC544185EB51D88422514148E17AB405BC54417B14AE6784225141C3F528AC06BC5441A4703DBA82225141CDCCCC5C0ABC5441C3F5289C802251415C8FC2050FBC5441F14ACE1786225141002EF36B12BC54419EEC41FC892251418393A6C814BC544147B22B7A8B225141DB5C036E15BC5441B48731618E22514178FD66CD17BC54418994EF9B8F22514172CFB0CE18BC54416395710D91225141DC56BFFC19BC5441F7ED43FE92225141021789621BBC5441A4097A329522514154BDB5ED1CBC544100050D43972251418861068A1EBC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>327817 - 214526
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000100000001030000000100000082000000E17A14AEC322514148E17A74E41055415C8FC205C5225141D7A3709DE41055410AD7A300C8225141B81E85DBE4105541B81E85FBCA225141D7A3709DE41055419A999989D022514185EB51F8E310554133333373D5225141666666A6E31055418FC2F598D72251415C8FC275E3105541713D0AF7D8225141CDCCCCECE2105541CDCCCC1CDB22514114AE47A1E210554152B81E75DC225141AE47E11AE21055419A999939DD225141295C8FE2DF10554185EB5138DD225141A4703D5ADD105541AE47E17AD52251417B14AE27C51055410AD7A3C0D42251410AD7A3C0C1105541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000A5000000696D3D6FC72251416D1DB0CFE410554119E2C89FC7225141DB68A3D3E410554156EF55ECC7225141D622DED9E4105541AF81C8D6C8225141CE0A18CAE4105541F07FB005CB225141B94A0196E4105541D5AA2576CD225141A19EC053E41055419A999989D022514185EB51F8E31055412632AC07D1225141F18D1BF0E3105541A9C87AABD52251417DB06BA1E31055418FC2F598D72251415C8FC275E3105541713D0AF7D8225141CDCCCCECE21055417B55DDCDDA2251415D8F1FACE21055416EB5BB27DB2251414E2B039DE210554113E29D73DC225141B567DC1AE2105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>329646 - 1312752
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -486  </desc>
+<a>
+0106000000010000000103000000020000000F000000295C8F72910751417B14AE2713C05441D7A370DD92075141B81E85BB13C05441EC51B89EAD07514185EB51080BC05441EC51B8EEB807514114AE478106C0544133333373AB075141295C8FA2EBBF5441F6285C0FB50751419A999979E7BF54417B14AEE7B1075141AE47E1FAE3BF54415C8FC225B00751418FC2F538E2BF5441AE47E15AAC075141C3F528CCDEBF5441EC51B8AEAA075141E17A147EDEBF5441666666D693075141CDCCCC6CE7BF5441D7A370AD7F075141F6285C4FEFBF54415C8FC2357F075141F6285C8FF0BF54411F85EB2188075141C3F5287C01C05441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000295C8F72910751417B14AE2713C05441D7A370DD92075141B81E85BB13C05441EC51B89EAD07514185EB51080BC05441EC51B8EEB807514114AE478106C0544133333373AB075141295C8FA2EBBF5441F6285C0FB50751419A999979E7BF54417B14AEE7B1075141AE47E1FAE3BF54415C8FC225B00751418FC2F538E2BF54413680AD00B007514158987817E2BF544135F3C775AE0751417A30D7B2E0BF5441F43E4C89A50751418AA7574AE4BF54416DF09D19A4075141A189F610E1BF5441666666D693075141CDCCCC6CE7BF5441D7A370AD7F075141F6285C4FEFBF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>329646 - 3405437
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -486  </desc>
+<a>
+0106000000010000000103000000020000000F000000295C8F72910751417B14AE2713C05441D7A370DD92075141B81E85BB13C05441EC51B89EAD07514185EB51080BC05441EC51B8EEB807514114AE478106C0544133333373AB075141295C8FA2EBBF5441F6285C0FB50751419A999979E7BF54417B14AEE7B1075141AE47E1FAE3BF54415C8FC225B00751418FC2F538E2BF5441AE47E15AAC075141C3F528CCDEBF5441EC51B8AEAA075141E17A147EDEBF5441666666D693075141CDCCCC6CE7BF5441D7A370AD7F075141F6285C4FEFBF54415C8FC2357F075141F6285C8FF0BF54411F85EB2188075141C3F5287C01C05441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000295C8F72910751417B14AE2713C05441D7A370DD92075141B81E85BB13C05441EC51B89EAD07514185EB51080BC05441EC51B8EEB807514114AE478106C0544133333373AB075141295C8FA2EBBF5441F6285C0FB50751419A999979E7BF54417B14AEE7B1075141AE47E1FAE3BF54415C8FC225B00751418FC2F538E2BF54413680AD00B007514158987817E2BF544135F3C775AE0751417A30D7B2E0BF5441F43E4C89A50751418AA7574AE4BF54416DF09D19A4075141A189F610E1BF5441666666D693075141CDCCCC6CE7BF5441D7A370AD7F075141F6285C4FEFBF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335003 - 1486491
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -332  </desc>
+<a>
+010600000001000000010300000001000000140000007B14AE67412E51417B14AE179D325541A4703D6A3E2E51415C8FC2C59A3255410AD7A3B03A2E514152B81EF597325541666666F6362E51410AD7A390953255410AD7A3F0332E514152B81E05943255411F85EBC1352E514114AE47E19D325541CDCCCCFC362E5141C3F5287CA53255418FC2F508382E51415C8FC255AC3255417B14AE37392E51413D0AD793B4325541E17A144E3A2E5141D7A370BDB9325541C3F5281C3C2E51417B14AE47C2325541000000703E2E5141A4703DEACB32554152B81E353F2E5141295C8F42CE325541C3F5287C4A2E514100000070CC325541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000210000007B14AE47272E514185EB519890325541AE47E19A272E5141E17A14CE95325541A4703D7A292E51415C8FC225A0325541CF4739FB2C2E5141C090D353B0325541810E019D2F2E514184C8307BBC325541E0209034312E5141EAF3DEC3C3325541F6E68C74322E5141C4F74563C8325541F8A999E4332E5141A2EF96C2CD325541F42DB25D342E5141AD8390DACF325541F39ABE00352E514102774347D03255417B14AE773F2E51415C8FC235CE3255417A6301803C2E51411F5A3B82C0325541336C8CE0392E5141B840D865B4325541DBAF70C3372E5141E6BE248FAA325541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335003 - 3307764
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -332  </desc>
+<a>
+010600000001000000010300000001000000140000007B14AE67412E51417B14AE179D325541A4703D6A3E2E51415C8FC2C59A3255410AD7A3B03A2E514152B81EF597325541666666F6362E51410AD7A390953255410AD7A3F0332E514152B81E05943255411F85EBC1352E514114AE47E19D325541CDCCCCFC362E5141C3F5287CA53255418FC2F508382E51415C8FC255AC3255417B14AE37392E51413D0AD793B4325541E17A144E3A2E5141D7A370BDB9325541C3F5281C3C2E51417B14AE47C2325541000000703E2E5141A4703DEACB32554152B81E353F2E5141295C8F42CE325541C3F5287C4A2E514100000070CC325541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000210000007B14AE47272E514185EB519890325541AE47E19A272E5141E17A14CE95325541A4703D7A292E51415C8FC225A0325541CF4739FB2C2E5141C090D353B0325541810E019D2F2E514184C8307BBC325541E0209034312E5141EAF3DEC3C3325541F6E68C74322E5141C4F74563C8325541F8A999E4332E5141A2EF96C2CD325541F42DB25D342E5141AD8390DACF325541F39ABE00352E514102774347D03255417B14AE773F2E51415C8FC235CE3255417A6301803C2E51411F5A3B82C0325541336C8CE0392E5141B840D865B4325541DBAF70C3372E5141E6BE248FAA325541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335468 - 3064338
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -644  </desc>
+<a>
+0106000000010000000103000000010000001A00000014AE47F1342D5141A4703D7A373255411F85EB61362D5141CDCCCC5C3C325541713D0AA7372D51413333333342325541A4703D5A382D5141C3F5280C45325541C3F528CC3B2D5141AE47E12A44325541713D0A273E2D51419A999949433255418FC2F5183D2D51418FC2F5383C325541000000803C2D514152B81E9537325541333333C33B2D51416666668634325541C3F5283C3B2D5141F6285C2F3132554152B81E95392D5141C3F528EC2832554166666636382D5141EC51B85E233255410AD7A3E0362D51417B14AE171C325541D7A370ED352D51416666666616325541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005A000000262DDA33312D5141A9B76BF513325541F436BB8C312D51419CD1C2F31632554153BCD7A2312D5141AF4B22A01732554173DD8AAD312D51417E9B8BF317325541D3518932322D5141A420705F1C3255417132ADE6322D514156DEFD52223255419571156B332D51411A9C50A526325541210EE0AB332D5141535F817B29325541459701EB332D514155D5153F2C32554185565A3A342D5141C79369B82F325541879EE165342D5141BD464B9131325541E222ADF1342D5141A606D378373255418D725FFC342D5141EDF4DE9F3732554172D98824352D51414E2F1D2838325541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335468 - 3356971
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -644  </desc>
+<a>
+0106000000010000000103000000010000001A00000014AE47F1342D5141A4703D7A373255411F85EB61362D5141CDCCCC5C3C325541713D0AA7372D51413333333342325541A4703D5A382D5141C3F5280C45325541C3F528CC3B2D5141AE47E12A44325541713D0A273E2D51419A999949433255418FC2F5183D2D51418FC2F5383C325541000000803C2D514152B81E9537325541333333C33B2D51416666668634325541C3F5283C3B2D5141F6285C2F3132554152B81E95392D5141C3F528EC2832554166666636382D5141EC51B85E233255410AD7A3E0362D51417B14AE171C325541D7A370ED352D51416666666616325541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005A000000262DDA33312D5141A9B76BF513325541F436BB8C312D51419CD1C2F31632554153BCD7A2312D5141AF4B22A01732554173DD8AAD312D51417E9B8BF317325541D3518932322D5141A420705F1C3255417132ADE6322D514156DEFD52223255419571156B332D51411A9C50A526325541210EE0AB332D5141535F817B29325541459701EB332D514155D5153F2C32554185565A3A342D5141C79369B82F325541879EE165342D5141BD464B9131325541E222ADF1342D5141A606D378373255418D725FFC342D5141EDF4DE9F3732554172D98824352D51414E2F1D2838325541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335974 - 184213
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -62  </desc>
+<a>
+01060000000100000001030000000200000065000000D7A3704D037B504148E17A44462B55415C8FC2C5FD7A504133333303492B55419A999909F97A5041CDCCCC5C4B2B5541C3F5280CF67A504114AE47D14D2B5541B81E856BF37A504114AE47C14E2B5541A4703D1AF37A5041000000D04E2B55411F85EB61F17A5041F6285C1F4F2B5541EC51B85EF17A504152B81E25532B55411F85EBD1F27A50413D0AD783522B5541D7A3701DF57A5041295C8FD2572B5541EC51B8FEF27A504100000080582B5541F6285C6FF37A50415C8FC2E5592B5541D7A370ADF67A50415C8FC2755B2B5541333333D3F87A50415C8FC2355A2B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003D0000009A9999E9FB7A5041F6285CCF562B554115E6FD3BFD7A50411C7B3622582B55415B2B148EFD7A504112966506582B5541577B147AFF7A5041DA48E35E572B5541C023476AFF7A5041D094822F582B554113C2F8EAFD7A5041042969B1582B5541921C7B84007B50416F1E3363592B5541A9B9C089007B50415D695A61592B55416F7EA480017B5041950CE10A592B5541C3F528AC017B5041B81E85FB582B5541EBA7FF8F027B5041EB027BA4582B554136D4A2F0037B5041F406711D582B554181421C60057B504131229790572B55419667FC1F067B5041F509F246572B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335974 - 290543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -62  </desc>
+<a>
+01060000000100000001030000000200000065000000D7A3704D037B504148E17A44462B55415C8FC2C5FD7A504133333303492B55419A999909F97A5041CDCCCC5C4B2B5541C3F5280CF67A504114AE47D14D2B5541B81E856BF37A504114AE47C14E2B5541A4703D1AF37A5041000000D04E2B55411F85EB61F17A5041F6285C1F4F2B5541EC51B85EF17A504152B81E25532B55411F85EBD1F27A50413D0AD783522B5541D7A3701DF57A5041295C8FD2572B5541EC51B8FEF27A504100000080582B5541F6285C6FF37A50415C8FC2E5592B5541D7A370ADF67A50415C8FC2755B2B5541333333D3F87A50415C8FC2355A2B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003D0000009A9999E9FB7A5041F6285CCF562B554115E6FD3BFD7A50411C7B3622582B55415B2B148EFD7A504112966506582B5541577B147AFF7A5041DA48E35E572B5541C023476AFF7A5041D094822F582B554113C2F8EAFD7A5041042969B1582B5541921C7B84007B50416F1E3363592B5541A9B9C089007B50415D695A61592B55416F7EA480017B5041950CE10A592B5541C3F528AC017B5041B81E85FB582B5541EBA7FF8F027B5041EB027BA4582B554136D4A2F0037B5041F406711D582B554181421C60057B504131229790572B55419667FC1F067B5041F509F246572B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336930 - 233216
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -78  </desc>
+<a>
+0106000000010000000103000000030000003A000000000000707CB45041E17A141E7A305441CDCCCCFC7AB45041B81E853B7E30544148E17A247EB45041A4703D5A84305441E17A14EE7FB450411F85EBC183305441CDCCCCDC81B45041A4703DAA893054415C8FC2E580B45041F6285CDF8A305441713D0A5763B45041B81E850BA5305441D7A3702D5EB45041C3F5288C9E3054411F85EBF157B450417B14AEC79730544114AE474156B450410000000096305441713D0AA754B45041EC51B8EE94305441295C8FB251B45041AE47E15A93305441E17A144E50B450417B14AED792305441EC51B8FE4BB450417B14AEE793305441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000713D0A5763B45041B81E850BA5305441701FEFE173B45041B7E39D6596305441577BB7AD75B4504199F2A3F293305441D70CDD377FB45041F10F065C8C3054417C709D2880B4504189F8D7868B3054414E92EE7980B450419EDED63E8B3054413E292E7C80B45041AF32D93C8B3054417236328280B450415C8485378B3054412260B0DA80B45041A192F1C78A305441C0F2331F7FB450414EFDEC1D8730544161762B737EB45041B0E60EB2853054417B14AE777BB45041333333637F3054418A8CBA3C79B45041427B69257C3054411E8A71D473B45041BAEBDB2D80305441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336930 - 358541
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -78  </desc>
+<a>
+0106000000010000000103000000030000003A000000000000707CB45041E17A141E7A305441CDCCCCFC7AB45041B81E853B7E30544148E17A247EB45041A4703D5A84305441E17A14EE7FB450411F85EBC183305441CDCCCCDC81B45041A4703DAA893054415C8FC2E580B45041F6285CDF8A305441713D0A5763B45041B81E850BA5305441D7A3702D5EB45041C3F5288C9E3054411F85EBF157B450417B14AEC79730544114AE474156B450410000000096305441713D0AA754B45041EC51B8EE94305441295C8FB251B45041AE47E15A93305441E17A144E50B450417B14AED792305441EC51B8FE4BB450417B14AEE793305441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000713D0A5763B45041B81E850BA5305441701FEFE173B45041B7E39D6596305441577BB7AD75B4504199F2A3F293305441D70CDD377FB45041F10F065C8C3054417C709D2880B4504189F8D7868B3054414E92EE7980B450419EDED63E8B3054413E292E7C80B45041AF32D93C8B3054417236328280B450415C8485378B3054412260B0DA80B45041A192F1C78A305441C0F2331F7FB450414EFDEC1D8730544161762B737EB45041B0E60EB2853054417B14AE777BB45041333333637F3054418A8CBA3C79B45041427B69257C3054411E8A71D473B45041BAEBDB2D80305441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>840163 - 3112698
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000010000000103000000010000002D000000FC13E8807F65514101E517133A705441B81E854B796551418FC2F5883E705441A4703DBA6665514185EB51284B705441C57F51BC63655141232D59274D705441AEFEFC9A62655141458CEEEA52705441F11896486365514145E9DA6B56705441FDF6D6EA67655141CB86717D5A705441AF2DB2886B6551417248702F5C70544199094AE86D6551415CC71B0E5B70544135CB489A6F655141C011959158705441D1176B606F655141245C0E1556705441406E5C196C6551415B0D430C54705441136CB3D669655141E1D810B152705441401170986865514192499B1750705441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000CF6CD35690655141E7CB6F4846705441B5E24870906551415106BD6546705441673AD23792655141FB2006B448705441615399C992655141B248587249705441AAB681B19365514135031DA14A705441DEF2BB1C956551415AB5537B4C705441097F30629665514103173A244E705441A7752AD096655141A35DC7A54E70544147E4F579996551415477A3A34C70544123AFD95E9F655141356A1C9347705441328DD6D69F65514158EF0F3E4770544123640B619D65514191540B46447054413E8B7ACE99655141D6ED5EF63F7054411E88B31D97655141A13A2CB73C705441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>840163 - 3487846
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000010000000103000000010000002D000000FC13E8807F65514101E517133A705441B81E854B796551418FC2F5883E705441A4703DBA6665514185EB51284B705441C57F51BC63655141232D59274D705441AEFEFC9A62655141458CEEEA52705441F11896486365514145E9DA6B56705441FDF6D6EA67655141CB86717D5A705441AF2DB2886B6551417248702F5C70544199094AE86D6551415CC71B0E5B70544135CB489A6F655141C011959158705441D1176B606F655141245C0E1556705441406E5C196C6551415B0D430C54705441136CB3D669655141E1D810B152705441401170986865514192499B1750705441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000CF6CD35690655141E7CB6F4846705441B5E24870906551415106BD6546705441673AD23792655141FB2006B448705441615399C992655141B248587249705441AAB681B19365514135031DA14A705441DEF2BB1C956551415AB5537B4C705441097F30629665514103173A244E705441A7752AD096655141A35DC7A54E70544147E4F579996551415477A3A34C70544123AFD95E9F655141356A1C9347705441328DD6D69F65514158EF0F3E4770544123640B619D65514191540B46447054413E8B7ACE99655141D6ED5EF63F7054411E88B31D97655141A13A2CB73C705441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>341646 - 1223605
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -104  </desc>
+<a>
+01060000000100000001030000000100000023000000295C8F32CD8E5141713D0AF7489A54411F85EB51D48E51419A999929439A54417B14AE47E08E5141AE47E16A399A5441CDCCCCBCE68E51411F85EB91329A5441AE47E14AE08E5141CDCCCCCC2F9A5441AE47E10ADD8E5141D7A3702D2C9A5441EC51B86EDA8E51417B14AEE7269A54411F85EB01DA8E51418FC2F558249A5441A4703D8ADA8E514114AE4701229A5441E17A140EDE8E5141295C8F321C9A5441A4703DBAE08E514148E17AA4169A54419A9999B9E18E5141295C8F020F9A5441C3F5286CE18E5141000000F0099A54418FC2F538DB8E5141295C8FA2099A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000BAE959F4E08E514143B53348099A544152B901F1DA8E5141915E1C40099A5441BBC3BB4CD58E514190DEEF3A0A9A544148A86C06D48E51413DCDA0B60A9A5441705F901CD38E5141E1DBE3100B9A54417B14AE37D38E5141713D0A370C9A54417B14AE57D38E51413D0AD7E30E9A5441C3F5286CD38E5141B81E857B119A5441A4703D2AD38E514114AE4761139A5441E17A14AED28E51419A999939159A54419A999999D18E5141F6285CBF179A5441713D0AD7CD8E51419A9999191E9A544114AE47E1C78E5141AE47E13A289A5441F6285CBFC38E5141B81E858B2F9A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>341646 - 3312397
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -104  </desc>
+<a>
+01060000000100000001030000000100000023000000295C8F32CD8E5141713D0AF7489A54411F85EB51D48E51419A999929439A54417B14AE47E08E5141AE47E16A399A5441CDCCCCBCE68E51411F85EB91329A5441AE47E14AE08E5141CDCCCCCC2F9A5441AE47E10ADD8E5141D7A3702D2C9A5441EC51B86EDA8E51417B14AEE7269A54411F85EB01DA8E51418FC2F558249A5441A4703D8ADA8E514114AE4701229A5441E17A140EDE8E5141295C8F321C9A5441A4703DBAE08E514148E17AA4169A54419A9999B9E18E5141295C8F020F9A5441C3F5286CE18E5141000000F0099A54418FC2F538DB8E5141295C8FA2099A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000BAE959F4E08E514143B53348099A544152B901F1DA8E5141915E1C40099A5441BBC3BB4CD58E514190DEEF3A0A9A544148A86C06D48E51413DCDA0B60A9A5441705F901CD38E5141E1DBE3100B9A54417B14AE37D38E5141713D0A370C9A54417B14AE57D38E51413D0AD7E30E9A5441C3F5286CD38E5141B81E857B119A5441A4703D2AD38E514114AE4761139A5441E17A14AED28E51419A999939159A54419A999999D18E5141F6285CBF179A5441713D0AD7CD8E51419A9999191E9A544114AE47E1C78E5141AE47E13A289A5441F6285CBFC38E5141B81E858B2F9A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>342860 - 407637
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000005000000010300000003000000BE000000AE47E1FA18E950417B14AE975FA65441AE47E13A18E95041B81E85CB5EA65441EC51B80E17E95041B81E859B5EA65441EC51B8EE15E95041F6285C4F5CA65441295C8F5215E950417B14AE075CA65441EC51B8CE14E950417B14AE175BA65441295C8FA213E95041B81E852B5CA65441295C8FE212E95041333333135CA65441295C8FF211E95041333333F35AA65441713D0AC710E95041B81E85AB5AA65441713D0AA70FE950417B14AE9759A65441AE47E1FA0FE95041F6285CEF58A65441AE47E1FA0FE950417B14AEF756A65441EC51B89E0EE95041333333B355A65441 [...]
+</a>
+
+<b>
+0106000000010000000103000000060000007D06000085EB51789FE85041A4703D5A18A85441DE67662699E8504140F4287C16A85441516666F69DE850418990C25506A854418072C8DEA0E850419437D9F6FBA754414B8F28DCA0E85041704CC7DFFBA75441DB5F26CCA0E850415E9E1053FBA754410B25D710A1E85041F87C01B3F9A754417E6D208DA1E85041DF55EA3BF8A75441926A88ADA2E85041EF4EC6A7F5A754416FE3E6E4A2E8504112DE9A26F4A75441BA8B6C34A3E85041F256A368F2A75441EA25A3E6A2E850414159C281F1A7544174F2DEBEA2E850419275BA0BF1A75441111CD9B7A3E8504145355DAFEFA75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>342860 - 422978
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000005000000010300000003000000BE000000AE47E1FA18E950417B14AE975FA65441AE47E13A18E95041B81E85CB5EA65441EC51B80E17E95041B81E859B5EA65441EC51B8EE15E95041F6285C4F5CA65441295C8F5215E950417B14AE075CA65441EC51B8CE14E950417B14AE175BA65441295C8FA213E95041B81E852B5CA65441295C8FE212E95041333333135CA65441295C8FF211E95041333333F35AA65441713D0AC710E95041B81E85AB5AA65441713D0AA70FE950417B14AE9759A65441AE47E1FA0FE95041F6285CEF58A65441AE47E1FA0FE950417B14AEF756A65441EC51B89E0EE95041333333B355A65441 [...]
+</a>
+
+<b>
+0106000000010000000103000000060000007D06000085EB51789FE85041A4703D5A18A85441DE67662699E8504140F4287C16A85441516666F69DE850418990C25506A854418072C8DEA0E850419437D9F6FBA754414B8F28DCA0E85041704CC7DFFBA75441DB5F26CCA0E850415E9E1053FBA754410B25D710A1E85041F87C01B3F9A754417E6D208DA1E85041DF55EA3BF8A75441926A88ADA2E85041EF4EC6A7F5A754416FE3E6E4A2E8504112DE9A26F4A75441BA8B6C34A3E85041F256A368F2A75441EA25A3E6A2E850414159C281F1A7544174F2DEBEA2E850419275BA0BF1A75441111CD9B7A3E8504145355DAFEFA75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>343273 - 226454
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+01060000000100000001030000000200000018000000C3F5288C61FA504166666686A3C45441333333F35FFA5041AE47E17AA2C45441666666865CFA5041CDCCCC3C9FC45441666666165CFA50411F85EB419EC45441333333435CFA5041EC51B8CE9DC4544114AE47A155FA5041A4703D8A9FC45441713D0AF74DFA5041AE47E18AA1C454411F85EBB14FFA50419A9999D9A2C454410AD7A3B051FA5041EC51B87EA3C45441D7A3701D54FA5041EC51B87EA3C454410000006058FA50417B14AE47A3C45441CDCCCCCC5AFA5041F6285CDFA3C45441333333D35BFA5041AE47E12AA5C45441713D0AF763FA5041D7A370ADA6C45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000BFB92E435CFA504167D3C3CE9DC45441583E02C858FA504105D387B79EC45441542755A155FA5041BBEB398A9FC454416CD013D259FA504152F2A85BA0C45441B95482EA5EFA50413C0B4C5AA1C454411B48D18B5EFA504157A7A526A1C45441D79BE0715DFA50416D8FDC8CA0C454410B9242355CFA50417382B4E69EC45441357DDE405CFA5041E4FF0CA19EC45441509370585CFA5041217CA0139EC454419A364ED55CFA5041CA5D99A89DC45441BFB92E435CFA504167D3C3CE9DC45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>345437 - 1234377
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -233  </desc>
+<a>
+01060000000100000001030000000100000031000000AE47E10A6F835141E17A141E28B754418FC2F5985D835141AE47E1EA1EB7544185EB51E85D8351419A9999B91FB75441AE47E14A62835141A4703D6A26B754419A999919658351411F85EB6129B7544114AE477167835141C3F5281C2EB75441E17A146E6C835141B81E85DB31B75441AE47E1EA6E835141C3F5285C2EB7544114AE47616E835141666666262DB75441295C8FE26E8351413D0AD7B32BB754419A999999708351419A9999C929B75441295C8F72728351413333330329B75441D7A3707D738351413D0AD7D326B75441EC51B8DE74835141E17A14BE24B75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000032000000AE47E10A6F835141E17A141E28B75441F9A4CD3A648351417E4A466A22B75441A109F52563835141BF1446D821B75441D0A9D6E561835141895655FE22B7544125966A7462835141EC59685025B754419A999919658351411F85EB6129B7544114AE477167835141C3F5281C2EB75441E17A146E6C835141B81E85DB31B75441AE47E1EA6E835141C3F5285C2EB7544114AE47616E835141666666262DB75441295C8FE26E8351413D0AD7B32BB754419A999999708351419A9999C929B75441295C8F72728351413333330329B75441D7A3707D738351413D0AD7D326B75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>345437 - 3425819
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -233  </desc>
+<a>
+01060000000100000001030000000100000031000000AE47E10A6F835141E17A141E28B754418FC2F5985D835141AE47E1EA1EB7544185EB51E85D8351419A9999B91FB75441AE47E14A62835141A4703D6A26B754419A999919658351411F85EB6129B7544114AE477167835141C3F5281C2EB75441E17A146E6C835141B81E85DB31B75441AE47E1EA6E835141C3F5285C2EB7544114AE47616E835141666666262DB75441295C8FE26E8351413D0AD7B32BB754419A999999708351419A9999C929B75441295C8F72728351413333330329B75441D7A3707D738351413D0AD7D326B75441EC51B8DE74835141E17A14BE24B75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000032000000AE47E10A6F835141E17A141E28B75441F9A4CD3A648351417E4A466A22B75441A109F52563835141BF1446D821B75441D0A9D6E561835141895655FE22B7544125966A7462835141EC59685025B754419A999919658351411F85EB6129B7544114AE477167835141C3F5281C2EB75441E17A146E6C835141B81E85DB31B75441AE47E1EA6E835141C3F5285C2EB7544114AE47616E835141666666262DB75441295C8FE26E8351413D0AD7B32BB754419A999999708351419A9999C929B75441295C8F72728351413333330329B75441D7A3707D738351413D0AD7D326B75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>351646 - 1281874
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000000B00000085EB51E8491E5141333333D38AED5441295C8FF2491E5141F6285C8F8AED5441713D0A57481E51417B14AE177CED5441713D0A17481E5141A4703D1A74ED5441295C8F52461E51417B14AE876DED54411F85EBC1441E5141E17A140E6CED54415C8FC265201E51415C8FC28564ED5441000000E0E71D5141E17A143E5FED5441A4703D7AE61D5141E17A145E60ED5441713D0A77E21D51411F85EBC180ED544185EB51E8491E5141333333D38AED5441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000048E17A24E41D5141295C8FE25EED5441D7A3709D9D1D5141AE47E1CA57ED54413D0AD7F39B1D51419A9999A958ED54413D0AD783991D51410AD7A3A05FED5441C3F5286C951D51419A9999296AED54419A9999A98F1D51415C8FC2B578ED54417DCC6F46F61D51416BDD7DAF82ED544123CE2C3AF71D5141DFD152057CED54419FF838A9F81D5141049FDDF876ED544169054431F91D51411CF6703574ED5441134DEF0AFA1D51410B1AD8516FED5441AF3A684AFA1D514169091C536AED544108B62426FA1D5141A7AEE8BA68ED544100000080FA1D51413D0AD7A367ED5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>351646 - 3588789
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000000B00000085EB51E8491E5141333333D38AED5441295C8FF2491E5141F6285C8F8AED5441713D0A57481E51417B14AE177CED5441713D0A17481E5141A4703D1A74ED5441295C8F52461E51417B14AE876DED54411F85EBC1441E5141E17A140E6CED54415C8FC265201E51415C8FC28564ED5441000000E0E71D5141E17A143E5FED5441A4703D7AE61D5141E17A145E60ED5441713D0A77E21D51411F85EBC180ED544185EB51E8491E5141333333D38AED5441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000048E17A24E41D5141295C8FE25EED5441D7A3709D9D1D5141AE47E1CA57ED54413D0AD7F39B1D51419A9999A958ED54413D0AD783991D51410AD7A3A05FED5441C3F5286C951D51419A9999296AED54419A9999A98F1D51415C8FC2B578ED54417DCC6F46F61D51416BDD7DAF82ED544123CE2C3AF71D5141DFD152057CED54419FF838A9F81D5141049FDDF876ED544169054431F91D51411CF6703574ED5441134DEF0AFA1D51410B1AD8516FED5441AF3A684AFA1D514169091C536AED544108B62426FA1D5141A7AEE8BA68ED544100000080FA1D51413D0AD7A367ED5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>350073 - 146036
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001E0000000AD7A380A64751413D0AD7F3ABBB5441F6285C0FA84751417B14AE77ABBB54410AD7A3B0AA475141713D0AD7A9BB54411F85EB91AE47514114AE4761A9BB5441B81E858BB1475141713D0A47AABB54410AD7A3C0B447514152B81E85ABBB54417B14AE67B7475141CDCCCC2CADBB5441D7A3708DB4475141EC51B8AEA4BB54413D0AD7E3B1475141B81E85DBA1BB5441E17A149EAF4751410AD7A370A0BB54411F85EB51AC47514185EB51389FBB544148E17A14A9475141CDCCCC5CA3BB5441D7A3708D97475141AE47E1BAAABB5441D7A3709D994751417B14AE67AFBB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000D7A3709D994751417B14AE67AFBB5441A329375A924751414641E0DAB3BB5441295C8F028B475141713D0A57B8BB544175C4A7618E47514150134652BCBB5441000000D0914751419A999999BCBB544107F441199A475141B4580D72B7BB54419CE256339A475141B49E3EEFB7BB54416EA4971D9E4751418EC3777FB3BB5441862E1822A0475141A372E435B1BB5441F8CA817EA147514141BF232FB0BB5441BA968A16A24751414A5E4D82AFBB5441522A962BA3475141821187C6AEBB5441C937C0BAA447514156F09E0AADBB5441CEFB8F88A6475141B57B5FF1ABBB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>350073 - 415616
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001E0000000AD7A380A64751413D0AD7F3ABBB5441F6285C0FA84751417B14AE77ABBB54410AD7A3B0AA475141713D0AD7A9BB54411F85EB91AE47514114AE4761A9BB5441B81E858BB1475141713D0A47AABB54410AD7A3C0B447514152B81E85ABBB54417B14AE67B7475141CDCCCC2CADBB5441D7A3708DB4475141EC51B8AEA4BB54413D0AD7E3B1475141B81E85DBA1BB5441E17A149EAF4751410AD7A370A0BB54411F85EB51AC47514185EB51389FBB544148E17A14A9475141CDCCCC5CA3BB5441D7A3708D97475141AE47E1BAAABB5441D7A3709D994751417B14AE67AFBB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000D7A3709D994751417B14AE67AFBB5441A329375A924751414641E0DAB3BB5441295C8F028B475141713D0A57B8BB544175C4A7618E47514150134652BCBB5441000000D0914751419A999999BCBB544107F441199A475141B4580D72B7BB54419CE256339A475141B49E3EEFB7BB54416EA4971D9E4751418EC3777FB3BB5441862E1822A0475141A372E435B1BB5441F8CA817EA147514141BF232FB0BB5441BA968A16A24751414A5E4D82AFBB5441522A962BA3475141821187C6AEBB5441C937C0BAA447514156F09E0AADBB5441CEFB8F88A6475141B57B5FF1ABBB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>350850 - 137641
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001B0000000AD7A31092B55041AE47E11AF9915441D7A3709D92B5504114AE47A1F59154411F85EBB190B55041B81E855BF591544152B81EC58DB550417B14AEB7F4915441AE47E1AA8BB55041333333E3F2915441B81E854B8AB5504133333383F0915441C3F528BC87B550415C8FC235EB9154415C8FC21585B5504114AE4701E791544148E17A4485B5504148E17A44E5915441AE47E1BA86B55041F6285C6FE291544114AE473188B55041295C8FB2E0915441713D0A078BB55041EC51B80EE0915441666666E68DB55041C3F528ACDF915441E17A144E7BB55041E17A143ED2915441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000B81E854B8AB5504133333383F0915441AED3CA3889B5504141D5284AEE9154416156C31D89B5504104922C12EE9154412376397E88B55041433DB9C7EC91544118C9450488B550410D4420CBEB9154418FDF1DD387B5504198584F65EB9154410742D35D86B5504102F7D909E99154415C8FC21585B5504114AE4701E791544148E17A4485B5504148E17A44E5915441AE47E1BA86B55041F6285C6FE291544114AE473188B55041295C8FB2E0915441713D0A078BB55041EC51B80EE0915441B4D2BFB18DB55041FA7C37B3DF91544120B509657BB55041ABD1A94ED2915441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>350850 - 336075
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001B0000000AD7A31092B55041AE47E11AF9915441D7A3709D92B5504114AE47A1F59154411F85EBB190B55041B81E855BF591544152B81EC58DB550417B14AEB7F4915441AE47E1AA8BB55041333333E3F2915441B81E854B8AB5504133333383F0915441C3F528BC87B550415C8FC235EB9154415C8FC21585B5504114AE4701E791544148E17A4485B5504148E17A44E5915441AE47E1BA86B55041F6285C6FE291544114AE473188B55041295C8FB2E0915441713D0A078BB55041EC51B80EE0915441666666E68DB55041C3F528ACDF915441E17A144E7BB55041E17A143ED2915441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000B81E854B8AB5504133333383F0915441AED3CA3889B5504141D5284AEE9154416156C31D89B5504104922C12EE9154412376397E88B55041433DB9C7EC91544118C9450488B550410D4420CBEB9154418FDF1DD387B5504198584F65EB9154410742D35D86B5504102F7D909E99154415C8FC21585B5504114AE4701E791544148E17A4485B5504148E17A44E5915441AE47E1BA86B55041F6285C6FE291544114AE473188B55041295C8FB2E0915441713D0A078BB55041EC51B80EE0915441B4D2BFB18DB55041FA7C37B3DF91544120B509657BB55041ABD1A94ED2915441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>354438 - 223463
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -448  </desc>
+<a>
+01060000000100000001030000000100000075000000D7A3702D88C15041B81E851BD3D55441000000B085C15041AE47E1CAD9D554415C8FC2B586C150411F85EB81DAD55441295C8F8288C150419A999939DBD55441A4703D3A89C15041295C8F82DBD55441CDCCCC5C8BC150417B14AE67DCD55441C3F5289C91C150417B14AE27DED554410000009097C15041C3F528DCDFD5544152B81E659DC15041000000B0E1D554419A9999A9A2C150419A999929E3D5544133333323A5C1504114AE47E1E3D55441EC51B8AEA7C15041EC51B89EE4D5544148E17A04ADC15041AE47E1EAE5D5544133333303B2C150419A999929E7D55441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000B900000033333313BBC150413D0AD723D6D554417A202C20BBC150419F2D94DED5D554415835CC5CBBC15041E47AE19AD4D55441E7FAE10AB6C150416B72864BD2D55441CE7B4CBEB5C15041C01F5FFBD3D554417B14AE77B5C150419A999989D5D55441713D0AF7AFC150419A9999A9D4D55441EA66A50CB0C150416E76E300D4D55441BDF63133B0C15041664ED7D3D2D5544166666686AAC15041EC51B83ECFD55441B40AD753A8C15041031F85DBCDD554411B23C2D6A8C150418FED485BCED554416365EE9EA8C150413F78A543D1D55441D5B212CFA7C15041A8CF087FD1D55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>354454 - 216868
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+0106000000010000000103000000050000005B000000C3F5286CDDC25041A4703DBAE5D65441AE47E1DAE3C250413D0AD743ECD6544152B81EB5E4C250417B14AE77EBD6544114AE47C1E9C25041CDCCCCBCE6D6544114AE4721EBC2504114AE47F1E8D6544133333393EAC25041CDCCCC0CECD654419A9999A9EAC250417B14AE07EDD65441000000D0EAC250418FC2F578EDD65441CDCCCCFCEAC25041E17A14CEEDD65441AE47E12AEBC25041B81E850BEED654413D0AD773EBC250413D0AD743EED6544185EB51C8EBC250415C8FC275EED6544185EB5128ECC25041D7A3708DEED654413D0AD783ECC2504152B81EA5EED65441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E02000004C35C8FE0C250412935C335C2D65441569E337DDFC25041034608A1C0D6544148C5FFDFDCC2504108F81EC5BCD6544166666626DDC250410AD7A3F0BBD65441CDCCCC1CD8C250417B14AE77B4D65441295C8F92D5C25041CDCCCC5CB0D65441E17A14BED2C25041CDCCCCCCAFD654413D0AD703BFC25041F6285CDFABD65441E17A145EBDC25041F6285CDFABD65441CDCCCC1CB9C250413D0AD7F3B4D654410AD7A300B5C250419A9999B9BDD65441CDCCCCDCB4C25041713D0A07BED65441F6285CBFB6C25041AE47E13ABED654418FC2F5A8B7C250417B14AE17BDD65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>354870 - 1347700
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000020000006E0000000AD7A3F0543351419A999949300D554114AE474155335141295C8F62300D5541713D0AA757335141A4703D1A300D5541AE47E1BA583351411F85EB01300D5541713D0A575A335141C3F528EC2F0D5541E17A14EE59335141C3F528FC2C0D5541295C8FB23E335141AE47E1FA2F0D5541333333233C3351411F85EB41290D55419A99999936335141000000601F0D5541713D0A1733335141B81E859B180D5541A4703D1A313351417B14AE87160D5541EC51B8FE2E335141000000E0130D5541666666B62C335141000000A0100D554114AE471127335141295C8FC2150D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000007000000029092459C5325141F27C0275260D554199B42CC8C63251411C52A76F280D5541EE465636CA3251413A70843B2D0D554159008158CC325141E6A976DF2F0D5541A4232121D03251414900F8B3330D55415C8FC295D2325141B81E85EB360D5541E64EBC34D13251414277EA113A0D5541CDCCCC3CD132514114AE47413A0D5541AE47E16ACE325141CDCCCC7C3D0D5541A4703D9ACA32514100000030410D554152B81E25B9325141C3F5287C460D5541B81E858BB8325141E17A142E480D554148E17A64BF325141333333734A0D554148E17A34C43251415C8FC2C54B0D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489573 - 53323
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000D200000085EB5198F7235141000000F09A205541E17A144E0224514114AE47F1982055419A999979042451419A9999799A2055417B14AEA705245141000000A09B205541666666660B245141E17A14FE98205541B81E853B0B24514185EB515897205541C3F5289C0D2451411F85EB31982055413D0AD75315245141333333F39A2055419A9999890B2451411F85EB4196205541E17A145E0C24514152B81EA5932055413D0AD7830B2451418FC2F5589320554114AE47910A245141F6285CAF93205541000000100A24514166666606942055415C8FC2F5092451410AD7A39094205541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007E01000029E0C82D07245141AEE3DA57932055411C8A0659092451412E7B680893205541E1BB083D0C2451418E93DE4092205541333333030D24514166666606922055416B68EDC20F2451413DF7AD4D91205541991E0BED1424514111DC4EDC8F20554148E17A5415245141EC51B8BE8F205541D2F48F811524514197A2D0B28F205541281E52C519245141D97D92908E205541B31EBC541D2451415132C0908D205541300733A01F24514185DA75C68C205541DE45FAEB22245141DD15E2A18B2055417A025B3F252451416D8A1BD18A2055416463635526245141FC57D16C8A205541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>758399 - 405515
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+010600000001000000010300000001000000B00000007475023398E6504197E3F46A65AC5441BE21E3249AE6504129E038126CAC54412843EEF199E650417A7007706CAC54413D0AD7939EE650417B14AED76FAC5441AEE6E1BDA5E65041DC8EA70973AC544152B81ED5AAE650415C8FC2C578AC5441AE47E1EAACE65041666666D678AC544160E2A965AFE6504129B968D978AC54418FC2F5B8B7E65041C3F528BC7CAC5441AE47E18ABBE65041666666E67DAC5441713D0AF7BBE6504114AE47417EAC54418FC2F508C7E650413D0AD7E381AC54418A6DE025CEE650415FA8564883AC54417B14AE97D7E65041C3F528EC84AC5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009E000000295C8FD209E75041CDCCCC1C8EAC544129ED4B460AE75041F4CC64308FAC5441B1FDFF3F18E75041E4D9A39091AC54411E33332318E750417CA070CD96AC5441D142805D17E75041D55585369BAC54414D87EB6129E750419AFCFF8F9AAC54412C7B142E29E7504101CCCC5CA2AC5441165B33FE28E750412E66B82AA3AC5441C3F528CC25E750418FC2F5E8B0AC5441A2B2A1EE21E75041FC4A104CB6AC5441C8B81EE51EE750410816AE87BAAC54417CF183EC1DE75041122A1D6FBDAC5441000000801BE75041EC51B8AEC4AC54419CE7BD7F1AE75041567BD34CC9AC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>758399 - 410251
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+010600000001000000010300000001000000B00000007475023398E6504197E3F46A65AC5441BE21E3249AE6504129E038126CAC54412843EEF199E650417A7007706CAC54413D0AD7939EE650417B14AED76FAC5441AEE6E1BDA5E65041DC8EA70973AC544152B81ED5AAE650415C8FC2C578AC5441AE47E1EAACE65041666666D678AC544160E2A965AFE6504129B968D978AC54418FC2F5B8B7E65041C3F528BC7CAC5441AE47E18ABBE65041666666E67DAC5441713D0AF7BBE6504114AE47417EAC54418FC2F508C7E650413D0AD7E381AC54418A6DE025CEE650415FA8564883AC54417B14AE97D7E65041C3F528EC84AC5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009E000000295C8FD209E75041CDCCCC1C8EAC544129ED4B460AE75041F4CC64308FAC5441B1FDFF3F18E75041E4D9A39091AC54411E33332318E750417CA070CD96AC5441D142805D17E75041D55585369BAC54414D87EB6129E750419AFCFF8F9AAC54412C7B142E29E7504101CCCC5CA2AC5441165B33FE28E750412E66B82AA3AC5441C3F528CC25E750418FC2F5E8B0AC5441A2B2A1EE21E75041FC4A104CB6AC5441C8B81EE51EE750410816AE87BAAC54417CF183EC1DE75041122A1D6FBDAC5441000000801BE75041EC51B8AEC4AC54415137977D1AE75041E2C7BF56C9AC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>362634 - 4440008
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -670  </desc>
+<a>
+01060000000100000001030000000200000017000000000000F00EA45041C3F528AC7A5E5441CDCCCC6C0EA450417B14AE77865E54417B14AED70FA450418FC2F5B8985E5441A4703D0A10A45041CDCCCCBC9F5E5441C3F528CC0FA450411F85EB81A75E54410AD7A3A00FA45041CDCCCC6CB45E5441D7A3705D0FA45041AE47E10ABD5E5441F6285CFF16A4504185EB5138C05E54417B14AEB713A45041B81E85BBC75E54410AD7A32011A450415C8FC225CF5E54411F85EB111BA450410AD7A3C0D25E5441F6285C2F1EA45041AE47E18AD25E544148E17A2421A45041CDCCCCECCD5E5441EC51B89E29A4504152B81E75BB5E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000001B0000005F90B0FE28A45041446EBBD1BC5E5441EC51B89E29A4504152B81E75BB5E5441EC51B8BE2DA4504148E17AC4AF5E5441C3F5283C31A4504148E17AC4A65E5441A4703DDA37A450415C8FC2B5955E5441F6285CFF3AA4504185EB51D88F5E54417B14AE073EA45041333333B38B5E5441D7A3706D44A450411F85EBA1855E54413D0AD7D344A4504114AE4731845E5441000000000FA45041E17A144E7A5E5441000000F00EA45041C3F528AC7A5E5441CDCCCC6C0EA450417B14AE77865E54417B14AED70FA450418FC2F5B8985E5441A4703D0A10A45041CDCCCCBC9F5E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371416 - 354253
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000002000000460000001F85EB1159C95041D7A3705DC6A1544152B81E7561C95041D7A370EDC3A154419A99991979C95041AE47E1EABFA154413333337382C9504133333383B9A1544148E17AD499C950411F85EB01B1A15441000000A0A4C9504152B81E15ADA154413D0AD703BBC950418FC2F528A3A15441713D0AC7C4C950411F85EB319EA1544185EB5108DCC950417B14AE9792A154419A9999F9E9C95041F6285CCF89A15441EC51B86EEDC950417B14AE3788A154418FC2F588EEC950413D0AD76381A15441E17A143EEFC95041333333737CA15441D7A3705DE5C95041B81E85AB86A15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000006900000042660040DFC95041938299E98BA154418C7F186DDEC9504151D004028BA1544121A6EB71DCC95041F42120D588A154417B14AE57E9C95041F6285C6F7AA15441B770B6FDE9C950418DF184B978A15441502ECC4CEAC950411A7DF5E877A1544166666696E2C950417B14AE8774A15441C04A93C5E0C9504193A484BB73A1544135A0D6B3D9C950415A3FA4A070A154413376B85ECEC95041CEA599F96CA15441A70F156EC8C95041638D868B7BA15441F1D44831CBC95041CC4FFFFF85A1544192072065C7C95041A06DB7CE8AA15441FD03DD5DC3C9504139DABBEA91A15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371485 - 190524
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+010600000001000000010300000001000000110000003D0AD75339D8504148E17A246DA95441000000503AD85041666666866CA954413D0AD7A340D85041CDCCCC4C6AA95441713D0AC74CD850415C8FC28566A954419A9999D948D85041AE47E12A57A95441F6285C4F47D85041713D0A4755A95441B81E85AB44D85041D7A3704D54A95441A4703DBA41D8504185EB51E853A95441F6285C9F3FD85041EC51B86E54A95441AE47E11A3DD850411F85EB1156A954416666660639D8504152B81E955BA95441D7A3703D32D85041B81E856B62A9544152B81EB52BD850418FC2F5186CA95441333333032BD85041713D0A576DA95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004600000014AE47D14DD850411F85EBB16AA95441332415A84DD85041B89AA20C6AA95441B34A88E23ED85041125D95656FA954416C7388803AD85041607855756CA95441000000503AD85041666666866CA954413D0AD75339D8504148E17A246DA9544172FBC4A938D85041558911B86CA95441F2BD791837D850410470D4126CA95441885E8AA436D8504187E9503E6CA954410C31E66536D850416FF1CF556CA954410457CE5936D850418D2B595A6CA95441D367FD3036D850417D79A8696CA9544152EF752D36D85041CC5BFB6A6CA954418458C72C36D850416ED83C6B6CA95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371485 - 398162
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+010600000001000000010300000001000000110000003D0AD75339D8504148E17A246DA95441000000503AD85041666666866CA954413D0AD7A340D85041CDCCCC4C6AA95441713D0AC74CD850415C8FC28566A954419A9999D948D85041AE47E12A57A95441F6285C4F47D85041713D0A4755A95441B81E85AB44D85041D7A3704D54A95441A4703DBA41D8504185EB51E853A95441F6285C9F3FD85041EC51B86E54A95441AE47E11A3DD850411F85EB1156A954416666660639D8504152B81E955BA95441D7A3703D32D85041B81E856B62A9544152B81EB52BD850418FC2F5186CA95441333333032BD85041713D0A576DA95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004600000014AE47D14DD850411F85EBB16AA95441332415A84DD85041B89AA20C6AA95441B34A88E23ED85041125D95656FA954416C7388803AD85041607855756CA95441000000503AD85041666666866CA954413D0AD75339D8504148E17A246DA9544172FBC4A938D85041558911B86CA95441F2BD791837D850410470D4126CA95441885E8AA436D8504187E9503E6CA954410C31E66536D850416FF1CF556CA954410457CE5936D850418D2B595A6CA95441D367FD3036D850417D79A8696CA9544152EF752D36D85041CC5BFB6A6CA954418458C72C36D850416ED83C6B6CA95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>373327 - 1856190
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000001D0000008FC2F5A824CF5041C3F5283C179F5441713D0AB725CF50419A999979229F54415C8FC26525CF5041EC51B89E289F5441E17A147E25CF504152B81EF52D9F5441E17A14CE1ECF50415C8FC2A52F9F544148E17AD41FCF5041AE47E19A349F5441A4703D6A21CF5041713D0AD73A9F5441666666D625CF5041333333E3399F544148E17A4436CF504114AE4731379F5441C3F5284C42CF5041A4703D4A369F5441CDCCCC3C4DCF50413D0AD7F3359F5441EC51B8FE63CF5041CDCCCCAC369F54419A99997969CF504114AE4751349F54418FC2F5E865CF50417B14AE172D9F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000008FC2F5A824CF5041C3F5283C179F5441B115BA1125CF5041D9F2AE611C9F5441E102D0B824CF50418943CDC0229F5441A70DFDB824CF50418F4987E1229F5441704FBECD24CF5041D5315031249F54414AAA142B25CF504162FBC9F8289F5441BADFF94825CF504194B40AFB2B9F5441BF1D776A25CF50418384D9182E9F544143E57F6223CF5041803E7A7D2E9F54415B1909501FCF504115CE434C2F9F54412B5CB9571FCF50418639229B2F9F544181BE5F561FCF504163DE7E9B2F9F5441B85FD85F1FCF504152BF70EE2F9F54414BB252601FCF5041368857F32F9F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>373327 - 1856191
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001D0000008FC2F5A824CF5041C3F5283C179F5441713D0AB725CF50419A999979229F54415C8FC26525CF5041EC51B89E289F5441E17A147E25CF504152B81EF52D9F5441E17A14CE1ECF50415C8FC2A52F9F544148E17AD41FCF5041AE47E19A349F5441A4703D6A21CF5041713D0AD73A9F5441666666D625CF5041333333E3399F544148E17A4436CF504114AE4731379F5441C3F5284C42CF5041A4703D4A369F5441CDCCCC3C4DCF50413D0AD7F3359F5441EC51B8FE63CF5041CDCCCCAC369F54419A99997969CF504114AE4751349F54418FC2F5E865CF50417B14AE172D9F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000210000005C8FC2D511CF5041D7A3703D169F5441AE47E13A12CF504152B81EA5239F544152B81E5512CF5041F6285C4F259F54416666660613CF50415C8FC2A5269F54411F85EB2114CF5041AE47E16A269F5441000000A013CF50413D0AD7E3219F5441E17A142E17CF5041E17A146E219F54418FC2F5B81CCF5041A4703D2A1F9F544185EB51F81DCF50419A9999491E9F54411F85EB911ECF5041A4703D3A1D9F544185EB51081FCF504148E17A941C9F5441CDCCCC0C20CF5041D7A3704D1C9F5441E17A14BE20CF5041CDCCCC7C1C9F54413D0AD73321CF5041333333F31C9F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>373327 - 3612840
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000001D0000008FC2F5A824CF5041C3F5283C179F5441713D0AB725CF50419A999979229F54415C8FC26525CF5041EC51B89E289F5441E17A147E25CF504152B81EF52D9F5441E17A14CE1ECF50415C8FC2A52F9F544148E17AD41FCF5041AE47E19A349F5441A4703D6A21CF5041713D0AD73A9F5441666666D625CF5041333333E3399F544148E17A4436CF504114AE4731379F5441C3F5284C42CF5041A4703D4A369F5441CDCCCC3C4DCF50413D0AD7F3359F5441EC51B8FE63CF5041CDCCCCAC369F54419A99997969CF504114AE4751349F54418FC2F5E865CF50417B14AE172D9F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000008FC2F5A824CF5041C3F5283C179F5441B115BA1125CF5041D9F2AE611C9F5441E102D0B824CF50418943CDC0229F5441A70DFDB824CF50418F4987E1229F5441704FBECD24CF5041D5315031249F54414AAA142B25CF504162FBC9F8289F5441BADFF94825CF504194B40AFB2B9F5441BF1D776A25CF50418384D9182E9F544143E57F6223CF5041803E7A7D2E9F54415B1909501FCF504115CE434C2F9F54412B5CB9571FCF50418639229B2F9F544181BE5F561FCF504163DE7E9B2F9F5441B85FD85F1FCF504152BF70EE2F9F54414BB252601FCF5041368857F32F9F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>373327 - 3617778
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001D0000008FC2F5A824CF5041C3F5283C179F5441713D0AB725CF50419A999979229F54415C8FC26525CF5041EC51B89E289F5441E17A147E25CF504152B81EF52D9F5441E17A14CE1ECF50415C8FC2A52F9F544148E17AD41FCF5041AE47E19A349F5441A4703D6A21CF5041713D0AD73A9F5441666666D625CF5041333333E3399F544148E17A4436CF504114AE4731379F5441C3F5284C42CF5041A4703D4A369F5441CDCCCC3C4DCF50413D0AD7F3359F5441EC51B8FE63CF5041CDCCCCAC369F54419A99997969CF504114AE4751349F54418FC2F5E865CF50417B14AE172D9F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000210000005C8FC2D511CF5041D7A3703D169F5441AE47E13A12CF504152B81EA5239F544152B81E5512CF5041F6285C4F259F54416666660613CF50415C8FC2A5269F54411F85EB2114CF5041AE47E16A269F5441000000A013CF50413D0AD7E3219F5441E17A142E17CF5041E17A146E219F54418FC2F5B81CCF5041A4703D2A1F9F544185EB51F81DCF50419A9999491E9F54411F85EB911ECF5041A4703D3A1D9F544185EB51081FCF504148E17A941C9F5441CDCCCC0C20CF5041D7A3704D1C9F5441E17A14BE20CF5041CDCCCC7C1C9F54413D0AD73321CF5041333333F31C9F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968022 - 1145905
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+0106000000010000000103000000010000002000000076BE616FB857514197A3C4F5A4485441AB5806969F5751411C56E061A2485441584ACC6B9F57514171AE8863A2485441A0034BA89B57514166B9D51AA34854413A6DC9F996575141AF705637A5485441317648219457514149D6F090A74854410E9A142F92575141041AA5B4AA48544144647A629057514159C4F241AD4854418D7ECCE08D575141151482BCAF485441360ACEE68B57514149C01AECB048544143C143248E575141D80D6F3DB248544191AB89088C57514186F66B31B6485441A6BC79958A5751411A717DAAB5485441F07902528A57514198DA9E96B6485441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000260000008FC2F588A95751410AD7A3B0D4485441D7A370CDAC5751413D0AD7B3CB4854415C8FC2F5B157514185EB51F8BE4854418E816EA0B357514175109E91BB4854410E05E2D3B3575141AE488A11BB485441D660850EB457514184B1F5B0BA4854412A3AF98DB657514194D40998B54854412272A7A8B657514104B23536B5485441F6285CCFB7575141713D0A17AC485441A6E306D6B7575141EDC33518AC48544176BE616FB857514193A3C4F5A4485441AA5806969F5751412156E061A24854415B4ACC6B9F57514170AE8863A24854419F034BA89B57514165B9D51AA3485441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968022 - 3429800
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+0106000000010000000103000000010000002000000076BE616FB857514197A3C4F5A4485441AB5806969F5751411C56E061A2485441584ACC6B9F57514171AE8863A2485441A0034BA89B57514166B9D51AA34854413A6DC9F996575141AF705637A5485441317648219457514149D6F090A74854410E9A142F92575141041AA5B4AA48544144647A629057514159C4F241AD4854418D7ECCE08D575141151482BCAF485441360ACEE68B57514149C01AECB048544143C143248E575141D80D6F3DB248544191AB89088C57514186F66B31B6485441A6BC79958A5751411A717DAAB5485441F07902528A57514198DA9E96B6485441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000260000008FC2F588A95751410AD7A3B0D4485441D7A370CDAC5751413D0AD7B3CB4854415C8FC2F5B157514185EB51F8BE4854418E816EA0B357514175109E91BB4854410E05E2D3B3575141AE488A11BB485441D660850EB457514184B1F5B0BA4854412A3AF98DB657514194D40998B54854412272A7A8B657514104B23536B5485441F6285CCFB7575141713D0A17AC485441A6E306D6B7575141EDC33518AC48544176BE616FB857514193A3C4F5A4485441AA5806969F5751412156E061A24854415B4ACC6B9F57514170AE8863A24854419F034BA89B57514165B9D51AA3485441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976072 - 1018944
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000350000008EC6C4114E1E51417F4E3BAFFE465441CDCCCC4C4F1E51410AD7A320FE465441E17A14DE551E5141E17A14CEFD465441333333335D1E5141B81E855BFF465441C3F5282C621E514166666606004754415C8FC2A5651E5141713D0A870047544189B258806A1E514139D2C79701475441000000606B1E514185EB51A8FB465441713D0A076C1E514185EB5168F6465441E17A140E6C1E514185EB51B8F5465441000000B0701E514166666646F646544185EB5158761E5141F6285C6FF64654411F85EB917B1E51417B14AE77F64654419A999979811E51411F85EBB1F6465441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A00000048E17A244D1E5141713D0A87B6465441666666C64A1E514148E17AD4BE465441F6285CDF481E5141AE47E1AAC4465441C3F5281C471E5141713D0A17C9465441000000D0431E514152B81EC5CF465441C1D6D749441E5141EC381915D046544166A07290441E5141D45B8764D0465441A75856AF441E5141518A6FCED04654416FFF82A6441E5141F893A9A6D1465441420700F6431E514106B1DAE8D1465441C23728A2431E514107122B41D1465441A6FDC51D431E5141924253EDD04654411ECFDDB3421E5141518A6FCED046544114AE4781411E514152B81EE5D1465441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976072 - 3329488
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000350000008EC6C4114E1E51417F4E3BAFFE465441CDCCCC4C4F1E51410AD7A320FE465441E17A14DE551E5141E17A14CEFD465441333333335D1E5141B81E855BFF465441C3F5282C621E514166666606004754415C8FC2A5651E5141713D0A870047544189B258806A1E514139D2C79701475441000000606B1E514185EB51A8FB465441713D0A076C1E514185EB5168F6465441E17A140E6C1E514185EB51B8F5465441000000B0701E514166666646F646544185EB5158761E5141F6285C6FF64654411F85EB917B1E51417B14AE77F64654419A999979811E51411F85EBB1F6465441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A00000048E17A244D1E5141713D0A87B6465441666666C64A1E514148E17AD4BE465441F6285CDF481E5141AE47E1AAC4465441C3F5281C471E5141713D0A17C9465441000000D0431E514152B81EC5CF465441C1D6D749441E5141EC381915D046544166A07290441E5141D45B8764D0465441A75856AF441E5141518A6FCED04654416FFF82A6441E5141F893A9A6D1465441420700F6431E514106B1DAE8D1465441C23728A2431E514107122B41D1465441A6FDC51D431E5141924253EDD04654411ECFDDB3421E5141518A6FCED046544114AE4781411E514152B81EE5D1465441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389275 - 959778
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -23  </desc>
+<a>
+0106000000010000000103000000010000007900000052B81E45FE995041E17A149E18225441000000D0FC99504185EB514818225441CDCCCC4CFD995041713D0A471A225441A4703DCAFC995041A4703D6A21225441C3F5288CFB99504152B81EF5212254417B14AEA7FA995041A4703DBA242254418FC2F538F9995041F6285C4F2722544114AE4711F699504148E17A64282254418FC2F5E8F5995041C3F5289C2B22544152B81EF5F09950411F85EB113022544185EB5148EF9950411F85EB513322544148E17A24EB995041F6285C4F352254413D0AD7D3ED995041D7A3709D382254419A999989EF995041333333233A225441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000034000000B04FACCED29950411A6A988EAB2154416B565A12D299504146D58A57AF215441A4711FCCD199504143B14CBDB1215441333333B3D5995041C3F5283CB22154418ECF08F9D4995041308E11FEB72154413706DD49D4995041B77FF1C2BE215441114CD369D69950410F024D29BF215441FB8064C6DF99504169BCB125C12154415CE8F214EE995041C4507ACFC4215441410F58C2109A50411B8CE223D12154417033C7FA0A9A50418E1F957AE221544129F10214169A5041DCC8CA9EE621544110EF9F30109A50419368B4A9FA2154414CE5996A109A504118298D22FC215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>395265 - 1371051
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -23  </desc>
+<a>
+0106000000010000000103000000010000001D000000666666969438514114AE47A167EB5441CDCCCC3C88385141E17A140E67EB54419A999919813851413D0AD71367EB544148E17A248138514152B81E1568EB544152B81EC581385141C3F5283C84EB5441295C8FD281385141E17A145E86EB5441D7A3701D83385141A4703D4A86EB5441F6285CCF8338514152B81E657EEB5441B81E85EB823851418FC2F5D87DEB54413D0AD71383385141000000B07BEB5441C3F528EC843851410AD7A3A07AEB54417B14AE9787385141AE47E19A79EB5441C3F5285C893851413D0AD7B378EB544185EB51088E38514114AE479179EB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000295C8FD281385141E17A145E86EB5441E17A144E82385141F6285C1F9AEB54410AD7A36082385141295C8F729DEB54411F85EB71B938514148E17AA4ACEB5441295C8F12BD3851411F85EB81A4EB54419A999949C83851418FC2F5588BEB5441212834EAA3385141BC4100937FEB54412C07D0939D385141E8AF5B8C7DEB5441DE5EC8279D38514163BFB36682EB5441C439BDED9A38514172EFA4BF86EB5441AE47E10A963851411F85EBC184EB5441047C2CEE93385141C061051984EB544190F524D08338514140E3A46E7FEB5441D7A3701D83385141A4703D4A86EB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>395265 - 3457104
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -23  </desc>
+<a>
+0106000000010000000103000000010000001D000000666666969438514114AE47A167EB5441CDCCCC3C88385141E17A140E67EB54419A999919813851413D0AD71367EB544148E17A248138514152B81E1568EB544152B81EC581385141C3F5283C84EB5441295C8FD281385141E17A145E86EB5441D7A3701D83385141A4703D4A86EB5441F6285CCF8338514152B81E657EEB5441B81E85EB823851418FC2F5D87DEB54413D0AD71383385141000000B07BEB5441C3F528EC843851410AD7A3A07AEB54417B14AE9787385141AE47E19A79EB5441C3F5285C893851413D0AD7B378EB544185EB51088E38514114AE479179EB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000295C8FD281385141E17A145E86EB5441E17A144E82385141F6285C1F9AEB54410AD7A36082385141295C8F729DEB54411F85EB71B938514148E17AA4ACEB5441295C8F12BD3851411F85EB81A4EB54419A999949C83851418FC2F5588BEB5441212834EAA3385141BC4100937FEB54412C07D0939D385141E8AF5B8C7DEB5441DE5EC8279D38514163BFB36682EB5441C439BDED9A38514172EFA4BF86EB5441AE47E10A963851411F85EBC184EB5441047C2CEE93385141C061051984EB544190F524D08338514140E3A46E7FEB5441D7A3701D83385141A4703D4A86EB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943734 - 187174
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000029000000AE47E15AC6BC50413D0AD7B3923754415C8FC2F5C5BC50418FC2F50892375441F6285C5FBFBC504114AE47219337544133333373BFBC50417B14AE97953754418FC2F588BFBC50419A9999199C3754413D0AD783BFBC50413D0AD7E3B1375441CDCCCC5CBFBC50411F85EB81C4375441EC51B8AED1BC5041EC51B8FECC375441295C8F92D5BC5041EC51B84ECE375441333333C3DBBC504133333353CF3754418FC2F5C8E2BC5041713D0AE7CF3754417B14AE97EDBC504133333333D03754410AD7A370F1BC5041295C8FA2D037544100000000F7BC50418FC2F548D2375441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A4B6CB54CABC50412F8BA2DA9937544164632E6BC6BC5041304CCBDB923754410F90FA26C5BC504113D9EDB39337544185E61DDDC2BC504166A0558693375441EF4BA79DC0BC5041093C5FEC92375441F6285C5FBFBC504114AE472193375441BA4A4872BFBC50419410867A95375441002BF4F5BFBC50417ECCE24996375441CEF49CF4BFBC504114B2338696375441BA95311BC6BC5041CEDAB3209D375441559D8D1BCEBC504192393CB4A537544144E487DCCEBC504124AFA684A637544113FC2839CFBC5041893BE007A7375441EACE7328D0BC5041CBDC44EAA5375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943734 - 187177
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000029000000AE47E15AC6BC50413D0AD7B3923754415C8FC2F5C5BC50418FC2F50892375441F6285C5FBFBC504114AE47219337544133333373BFBC50417B14AE97953754418FC2F588BFBC50419A9999199C3754413D0AD783BFBC50413D0AD7E3B1375441CDCCCC5CBFBC50411F85EB81C4375441EC51B8AED1BC5041EC51B8FECC375441295C8F92D5BC5041EC51B84ECE375441333333C3DBBC504133333353CF3754418FC2F5C8E2BC5041713D0AE7CF3754417B14AE97EDBC504133333333D03754410AD7A370F1BC5041295C8FA2D037544100000000F7BC50418FC2F548D2375441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000C5D5955DBCBC50411893D9A8913754417FEA6664BBBC5041DEE89DA88F37544142F1EB57BBBC5041E2F46D928F375441B9CAE53FBBBC50411BA0935D8F37544121E29D7FBABC5041A0D6D1E18D37544100D34FA7B9BC5041DEA6AC528E3754419B0749EAB7BC50411C207B768E3754418CEF326BB4BC5041DE2B0636903754413DBB3A89B2BC50414C460227913754419DC9ABBAB1BC5041AC1BAF9293375441604E3B9EB1BC504136EFF00A98375441B9036D9EB1BC5041333806449837544116F127ABB1BC5041EAA91B44983754411D1869AAB1BC5041ECA9D12898375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943734 - 393249
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000029000000AE47E15AC6BC50413D0AD7B3923754415C8FC2F5C5BC50418FC2F50892375441F6285C5FBFBC504114AE47219337544133333373BFBC50417B14AE97953754418FC2F588BFBC50419A9999199C3754413D0AD783BFBC50413D0AD7E3B1375441CDCCCC5CBFBC50411F85EB81C4375441EC51B8AED1BC5041EC51B8FECC375441295C8F92D5BC5041EC51B84ECE375441333333C3DBBC504133333353CF3754418FC2F5C8E2BC5041713D0AE7CF3754417B14AE97EDBC504133333333D03754410AD7A370F1BC5041295C8FA2D037544100000000F7BC50418FC2F548D2375441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A4B6CB54CABC50412F8BA2DA9937544164632E6BC6BC5041304CCBDB923754410F90FA26C5BC504113D9EDB39337544185E61DDDC2BC504166A0558693375441EF4BA79DC0BC5041093C5FEC92375441F6285C5FBFBC504114AE472193375441BA4A4872BFBC50419410867A95375441002BF4F5BFBC50417ECCE24996375441CEF49CF4BFBC504114B2338696375441BA95311BC6BC5041CEDAB3209D375441559D8D1BCEBC504192393CB4A537544144E487DCCEBC504124AFA684A637544113FC2839CFBC5041893BE007A7375441EACE7328D0BC5041CBDC44EAA5375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>419166 - 2630836
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000100000001030000000200000020000000E17A144E5DBC5041000000C0EC345441A4703D8A41BC5041D7A3708DE6345441F6285CEF3CBC50419A999959E5345441C3F5285C3FBC5041295C8F82E63454419A99994941BC5041D7A3703DE8345441F6285C7F43BC504114AE47C1EA345441F6285C5F45BC50410AD7A340ED34544114AE477146BC50410AD7A3E0EE345441C3F528CC47BC50418FC2F5E8F0345441000000104ABC504114AE47D1F33454418FC2F5F84ABC504114AE4711F5345441F6285CCF4CBC5041E17A14FEF7345441A4703D2A4EBC5041AE47E1AAFA3454417B14AED74EBC504114AE47C1FC345441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000044000000F6285C5F5FBC504114AE4741ED34544185EB510864BC5041D7A3702DEE345441F6285C2F6ABC5041A4703DEAD234544148E17AF46CBC5041D7A3706DC53454415C8FC2D563BC50419A9999E9C5345441333333E35BBC5041CDCCCC2CC93454419A99999951BC50415C8FC215C7345441295C8F723CBC504133333393BE34544185EB51683FBC504133333353C2345441B81E85FB41BC5041EC51B80EC5345441EC51B89E44BC504114AE4791C7345441CDCCCCFC47BC504152B81E65CA345441666666564ABC5041F6285CBFCC345441C3F528AC4BBC50415C8FC265CE345441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>419166 - 3428931
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000100000001030000000200000020000000E17A144E5DBC5041000000C0EC345441A4703D8A41BC5041D7A3708DE6345441F6285CEF3CBC50419A999959E5345441C3F5285C3FBC5041295C8F82E63454419A99994941BC5041D7A3703DE8345441F6285C7F43BC504114AE47C1EA345441F6285C5F45BC50410AD7A340ED34544114AE477146BC50410AD7A3E0EE345441C3F528CC47BC50418FC2F5E8F0345441000000104ABC504114AE47D1F33454418FC2F5F84ABC504114AE4711F5345441F6285CCF4CBC5041E17A14FEF7345441A4703D2A4EBC5041AE47E1AAFA3454417B14AED74EBC504114AE47C1FC345441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000044000000F6285C5F5FBC504114AE4741ED34544185EB510864BC5041D7A3702DEE345441F6285C2F6ABC5041A4703DEAD234544148E17AF46CBC5041D7A3706DC53454415C8FC2D563BC50419A9999E9C5345441333333E35BBC5041CDCCCC2CC93454419A99999951BC50415C8FC215C7345441295C8F723CBC504133333393BE34544185EB51683FBC504133333353C2345441B81E85FB41BC5041EC51B80EC5345441EC51B89E44BC504114AE4791C7345441CDCCCCFC47BC504152B81E65CA345441666666564ABC5041F6285CBFCC345441C3F528AC4BBC50415C8FC265CE345441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>399981 - 3009966
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+0106000000010000000103000000010000001B000000EC51B86E3E4D5141D7A3708D526C54417B14AE273E4D51418FC2F558556C5441000000A04F4D5141666666C6546C544185EB5118514D514152B81E65506C544166666656524D5141B81E85FB4A6C5441CDCCCC0C524D5141333333E3436C5441CDCCCCBC524D5141AE47E18A406C54410AD7A370544D5141000000A0396C5441EC51B84E574D514152B81EF52F6C5441C3F528FC534D5141D7A370ED2D6C5441A4703D5A514D514185EB51F82C6C5441A4703DBA4E4D5141F6285C0F2C6C5441B81E859B474D5141000000102A6C5441713D0A27404D51415C8FC245296C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000009CD8EA95414D5141B2FA5FAB1D6C54410B2B7481414D514170A589B41D6C5441490B7EE1404D5141F75049EE1D6C5441B81E859B374D5141F6285CDF1E6C544114AE47C1314D5141295C8FC2216C544168A907902F4D514141B57B86236C5441CAFFB45D2F4D51413AF65248246C5441B5FD557D2F4D5141626EB3BB2A6C544110BD31892F4D514112D665B7386C544127F566822F4D5141E0F65B933D6C5441AAC91DFF3E4D514148A7AC883E6C5441713D0AF73F4D5141CDCCCCAC3E6C5441C2DB22EC3F4D514150A28C6F456C544100917EAB3F4D51411AE810974C6C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>399981 - 3826712
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+0106000000010000000103000000010000001B000000EC51B86E3E4D5141D7A3708D526C54417B14AE273E4D51418FC2F558556C5441000000A04F4D5141666666C6546C544185EB5118514D514152B81E65506C544166666656524D5141B81E85FB4A6C5441CDCCCC0C524D5141333333E3436C5441CDCCCCBC524D5141AE47E18A406C54410AD7A370544D5141000000A0396C5441EC51B84E574D514152B81EF52F6C5441C3F528FC534D5141D7A370ED2D6C5441A4703D5A514D514185EB51F82C6C5441A4703DBA4E4D5141F6285C0F2C6C5441B81E859B474D5141000000102A6C5441713D0A27404D51415C8FC245296C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000009CD8EA95414D5141B2FA5FAB1D6C54410B2B7481414D514170A589B41D6C5441490B7EE1404D5141F75049EE1D6C5441B81E859B374D5141F6285CDF1E6C544114AE47C1314D5141295C8FC2216C544168A907902F4D514141B57B86236C5441CAFFB45D2F4D51413AF65248246C5441B5FD557D2F4D5141626EB3BB2A6C544110BD31892F4D514112D665B7386C544127F566822F4D5141E0F65B933D6C5441AAC91DFF3E4D514148A7AC883E6C5441713D0AF73F4D5141CDCCCCAC3E6C5441C2DB22EC3F4D514150A28C6F456C544100917EAB3F4D51411AE810974C6C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>401990 - 59475
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+010600000001000000010300000001000000140000005C8FC235B00C5141C3F5281C38F15441713D0AE7B00C51418FC2F5D838F15441E17A14DEB10C5141E17A143E39F15441CDCCCCECB80C51413D0AD7D338F15441EC51B8EEC30C51410000000038F154413D0AD7B3C50C51417B14AEE737F15441E17A14DEC70C514152B81E2536F15441713D0A57C80C51419A9999D931F1544100000070C80C51410AD7A33027F15441D7A3705DC80C5141E17A14BE23F1544114AE47F1BC0C5141F6285C3F23F1544152B81EA5B70C51415C8FC22523F15441B81E859BB30C51419A99996923F1544185EB51B8B10C5141F6285CCF23F15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001800000085EB51B8AE0C5141CDCCCCEC2FF15441FB5545B8AF0C5141DBEC68DF36F15441B67BC117B00C5141B3C523D937F154415C8FC235B00C5141C3F5281C38F15441713D0AE7B00C51418FC2F5D838F15441E17A14DEB10C5141E17A143E39F154414D837AC4B50C514114195F0339F1544143EE26B0C50C5141AF89B0D737F15441918127DFC70C514144BF5A1B36F154412DD40813C80C5141003AC44334F1544155C9BE20C80C5141B7E522C733F1544165ECD23CC80C5141215F586532F154410F0BC96CC80C51414CD3C69726F15441704EB15DC80C51419D7A17CA23F15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>420861 - 37167
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000000B000000333333D35DA750411F85EB719A5855413333331354A7504148E17A849958554152B81E6552A7504152B81E65995855419A9999294BA75041D7A3701DB058554152B81EF54CA750410AD7A320B0585541EC51B8DE4DA750411F85EBE1AF5855415C8FC25550A75041B81E853BAF585541CDCCCC3C4FA75041C3F5280CB5585541D7A370FD53A7504185EB5118B558554152B81E7557A750410AD7A350AD585541333333D35DA750411F85EB719A585541
+</a>
+
+<b>
+010600000001000000010300000001000000110000003333331354A7504148E17A84995855410AAA617752A750415DC8D77899585541F496284452A75041D20EAACC99585541F6234E0452A75041906540959A585541A296C7B251A750417FA45A959B58554196B1ECF94FA75041FAD53EFEA05855413BD780464BA750415A6F4DFFAF5855410B649BCC4BA75041695AAF17B0585541863EA91A4CA7504107631E1FB058554152B81EF54CA750410AD7A320B0585541EC51B8DE4DA750411F85EBE1AF5855415C8FC25550A75041B81E853BAF585541CDCCCC3C4FA75041C3F5280CB5585541D7A370FD53A7504185EB5118B5585541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>895338 - 3574466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -62  </desc>
+<a>
+0106000000010000000103000000010000001C0000005C8FC205257F514152B81E45E7A55441EC51B8CE227F51418FC2F568ECA55441D7A3708D217F5141D7A3705DF0A55441B81E854B207F5141B81E853BF5A554415C8FC225227F514148E17AD4F5A554418FC2F5C8247F514152B81E55F6A554417B14AE37317F5141F6285C5FF8A55441713D0A17377F514100000020F9A554413D0AD7D3417F51410AD7A3A0F9A554418FC2F5184D7F51411F85EB71FAA554415C8FC225517F51419A999989FAA55441F6285C7F527F51410AD7A360F9A5544114AE4721547F514166666666F7A5544133333373557F51413D0AD753F5A55441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000040000000332DC408527F5141CD2E5124FAA55441CB88DB94527F5141C0503B95F9A5544160A53E03537F51415D387C24F9A554411D5A646B537F514108AC1CBAF8A55441AD387BA3537F5141C5BF8B63F8A554416DE331D5537F514177E7D116F8A5544154E7BF22547F514168FC1F9FF7A554418E9BD254557F5141D65EBEC6F5A55441CB171CC2557F5141D100131EF5A554411700DF51567F5141A05CED29F4A554410B059F47577F514183D76E6DF1A55441553A3B5D577F5141AAA6D52FF1A554411904567E577F5141FED478D1F0A554410AD7A3E0567F5141B81E856BF0A55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>896330 - 1170011
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000004A000000B81E851BEE6751413333339394AA54410AD7A320ED6751419A99990995AA5441E17A146EEC67514185EB51B897AA5441666666F6E9675141A4703D5A9AAA544100000000E76751419A9999099CAA544152B81EF5E36751419A9999099CAA544148E17A64DF6751418FC2F5B89AAA5441EC51B82EDC675141666666C699AA5441B81E855BD86751411F85EB9199AA5441B81E853BD567514185EB51F89AAA54410AD7A310D26751417B14AE579EAA5441AE47E1DACE675141E17A14DEA2AA5441A4703DFACB6751417B14AE47A6AA54418FC2F518C9675141666666C6A6AA5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000051000000B81E85FBEE675141AE47E1FA95AA5441B81E851BEE6751413333339394AA54410AD7A320ED6751419A99990995AA5441005484C7EA6751413ECEA55297AA5441EB7A69E5E867514152F1BCD998AA544198EC581BE7675141821F74079AAA54410C3242F6E56751411F2DAC029BAA5441C2C3B029E4675141A8D6BCED9AAA5441465CBBDAE267514172CC52319AAA5441424BB5A0E16751412C6FC79E99AA544125C5811CDE6751418F618FA398AA54414A8BD3F0D9675141B007D24F98AA5441ECB81A14D7675141D5BE1A3699AA5441A87FEB36D5675141BCC137FD9AAA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>896330 - 3328873
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000004A000000B81E851BEE6751413333339394AA54410AD7A320ED6751419A99990995AA5441E17A146EEC67514185EB51B897AA5441666666F6E9675141A4703D5A9AAA544100000000E76751419A9999099CAA544152B81EF5E36751419A9999099CAA544148E17A64DF6751418FC2F5B89AAA5441EC51B82EDC675141666666C699AA5441B81E855BD86751411F85EB9199AA5441B81E853BD567514185EB51F89AAA54410AD7A310D26751417B14AE579EAA5441AE47E1DACE675141E17A14DEA2AA5441A4703DFACB6751417B14AE47A6AA54418FC2F518C9675141666666C6A6AA5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000051000000B81E85FBEE675141AE47E1FA95AA5441B81E851BEE6751413333339394AA54410AD7A320ED6751419A99990995AA5441005484C7EA6751413ECEA55297AA5441EB7A69E5E867514152F1BCD998AA544198EC581BE7675141821F74079AAA54410C3242F6E56751411F2DAC029BAA5441C2C3B029E4675141A8D6BCED9AAA5441465CBBDAE267514172CC52319AAA5441424BB5A0E16751412C6FC79E99AA544125C5811CDE6751418F618FA398AA54414A8BD3F0D9675141B007D24F98AA5441ECB81A14D7675141D5BE1A3699AA5441A87FEB36D5675141BCC137FD9AAA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943963 - 1823202
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -175  </desc>
+<a>
+01060000000100000001030000000100000032000000F6285CFF92BC50418FC2F548E536544148E17A6498BC504185EB5178E5365441A4703D1A9BBC50419A999999E536544185EB51F896BC504152B81EB5D6365441AE47E1BA8BBC50411F85EBF1D536544185EB517888BC50419A9999F9C63654411F85EB6187BC50413D0AD753C7365441E17A149E86BC5041F6285C5FC7365441295C8FC285BC50415C8FC2E5C636544185EB51C884BC5041F6285CAFC636544148E17AF483BC5041A4703DDAC6365441CDCCCC2C83BC5041C3F5284CC7365441F6285C9F82BC5041CDCCCCECC7365441E17A146E81BC504166666656C8365441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003400000026A4BA3366BC504168DDBF75CA36544177CF24AF65BC504183E46F99CB3654417DB4E5F265BC5041CA88CC7FCC365441B88EC05166BC5041A642F52FCD36544185EB51086CBC5041713D0AE7D13654413D0AD76371BC50419A999939D836544152B81E9575BC504100000040E236544114AE47D177BC50417B14AE17E93654413D0AD7D372BC504100000000F13654416666669672BC5041666666F6F1365441666666E66DBC5041A4703DDAF33654411F85EB316CBC5041A4703D2AF4365441333333036CBC50417B14AE770037544152B81E2571BC50415C8FC24515375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943963 - 3473755
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -175  </desc>
+<a>
+01060000000100000001030000000100000032000000F6285CFF92BC50418FC2F548E536544148E17A6498BC504185EB5178E5365441A4703D1A9BBC50419A999999E536544185EB51F896BC504152B81EB5D6365441AE47E1BA8BBC50411F85EBF1D536544185EB517888BC50419A9999F9C63654411F85EB6187BC50413D0AD753C7365441E17A149E86BC5041F6285C5FC7365441295C8FC285BC50415C8FC2E5C636544185EB51C884BC5041F6285CAFC636544148E17AF483BC5041A4703DDAC6365441CDCCCC2C83BC5041C3F5284CC7365441F6285C9F82BC5041CDCCCCECC7365441E17A146E81BC504166666656C8365441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003400000026A4BA3366BC504168DDBF75CA36544177CF24AF65BC504183E46F99CB3654417DB4E5F265BC5041CA88CC7FCC365441B88EC05166BC5041A642F52FCD36544185EB51086CBC5041713D0AE7D13654413D0AD76371BC50419A999939D836544152B81E9575BC504100000040E236544114AE47D177BC50417B14AE17E93654413D0AD7D372BC504100000000F13654416666669672BC5041666666F6F1365441666666E66DBC5041A4703DDAF33654411F85EB316CBC5041A4703D2AF4365441333333036CBC50417B14AE770037544152B81E2571BC50415C8FC24515375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>161756 - 978070
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000400000005C8FC2C5304851417B14AEF76C4B5441666666B627485141CDCCCC2C7D4B544185EB51A82048514114AE47018A4B5441C3F5289C1C485141E17A145E884B5441666666C61B4851413D0AD793884B54419A9999691648514148E17AF4914B5441C3F528EC13485141A4703D0A914B54418FC2F558124851411F85EBF1904B5441295C8FD208485141713D0A97834B54413D0AD703FD475141F6285C0FA24B5441333333B3FF475141AE47E1FAA24B54419A99995906485141A4703D2AA54B5441E17A14CE09485141EC51B83EA64B544114AE47910A485141F6285CFFA54B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000003D0AD7533F4851410AD7A3903D4B54417B14AE77334851413D0AD703384B5441E17A14CE3048514152B81E75364B5441000000C02B485141666666563B4B54417B14AEF73D4851417B14AE274A4B544130DADFAE3A485141047AB0E0524B54419176CE46374851419EF90DDF5B4B54416904194B334851413DA73563664B5441A9568F6932485141B20C8EFB684B5441A69CFE2C37485141C1B0EF426B4B5441A70CC3D03C485141C609AD3D6E4B54416B3A7DED3F48514140DD2DCE6F4B54413EB3AA0343485141CEF0831A6F4B544116C3DFC846485141AD2C1FFF6E4B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>897377 - 1166563
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -24  </desc>
+<a>
+01060000000100000001030000000100000049000000E17A14BE927251413D0AD73308A654417B14AE17927251415C8FC2D508A65441295C8F2292725141295C8F4209A654413333336392725141295C8F320AA65441AE47E16A927251415C8FC2D50AA654418FC2F518927251413D0AD7A30BA65441F6285C1F92725141CDCCCCBC0DA65441A4703DFA91725141C3F528AC0EA654410000009091725141A4703D8A0FA654418FC2F508917251419A99995910A65441A4703D9A8F72514148E17A6417A65441F6285C3F8E725141AE47E17A1CA65441CDCCCC1C8C72514114AE470123A6544185EB5158897251415C8FC2952CA65441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004F000000E17A14BE927251413D0AD73308A654417B14AE17927251415C8FC2D508A65441295C8F2292725141295C8F4209A654413333336392725141295C8F320AA65441AE47E16A927251415C8FC2D50AA654418FC2F518927251413D0AD7A30BA65441F6285C1F92725141CDCCCCBC0DA65441A4703DFA91725141C3F528AC0EA654410000009091725141A4703D8A0FA654418FC2F508917251419A99995910A65441A4703D9A8F72514148E17A6417A65441F6285C3F8E725141AE47E17A1CA65441CDCCCC1C8C72514114AE470123A6544185EB5158897251415C8FC2952CA65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>897377 - 3669980
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -24  </desc>
+<a>
+01060000000100000001030000000100000049000000E17A14BE927251413D0AD73308A654417B14AE17927251415C8FC2D508A65441295C8F2292725141295C8F4209A654413333336392725141295C8F320AA65441AE47E16A927251415C8FC2D50AA654418FC2F518927251413D0AD7A30BA65441F6285C1F92725141CDCCCCBC0DA65441A4703DFA91725141C3F528AC0EA654410000009091725141A4703D8A0FA654418FC2F508917251419A99995910A65441A4703D9A8F72514148E17A6417A65441F6285C3F8E725141AE47E17A1CA65441CDCCCC1C8C72514114AE470123A6544185EB5158897251415C8FC2952CA65441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004F000000E17A14BE927251413D0AD73308A654417B14AE17927251415C8FC2D508A65441295C8F2292725141295C8F4209A654413333336392725141295C8F320AA65441AE47E16A927251415C8FC2D50AA654418FC2F518927251413D0AD7A30BA65441F6285C1F92725141CDCCCCBC0DA65441A4703DFA91725141C3F528AC0EA654410000009091725141A4703D8A0FA654418FC2F508917251419A99995910A65441A4703D9A8F72514148E17A6417A65441F6285C3F8E725141AE47E17A1CA65441CDCCCC1C8C72514114AE470123A6544185EB5158897251415C8FC2952CA65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>402670 - 2906034
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -69  </desc>
+<a>
+0106000000010000000103000000010000001600000014AE47D13B265141D7A3705D70D35441B81E853B362651416666668670D354413333334339265141AE47E12A7FD35441A4703DDA3B2651410AD7A3B08BD35441A4703D2A4926514114AE473189D3544114AE47814E2651413D0AD7E384D35441713D0A274E265141333333438AD35441713D0A1750265141295C8F428DD354411F85EBF15126514152B81E758DD35441333333936C2651413D0AD7937FD354410000002068265141D7A3708D76D3544185EB511866265141713D0AA771D35441295C8FB25B265141666666F674D3544114AE4761562651411F85EBA176D35441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000A4703D2A4926514114AE473189D35441366F81124A2651411305E1B588D354419FD214744A265141C1AB8E7588D35441D1D3FE1D4B2651415821F90488D354416F32278E4C2651416078917286D354413CE8BEF54D2651419EC7E6EC87D35441713D0A274E265141333333438AD35441713D0A1750265141295C8F428DD354410A95C46350265141CB2EC1DA8DD3544131D85C13512651412212FE398ED3544118463E9F51265141FC2341198ED354414C90F923522651412B41BAD68DD354411C9441A5532651415EFF60918CD35441C360E980672651412690873882D35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>402670 - 3568670
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -69  </desc>
+<a>
+0106000000010000000103000000010000001600000014AE47D13B265141D7A3705D70D35441B81E853B362651416666668670D354413333334339265141AE47E12A7FD35441A4703DDA3B2651410AD7A3B08BD35441A4703D2A4926514114AE473189D3544114AE47814E2651413D0AD7E384D35441713D0A274E265141333333438AD35441713D0A1750265141295C8F428DD354411F85EBF15126514152B81E758DD35441333333936C2651413D0AD7937FD354410000002068265141D7A3708D76D3544185EB511866265141713D0AA771D35441295C8FB25B265141666666F674D3544114AE4761562651411F85EBA176D35441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000A4703D2A4926514114AE473189D35441366F81124A2651411305E1B588D354419FD214744A265141C1AB8E7588D35441D1D3FE1D4B2651415821F90488D354416F32278E4C2651416078917286D354413CE8BEF54D2651419EC7E6EC87D35441713D0A274E265141333333438AD35441713D0A1750265141295C8F428DD354410A95C46350265141CB2EC1DA8DD3544131D85C13512651412212FE398ED3544118463E9F51265141FC2341198ED354414C90F923522651412B41BAD68DD354411C9441A5532651415EFF60918CD35441C360E980672651412690873882D35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>406308 - 284805
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -276  </desc>
+<a>
+01060000000100000001030000000100000015000000E17A14BED4195141AE47E17A1FD85441C3F5286CCD195141A4703D4A19D85441A4703D7ACC195141EC51B81E18D8544133333363C8195141F6285C0F13D854417B14AE87B91951415C8FC2F51FD8544152B81ED5B41951410000006024D854415C8FC2D5B1195141A4703D9A27D85441AE47E13AAF19514152B81E752BD854418FC2F588AD19514185EB51C82ED854410AD7A3F0AC195141CDCCCCEC2FD854419A999969AB19514185EB514833D8544152B81ED5AF19514152B81E6538D8544185EB5118B21951418FC2F5483BD85441E17A147EBC1951418FC2F5D846D85441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000E36D296CCD1951413AD63D4A19D85441354DABE3CC195141D05640A118D854414A613D7ACC195141DD7BB81E18D85441EDE33263C8195141CA6D5C0F13D85441D63A7D64C7195141FA2283EC13D854419A80FC72BA1951410FA674291FD854412DDDAE87B91951412C07C2F51FD854416DAF0574B81951417E3E3A2521D85441D92064D6AF195141794EB24B2CD854415EB29A69AB195141D2C6514833D85441BC44D0FCAD1951411FB8D04236D85441F1258A3DAE195141F7ABAE8D36D8544152B81ED5AF19514152B81E6538D85441567A3313BE195141AA2D149E47D85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>406836 - 408461
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -64  </desc>
+<a>
+010600000001000000010300000002000000510000005C8FC2054DA8504133333323904E5541000000C03AA85041AE47E15A814E5541D7A3704D35A8504133333313824E5541C3F5283C2DA850413D0AD723834E554114AE47712BA850410AD7A360834E55419A99998923A850415C8FC2D5844E5541295C8F8222A85041295C8F02864E5541000000A01DA8504133333343884E55415C8FC2551AA8504133333343884E5541295C8F0216A85041CDCCCC3C8A4E5541E17A142E15A85041E17A14CE8A4E55417B14AE9717A85041A4703DBA8D4E5541F6285C3F1DA850419A999949914E5541C3F528BC23A850415C8FC265974E5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000E4FFFFBF3AA85041B247E15A814E5541D7A3704D35A8504133333313824E5541851E811933A85041C352A55D824E5541DB4A48712BA8504144C2A360834E55419E98998923A850417D90C2D5844E55417F6ADDAA22A850411AA88C64864E55419D461A7427A850418D0D19B98A4E55411CEA79F92EA85041C157F4E6914E5541FB8A5E8833A85041F5B2F334954E5541F37C4F1136A85041040E4EED964E5541E88284F336A8504114CCD374974E554159E8D8CC39A850411F0EF382984E55410859F7EF39A85041518755C3984E5541EC51B8BE3AA850413D0AD713994E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408004 - 3010237
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+01060000000100000001030000000100000008000000000000704615514114AE47111EEA54411F85EBE149155141E17A14FE1DEA5441295C8F124A155141C3F5286C1CEA54410AD7A34041155141EC51B87E15EA5441000000B040155141295C8F721CEA5441295C8F424015514148E17AB421EA54413D0AD7C345155141666666D621EA5441000000704615514114AE47111EEA5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000008BD342643A1551412C55D2781CEA54410D96BF873C155141B9D2B1761CEA54416D9C83A5401551416345726D1CEA54410F91BE4540155141C344518D21EA5441B36CD60F4815514111B9E3DC21EA5441BD45A80E49155141DC99C61E1CEA5441081DA2FE451551410C304C0D19EA54410521E43E41155141F38A3D9415EA5441F8D8F1363F155141157C83C114EA54413E1FF8453E1551419860919B14EA5441F6192BBF3C155141004D068C14EA5441545517493B155141BF0B7E8014EA544191937F483A15514163FD947814EA5441554978403A1551418FD75E581AEA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408004 - 3827248
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+01060000000100000001030000000100000008000000000000704615514114AE47111EEA54411F85EBE149155141E17A14FE1DEA5441295C8F124A155141C3F5286C1CEA54410AD7A34041155141EC51B87E15EA5441000000B040155141295C8F721CEA5441295C8F424015514148E17AB421EA54413D0AD7C345155141666666D621EA5441000000704615514114AE47111EEA5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000008BD342643A1551412C55D2781CEA54410D96BF873C155141B9D2B1761CEA54416D9C83A5401551416345726D1CEA54410F91BE4540155141C344518D21EA5441B36CD60F4815514111B9E3DC21EA5441BD45A80E49155141DC99C61E1CEA5441081DA2FE451551410C304C0D19EA54410521E43E41155141F38A3D9415EA5441F8D8F1363F155141157C83C114EA54413E1FF8453E1551419860919B14EA5441F6192BBF3C155141004D068C14EA5441545517493B155141BF0B7E8014EA544191937F483A15514163FD947814EA5441554978403A1551418FD75E581AEA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408453 - 2957276
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001E000000D7A370CD8515514114AE47310BEA5441CDCCCC4C8A15514114AE47910CEA54419A9999C98B155141713D0AC708EA54417B14AE178E15514114AE479104EA544152B81EA58F155141000000A001EA5441A4703DAA901551418FC2F578FFE954417B14AE979115514152B81E75FDE954411F85EB6191155141B81E85EBFBE95441AE47E1AA901551418FC2F5A8F9E95441F6285CFF8F1551413D0AD733F8E9544152B81EA58E155141EC51B85EF6E954418FC2F5988C1551417B14AE87F4E9544148E17A7489155141A4703DCAF2E95441EC51B8EE80155141E17A144EF0E95441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000EC51B8CE51155141CDCCCC5CECE95441F410680B521551411C8B960DF7E95441CDCCCC1C521551417B14AE27FAE95441F255EF11521551411EE9C51001EA54410379EFCF6315514138C197E302EA5441713D0A476915514148E17A6403EA544166666656731551411F85EB9105EA5441D7A370CD8515514114AE47310BEA5441CDCCCC4C8A15514114AE47910CEA5441C667E83B8A15514116BF7ABB0CEA54419F1D18DE8A155141BC88C0EE0CEA54416942E9168E15514184A361010FEA5441B81E851B8E155141D7A370ED0EEA54411075DAED8E155141A8FCA88B0FEA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408453 - 3420123
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001E000000D7A370CD8515514114AE47310BEA5441CDCCCC4C8A15514114AE47910CEA54419A9999C98B155141713D0AC708EA54417B14AE178E15514114AE479104EA544152B81EA58F155141000000A001EA5441A4703DAA901551418FC2F578FFE954417B14AE979115514152B81E75FDE954411F85EB6191155141B81E85EBFBE95441AE47E1AA901551418FC2F5A8F9E95441F6285CFF8F1551413D0AD733F8E9544152B81EA58E155141EC51B85EF6E954418FC2F5988C1551417B14AE87F4E9544148E17A7489155141A4703DCAF2E95441EC51B8EE80155141E17A144EF0E95441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000EC51B8CE51155141CDCCCC5CECE95441F410680B521551411C8B960DF7E95441CDCCCC1C521551417B14AE27FAE95441F255EF11521551411EE9C51001EA54410379EFCF6315514138C197E302EA5441713D0A476915514148E17A6403EA544166666656731551411F85EB9105EA5441D7A370CD8515514114AE47310BEA5441CDCCCC4C8A15514114AE47910CEA5441C667E83B8A15514116BF7ABB0CEA54419F1D18DE8A155141BC88C0EE0CEA54416942E9168E15514184A361010FEA5441B81E851B8E155141D7A370ED0EEA54411075DAED8E155141A8FCA88B0FEA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408455 - 2957535
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000010000000103000000010000000C0000009A999979C4155141333333D342EA54417B14AEE7CB1551413333332341EA5441B81E85CBCB155141333333333DEA54419A999909D1155141AE47E1DA3CEA5441713D0AF7CE155141333333F334EA5441CDCCCC5CCE155141E17A148E2CEA544148E17A54C01551415C8FC29530EA5441E17A144EBB15514152B81EF531EA544100000070BA155141295C8FE233EA54419A999959C0155141713D0AA743EA5441B81E857BC0155141000000F043EA54419A999979C4155141333333D342EA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000000D9D88D6C0155141B00F2F3E44EA5441E5713A09CC155141840EC0C544EA5441B81E85CBCB155141333333333DEA5441E974FAFED0155141E23894DB3CEA5441CA9E9F61CF1551418C06BC8936EA54418302E8CCCE1551415B1320A832EA5441F628AE1ACE1551413DA611A12CEA544165E3DA2AC715514158AA119F2EEA54415CE8638FBF155141848B97CB30EA5441D7D7BE2BBB155141926E684132EA5441F5AA4D66BA15514167764BE233EA5441ABD868C5BD155141614FCEAC3CEA54410D9D88D6C0155141B00F2F3E44EA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408455 - 3476745
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000010000000103000000010000000C0000009A999979C4155141333333D342EA54417B14AEE7CB1551413333332341EA5441B81E85CBCB155141333333333DEA54419A999909D1155141AE47E1DA3CEA5441713D0AF7CE155141333333F334EA5441CDCCCC5CCE155141E17A148E2CEA544148E17A54C01551415C8FC29530EA5441E17A144EBB15514152B81EF531EA544100000070BA155141295C8FE233EA54419A999959C0155141713D0AA743EA5441B81E857BC0155141000000F043EA54419A999979C4155141333333D342EA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000000D9D88D6C0155141B00F2F3E44EA5441E5713A09CC155141840EC0C544EA5441B81E85CBCB155141333333333DEA5441E974FAFED0155141E23894DB3CEA5441CA9E9F61CF1551418C06BC8936EA54418302E8CCCE1551415B1320A832EA5441F628AE1ACE1551413DA611A12CEA544165E3DA2AC715514158AA119F2EEA54415CE8638FBF155141848B97CB30EA5441D7D7BE2BBB155141926E684132EA5441F5AA4D66BA15514167764BE233EA5441ABD868C5BD155141614FCEAC3CEA54410D9D88D6C0155141B00F2F3E44EA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408612 - 3008346
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -120  </desc>
+<a>
+010600000001000000010300000001000000360000008FC2F528461551415C8FC27542EA54410AD7A3C0451551410000005042EA5441000000E0441551410000001042EA544152B81EB53D155141666666D63FEA5441F6285C7F3E155141333333333DEA5441CDCCCCCC3E1551410AD7A3003CEA5441A4703D2A3C15514148E17A443BEA5441EC51B83E3D155141295C8F8237EA5441CDCCCCEC3F15514148E17A5438EA54413D0AD7A340155141D7A3700D36EA544152B81E55421551413D0AD79336EA54418FC2F50843155141000000B036EA5441E17A14FE42155141EC51B82E34EA5441C3F528DC41155141B81E851B34EA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001900000018242B7F321551411BEF3AE04BEA544159165C70371551414AE76AB74BEA5441545BF2533C155141EF8465734BEA5441F409659E40155141348EADC64AEA544166CB15F142155141D305E53E49EA5441C561D61B44155141A7368DF546EA5441A24C05C4451551415B92472143EA54418EA3130643155141C774AE6A42EA5441C256ADF93D1551418C71239C40EA5441A6858DEE3E15514177E9C7173CEA544141A6871D3C15514105D2579D3BEA5441DF27CD043D155141481EA7F237EA544189B46DE33F1551411926771B38EA5441E18818BD401551413C134CFB35EA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408612 - 3825269
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -120  </desc>
+<a>
+010600000001000000010300000001000000360000008FC2F528461551415C8FC27542EA54410AD7A3C0451551410000005042EA5441000000E0441551410000001042EA544152B81EB53D155141666666D63FEA5441F6285C7F3E155141333333333DEA5441CDCCCCCC3E1551410AD7A3003CEA5441A4703D2A3C15514148E17A443BEA5441EC51B83E3D155141295C8F8237EA5441CDCCCCEC3F15514148E17A5438EA54413D0AD7A340155141D7A3700D36EA544152B81E55421551413D0AD79336EA54418FC2F50843155141000000B036EA5441E17A14FE42155141EC51B82E34EA5441C3F528DC41155141B81E851B34EA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001900000018242B7F321551411BEF3AE04BEA544159165C70371551414AE76AB74BEA5441545BF2533C155141EF8465734BEA5441F409659E40155141348EADC64AEA544166CB15F142155141D305E53E49EA5441C561D61B44155141A7368DF546EA5441A24C05C4451551415B92472143EA54418EA3130643155141C774AE6A42EA5441C256ADF93D1551418C71239C40EA5441A6858DEE3E15514177E9C7173CEA544141A6871D3C15514105D2579D3BEA5441DF27CD043D155141481EA7F237EA544189B46DE33F1551411926771B38EA5441E18818BD401551413C134CFB35EA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>449921 - 232002
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -642  </desc>
+<a>
+01060000000100000001030000000100000032000000AE47E11A9A1B51410AD7A340A32E5541D7A3701DA31B51417B14AE57A72E5541B81E85EBA31B5141D7A3704DA42E5541B81E855BA51B51413D0AD713A02E5541F6285C7FA61B5141EC51B80E9D2E554114AE47C1A91B5141713D0A77942E5541C3F5284CAF1B5141C3F528CC8A2E5541F6285C8FB71B51417B14AE877E2E5541F6285CFFC01B51419A9999A9722E55418FC2F5C8C61B5141D7A370AD6A2E55410AD7A3F0C91B5141F6285C8F6A2E5541F6285CDFCC1B514114AE47516A2E554152B81EE5CD1B514114AE47016A2E5541666666D6CF1B51419A999919692E5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003600000028CAF5C8C61B5141799470AD6A2E55418893C75CC71B51413151EFA76A2E5541B526AB9EC81B51418667F29B6A2E55416BE4A3F0C91B514108EE5B8F6A2E554127955BDFCC1B51419C7947516A2E554154A8AE1ACD1B51417354263F6A2E554152B81EE5CD1B514114AE47016A2E5541666666D6CF1B51419A999919692E554114AE4721D21B5141713D0A87672E55419140850BD51B514109FACBAC692E5541E040CEADD51B5141EC757FBA652E5541802985BBD51B514100621E65652E554176148CBDD51B5141700AE754652E5541E39026BED51B5141F9261350652E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>449921 - 276784
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -642  </desc>
+<a>
+01060000000100000001030000000100000032000000AE47E11A9A1B51410AD7A340A32E5541D7A3701DA31B51417B14AE57A72E5541B81E85EBA31B5141D7A3704DA42E5541B81E855BA51B51413D0AD713A02E5541F6285C7FA61B5141EC51B80E9D2E554114AE47C1A91B5141713D0A77942E5541C3F5284CAF1B5141C3F528CC8A2E5541F6285C8FB71B51417B14AE877E2E5541F6285CFFC01B51419A9999A9722E55418FC2F5C8C61B5141D7A370AD6A2E55410AD7A3F0C91B5141F6285C8F6A2E5541F6285CDFCC1B514114AE47516A2E554152B81EE5CD1B514114AE47016A2E5541666666D6CF1B51419A999919692E5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003600000028CAF5C8C61B5141799470AD6A2E55418893C75CC71B51413151EFA76A2E5541B526AB9EC81B51418667F29B6A2E55416BE4A3F0C91B514108EE5B8F6A2E554127955BDFCC1B51419C7947516A2E554154A8AE1ACD1B51417354263F6A2E554152B81EE5CD1B514114AE47016A2E5541666666D6CF1B51419A999919692E554114AE4721D21B5141713D0A87672E55419140850BD51B514109FACBAC692E5541E040CEADD51B5141EC757FBA652E5541802985BBD51B514100621E65652E554176148CBDD51B5141700AE754652E5541E39026BED51B5141F9261350652E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899175 - 1173819
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -65  </desc>
+<a>
+0106000000010000000103000000010000002300000048087C8CA7695141C77121C830A45441B81E858BB369514185EB519834A45441F6285C2FB36951417B14AEF71CA4544133333363B2695141AE47E16AE8A35441CDCCCCDCA7695141A4703DBAE8A35441BF2AF4C9A769514165202C95F8A35441295C8FC2A769514152B81EA5FEA35441382317C1A76951412790170A00A45441E75422BEA769514126B6C98602A454411016F9BAA7695141B7D3992F05A454417A85C4B1A76951414FDB29EE0CA45441FB3F7BACA76951410578A96011A4544194C0B4A8A7695141FA2AC58D14A454413D198DA0A769514161B4A7681BA45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000010C6F37CB36951418572C87B34A45441F6285C2FB36951417B14AEF71CA4544133333363B2695141AE47E16AE8A35441CDCCCCDCA7695141A4703DBAE8A35441BF2AF4C9A769514165202C95F8A35441295C8FC2A769514152B81EA5FEA354413D2317C1A76951412A90170A00A45441EA5422BEA769514122B6C98602A454410C16F9BAA7695141BCD3992F05A45441C8921387A7695141A268C89630A45441869DF57AA7695141160106AC3AA45441713D0A77A7695141AE47E12A3EA45441713D0AB7B36951410AD7A3E03FA4544110C6F37CB36951418572C87B34A45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899175 - 3298988
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -65  </desc>
+<a>
+0106000000010000000103000000010000002300000048087C8CA7695141C77121C830A45441B81E858BB369514185EB519834A45441F6285C2FB36951417B14AEF71CA4544133333363B2695141AE47E16AE8A35441CDCCCCDCA7695141A4703DBAE8A35441BF2AF4C9A769514165202C95F8A35441295C8FC2A769514152B81EA5FEA35441382317C1A76951412790170A00A45441E75422BEA769514126B6C98602A454411016F9BAA7695141B7D3992F05A454417A85C4B1A76951414FDB29EE0CA45441FB3F7BACA76951410578A96011A4544194C0B4A8A7695141FA2AC58D14A454413D198DA0A769514161B4A7681BA45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000010C6F37CB36951418572C87B34A45441F6285C2FB36951417B14AEF71CA4544133333363B2695141AE47E16AE8A35441CDCCCCDCA7695141A4703DBAE8A35441BF2AF4C9A769514165202C95F8A35441295C8FC2A769514152B81EA5FEA354413D2317C1A76951412A90170A00A45441EA5422BEA769514122B6C98602A454410C16F9BAA7695141BCD3992F05A45441C8921387A7695141A268C89630A45441869DF57AA7695141160106AC3AA45441713D0A77A7695141AE47E12A3EA45441713D0AB7B36951410AD7A3E03FA4544110C6F37CB36951418572C87B34A45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899175 - 231143
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -65  </desc>
+<a>
+0106000000010000000103000000010000002300000048087C8CA7695141C77121C830A45441B81E858BB369514185EB519834A45441F6285C2FB36951417B14AEF71CA4544133333363B2695141AE47E16AE8A35441CDCCCCDCA7695141A4703DBAE8A35441BF2AF4C9A769514165202C95F8A35441295C8FC2A769514152B81EA5FEA35441382317C1A76951412790170A00A45441E75422BEA769514126B6C98602A454411016F9BAA7695141B7D3992F05A454417A85C4B1A76951414FDB29EE0CA45441FB3F7BACA76951410578A96011A4544194C0B4A8A7695141FA2AC58D14A454413D198DA0A769514161B4A7681BA45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000000BC6F37CB36951418072C87B34A45441F6285C2FB36951417B14AEF71CA4544133333363B2695141AE47E16AE8A35441CDCCCCDCA7695141A4703DBAE8A35441BF2AF4C9A769514165202C95F8A35441295C8FC2A769514152B81EA5FEA354413D2317C1A76951412A90170A00A45441EA5422BEA769514122B6C98602A454410C16F9BAA7695141BCD3992F05A45441C4921387A7695141A568C89630A45441869DF57AA7695141160106AC3AA45441713D0A77A7695141AE47E12A3EA45441713D0AB7B36951410AD7A3E03FA454410BC6F37CB36951418072C87B34A45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899175 - 332895
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -65  </desc>
+<a>
+0106000000010000000103000000010000002300000048087C8CA7695141C77121C830A45441B81E858BB369514185EB519834A45441F6285C2FB36951417B14AEF71CA4544133333363B2695141AE47E16AE8A35441CDCCCCDCA7695141A4703DBAE8A35441BF2AF4C9A769514165202C95F8A35441295C8FC2A769514152B81EA5FEA35441382317C1A76951412790170A00A45441E75422BEA769514126B6C98602A454411016F9BAA7695141B7D3992F05A454417A85C4B1A76951414FDB29EE0CA45441FB3F7BACA76951410578A96011A4544194C0B4A8A7695141FA2AC58D14A454413D198DA0A769514161B4A7681BA45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000000BC6F37CB36951418072C87B34A45441F6285C2FB36951417B14AEF71CA4544133333363B2695141AE47E16AE8A35441CDCCCCDCA7695141A4703DBAE8A35441BF2AF4C9A769514165202C95F8A35441295C8FC2A769514152B81EA5FEA354413D2317C1A76951412A90170A00A45441EA5422BEA769514122B6C98602A454410C16F9BAA7695141BCD3992F05A45441C4921387A7695141A568C89630A45441869DF57AA7695141160106AC3AA45441713D0A77A7695141AE47E12A3EA45441713D0AB7B36951410AD7A3E03FA454410BC6F37CB36951418072C87B34A45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423057 - 1285862
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000310000007B14AE678E0F5141EC51B8BE01F65441666666E68E0F51413D0AD7C301F65441CDCCCC9C9D0F5141CDCCCC4C06F65441666666069E0F514148E17A5406F6544114AE47919E0F51413D0AD7D305F654418FC2F5C89B0F51410000004002F6544152B81E959A0F5141000000F000F65441CDCCCCDC960F51417B14AE87FDF5544166666686940F51411F85EBA1FBF55441E17A145E930F5141C3F5289CFAF5544148E17A74910F5141C3F5287CF9F554410AD7A3108E0F51417B14AE57F7F55441333333338D0F51419A9999C9F6F55441713D0A178B0F51413D0AD7A3F5F55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000058E17AC4480F5141A4666606FDF55441A4703DCA470F5141713D0AF700F654415C8FC235460F514148E17AE404F65441F6285C7F460F51418FC2F50805F65441713D0A574E0F51413333330309F654410AD7A340510F5141000000600AF65441295C8FA2540F5141A4703DCA0BF654413D0AD7D3590F5141D7A370ED0CF65441E40C18245B0F514134BA45110DF65441FBD374E25E0F5141F40549690DF6544166666676600F5141AE47E14A0DF65441125CD191650F514108DD98D60CF65441AE47E1FA660F51411F85EBC10CF6544185EB5118690F514148E17AD40CF65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423057 - 3576640
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000310000007B14AE678E0F5141EC51B8BE01F65441666666E68E0F51413D0AD7C301F65441CDCCCC9C9D0F5141CDCCCC4C06F65441666666069E0F514148E17A5406F6544114AE47919E0F51413D0AD7D305F654418FC2F5C89B0F51410000004002F6544152B81E959A0F5141000000F000F65441CDCCCCDC960F51417B14AE87FDF5544166666686940F51411F85EBA1FBF55441E17A145E930F5141C3F5289CFAF5544148E17A74910F5141C3F5287CF9F554410AD7A3108E0F51417B14AE57F7F55441333333338D0F51419A9999C9F6F55441713D0A178B0F51413D0AD7A3F5F55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000058E17AC4480F5141A4666606FDF55441A4703DCA470F5141713D0AF700F654415C8FC235460F514148E17AE404F65441F6285C7F460F51418FC2F50805F65441713D0A574E0F51413333330309F654410AD7A340510F5141000000600AF65441295C8FA2540F5141A4703DCA0BF654413D0AD7D3590F5141D7A370ED0CF65441E40C18245B0F514134BA45110DF65441FBD374E25E0F5141F40549690DF6544166666676600F5141AE47E14A0DF65441125CD191650F514108DD98D60CF65441AE47E1FA660F51411F85EBC10CF6544185EB5118690F514148E17AD40CF65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423057 - 1283
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000310000007B14AE678E0F5141EC51B8BE01F65441666666E68E0F51413D0AD7C301F65441CDCCCC9C9D0F5141CDCCCC4C06F65441666666069E0F514148E17A5406F6544114AE47919E0F51413D0AD7D305F654418FC2F5C89B0F51410000004002F6544152B81E959A0F5141000000F000F65441CDCCCCDC960F51417B14AE87FDF5544166666686940F51411F85EBA1FBF55441E17A145E930F5141C3F5289CFAF5544148E17A74910F5141C3F5287CF9F554410AD7A3108E0F51417B14AE57F7F55441333333338D0F51419A9999C9F6F55441713D0A178B0F51413D0AD7A3F5F55441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000B81E859B890F51411F85EBB101F65441E17A14BE880F51418FC2F51800F65441333333B3820F514185EB5198FEF554417B14AE47820F514100000030FEF554417AA7FE237B0F5141D5ECECE9FBF554413A5ED955750F5141E50BD7E4FAF554417F77A3E9700F5141AF27F7EFF9F55441C5ECD60F6C0F51419E9A63E3F8F55441333333036A0F51411F85EB71F8F554416A7CADCD690F514134CD2275F9F554410AD7A3D06B0F51417B14AE97F9F554411F85EBE1700F514114AE47E1FAF5544148E17A74750F5141666666D6FBF554411F85EBF1780F51415C8FC295FCF55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423057 - 55274
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000001000000310000007B14AE678E0F5141EC51B8BE01F65441666666E68E0F51413D0AD7C301F65441CDCCCC9C9D0F5141CDCCCC4C06F65441666666069E0F514148E17A5406F6544114AE47919E0F51413D0AD7D305F654418FC2F5C89B0F51410000004002F6544152B81E959A0F5141000000F000F65441CDCCCCDC960F51417B14AE87FDF5544166666686940F51411F85EBA1FBF55441E17A145E930F5141C3F5289CFAF5544148E17A74910F5141C3F5287CF9F554410AD7A3108E0F51417B14AE57F7F55441333333338D0F51419A9999C9F6F55441713D0A178B0F51413D0AD7A3F5F55441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000B81E859B890F51411F85EBB101F65441E17A14BE880F51418FC2F51800F65441333333B3820F514185EB5198FEF554417B14AE47820F514100000030FEF554417AA7FE237B0F5141D5ECECE9FBF554413A5ED955750F5141E50BD7E4FAF554417F77A3E9700F5141AF27F7EFF9F55441C5ECD60F6C0F51419E9A63E3F8F55441333333036A0F51411F85EB71F8F554416A7CADCD690F514134CD2275F9F554410AD7A3D06B0F51417B14AE97F9F554411F85EBE1700F514114AE47E1FAF5544148E17A74750F5141666666D6FBF554411F85EBF1780F51415C8FC295FCF55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423088 - 194582
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -450  </desc>
+<a>
+010600000001000000010300000001000000100000008FC2F538D90F5141D7A3700D94F6544152B81EE5D60F5141CDCCCC0C98F65441295C8FD2D40F51418FC2F5189CF65441D7A370FDD30F514148E17A149EF65441EC51B82ED30F5141713D0AB7A0F65441C3F528DCD20F51411F85EB31A2F6544133333383D50F5141333333C3A3F6544185EB51D8D60F5141333333C3A0F65441EC51B85ED80F514148E17A249DF65441000000C0D90F5141C3F5280C9AF65441C3F528BCDB0F5141295C8FE297F6544114AE4771E00F5141D7A3703D91F65441AE47E11AE10F51419A9999E98FF654413D0AD7F3DD0F5141B81E852B8DF65441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000052B81EE5D60F5141CDCCCC0C98F654410D99D055D50F5141CC0AA0189BF65441F26C9DE5D30F51416A9439629EF654413D057993D30F5141FD95446E9FF654412893658CD30F5141769E5B859FF65441DFD6F58BD30F5141C33AC8869FF654413ABB87E0D20F5141FCA88034A2F6544176A54646D30F51418422A170A2F654415C765D94D30F514105BFC69EA2F6544156D994F3D30F5141916D0BD7A2F65441D52F0251D50F5141B141B3FCA0F654418669559FD60F514138E2A1BC9EF654413C753ADED70F5141EBA041BE9BF65441F03A4422D90F51417A2B2F5A99F65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423088 - 365354
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -450  </desc>
+<a>
+010600000001000000010300000001000000100000008FC2F538D90F5141D7A3700D94F6544152B81EE5D60F5141CDCCCC0C98F65441295C8FD2D40F51418FC2F5189CF65441D7A370FDD30F514148E17A149EF65441EC51B82ED30F5141713D0AB7A0F65441C3F528DCD20F51411F85EB31A2F6544133333383D50F5141333333C3A3F6544185EB51D8D60F5141333333C3A0F65441EC51B85ED80F514148E17A249DF65441000000C0D90F5141C3F5280C9AF65441C3F528BCDB0F5141295C8FE297F6544114AE4771E00F5141D7A3703D91F65441AE47E11AE10F51419A9999E98FF654413D0AD7F3DD0F5141B81E852B8DF65441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000052B81EE5D60F5141CDCCCC0C98F654410D99D055D50F5141CC0AA0189BF65441F26C9DE5D30F51416A9439629EF654413D057993D30F5141FD95446E9FF654412893658CD30F5141769E5B859FF65441DFD6F58BD30F5141C33AC8869FF654413ABB87E0D20F5141FCA88034A2F6544176A54646D30F51418422A170A2F654415C765D94D30F514105BFC69EA2F6544156D994F3D30F5141916D0BD7A2F65441D52F0251D50F5141B141B3FCA0F654418669559FD60F514138E2A1BC9EF654413C753ADED70F5141EBA041BE9BF65441F03A4422D90F51417A2B2F5A99F65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>424914 - 3339665
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -304  </desc>
+<a>
+01060000000200000001030000000100000020000000F6285C2FD1125141D7A3701DED395441F6285CDFCE125141295C8FC2EF3954415C8FC2C5CC12514114AE47F1F1395441A4703DEACA1251419A9999C9F3395441D7A3709DC8125141CDCCCCECF53954410AD7A3B0C61251419A9999D9F7395441B81E85EBC5125141295C8F32F9395441333333D3C512514133333373FA3954417B14AEF7C6125141B81E85BBFB395441F6285C0FCA125141A4703D4AFD395441C3F528ECCE12514152B81EB5003A5441333333C3D0125141F6285C0F023A5441A4703DBAD212514166666626FF395441B81E853BD5125141666666D6FB395441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006500000032E9A81E22135141EB9E8D53893954415871E06B24135141768DAA7B843954415BCF197524135141F622806A8439544177F72392251351412D07C01082395441FC16DFD5261351411759535C7F3954415BCE8AA92A135141542DEB2C7739544182F6AF652B13514151DC53B175395441C8980E773013514105CD1D6F6A39544191F3DEF733135141500314F6613954417DE6B2B337135141EF2229F0583954416A14CF843E135141793AB0F0443954416C052D933E1351414D2658EB44395441EAD6BB983E1351419EA041DB44395441A4703D7A3C135141C3F528BC45395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>425658 - 1708273
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -909  </desc>
+<a>
+01060000000100000001030000000100000006000000CDCCCC6CF4835041D7A3707DC81E5541A4703D9AF3835041AE47E1BACA1E5541713D0A97108450411F85EBB1CF1E5541295C8F0212845041B81E855BC61E5541F6285C5FF983504148E17AE4BA1E5541CDCCCC6CF4835041D7A3707DC81E5541
+</a>
+
+<b>
+01060000000100000001030000000100000005000000057E0ED7108450416B38F70CCE1E5541295C8F0212845041B81E855BC61E5541F6285C5FF983504148E17AE4BA1E5541E7797A61F48350418BF2459CC81E5541057E0ED7108450416B38F70CCE1E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>425658 - 3273491
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -909  </desc>
+<a>
+01060000000100000001030000000100000006000000CDCCCC6CF4835041D7A3707DC81E5541A4703D9AF3835041AE47E1BACA1E5541713D0A97108450411F85EBB1CF1E5541295C8F0212845041B81E855BC61E5541F6285C5FF983504148E17AE4BA1E5541CDCCCC6CF4835041D7A3707DC81E5541
+</a>
+
+<b>
+01060000000100000001030000000100000005000000057E0ED7108450416B38F70CCE1E5541295C8F0212845041B81E855BC61E5541F6285C5FF983504148E17AE4BA1E5541E7797A61F48350418BF2459CC81E5541057E0ED7108450416B38F70CCE1E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429198 - 52908
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000090000000A4703D2A02705141713D0A772BB15441295C8F820770514152B81EA529B15441B81E85EB0B705141D7A370AD27B15441B81E858B13705141C3F5288C24B154418FC2F5681D7051410AD7A3E020B15441C3F528FC1F70514152B81E851FB154410AD7A3D0287051419A9999D91DB154411F85EB11327051417B14AE171CB154413D0AD7F3347051417B14AE971BB1544133333353377051413D0AD7D31AB15441E17A143E3E7051411F85EB311AB1544100000080457051411F85EB7119B154415C8FC2C54A7051418FC2F50819B15441000000C0547051411F85EB7119B15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004E0000007ABA069C50705141EFF0E728E4B05441ADA175C84F7051411A1538F9DDB054415CB7F94F4F705141EDAE4769DCB054410112E49D4E705141083F6978DBB054413B706D514E7051412C82FD10DBB0544154F4CFBA4D70514148407B6CDAB054412CCB63AD4B7051412CC60E7FD9B05441EAC7AC2C49705141ADB1F887DAB054419244C83E46705141702B77D5DBB054411F85EBB14570514148E17A14DCB0544114AE47E13F705141713D0A57DEB05441D64D44933C705141F96E6E59DCB054414BE09E4E3B705141F53BE095DBB054413490D7393970514141E6F254DAB05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429418 - 3048935
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000800000001F85EBB12762514148E17A7436C154415C8FC2A5256251410AD7A3D039C154410AD7A32026625141E17A149E3EC154417B14AE07256251415C8FC2D53FC154411F85EBE122625141AE47E13A40C154418FC2F5D8216251410AD7A33043C1544148E17A54196251410AD7A3C04AC1544152B81E05176251410AD7A3F04BC15441E17A14CE16625141EC51B80E4DC15441AE47E16A15625141D7A3709D4EC15441B81E85AB126251417B14AE674EC15441A4703DCA0C625141295C8F1250C15441295C8F420C6251417B14AE2751C15441EC51B81E0A62514152B81EA552C15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000002F870ED34F625141AF975DEC5FC154419D9F39394F625141A09963285DC15441BCD3BA5F4E625141DC206A3F59C154416F8015964D6251415B47629F55C15441C7F9505A4D6251410CF5508C54C15441582ED94A4C62514195C6F1AA4FC15441996164D24B625141BA2792804DC15441DC04A14D4B625141B5C28E1D4BC15441B51D130F4B6251412747AAFD49C1544131B87B1342625141769562A84BC15441F3D6CDC23A625141973E696C4DC15441FD15575D38625141E3CFFF8E4EC15441890D90133462514190E6748350C15441232BE7152E6251412FD7CB2B54C15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429418 - 3302365
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000800000001F85EBB12762514148E17A7436C154415C8FC2A5256251410AD7A3D039C154410AD7A32026625141E17A149E3EC154417B14AE07256251415C8FC2D53FC154411F85EBE122625141AE47E13A40C154418FC2F5D8216251410AD7A33043C1544148E17A54196251410AD7A3C04AC1544152B81E05176251410AD7A3F04BC15441E17A14CE16625141EC51B80E4DC15441AE47E16A15625141D7A3709D4EC15441B81E85AB126251417B14AE674EC15441A4703DCA0C625141295C8F1250C15441295C8F420C6251417B14AE2751C15441EC51B81E0A62514152B81EA552C15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000002F870ED34F625141AF975DEC5FC154419D9F39394F625141A09963285DC15441BCD3BA5F4E625141DC206A3F59C154416F8015964D6251415B47629F55C15441C7F9505A4D6251410CF5508C54C15441582ED94A4C62514195C6F1AA4FC15441996164D24B625141BA2792804DC15441DC04A14D4B625141B5C28E1D4BC15441B51D130F4B6251412747AAFD49C1544131B87B1342625141769562A84BC15441F3D6CDC23A625141973E696C4DC15441FD15575D38625141E3CFFF8E4EC15441890D90133462514190E6748350C15441232BE7152E6251412FD7CB2B54C15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>431999 - 208318
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000024000000C3F5281CD8285141E17A14BEAB855441B81E854BDB2851417B14AE37A98554419A999989DD285141D7A370BDA6855441D7A3706DDF285141000000E0A4855441C3F528FCE0285141B81E85ABA3855441000000A0E228514148E17AC4A1855441E17A14AEE428514185EB51089D8554419A999909E52851411F85EB3198855441C3F5285CE22851419A999979948554410AD7A380DE285141D7A370DD8F85544133333303DE28514148E17A748E855441CDCCCCCCDC2851411F85EBD188855441B81E85FBD7285141EC51B82E87855441F6285CAFD7285141AE47E14A8D855441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000270000009A999909E52851411F85EB319885544107075C8DE22851411CA1F4BD94855441A5E5195CE228514104924D7A9485544173FFF6E1DE2851414B1CC05190855441949C57D9DE285141961E7247908554413DDF0793DD2851410C9D2E6B8C85544151E5288ADC28514102BF44BB888554410F6863F9D72851411915805A878554417BD164B4D72851415461E4CC8B855441818F097ED7285141A7A8C24D8F855441D8F82732D72851413EFEB9A2918554412391CD4BD6285141066FDF0199855441132F89D9D7285141D4DBF8F7A18554412854C5CDD728514111148742A3855441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>432389 - 93370
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -36  </desc>
+<a>
+01060000000100000001030000000200000056000000333333A3A14C51411F85EBD185435441D7A3709DA24C51419A9999A9864354413D0AD723A24C51419A9999F987435441666666F6A04C5141C3F528CC8C4354419A999919A04C5141A4703D3A934354413D0AD7439F4C514185EB516899435441C3F5288C9D4C5141333333B3A243544152B81ED5AE4C514166666606A84354415C8FC275B04C5141EC51B81E9B4354413D0AD733B24C5141B81E854B8D4354413D0AD7D3B94C514152B81EC58E4354417B14AE57C04C514152B81EA58F43544114AE47F1C34C5141C3F5286C9043544185EB5158C74C5141000000B091435441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000550000009A999949D04C514148E17A1494435441D7A3709DCE4C5141D7A3704D9343544114AE4771CB4C5141333333C391435441EC51B8FEC94C5141000000F090435441D7A3704DC74C514185EB517890435441AE47E1DAC54C5141CDCCCC5C8F435441E17A14AEC44C5141713D0AA78E435441713D0A47C24C51419A9999E98D43544114AE47A1BF4C51419A9999698D43544152B81E55B94C5141713D0AE78C4354413D0AD7E3B84C5141EC51B86E8C435441A4703D1AB84C514185EB51388C4354417B14AEB7B64C5141EC51B86E8C43544133333373B24C5141AE47E12A8C435441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>432389 - 342148
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -36  </desc>
+<a>
+01060000000100000001030000000200000056000000333333A3A14C51411F85EBD185435441D7A3709DA24C51419A9999A9864354413D0AD723A24C51419A9999F987435441666666F6A04C5141C3F528CC8C4354419A999919A04C5141A4703D3A934354413D0AD7439F4C514185EB516899435441C3F5288C9D4C5141333333B3A243544152B81ED5AE4C514166666606A84354415C8FC275B04C5141EC51B81E9B4354413D0AD733B24C5141B81E854B8D4354413D0AD7D3B94C514152B81EC58E4354417B14AE57C04C514152B81EA58F43544114AE47F1C34C5141C3F5286C9043544185EB5158C74C5141000000B091435441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000550000009A999949D04C514148E17A1494435441D7A3709DCE4C5141D7A3704D9343544114AE4771CB4C5141333333C391435441EC51B8FEC94C5141000000F090435441D7A3704DC74C514185EB517890435441AE47E1DAC54C5141CDCCCC5C8F435441E17A14AEC44C5141713D0AA78E435441713D0A47C24C51419A9999E98D43544114AE47A1BF4C51419A9999698D43544152B81E55B94C5141713D0AE78C4354413D0AD7E3B84C5141EC51B86E8C435441A4703D1AB84C514185EB51388C4354417B14AEB7B64C5141EC51B86E8C43544133333373B24C5141AE47E12A8C435441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>944505 - 400476
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000B00000001030000000100000015000000295C8F12E07951410AD7A3C0A392544100000080D87951418FC2F588A6925441AE47E1CACC7951410AD7A340A892544114AE4731C579514185EB5108A9925441E17A14AEBF795141EC51B8EEA7925441295C8FE2C37951419A999919AC925441C3F528ACCB795141713D0AC7AA9254413D0AD783D6795141B81E850BAA925441D7A3700DE0795141666666C6A89254410AD7A3E0EB79514114AE4711A4925441000000B0F3795141000000F09F92544166666686FB795141F6285CCF9A925441B81E85DB737A5141A4703DFA42925441CDCCCC9C757A51410AD7A3B041925441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000C6A012B97C7A5141B87627B5E3925441666666467C7A5141295C8FD2E5925441EC51B89E7B7A5141D7A3707DE8925441CDCCCCFC7A7A5141713D0A37EB925441A4703D3A797A51417B14AE87F19254417B14AEC7767A51415C8FC285F7925441B81E853B747A5141AE47E1DAFC9254411F85EBA1747A5141CDCCCCBCFD9254413D0AD723757A514185EB5178FE9254415C8FC2E5757A5141F6285C0FFF92544185EB51C8767A514133333373FF925441713D0A97777A5141295C8F92FF92544185EB5128787A514166666666FF925441295C8FA2787A5141E17A14DEFE925441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>944505 - 400502
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000B00000001030000000100000015000000295C8F12E07951410AD7A3C0A392544100000080D87951418FC2F588A6925441AE47E1CACC7951410AD7A340A892544114AE4731C579514185EB5108A9925441E17A14AEBF795141EC51B8EEA7925441295C8FE2C37951419A999919AC925441C3F528ACCB795141713D0AC7AA9254413D0AD783D6795141B81E850BAA925441D7A3700DE0795141666666C6A89254410AD7A3E0EB79514114AE4711A4925441000000B0F3795141000000F09F92544166666686FB795141F6285CCF9A925441B81E85DB737A5141A4703DFA42925441CDCCCC9C757A51410AD7A3B041925441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000BC3C683E977A51418459F6C6599254415C8FC255977A5141D7A3708D56925441B81E85EB967A51411F85EBF15392544166666606967A5141AE47E11A51925441B81E85DB957A51419A999929519254415C8FC275947A51411F85EBA151925441D7A3709D957A5141CDCCCCEC54925441295C8FC2957A51419A9999B9589254419A9999B9927A514185EB51786D925441C3F5281C8E7A514152B81EB587925441EC51B8AE8F7A51418FC2F5F88792544185EB51D8917A51418FC2F5A87B925441000000F0937A51415C8FC2556F925441EC51B8EE957A5141EC51B8FE62925441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>194765 - 237297
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -14  </desc>
+<a>
+0106000000010000000103000000010000003300000081B19569EE1751414D5E4FFDADF85441E053F59DED17514154CF852EACF854410CF75A15ED17514133DE3730ABF854416E43C453EB17514171233FF7A6F8544141EED936E91751419022D9A2A1F85441B7BDB411E717514181759DC19BF85441F073E079E61751417A75ABFF99F85441452ECF6BE517514159BC81FC95F85441A53BEDCBE4175141174B47AA92F8544184110578E517514178DA248588F85441934298FAE51751410AFD2D0184F85441523E0C73E6175141F76A2B517DF85441299CB569E6175141C58EEFFF78F854416AFE2B87E91751411367EC337AF85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000A4703D4A08185141D7A3703D96F85441713D0A7705185141CDCCCC5C92F85441666666C60318514114AE47D18FF8544152B81EF501185141000000B08CF8544133333373FF1751413D0AD7F387F85441666666F6F9175141713D0AE77CF85441B81E850BE7175141F6285C2F6DF8544100000060E61751419A99998971F85441713D0AB7E71751419A99993976F85441F6285C8FEA1751419A9999E97AF8544152B81E35E61751417B14AEE778F85441AE47E18AE61751413D0AD7037FF85441EC51B85EE517514152B81E6589F854418FC2F5C8E4175141A4703DDA92F85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>910123 - 1273883
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000000C0000008FC2F5F8387151411F85EBF189645441CDCCCCEC23715141C3F528BCB06454417B14AE271771514114AE47D1C6645441B81E85DB15715141F6285C0FC96454418FC2F5D82171514185EB5178D0645441B81E85CB34715141C3F5285CAE645441C3F528BC4771514148E17A448C645441295C8F6244715141666666E68A645441A4703D2A427151417B14AE078A6454411F85EB213E715141EC51B86E88645441A4703DDA3A7151415C8FC215876454418FC2F5F8387151411F85EBF189645441
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000000C16234139715141101B3855A6645441B5A635A14771514169D1FD748C645441D683C8693171514141B8A60484645441C470E95A24715141A1B080CB7E645441FCD6189D1F715141E2D9B9C77D6454411D361C890E71514103164E409B64544144E4DE92FE7051419307FF56BA645441328A01FE2171514129DDA035D0645441219CD7D427715141D37391B2C5645441BFF61E0A2A71514185A5EEB8C1645441E6D7EC8A307151414D5622D0B56454410C16234139715141101B3855A6645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>910123 - 4026201
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000000C0000008FC2F5F8387151411F85EBF189645441CDCCCCEC23715141C3F528BCB06454417B14AE271771514114AE47D1C6645441B81E85DB15715141F6285C0FC96454418FC2F5D82171514185EB5178D0645441B81E85CB34715141C3F5285CAE645441C3F528BC4771514148E17A448C645441295C8F6244715141666666E68A645441A4703D2A427151417B14AE078A6454411F85EB213E715141EC51B86E88645441A4703DDA3A7151415C8FC215876454418FC2F5F8387151411F85EBF189645441
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000000C16234139715141101B3855A6645441B5A635A14771514169D1FD748C645441D683C8693171514141B8A60484645441C470E95A24715141A1B080CB7E645441FCD6189D1F715141E2D9B9C77D6454411D361C890E71514103164E409B64544144E4DE92FE7051419307FF56BA645441328A01FE2171514129DDA035D0645441219CD7D427715141D37391B2C5645441BFF61E0A2A71514185A5EEB8C1645441E6D7EC8A307151414D5622D0B56454410C16234139715141101B3855A6645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>434909 - 59021
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -63  </desc>
+<a>
+010600000001000000010300000001000000110000006666667676B5504166666676E9E454418FC2F59872B550411F85EB51E6E45441D7A3703D6CB55041A4703D3AE1E45441666666666AB55041CDCCCCBCDBE45441E17A148E66B55041EC51B81EDBE454419A99991966B55041D7A370DDD7E45441C3F528AC64B55041A4703D9AC7E454413D0AD70364B5504114AE47F1B5E45441B81E85FB62B55041A4703D0AB5E4544114AE47C154B550417B14AE57B6E45441333333434EB55041CDCCCC1CB7E454417B14AE4747B5504114AE47F1B7E454410AD7A31049B55041B81E85EBF6E454416666662650B55041CDCCCCACF9E45441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000C3F528AC64B55041A4703D9AC7E45441F9437EA364B550411CD374B1C6E45441B81E85FB62B55041A4703D0AB5E454417B14AE4747B5504114AE47F1B7E454410AD7A31049B55041B81E85EBF6E454416666662650B55041CDCCCCACF9E4544133D094C658B55041B5A06207FDE45441F3233C3F5EB550417174D6C9FEE45441EFAC2F2A62B550411BA2271800E554416820E08165B550415CEEE3E300E554416666667676B5504166666676E9E45441D7A3703D6CB55041A4703D3AE1E45441666666666AB55041CDCCCCBCDBE45441E17A148E66B55041EC51B81EDBE45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>436963 - 3013887
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000002600000048E17A9478115141000000D002F854417B14AE577A115141F6285CEF00F85441333333537B115141AE47E18AFFF75441666666767C115141F6285CDFFDF75441D7A370FD7C1151411F85EB11FDF754419A9999C97D11514185EB5188FAF754411F85EB117E1151415C8FC215F9F75441A4703D3A7E1151418FC2F5B8F7F75441B81E851B7E1151419A999999F5F75441E17A14DE7D115141333333A3F3F754418FC2F5987D115141EC51B8CEF2F75441EC51B8CE7C115141E17A145EF1F754411F85EB417B115141295C8F82EFF7544133333383791151411F85EBD1EDF75441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000001F85EB6170115141B81E85FBE7F754411F85EB716B115141CDCCCC0CE5F7544170E4FAF969115141CFB900D8E7F75441C27FA09E67115141667AC790EBF75441B165529964115141EEBA61A0EFF75441D1496F9061115141BBC5CCB4F3F754415B1920595F115141372C78AFF6F75441DE8C57AB5C1151414094DFD2FAF754415C5132C15A115141C298432BFEF75441BA90D9A759115141C284443A00F85441C29645E0581151411D481BB001F8544142DB3DFC59115141E75CED0E02F854412E3DFBC75B11514192E5FE0002F85441C7C1FE5B5D115141EB9056BB01F85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>436963 - 3292433
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000002600000048E17A9478115141000000D002F854417B14AE577A115141F6285CEF00F85441333333537B115141AE47E18AFFF75441666666767C115141F6285CDFFDF75441D7A370FD7C1151411F85EB11FDF754419A9999C97D11514185EB5188FAF754411F85EB117E1151415C8FC215F9F75441A4703D3A7E1151418FC2F5B8F7F75441B81E851B7E1151419A999999F5F75441E17A14DE7D115141333333A3F3F754418FC2F5987D115141EC51B8CEF2F75441EC51B8CE7C115141E17A145EF1F754411F85EB417B115141295C8F82EFF7544133333383791151411F85EBD1EDF75441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000001F85EB6170115141B81E85FBE7F754411F85EB716B115141CDCCCC0CE5F7544170E4FAF969115141CFB900D8E7F75441C27FA09E67115141667AC790EBF75441B165529964115141EEBA61A0EFF75441D1496F9061115141BBC5CCB4F3F754415B1920595F115141372C78AFF6F75441DE8C57AB5C1151414094DFD2FAF754415C5132C15A115141C298432BFEF75441BA90D9A759115141C284443A00F85441C29645E0581151411D481BB001F8544142DB3DFC59115141E75CED0E02F854412E3DFBC75B11514192E5FE0002F85441C7C1FE5B5D115141EB9056BB01F85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437037 - 194860
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+010600000001000000010300000001000000730000007B14AEB79E0F5141F6285C5F96F85441EC51B87EA10F514148E17AB494F854411F85EB41A20F51411F85EB6193F85441B81E85CBA30F51413D0AD79393F85441F6285CEFA80F5141AE47E1DA98F854411F85EBA1AD0F514152B81E1594F8544114AE47D1B20F5141713D0A678DF8544100000000B50F514152B81E458AF8544185EB5178B80F514148E17A8485F85441295C8F12BB0F51411F85EB3182F85441000000A0BF0F5141666666667CF85441C3F5283CC30F5141D7A3700D78F854419A999979C60F51410AD7A39074F854415C8FC235C20F51413D0AD7036BF85441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000DE016339710F5141EDBC2A949BF85441002CFB21710F514136C7EFA39BF8544167F5310A700F5141D471C2499CF854418E281000700F51418FF7D34F9CF8544152B81EE5740F5141F6285C4F9CF854418D1D4B30760F5141B4101AC09BF854418517C16A770F5141AC6E795B9BF854416739F98E780F51415CD4F6FD9AF85441643C41A47B0F5141AA63EB9A99F854413FDF15E77D0F514139C13A6898F8544144C6103B800F51416455EC3097F85441D5ED805C820F5141C5D5F03E96F854412A7D95FD820F5141DC2559FB95F8544183920EDD840F5141F7B4E7B295F85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437037 - 302266
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+010600000001000000010300000001000000730000007B14AEB79E0F5141F6285C5F96F85441EC51B87EA10F514148E17AB494F854411F85EB41A20F51411F85EB6193F85441B81E85CBA30F51413D0AD79393F85441F6285CEFA80F5141AE47E1DA98F854411F85EBA1AD0F514152B81E1594F8544114AE47D1B20F5141713D0A678DF8544100000000B50F514152B81E458AF8544185EB5178B80F514148E17A8485F85441295C8F12BB0F51411F85EB3182F85441000000A0BF0F5141666666667CF85441C3F5283CC30F5141D7A3700D78F854419A999979C60F51410AD7A39074F854415C8FC235C20F51413D0AD7036BF85441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000DE016339710F5141EDBC2A949BF85441002CFB21710F514136C7EFA39BF8544167F5310A700F5141D471C2499CF854418E281000700F51418FF7D34F9CF8544152B81EE5740F5141F6285C4F9CF854418D1D4B30760F5141B4101AC09BF854418517C16A770F5141AC6E795B9BF854416739F98E780F51415CD4F6FD9AF85441643C41A47B0F5141AA63EB9A99F854413FDF15E77D0F514139C13A6898F8544144C6103B800F51416455EC3097F85441D5ED805C820F5141C5D5F03E96F854412A7D95FD820F5141DC2559FB95F8544183920EDD840F5141F7B4E7B295F85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437258 - 52695
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000004A000000E17A14DEC75D5141B81E855BE0D3544185EB5148C75D5141EC51B83EE0D3544148E17A84C85D5141666666D6DDD3544166666696C95D514185EB5158DBD354418FC2F5A8CA5D5141CDCCCCCCD7D35441295C8F22CB5D5141D7A3708DD4D354417B14AE77CB5D51417B14AEB7D1D35441B81E859BCB5D5141C3F5284CCFD35441295C8F92CB5D514148E17AA4CDD3544152B81E75C65D51411F85EBB1CED35441295C8F62BF5D5141F6285C1FD0D354419A999969BF5D5141666666C6D1D354413D0AD703BF5D51415C8FC205D5D3544148E17AB4BC5D5141E17A14FEDBD35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007A00000014AE4761DD5D51413D0AD7330AD45441D546788DE45D5141ACCD6EDDFFD3544163FEC285E65D5141CF6D0AD2FCD354418F6FDFBBE65D514109128B79FCD3544100000050E95D51411F85EB41F8D354415B8A3354D85D51419E52CFA5E9D354412CD0B63CD85D514162FD9A91E9D354417E4F6969D75D514135EA5456E9D35441654F6D5AD75D514140929852E9D35441717B1A4DD75D5141F439464FE9D3544197AA9AF4D65D5141CB68D369E9D354413D0AD7A3D65D514133333383E9D35441A0A949A2D65D5141D4B78582E9D3544185EB51F8D55D514185EB5138E9D35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437258 - 102907
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000004A000000E17A14DEC75D5141B81E855BE0D3544185EB5148C75D5141EC51B83EE0D3544148E17A84C85D5141666666D6DDD3544166666696C95D514185EB5158DBD354418FC2F5A8CA5D5141CDCCCCCCD7D35441295C8F22CB5D5141D7A3708DD4D354417B14AE77CB5D51417B14AEB7D1D35441B81E859BCB5D5141C3F5284CCFD35441295C8F92CB5D514148E17AA4CDD3544152B81E75C65D51411F85EBB1CED35441295C8F62BF5D5141F6285C1FD0D354419A999969BF5D5141666666C6D1D354413D0AD703BF5D51415C8FC205D5D3544148E17AB4BC5D5141E17A14FEDBD35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007A00000014AE4761DD5D51413D0AD7330AD45441D946788DE45D5141A9CD6EDDFFD3544162FEC285E65D5141CD6D0AD2FCD35441926FDFBBE65D51410D128B79FCD3544100000050E95D51411F85EB41F8D354415C8A3354D85D51419952CFA5E9D354412BD0B63CD85D514167FD9A91E9D354417A4F6969D75D514132EA5456E9D35441644F6D5AD75D51413D929852E9D354416C7B1A4DD75D5141F639464FE9D354419BAA9AF4D65D5141C868D369E9D354413D0AD7A3D65D514133333383E9D35441A2A949A2D65D5141D0B78582E9D3544185EB51F8D55D514185EB5138E9D35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437258 - 304394
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000004A000000E17A14DEC75D5141B81E855BE0D3544185EB5148C75D5141EC51B83EE0D3544148E17A84C85D5141666666D6DDD3544166666696C95D514185EB5158DBD354418FC2F5A8CA5D5141CDCCCCCCD7D35441295C8F22CB5D5141D7A3708DD4D354417B14AE77CB5D51417B14AEB7D1D35441B81E859BCB5D5141C3F5284CCFD35441295C8F92CB5D514148E17AA4CDD3544152B81E75C65D51411F85EBB1CED35441295C8F62BF5D5141F6285C1FD0D354419A999969BF5D5141666666C6D1D354413D0AD703BF5D51415C8FC205D5D3544148E17AB4BC5D5141E17A14FEDBD35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007A00000014AE4761DD5D51413D0AD7330AD45441D946788DE45D5141A9CD6EDDFFD3544162FEC285E65D5141CD6D0AD2FCD35441926FDFBBE65D51410D128B79FCD3544100000050E95D51411F85EB41F8D354415C8A3354D85D51419952CFA5E9D354412BD0B63CD85D514167FD9A91E9D354417A4F6969D75D514132EA5456E9D35441644F6D5AD75D51413D929852E9D354416C7B1A4DD75D5141F639464FE9D354419BAA9AF4D65D5141C868D369E9D354413D0AD7A3D65D514133333383E9D35441A2A949A2D65D5141D0B78582E9D3544185EB51F8D55D514185EB5138E9D35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>440670 - 1472685
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000100000001030000000100000011000000E17A145E03FE50411F85EB71451D5541D7A3702D05FE50410AD7A3D04B1D55413333333307FE504152B81E85541D5541CDCCCCEC07FE5041C3F5285C5C1D5541A4703DFA07FE504152B81E25621D55418FC2F5B80FFE50418FC2F588611D55411F85EB4110FE504148E17AF4681D55419A9999A917FE50413D0AD753671D554152B81E8517FE504133333313611D5541713D0A8717FE504133333363521D5541B81E85EB16FE5041CDCCCC7C4C1D55410AD7A39015FE5041713D0A37461D55410000009013FE5041EC51B8BE401D5541AE47E1AA10FE504114AE4731411D5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000009A9999A917FE50413D0AD753671D5541E433F68217FE5041CF3C82FC631D55417D1E518717FE50419AB19773611D554152B81E8517FE504133333313611D55411E170A8717FE5041FB5F5864521D5541B5AFDE8617FE5041B3358C61521D5541F3EE573517FE5041D4D4C4494F1D554179A941A916FE5041F4620E4A4B1D5541D0BEA04E16FE504154D585A6491D55419249051015FE5041EE4CEA3C451D5541D1D6E39013FE50411034F0D0401D5541CC11449613FE50411BF9D5CF401D55410000009013FE5041EC51B8BE401D5541AE47E1AA10FE504114AE4731411D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>440670 - 3276568
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+01060000000100000001030000000100000011000000E17A145E03FE50411F85EB71451D5541D7A3702D05FE50410AD7A3D04B1D55413333333307FE504152B81E85541D5541CDCCCCEC07FE5041C3F5285C5C1D5541A4703DFA07FE504152B81E25621D55418FC2F5B80FFE50418FC2F588611D55411F85EB4110FE504148E17AF4681D55419A9999A917FE50413D0AD753671D554152B81E8517FE504133333313611D5541713D0A8717FE504133333363521D5541B81E85EB16FE5041CDCCCC7C4C1D55410AD7A39015FE5041713D0A37461D55410000009013FE5041EC51B8BE401D5541AE47E1AA10FE504114AE4731411D5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000009A9999A917FE50413D0AD753671D5541E433F68217FE5041CF3C82FC631D55417D1E518717FE50419AB19773611D554152B81E8517FE504133333313611D55411E170A8717FE5041FB5F5864521D5541B5AFDE8617FE5041B3358C61521D5541F3EE573517FE5041D4D4C4494F1D554179A941A916FE5041F4620E4A4B1D5541D0BEA04E16FE504154D585A6491D55419249051015FE5041EE4CEA3C451D5541D1D6E39013FE50411034F0D0401D5541CC11449613FE50411BF9D5CF401D55410000009013FE5041EC51B8BE401D5541AE47E1AA10FE504114AE4731411D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463875 - 243760
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -63  </desc>
+<a>
+01060000000200000001030000000100000023000000000000B071F25041EC51B86E21AA5441713D0A576DF25041000000901BAA5441C3F5286C68F25041B81E850B16AA54417B14AEC760F25041EC51B8EE0FAA54410AD7A3405AF25041333333330CAA544114AE474154F25041EC51B8AE09AA5441F6285C5F51F250410000001009AA5441E17A147E51F250417B14AE270AAA54417B14AE974BF25041D7A370CD09AA54417B14AE874AF25041AE47E1FA09AA54416666669649F25041295C8F820AAA5441295C8FC248F2504114AE47B10CAA54419A99993946F25041AE47E10A0CAA5441E17A14DE44F25041C3F528FC0BAA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B040000C7AF1E0E93F2504146192CA4C3A954416FB483EB92F25041DE335248C2A9544165A65EE492F25041B874BF49C2A95441A718D00492F250419EAA2BA3C2A95441071E481E91F250419EAA2BA3C2A954417F833A0791F25041177ACC01C2A954417020DD0B91F25041E12C70F5C1A95441B81E850B91F2504148E17AF4C1A95441C75E6A5991F25041387EAF1FC1A954418E4EA7BF91F25041C11A86D8BFA954415BE6F84992F25041C1ED9E50BEA95441A899747292F250412E16260DBEA95441F6285C4F92F250410AD7A390BCA954417B14AE0792F2504148E17A64BBA95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463875 - 349559
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -63  </desc>
+<a>
+01060000000200000001030000000100000023000000000000B071F25041EC51B86E21AA5441713D0A576DF25041000000901BAA5441C3F5286C68F25041B81E850B16AA54417B14AEC760F25041EC51B8EE0FAA54410AD7A3405AF25041333333330CAA544114AE474154F25041EC51B8AE09AA5441F6285C5F51F250410000001009AA5441E17A147E51F250417B14AE270AAA54417B14AE974BF25041D7A370CD09AA54417B14AE874AF25041AE47E1FA09AA54416666669649F25041295C8F820AAA5441295C8FC248F2504114AE47B10CAA54419A99993946F25041AE47E10A0CAA5441E17A14DE44F25041C3F528FC0BAA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B040000C7AF1E0E93F2504146192CA4C3A954416FB483EB92F25041DE335248C2A9544165A65EE492F25041B874BF49C2A95441A718D00492F250419EAA2BA3C2A95441071E481E91F250419EAA2BA3C2A954417F833A0791F25041177ACC01C2A954417020DD0B91F25041E12C70F5C1A95441B81E850B91F2504148E17AF4C1A95441C75E6A5991F25041387EAF1FC1A954418E4EA7BF91F25041C11A86D8BFA954415BE6F84992F25041C1ED9E50BEA95441A899747292F250412E16260DBEA95441F6285C4F92F250410AD7A390BCA954417B14AE0792F2504148E17A64BBA95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>441941 - 246783
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -397  </desc>
+<a>
+0106000000010000000103000000010000000800000085EB511869F0504114AE4781662B55413D0AD77368F050410AD7A300632B55411F85EB3160F05041EC51B81E652B5541AE47E1CA61F050411F85EBF16E2B5541666666E662F05041E17A143E742B5541EC51B8AE65F05041EC51B87E732B5541713D0A3769F05041B81E855B722B554185EB511869F0504114AE4781662B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000017909ECF68F05041F56FF6F4642B5541FF8F9ECF68F05041756FF6F4642B554132D052D660F050415AD274DE682B5541AE47E1CA61F050411F85EBF16E2B55412F80F6E962F0504143731F3D742B5541C662180663F0504145B99035742B55412AA0147564F050417125FAD2732B5541F690B8D565F05041334B2972732B5541216A005568F050411E7E4EA4722B5541C5FA2DD768F05041B753637A722B5541713D0A3769F05041B81E855B722B55415582682A69F05041A413CD846D2B554128EB1C2169F0504180B1C4E5692B55418FC2F51869F050415C8FC2D5662B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>441941 - 282026
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -397  </desc>
+<a>
+0106000000010000000103000000010000000800000085EB511869F0504114AE4781662B55413D0AD77368F050410AD7A300632B55411F85EB3160F05041EC51B81E652B5541AE47E1CA61F050411F85EBF16E2B5541666666E662F05041E17A143E742B5541EC51B8AE65F05041EC51B87E732B5541713D0A3769F05041B81E855B722B554185EB511869F0504114AE4781662B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000017909ECF68F05041F56FF6F4642B5541FF8F9ECF68F05041756FF6F4642B554132D052D660F050415AD274DE682B5541AE47E1CA61F050411F85EBF16E2B55412F80F6E962F0504143731F3D742B5541C662180663F0504145B99035742B55412AA0147564F050417125FAD2732B5541F690B8D565F05041334B2972732B5541216A005568F050411E7E4EA4722B5541C5FA2DD768F05041B753637A722B5541713D0A3769F05041B81E855B722B55415582682A69F05041A413CD846D2B554128EB1C2169F0504180B1C4E5692B55418FC2F51869F050415C8FC2D5662B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442442 - 1467077
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000008000000EC51B81EE60751417B14AE6717265541EC51B81EE707514114AE47F11F26554133333363E707514114AE47D1282655410AD7A370F1075141EC51B84E2226554148E17A04EE07514114AE47E1182655413D0AD7B3E90751418FC2F508102655411F85EB01E6075141B81E853B0F265541EC51B81EE60751417B14AE6717265541
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000003765986BC907514157C15C1F2C2655413519DF58C9075141C608F42A2C265541A4703D7AC70751417B14AE3729265541C409AD78C707514101CBFE42292655419A9999E9C6075141E17A144E2D2655411F85EBF1C4075141295C8F823B2655419A999939D8075141EC51B81E47265541295C8F92EB075141295C8FF23A265541F6285C8FEC075141A4703D9A3926554185EB51F8E807514152B81EC533265541C3F5286CE707514185EB51482E26554133333363E707514114AE47D12826554151FDBD67ED075141CAEF9FEB2426554136BB857CF107514150F2D36F22265541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442442 - 3304144
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000008000000EC51B81EE60751417B14AE6717265541EC51B81EE707514114AE47F11F26554133333363E707514114AE47D1282655410AD7A370F1075141EC51B84E2226554148E17A04EE07514114AE47E1182655413D0AD7B3E90751418FC2F508102655411F85EB01E6075141B81E853B0F265541EC51B81EE60751417B14AE6717265541
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000003765986BC907514157C15C1F2C2655413519DF58C9075141C608F42A2C265541A4703D7AC70751417B14AE3729265541C409AD78C707514101CBFE42292655419A9999E9C6075141E17A144E2D2655411F85EBF1C4075141295C8F823B2655419A999939D8075141EC51B81E47265541295C8F92EB075141295C8FF23A265541F6285C8FEC075141A4703D9A3926554185EB51F8E807514152B81EC533265541C3F5286CE707514185EB51482E26554133333363E707514114AE47D12826554151FDBD67ED075141CAEF9FEB2426554136BB857CF107514150F2D36F22265541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>443058 - 2316132
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000015000000F6285C0FC8F55041C3F5285C002A5541C3F5282CCCF55041C3F528ACFD2955418FC2F598D3F5504185EB5128FA2955418FC2F5B8CCF55041B81E852BF0295541B81E85BBCAF55041295C8FB2F1295541E17A146EC4F550419A9999D9F529554133333353BFF550413D0AD7A3F9295541AE47E1BABAF55041F6285C6FFC2955419A999989B5F550411F85EB31002A5541A4703D5AADF55041AE47E18A092A55415C8FC275ABF550415C8FC2850D2A55413D0AD7D3A9F5504133333343122A554133333303AEF5504152B81EB5112A5541713D0A27B4F55041C3F5280C102A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000344358E3AAF550417B42629B0B2A5541FB885F36AEF5504172E5AD2C072A554155A78059B4F55041D3403135012A554100191950BBF55041C15C9814FC29554140A630A0C5F550416826EA0FF5295541D4A821F0CAF5504157BEE79BF129554133333303C7F55041A4703D4AEE295541F6285CFFC4F55041E17A14BEEC2955417B14AE67B8F550418FC2F5A8F0295541CDCCCC4CB4F550413D0AD763F2295541295C8FF2B0F550417B14AE37F3295541E17A143EACF550413D0AD7E3F4295541C3F5284CA9F5504166666686F62955419A999929A7F5504100000040F8295541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>443058 - 3301634
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000015000000F6285C0FC8F55041C3F5285C002A5541C3F5282CCCF55041C3F528ACFD2955418FC2F598D3F5504185EB5128FA2955418FC2F5B8CCF55041B81E852BF0295541B81E85BBCAF55041295C8FB2F1295541E17A146EC4F550419A9999D9F529554133333353BFF550413D0AD7A3F9295541AE47E1BABAF55041F6285C6FFC2955419A999989B5F550411F85EB31002A5541A4703D5AADF55041AE47E18A092A55415C8FC275ABF550415C8FC2850D2A55413D0AD7D3A9F5504133333343122A554133333303AEF5504152B81EB5112A5541713D0A27B4F55041C3F5280C102A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000344358E3AAF550417B42629B0B2A5541FB885F36AEF5504172E5AD2C072A554155A78059B4F55041D3403135012A554100191950BBF55041C15C9814FC29554140A630A0C5F550416826EA0FF5295541D4A821F0CAF5504157BEE79BF129554133333303C7F55041A4703D4AEE295541F6285CFFC4F55041E17A14BEEC2955417B14AE67B8F550418FC2F5A8F0295541CDCCCC4CB4F550413D0AD763F2295541295C8FF2B0F550417B14AE37F3295541E17A143EACF550413D0AD7E3F4295541C3F5284CA9F5504166666686F62955419A999929A7F5504100000040F8295541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>443058 - 9533
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000015000000F6285C0FC8F55041C3F5285C002A5541C3F5282CCCF55041C3F528ACFD2955418FC2F598D3F5504185EB5128FA2955418FC2F5B8CCF55041B81E852BF0295541B81E85BBCAF55041295C8FB2F1295541E17A146EC4F550419A9999D9F529554133333353BFF550413D0AD7A3F9295541AE47E1BABAF55041F6285C6FFC2955419A999989B5F550411F85EB31002A5541A4703D5AADF55041AE47E18A092A55415C8FC275ABF550415C8FC2850D2A55413D0AD7D3A9F5504133333343122A554133333303AEF5504152B81EB5112A5541713D0A27B4F55041C3F5280C102A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000D4A821F0CAF5504157BEE79BF1295541639FEB69CAF550410FDA702EF129554160C67833CAF550416249240AF12955417B14AE17CAF55041C3F5281CF1295541CDCCCC2CC5F5504152B81E05F4295541EC51B85EBDF550410AD7A3C0F9295541DED8B1FAB3F55041C5E039A8002A554148E17AA4ADF55041D7A3709D062A5541333333D3AAF55041333333230A2A55411F85EB31A8F5504152B81E350F2A5541B3D659BFA3F5504199E8607D0D2A55414E3C9FAAA3F550416EDD87B40D2A5541A4D13EA8A3F5504167A4DABA0D2A5541FF561363A3F55041A8D1F2AC0E2A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>443058 - 54820
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+01060000000100000001030000000100000015000000F6285C0FC8F55041C3F5285C002A5541C3F5282CCCF55041C3F528ACFD2955418FC2F598D3F5504185EB5128FA2955418FC2F5B8CCF55041B81E852BF0295541B81E85BBCAF55041295C8FB2F1295541E17A146EC4F550419A9999D9F529554133333353BFF550413D0AD7A3F9295541AE47E1BABAF55041F6285C6FFC2955419A999989B5F550411F85EB31002A5541A4703D5AADF55041AE47E18A092A55415C8FC275ABF550415C8FC2850D2A55413D0AD7D3A9F5504133333343122A554133333303AEF5504152B81EB5112A5541713D0A27B4F55041C3F5280C102A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000D4A821F0CAF5504157BEE79BF1295541639FEB69CAF550410FDA702EF129554160C67833CAF550416249240AF12955417B14AE17CAF55041C3F5281CF1295541CDCCCC2CC5F5504152B81E05F4295541EC51B85EBDF550410AD7A3C0F9295541DED8B1FAB3F55041C5E039A8002A554148E17AA4ADF55041D7A3709D062A5541333333D3AAF55041333333230A2A55411F85EB31A8F5504152B81E350F2A5541B3D659BFA3F5504199E8607D0D2A55414E3C9FAAA3F550416EDD87B40D2A5541A4D13EA8A3F5504167A4DABA0D2A5541FF561363A3F55041A8D1F2AC0E2A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>444165 - 1076195
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000020000000103000000010000000900000014AE4771AED55041713D0AA75E5054415C8FC2F5AED5504185EB511858505441295C8F92B1D55041CDCCCCCC26505441F6285C3FAFD55041B81E853B26505441E17A14CEACD550413D0AD7A32550544148E17AB4A7D550416666661660505441C3F528BCAAD55041CDCCCC6C5F505441E17A146EACD55041713D0A375F50544114AE4771AED55041713D0AA75E50544101030000000100000010000000D7A3705DADD550415C8FC2A569505441CDCCCC4CAED550411F85EB815F505441AE47E1AAACD55041F6285CCF5F50544185EB51A8AAD55041EC51B81E605054410AD7A3 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D7A3705DADD550415C8FC2A569505441CE2BC509AED550419D51DA5862505441B0B55D23AED550413A90444361505441CDCCCC4CAED550411F85EB815F5054413FB2F060AED55041742414095F5054415220D47BAED55041B78A5F215E50544181F6929EAED5504103A418695C5054411599C4D8AED55041344BB18759505441295C8F92B1D55041CDCCCCCC26505441E311E810AFD55041C39E13D925505441E17A14CEACD550413D0AD7A32550544148E17AB4A7D550416666661660505441E8BEF471A5D550414712EB3677505441F0AD2A38A6D55041DE5C09C875505441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>444165 - 3584895
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+0106000000020000000103000000010000000900000014AE4771AED55041713D0AA75E5054415C8FC2F5AED5504185EB511858505441295C8F92B1D55041CDCCCCCC26505441F6285C3FAFD55041B81E853B26505441E17A14CEACD550413D0AD7A32550544148E17AB4A7D550416666661660505441C3F528BCAAD55041CDCCCC6C5F505441E17A146EACD55041713D0A375F50544114AE4771AED55041713D0AA75E50544101030000000100000010000000D7A3705DADD550415C8FC2A569505441CDCCCC4CAED550411F85EB815F505441AE47E1AAACD55041F6285CCF5F50544185EB51A8AAD55041EC51B81E605054410AD7A3 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D7A3705DADD550415C8FC2A569505441CE2BC509AED550419D51DA5862505441B0B55D23AED550413A90444361505441CDCCCC4CAED550411F85EB815F5054413FB2F060AED55041742414095F5054415220D47BAED55041B78A5F215E50544181F6929EAED5504103A418695C5054411599C4D8AED55041344BB18759505441295C8F92B1D55041CDCCCCCC26505441E311E810AFD55041C39E13D925505441E17A14CEACD550413D0AD7A32550544148E17AB4A7D550416666661660505441E8BEF471A5D550414712EB3677505441F0AD2A38A6D55041DE5C09C875505441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447281 - 31051
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+01060000000200000001030000000200000052000000EC51B8FED93E51417B14AEA780445441666666D6C73E5141D7A3708D774454410AD7A3C0C73E514114AE47C1784454415C8FC2F5C53E5141C3F528DC7D44544148E17AF4B73E51413333338377445441A4703D3AB43E51410AD7A3107C4454411F85EB31B33E514152B81E957B445441D7A3705DB23E514148E17AE47C445441B81E854BAE3E51419A9999197B445441295C8F42AF3E5141E17A144E794454419A999939AA3E5141F6285CAF76445441333333F3AF3E51411F85EB816B445441C3F5284CB43E5141F6285CBF6844544148E17AC4B73E514152B81E2568445441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000202087ABD93E514143A0F97D80445441B9DE2883D93E514128FBBC69804454410990BAECD83E5141039B6F7B80445441E54227F9D93E5141D3699D1B88445441D126C35ADA3E514173C8DD4C8A4454414AA3F666DA3E51412235504D8C4454415EBF5A05DA3E51414E092BA38E4454417CF72242D93E51417B00037F90445441B667B3BBD73E514198C6AB05934454416E3FAC8AD63E5141D7D24E98944454415D2AE1D3D63E51413B10218095445441AD4B4F1DD83E51417F9C15989344544175E2578BD93E51415BC1A15A91445441489C5D7FDA3E5141B16261298F445441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447281 - 72782
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+01060000000200000001030000000200000052000000EC51B8FED93E51417B14AEA780445441666666D6C73E5141D7A3708D774454410AD7A3C0C73E514114AE47C1784454415C8FC2F5C53E5141C3F528DC7D44544148E17AF4B73E51413333338377445441A4703D3AB43E51410AD7A3107C4454411F85EB31B33E514152B81E957B445441D7A3705DB23E514148E17AE47C445441B81E854BAE3E51419A9999197B445441295C8F42AF3E5141E17A144E794454419A999939AA3E5141F6285CAF76445441333333F3AF3E51411F85EB816B445441C3F5284CB43E5141F6285CBF6844544148E17AC4B73E514152B81E2568445441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000202087ABD93E514143A0F97D80445441B9DE2883D93E514128FBBC69804454410990BAECD83E5141039B6F7B80445441E54227F9D93E5141D3699D1B88445441D126C35ADA3E514173C8DD4C8A4454414AA3F666DA3E51412235504D8C4454415EBF5A05DA3E51414E092BA38E4454417CF72242D93E51417B00037F90445441B667B3BBD73E514198C6AB05934454416E3FAC8AD63E5141D7D24E98944454415D2AE1D3D63E51413B10218095445441AD4B4F1DD83E51417F9C15989344544175E2578BD93E51415BC1A15A91445441489C5D7FDA3E5141B16261298F445441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>448986 - 3133552
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -727  </desc>
+<a>
+0106000000010000000103000000010000002B0000003333332328365141D7A3709DE8525441F6285C8F273651418FC2F548EE525441C3F5285C2636514133333353F3525441295C8FB22436514133333333F95254413D0AD71322365141713D0A8701535441AE47E16A1E365141B81E850B0C535441CDCCCCBC25365141D7A3709D0D535441333333332D365141333333030F5354413D0AD7A32C365141A4703DEA155354410000006029365141713D0A371E5354419A9999091A365141713D0AF71A535441AE47E1BA1936514152B81E251C5354415C8FC2C5183651418FC2F5C821535441E17A147E18365141AE47E1DA24535441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000E17A147E18365141AE47E1DA24535441BDB3D6233A3651416482C1D323535441EC51B8BE33365141EC51B83E0E5354414993BED829365141D81987FC0D5354410CB969272B365141694E1CA10E5354416F099C822B365141E6779990115354410002EB2C2C3651417EBFD00712535441B885C3D72B365141D88EC51714535441DF104DD82A36514170D6FC8E145354419EE30D502A365141200BED6C145354416605B7942936514162ED28161753544105E7D9B727365141B422327A1B535441D3A26EA824365141451B81241C5354416880ACDD203651416CA60A251B535441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>511853 - 938646
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+0106000000010000000103000000010000003F000000AE47E1FA78A75041666666B629335441AE47E17A7CA750417B14AEF72A33544148E17A747DA750410AD7A3602B33544152B81EA57FA750418FC2F5D82C3354419A99996986A75041295C8F523133544152B81EB587A75041713D0A5732335441B81E851B89A7504152B81EE533335441000000A08AA75041713D0A5736335441A4703D1A8CA75041295C8FE239335441AE47E14A8EA75041713D0AD73F3354413D0AD76393A750415C8FC2B538335441000000509BA75041D7A370FD2A335441000000F0A3A75041D7A3708D20335441D7A3708DB2A7504185EB510804335441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000005C70C512B6A75041090973F0043354412BF9B779B5A750411A67313D043354414A12CA62B3A7504184EA821404335441B860787EB2A75041AF458825043354417B467287A9A75041C80071A415335441EB32C78AA6A750414DA746781B335441BE66C44BA4A75041801A5DDA1F335441F17DF48CA0A7504142A7B0A624335441DC0CB5CE9BA75041B31B1B642A33544158262E8793A75041B3FC8E7838335441E3173E3191A7504189D5ADC83B33544189B2D1A78FA75041855CF8EE3D33544111ABF84D8EA750413C4EB7D23F335441D329A5FB8EA750411FF82A5242335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>452568 - 236950
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -19  </desc>
+<a>
+010600000001000000010300000001000000170000009A9999D985325141CDCCCC2CFC2E5541B81E85EB86325141AE47E1FAFE2E5541A4703D5A87325141F6285C2F002F5541EC51B82E8C3251413D0AD7F3FC2E5541F6285C4F95325141295C8FC2F72E5541295C8F42A23251415C8FC295F12E554148E17AB4A5325141E17A14BEEE2E554152B81EE5A032514114AE4701E92E5541B81E853B9D325141D7A3705DE72E554166666626983251411F85EB61E62E5541D7A370ED943251417B14AEC7E52E55419A999989913251415C8FC245E62E5541295C8FD28D3251415C8FC275E82E5541295C8FA28B325141713D0A27EA2E5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000E64751899132514183B8FA55E62E5541F787D633923251416081FBFBE52E5541A08727FC943251410035F82DE62E554166666626983251411F85EB61E62E5541EC18444E983251412163A069E62E5541889190DF99325141F6AEC985E62E554162E71AE99D325141B87EF276E72E5541796D7C01A1325141E092D036E92E554191F3DD19A43251415FA4A571EC2E5541E8F0D494A53251414641EECEEF2E5541E6CF24ADA23251418717D13DF12E55415742849FA2325141841C8A44F12E554106037D97A23251418D088048F12E5541481AFB7C9B325141E366A1C9F42E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464545 - 21168
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000700000014AE47A18CD05041333333838E495441D7A3707D6FD050417B14AE97B449544114AE47A170D0504185EB5198B8495441AE47E12A76D05041B81E85FBCB495441AE47E10AA6D05041C3F5286C8D4954415C8FC2F590D05041B81E855B8E49544114AE47A18CD05041333333838E495441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D91B0B2CA7D05041281F67688D495441BA2928F9A5D0504185C651838D49544177A4B04D9BD05041B170C5699B495441291C43E693D05041CD617321A54954411E5F93278DD050410D4CC6F1AD49544165F6294476D05041D67EB2F3CB49544134CA556D76D050412416E0BACC4954417E27429476D050410F2E586CCD495441A08BA6177CD05041CFC0DE0DC6495441503367C387D050417FE9DDC6B64954415624F9E694D0504165FBE993A5495441F6845A22A3D05041A1A8AFF292495441D91B0B2CA7D05041281F67688D495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464545 - 66347
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000700000014AE47A18CD05041333333838E495441D7A3707D6FD050417B14AE97B449544114AE47A170D0504185EB5198B8495441AE47E12A76D05041B81E85FBCB495441AE47E10AA6D05041C3F5286C8D4954415C8FC2F590D05041B81E855B8E49544114AE47A18CD05041333333838E495441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D91B0B2CA7D05041281F67688D495441BA2928F9A5D0504185C651838D49544177A4B04D9BD05041B170C5699B495441291C43E693D05041CD617321A54954411E5F93278DD050410D4CC6F1AD49544165F6294476D05041D67EB2F3CB49544134CA556D76D050412416E0BACC4954417E27429476D050410F2E586CCD495441A08BA6177CD05041CFC0DE0DC6495441503367C387D050417FE9DDC6B64954415624F9E694D0504165FBE993A5495441F6845A22A3D05041A1A8AFF292495441D91B0B2CA7D05041281F67688D495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464563 - 21168
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000D000000C3F5288C76D0504100000050CD4954419A9999897DD05041713D0AC7E5495441CDCCCC2C84D0504152B81E05FD495441C3F528BC97D050415C8FC275E3495441C3F5284CABD0504152B81EE5C94954417B14AEE7ABD050419A999919C9495441E17A14CEC1D05041CDCCCC7CAC4954418FC2F548D7D05041CDCCCC6C904954415C8FC245BFD05041333333038E4954418FC2F508B4D05041666666568D495441713D0AD7A9D05041E17A145E8D495441F6285C5FA7D05041666666668D495441C3F5288C76D0504100000050CD495441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D91B0B2CA7D05041281F67688D495441BA2928F9A5D0504185C651838D49544177A4B04D9BD05041B170C5699B495441291C43E693D05041CD617321A54954411E5F93278DD050410D4CC6F1AD49544165F6294476D05041D67EB2F3CB49544134CA556D76D050412416E0BACC4954417E27429476D050410F2E586CCD495441A08BA6177CD05041CFC0DE0DC6495441503367C387D050417FE9DDC6B64954415624F9E694D0504165FBE993A5495441F6845A22A3D05041A1A8AFF292495441D91B0B2CA7D05041281F67688D495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464563 - 66347
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000000D000000C3F5288C76D0504100000050CD4954419A9999897DD05041713D0AC7E5495441CDCCCC2C84D0504152B81E05FD495441C3F528BC97D050415C8FC275E3495441C3F5284CABD0504152B81EE5C94954417B14AEE7ABD050419A999919C9495441E17A14CEC1D05041CDCCCC7CAC4954418FC2F548D7D05041CDCCCC6C904954415C8FC245BFD05041333333038E4954418FC2F508B4D05041666666568D495441713D0AD7A9D05041E17A145E8D495441F6285C5FA7D05041666666668D495441C3F5288C76D0504100000050CD495441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D91B0B2CA7D05041281F67688D495441BA2928F9A5D0504185C651838D49544177A4B04D9BD05041B170C5699B495441291C43E693D05041CD617321A54954411E5F93278DD050410D4CC6F1AD49544165F6294476D05041D67EB2F3CB49544134CA556D76D050412416E0BACC4954417E27429476D050410F2E586CCD495441A08BA6177CD05041CFC0DE0DC6495441503367C387D050417FE9DDC6B64954415624F9E694D0504165FBE993A5495441F6845A22A3D05041A1A8AFF292495441D91B0B2CA7D05041281F67688D495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>453066 - 365139
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000002000000052B81E4591AD5041E17A14EE16C85441AE47E1CA8EAD50411F85EB010BC854417B14AE5794AD504114AE47B109C854419A99992993AD5041E17A147E03C85441666666B694AD5041A4703DEAFDC754419A99997983AD5041713D0AE7F5C754419A9999997BAD5041C3F528BCF2C7544152B81EE577AD504114AE4721F2C75441F6285C8F71AD50411F85EBE1F1C754417B14AE276CAD50411F85EB11F3C754413D0AD7C339AD504148E17A7403C85441E17A14EE31AD50417B14AE0706C85441333333732CAD5041E17A14DE06C854413333336326AD50413333334307C85441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000330000007253A61D30AD5041C77DA84E06C85441178E33732CAD5041988B15DE06C854411AA73E3D28AD50414C54502407C85441EDFF336326AD5041DD25334307C854410FE4B70426AD50419BA2BF3D08C854417CD11EC525AD5041AB2366E608C854417506375D26AD504191FBBFE609C85441CDCCCC9C26AD50411F85EB510AC85441FA9745F731AD5041463578690AC85441F51A14BE39AD5041F0CF98790AC8544175A4A39044AD504173C713EE07C854415A01132F62AD5041F1613A990FC8544148E17A746AAD5041D7A370BD11C85441B0AAE23A76AD504184BB33D314C85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455774 - 4178754
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -125  </desc>
+<a>
+0106000000010000000103000000010000000E000000295C8FE223B350415C8FC28598D254413D0AD7E320B350410AD7A34096D254410AD7A3C01BB35041A4703D1A9CD254419A99996915B350415C8FC2B5A3D25441A4703DBA0FB35041C3F5287CABD254410AD7A3900BB350417B14AE17B3D254411F85EB310AB35041E17A148EB6D254415C8FC2A517B35041D7A370CDB8D25441EC51B88E18B35041EC51B8FEB7D254415C8FC2251EB350419A999929AED25441A4703DBA22B350413D0AD713A9D25441713D0AC727B350410AD7A300A5D254418FC2F5282CB350417B14AE579FD25441295C8FE223B350415C8FC28598D25441
+</a>
+
+<b>
+010600000001000000010300000002000000560000001D5A64D309B35041355EBA41B6D254410AD7A3900BB350417B14AE17B3D254415F95E2550DB35041C959CF83AFD25441A4703DBA0FB35041C3F5287CABD25441F2E42C6113B350418B2C321FA6D254419A99996915B350415C8FC2B5A3D254415ED0F77E1AB3504118BA81EC9CD2544131B8348420B350418C233DE895D254419539DAAE20B35041A51A89B695D25441C15A4B3519B350415A76ECF78FD2544183BFAA7C12B3504124867D1B8AD25441952430390DB350415987233386D254418196AAFA0BB35041D239A67086D2544152B81EBD08B35041F6285CA786D25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455774 - 4178760
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -124  </desc>
+<a>
+0106000000010000000103000000010000000E000000295C8FE223B350415C8FC28598D254413D0AD7E320B350410AD7A34096D254410AD7A3C01BB35041A4703D1A9CD254419A99996915B350415C8FC2B5A3D25441A4703DBA0FB35041C3F5287CABD254410AD7A3900BB350417B14AE17B3D254411F85EB310AB35041E17A148EB6D254415C8FC2A517B35041D7A370CDB8D25441EC51B88E18B35041EC51B8FEB7D254415C8FC2251EB350419A999929AED25441A4703DBA22B350413D0AD713A9D25441713D0AC727B350410AD7A300A5D254418FC2F5282CB350417B14AE579FD25441295C8FE223B350415C8FC28598D25441
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000086154C8027B350410D738FF7A4D25441DB2D85F72AB35041195745C6A0D25441833C90262CB35041C86EB4559FD25441295C8FE223B350415C8FC28598D2544131B8348420B350418C233DE895D254415ED0F77E1AB3504118BA81EC9CD254419A99996915B350415C8FC2B5A3D25441F2E42C6113B350418B2C321FA6D25441A4703DBA0FB35041C3F5287CABD254415F95E2550DB35041C959CF83AFD254410AD7A3900BB350417B14AE17B3D254411D5A64D309B35041355EBA41B6D25441508D97D611B35041FED47831B7D2544183554E5215B350414439F569B8D25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>71977 - 2928848
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+01060000000100000001030000000100000015000000713D0A77F1BD5041C3F5289C2D2E55413D0AD7E3ECBD5041AE47E15A2E2E5541EC51B8CEE8BD5041E17A143E2F2E5541A4703D4AE7BD5041295C8F922F2E55418FC2F578E7BD5041AE47E1BA302E554148E17A24DABD5041295C8F42342E5541295C8F62D3BD504166666606362E5541CDCCCC3CCDBD504152B81E95382E55419A9999B9CDBD5041C3F528DC392E554133333353C5BD5041C3F5288C3E2E5541B81E850BC4BD504152B81E953F2E554100000010C1BD5041D7A370FD422E5541713D0AF7BFBD5041295C8FA2442E554185EB5148C1BD5041B81E85CB472E5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000295C8F62D3BD504166666606362E554194335E5AD6BD5041C0FA942E352E55414A4CB1B5DDBD50417B82F045332E5541BBA7B85FE7BD5041887FF0B0302E55417C58505FE7BD5041AE7D91BD302E5541C4176C74E7BD50412172199E302E55416CC8E96DE7BD5041A0EED074302E55412C9E4598E7BD5041135BA768302E5541EC51B8CEE8BD5041E17A143E2F2E55413D0AD7E3ECBD5041AE47E15A2E2E5541713D0A77F1BD5041C3F5289C2D2E55416BE213F5F4BD504146244C6F212E554139326682E5BD504154A832CF272E55412B72A346E3BD504155DC57C9282E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>71977 - 3806749
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+01060000000100000001030000000100000015000000713D0A77F1BD5041C3F5289C2D2E55413D0AD7E3ECBD5041AE47E15A2E2E5541EC51B8CEE8BD5041E17A143E2F2E5541A4703D4AE7BD5041295C8F922F2E55418FC2F578E7BD5041AE47E1BA302E554148E17A24DABD5041295C8F42342E5541295C8F62D3BD504166666606362E5541CDCCCC3CCDBD504152B81E95382E55419A9999B9CDBD5041C3F528DC392E554133333353C5BD5041C3F5288C3E2E5541B81E850BC4BD504152B81E953F2E554100000010C1BD5041D7A370FD422E5541713D0AF7BFBD5041295C8FA2442E554185EB5148C1BD5041B81E85CB472E5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000295C8F62D3BD504166666606362E554194335E5AD6BD5041C0FA942E352E55414A4CB1B5DDBD50417B82F045332E5541BBA7B85FE7BD5041887FF0B0302E55417C58505FE7BD5041AE7D91BD302E5541C4176C74E7BD50412172199E302E55416CC8E96DE7BD5041A0EED074302E55412C9E4598E7BD5041135BA768302E5541EC51B8CEE8BD5041E17A143E2F2E55413D0AD7E3ECBD5041AE47E15A2E2E5541713D0A77F1BD5041C3F5289C2D2E55416BE213F5F4BD504146244C6F212E554139326682E5BD504154A832CF272E55412B72A346E3BD504155DC57C9282E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>457557 - 3088512
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -99  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F2256265141D7A3700D952A55415C8FC20552265141A4703D6A932A55417B14AE074C2651418FC2F5A88E2A5541A4703DBA4A2651411F85EB81902A5541CDCCCC0C46265141666666B6962A55417B14AED749265141D7A3706D9F2A55419A9999594C2651411F85EBE1A62A554148E17A644F265141AE47E11AAC2A5541666666364F26514133333343B92A5541E17A147E4E265141CDCCCC4CC42A5541295C8FC25926514166666666C12A5541C3F528EC5B2651418FC2F578BE2A5541EC51B88E58265141333333D3AD2A5541AE47E1BA5F265141CDCCCC2C9F2A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000713C164246265141A0D3D930972A55417B14AED749265141D7A3706D9F2A55419A9999594C2651411F85EBE1A62A554148E17A644F265141AE47E11AAC2A5541666666364F26514133333343B92A5541E17A147E4E265141CDCCCC4CC42A5541295C8FC25926514166666666C12A5541C3F528EC5B2651418FC2F578BE2A5541EC51B88E58265141333333D3AD2A5541AE47E1BA5F265141CDCCCC2C9F2A554164CC50CB602651418870010E9A2A55411323721E5F265141322646DF982A554185EB51885D26514148E17A04982A5541295C8F2256265141D7A3700D952A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>457557 - 3433777
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -99  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F2256265141D7A3700D952A55415C8FC20552265141A4703D6A932A55417B14AE074C2651418FC2F5A88E2A5541A4703DBA4A2651411F85EB81902A5541CDCCCC0C46265141666666B6962A55417B14AED749265141D7A3706D9F2A55419A9999594C2651411F85EBE1A62A554148E17A644F265141AE47E11AAC2A5541666666364F26514133333343B92A5541E17A147E4E265141CDCCCC4CC42A5541295C8FC25926514166666666C12A5541C3F528EC5B2651418FC2F578BE2A5541EC51B88E58265141333333D3AD2A5541AE47E1BA5F265141CDCCCC2C9F2A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000713C164246265141A0D3D930972A55417B14AED749265141D7A3706D9F2A55419A9999594C2651411F85EBE1A62A554148E17A644F265141AE47E11AAC2A5541666666364F26514133333343B92A5541E17A147E4E265141CDCCCC4CC42A5541295C8FC25926514166666666C12A5541C3F528EC5B2651418FC2F578BE2A5541EC51B88E58265141333333D3AD2A5541AE47E1BA5F265141CDCCCC2C9F2A554164CC50CB602651418870010E9A2A55411323721E5F265141322646DF982A554185EB51885D26514148E17A04982A5541295C8F2256265141D7A3700D952A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>466996 - 2979601
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -39  </desc>
+<a>
+0106000000010000000103000000010000000F000000C3F528BCC89C5041CDCCCC7CE32A5541C3F5289CC79C50413D0AD7F3E42A5541666666F6BF9C504152B81EF5EE2A554114AE4781CC9C5041333333E3FB2A55419A999939D09C5041E17A148EFF2A5541B81E854BD49C504114AE4701032B554185EB51E8D79C50415C8FC2A5052B5541EC51B81EDC9C504114AE4771FE2A55410AD7A340D99C5041CDCCCC1CFB2A5541AE47E13AD79C5041E17A143EF82A5541D7A370FDD59C5041B81E850BF52A55418FC2F518D49C5041333333D3EF2A5541EC51B89ED19C504114AE4731EB2A5541295C8F02CF9C5041666666A6E82A5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000110000002D5AD0B1C89C50411359C373E32A5541AEE513C9CA9C50414762F91FE52A554117B3CACFCA9C50414EA82D32E52A55416A313DC0CF9C5041506D2C5FE92A5541BC7B94D8D19C50416EE2779DEB2A55417305B532D69C5041E749E094F52A5541B029074AD79C5041B3559353F82A554143C48D71DA9C5041FEB6E47EFC2A55417B0EC50DDC9C50418F7E458EFE2A55419985D4BDE09C5041C81A9714F92A554115466CA2DF9C50416B6AD439F72A55418FE6BD84DF9C50419C1697BBF52A55417A2ACA9DDA9C5041C1E863F3EC2A55410A36C305DA9C50412BBABC93EB2A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470642 - 1094125
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -20  </desc>
+<a>
+01060000000100000001030000000100000020000000F6285CCFCB345141E17A14AE3E6F5441E17A140ECC345141666666163D6F5441D7A3705DCF345141E17A148E3B6F544133333383D1345141713D0AA7396F544133333383D1345141E17A144E386F54419A999939D0345141295C8F72376F544152B81E25D2345141666666D62C6F5441B81E854BD4345141F6285CDF1F6F544114AE4771CB345141F6285C8F1E6F54411F85EB31C8345141333333D3406F5441333333A3C4345141E17A146E5B6F54413D0AD763C134514148E17A047A6F54418FC2F568C0345141EC51B8BE846F544100000000BF34514148E17AD4866F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000B6547D9ECC3451411F3151F2746F54416C6452D1CC3451415246FE72716F5441380D6E08CD345141AD3413486E6F54414CBCB4E8CD34514161A0D663616F5441FC62F25CCE34514128F958B55A6F5441F3456E91CE345141DFEE60C8536F5441C47ABF1CCF3451415290D8694F6F5441932F0597CE3451414D45AD85496F54416CF7AEB3CE345141133704C0476F544113B6B808CF345141EEDA9E11416F5441AC27A8CFCB345141438326AC3E6F5441E17A140ECC345141666666163D6F544126DFD470CF3451412F99E67C3B6F544133333383D1345141713D0AA7396F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470642 - 3815071
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -20  </desc>
+<a>
+01060000000100000001030000000100000020000000F6285CCFCB345141E17A14AE3E6F5441E17A140ECC345141666666163D6F5441D7A3705DCF345141E17A148E3B6F544133333383D1345141713D0AA7396F544133333383D1345141E17A144E386F54419A999939D0345141295C8F72376F544152B81E25D2345141666666D62C6F5441B81E854BD4345141F6285CDF1F6F544114AE4771CB345141F6285C8F1E6F54411F85EB31C8345141333333D3406F5441333333A3C4345141E17A146E5B6F54413D0AD763C134514148E17A047A6F54418FC2F568C0345141EC51B8BE846F544100000000BF34514148E17AD4866F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000B6547D9ECC3451411F3151F2746F54416C6452D1CC3451415246FE72716F5441380D6E08CD345141AD3413486E6F54414CBCB4E8CD34514161A0D663616F5441FC62F25CCE34514128F958B55A6F5441F3456E91CE345141DFEE60C8536F5441C47ABF1CCF3451415290D8694F6F5441932F0597CE3451414D45AD85496F54416CF7AEB3CE345141133704C0476F544113B6B808CF345141EEDA9E11416F5441AC27A8CFCB345141438326AC3E6F5441E17A140ECC345141666666163D6F544126DFD470CF3451412F99E67C3B6F544133333383D1345141713D0AA7396F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>480212 - 408910
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 10  </desc>
+<a>
+010600000001000000010300000001000000470000001F85EBC1270A5141713D0A4739A554419A9999492C0A51418FC2F5F83AA55441A4703DAA330A5141713D0A6743A55441295C8FE2470A5141E17A14BE43A55441E17A148E470A51411F85EB2151A554415C8FC215510A51411F85EBB152A5544185EB5168520A5141295C8F7256A554418FC2F5D8540A5141D7A3709D56A554410AD7A3305A0A5141AE47E1AA55A55441333333535E0A51416666662655A55441F6285CEF5F0A5141AE47E1BA50A55441B81E857B620A5141CDCCCC3C4CA5544114AE4731650A51416666663648A55441295C8FB26B0A51419A9999D93FA55441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000B81E855B200A5141C3F528DC27A55441940841AE1C0A5141DCF5E4E235A554418FC2F5181E0A514148E17A8434A55441295C8F12210A51417B14AE1732A55441B81E852B230A514114AE471130A554410AD7A3A0230A5141CDCCCC6C2FA554411F85EB71250A51415C8FC2452BA5544152B81ED5260A5141295C8FA226A5544100000060280A514185EB51F820A554415C8FC265290A5141EC51B8EE1DA55441B81E85DB2A0A5141B81E855B1AA5544148E17A842C0A5141B81E857B16A55441DC8CCEDF2D0A5141E30184FB13A55441B81E859B2A0A5141E17A148E17A55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>487482 - 180588
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000020000002B000000B81E851B3EBF504114AE476143FF544148E17A343CBF50416666668647FF5441B81E850B48BF5041D7A3708D4FFF5441AE47E1DA4DBF5041CDCCCC3C53FF5441333333334DBF5041000000104EFF5441333333134CBF50413333333345FF5441666666864BBF5041713D0AD740FF5441713D0A9778BF5041EC51B88E59FF5441E17A142E75BF5041B81E851B51FF5441F6285C8F73BF50417B14AEF747FF544148E17A8474BF50417B14AEF73BFF5441F6285CBF75BF504185EB514823FF5441AE47E1FA76BF5041F6285C0F08FF5441F6285CAF78BF504166666676E2FE5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000008777CC7C11BF5041514E512898FE54410B14EBD10EBF50410878713D93FE544179963DDF0DBF504155F28DDC8FFE5441713D0A970CBF5041AE47E14A8BFE5441BB6C0AB70ABF504148A79A9980FE54416C74714DFFBE5041900172AD82FE544111DCF5A8F9BE50419AF9B8AE82FE5441DB5AF3BEF9BE50411F86453F83FE5441C2F6F6D8F9BE504155FF3DEA83FE544118119B3CF6BE5041C62B63E083FE5441000000B0F4BE5041C3F528DC83FE5441333333F3F7BE5041000000A08CFE544152B81EA5F8BE5041EC51B87E8EFE5441E17A140EFBBE5041A4703DBA96FE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>487482 - 387460
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000020000002B000000B81E851B3EBF504114AE476143FF544148E17A343CBF50416666668647FF5441B81E850B48BF5041D7A3708D4FFF5441AE47E1DA4DBF5041CDCCCC3C53FF5441333333334DBF5041000000104EFF5441333333134CBF50413333333345FF5441666666864BBF5041713D0AD740FF5441713D0A9778BF5041EC51B88E59FF5441E17A142E75BF5041B81E851B51FF5441F6285C8F73BF50417B14AEF747FF544148E17A8474BF50417B14AEF73BFF5441F6285CBF75BF504185EB514823FF5441AE47E1FA76BF5041F6285C0F08FF5441F6285CAF78BF504166666676E2FE5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000008777CC7C11BF5041514E512898FE54410B14EBD10EBF50410878713D93FE544179963DDF0DBF504155F28DDC8FFE5441713D0A970CBF5041AE47E14A8BFE5441BB6C0AB70ABF504148A79A9980FE54416C74714DFFBE5041900172AD82FE544111DCF5A8F9BE50419AF9B8AE82FE5441DB5AF3BEF9BE50411F86453F83FE5441C2F6F6D8F9BE504155FF3DEA83FE544118119B3CF6BE5041C62B63E083FE5441000000B0F4BE5041C3F528DC83FE5441333333F3F7BE5041000000A08CFE544152B81EA5F8BE5041EC51B87E8EFE5441E17A140EFBBE5041A4703DBA96FE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489246 - 3038533
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+010600000001000000010300000002000000200000000AD7A340652E51417B14AEC7EC2255419A999999652E514185EB51D8ED225541EC51B84E672E5141CDCCCC6CF3225541A4703D1A6F2E514133333373EE225541D7A370DD762E5141C3F5283CE92255418FC2F508802E5141E17A146EE3225541A4703DAA862E5141F6285C9FE42255413D0AD713872E51410AD7A340DD22554185EB51587F2E5141D7A3701DE122554185EB51387E2E5141EC51B8EEDE225541AE47E1AA7D2E51415C8FC205DD225541666666667D2E514152B81E05DC2255410AD7A3F07C2E514100000060D9225541333333637B2E51415C8FC2F5CF225541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006B000000369243C66F2E5141CEEF4222D82255414023FDF66F2E5141CFF61CEDD5225541AE47E10A702E514166666606D52255418E71B642702E514126B58BB1D322554175867985702E51415CEFF719D22255419212B75E712E5141145514E7CC22554133333343722E5141A4703D5AC72255413082EF88722E5141899FF04AC622554120FB04D9722E514186C32F7FC0225541D9CEF76B732E5141FA7E6AA4B92255413F355E72742E5141BA490CBAAF22554110583944722E51415A643B37AA22554154E3A5C36F2E5141B0726819A622554150FB45036F2E51419A3A4E29A5225541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489246 - 3274697
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+010600000001000000010300000002000000200000000AD7A340652E51417B14AEC7EC2255419A999999652E514185EB51D8ED225541EC51B84E672E5141CDCCCC6CF3225541A4703D1A6F2E514133333373EE225541D7A370DD762E5141C3F5283CE92255418FC2F508802E5141E17A146EE3225541A4703DAA862E5141F6285C9FE42255413D0AD713872E51410AD7A340DD22554185EB51587F2E5141D7A3701DE122554185EB51387E2E5141EC51B8EEDE225541AE47E1AA7D2E51415C8FC205DD225541666666667D2E514152B81E05DC2255410AD7A3F07C2E514100000060D9225541333333637B2E51415C8FC2F5CF225541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006B000000369243C66F2E5141CEEF4222D82255414023FDF66F2E5141CFF61CEDD5225541AE47E10A702E514166666606D52255418E71B642702E514126B58BB1D322554175867985702E51415CEFF719D22255419212B75E712E5141145514E7CC22554133333343722E5141A4703D5AC72255413082EF88722E5141899FF04AC622554120FB04D9722E514186C32F7FC0225541D9CEF76B732E5141FA7E6AA4B92255413F355E72742E5141BA490CBAAF22554110583944722E51415A643B37AA22554154E3A5C36F2E5141B0726819A622554150FB45036F2E51419A3A4E29A5225541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>492837 - 1367982
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -19  </desc>
+<a>
+01060000000100000001030000000100000044000000000000D00B3E5141F6285CAF35DF544114AE47B1093E5141E17A14CE33DF544133333343073E5141CDCCCCFC30DF5441EC51B89E053E5141B81E854B2FDF544114AE4731043E5141AE47E1DA2DDF5441AE47E1DA023E5141E17A147E2CDF544152B81E15013E514185EB51B82ADF544133333343003E5141000000202ADF54418FC2F558FF3D5141713D0AA729DF5441C3F5280CFE3D5141295C8F0229DF5441713D0A67F93D5141713D0AE72EDF5441C3F5287CF73D51417B14AE7731DF5441B81E858BF53D51417B14AEA733DF54411F85EBB1F13D5141295C8FF236DF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004D000000000000D00B3E5141F6285CAF35DF544114AE47B1093E5141E17A14CE33DF544133333343073E5141CDCCCCFC30DF5441EC51B89E053E5141B81E854B2FDF544114AE4731043E5141AE47E1DA2DDF5441AE47E1DA023E5141E17A147E2CDF544152B81E15013E514185EB51B82ADF544133333343003E5141000000202ADF54418FC2F558FF3D5141713D0AA729DF5441C3F5280CFE3D5141295C8F0229DF5441713D0A67F93D5141713D0AE72EDF5441C3F5287CF73D51417B14AE7731DF5441B81E858BF53D51417B14AEA733DF54411F85EBB1F13D5141295C8FF236DF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>492837 - 1367993
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -19  </desc>
+<a>
+01060000000100000001030000000100000044000000000000D00B3E5141F6285CAF35DF544114AE47B1093E5141E17A14CE33DF544133333343073E5141CDCCCCFC30DF5441EC51B89E053E5141B81E854B2FDF544114AE4731043E5141AE47E1DA2DDF5441AE47E1DA023E5141E17A147E2CDF544152B81E15013E514185EB51B82ADF544133333343003E5141000000202ADF54418FC2F558FF3D5141713D0AA729DF5441C3F5280CFE3D5141295C8F0229DF5441713D0A67F93D5141713D0AE72EDF5441C3F5287CF73D51417B14AE7731DF5441B81E858BF53D51417B14AEA733DF54411F85EBB1F13D5141295C8FF236DF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000005B000000F6285CDF1E3E51410AD7A3207CDF54410AF9F1901A3E514188C0A24A81DF544129F0F69C153E5141DA2FCEA885DF544121B7E9CE0B3E514109B497708EDF5441EC51B88E0F3E5141713D0A8790DF5441D7A3708D153E5141B81E852B94DF5441B81E854B1B3E514114AE47E197DF54419A999999203E51415C8FC2959BDF54413D0AD7D3273E5141D7A3709DA1DF5441E17A14FE353E51417B14AED7A1DF54418FC2F558333E51411F85EB219BDF54418FC2F5483C3E5141295C8FF296DF5441E17A14DE463E51416666669697DF544114AE47D1543E51419A9999D998DF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>492837 - 3650447
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -19  </desc>
+<a>
+01060000000100000001030000000100000044000000000000D00B3E5141F6285CAF35DF544114AE47B1093E5141E17A14CE33DF544133333343073E5141CDCCCCFC30DF5441EC51B89E053E5141B81E854B2FDF544114AE4731043E5141AE47E1DA2DDF5441AE47E1DA023E5141E17A147E2CDF544152B81E15013E514185EB51B82ADF544133333343003E5141000000202ADF54418FC2F558FF3D5141713D0AA729DF5441C3F5280CFE3D5141295C8F0229DF5441713D0A67F93D5141713D0AE72EDF5441C3F5287CF73D51417B14AE7731DF5441B81E858BF53D51417B14AEA733DF54411F85EBB1F13D5141295C8FF236DF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004D000000000000D00B3E5141F6285CAF35DF544114AE47B1093E5141E17A14CE33DF544133333343073E5141CDCCCCFC30DF5441EC51B89E053E5141B81E854B2FDF544114AE4731043E5141AE47E1DA2DDF5441AE47E1DA023E5141E17A147E2CDF544152B81E15013E514185EB51B82ADF544133333343003E5141000000202ADF54418FC2F558FF3D5141713D0AA729DF5441C3F5280CFE3D5141295C8F0229DF5441713D0A67F93D5141713D0AE72EDF5441C3F5287CF73D51417B14AE7731DF5441B81E858BF53D51417B14AEA733DF54411F85EBB1F13D5141295C8FF236DF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>492837 - 3653884
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -19  </desc>
+<a>
+01060000000100000001030000000100000044000000000000D00B3E5141F6285CAF35DF544114AE47B1093E5141E17A14CE33DF544133333343073E5141CDCCCCFC30DF5441EC51B89E053E5141B81E854B2FDF544114AE4731043E5141AE47E1DA2DDF5441AE47E1DA023E5141E17A147E2CDF544152B81E15013E514185EB51B82ADF544133333343003E5141000000202ADF54418FC2F558FF3D5141713D0AA729DF5441C3F5280CFE3D5141295C8F0229DF5441713D0A67F93D5141713D0AE72EDF5441C3F5287CF73D51417B14AE7731DF5441B81E858BF53D51417B14AEA733DF54411F85EBB1F13D5141295C8FF236DF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000005B000000F6285CDF1E3E51410AD7A3207CDF54410AF9F1901A3E514188C0A24A81DF544129F0F69C153E5141DA2FCEA885DF544121B7E9CE0B3E514109B497708EDF5441EC51B88E0F3E5141713D0A8790DF5441D7A3708D153E5141B81E852B94DF5441B81E854B1B3E514114AE47E197DF54419A999999203E51415C8FC2959BDF54413D0AD7D3273E5141D7A3709DA1DF5441E17A14FE353E51417B14AED7A1DF54418FC2F558333E51411F85EB219BDF54418FC2F5483C3E5141295C8FF296DF5441E17A14DE463E51416666669697DF544114AE47D1543E51419A9999D998DF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>494347 - 1378349
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -89  </desc>
+<a>
+0106000000010000000103000000010000001C0000003D0AD7F3354C5141C3F528AC2EE35441333333B33B4C51410000001031E354417B14AE47444C5141F6285C9F31E354415C8FC215454C5141000000702DE3544166666646454C514185EB511829E35441EC51B87E494C51411F85EB5129E3544148E17A444D4C514152B81E8529E354411F85EB61554C5141EC51B83E2BE3544133333393534C5141295C8F9226E3544166666606534C51410AD7A30024E354418FC2F528534C51417B14AE371FE3544152B81ED5514C514114AE47211FE3544148E17A94504C51411F85EBF119E354411F85EB11504C5141CDCCCC0C15E35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D00000052B81ED5514C514114AE47211FE3544148E17A94504C51411F85EBF119E354411F85EB11504C5141CDCCCC0C15E35441F6285C7F4E4C5141B81E85EB12E35441D7A3706D4B4C514185EB514811E35441713D0A774A4C5141713D0A8710E3544152B81E054A4C51411F85EBC110E35441C3F5287C454C5141E17A140E13E354411F85EBB1444C5141D7A3705D1BE35441B81E855B444C514185EB51681EE354413D0AD773194C51418FC2F59817E3544169EE81F1194C5141116DFD5D1BE35441F6E20BA81C4C5141F05A5B5C22E354411347F4321D4C5141E63C806F25E35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>494347 - 3341642
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -89  </desc>
+<a>
+0106000000010000000103000000010000001C0000003D0AD7F3354C5141C3F528AC2EE35441333333B33B4C51410000001031E354417B14AE47444C5141F6285C9F31E354415C8FC215454C5141000000702DE3544166666646454C514185EB511829E35441EC51B87E494C51411F85EB5129E3544148E17A444D4C514152B81E8529E354411F85EB61554C5141EC51B83E2BE3544133333393534C5141295C8F9226E3544166666606534C51410AD7A30024E354418FC2F528534C51417B14AE371FE3544152B81ED5514C514114AE47211FE3544148E17A94504C51411F85EBF119E354411F85EB11504C5141CDCCCC0C15E35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D00000052B81ED5514C514114AE47211FE3544148E17A94504C51411F85EBF119E354411F85EB11504C5141CDCCCC0C15E35441F6285C7F4E4C5141B81E85EB12E35441D7A3706D4B4C514185EB514811E35441713D0A774A4C5141713D0A8710E3544152B81E054A4C51411F85EBC110E35441C3F5287C454C5141E17A140E13E354411F85EBB1444C5141D7A3705D1BE35441B81E855B444C514185EB51681EE354413D0AD773194C51418FC2F59817E3544169EE81F1194C5141116DFD5D1BE35441F6E20BA81C4C5141F05A5B5C22E354411347F4321D4C5141E63C806F25E35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498794 - 2099466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000D000000295C8F2276FE5041713D0AA7B42A544148E17AF477FE504133333333B02A5441B81E857B3AFE50410AD7A320B12A54419A9999C90BFE5041AE47E11AB22A5441CDCCCC5C09FE504166666626B92A544148E17A5408FE504100000070BD2A544185EB511807FE504114AE47D1C62A5441713D0AE706FE504166666626CD2A54410AD7A3902BFE504152B81ED5CC2A544185EB51A838FE5041C3F5289CCC2A54410AD7A3006CFE504148E17AD4CB2A5441666666066EFE504185EB5188C62A5441295C8F2276FE5041713D0AA7B42A5441
+</a>
+
+<b>
+0106000000010000000103000000010000003D00000065CD585729FE5041BCD40CDACC2A544165A1DF7415FE5041A01B650DCD2A5441AE47E17A1CFE50419A999919D92A5441000000F020FE50411F85EB01E42A5441CDCCCC8C22FE5041333333E3F42A5441EC51B8BE20FE5041F6285C9FF52A544185EB519822FE504185EB5168032B5441295C8FC226FE5041CDCCCC5C102B5441713D0A8727FE5041B81E85DB112B54411F85EB1128FE50411F85EBB1142B5441D7A3703D68FE504133333303062B5441713D0AB76AFE5041295C8F32062B54417B14AEB76CFE504152B81E35072B5441EC51B8CE6DFE5041F6285C5F082B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498794 - 3340292
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000D000000295C8F2276FE5041713D0AA7B42A544148E17AF477FE504133333333B02A5441B81E857B3AFE50410AD7A320B12A54419A9999C90BFE5041AE47E11AB22A5441CDCCCC5C09FE504166666626B92A544148E17A5408FE504100000070BD2A544185EB511807FE504114AE47D1C62A5441713D0AE706FE504166666626CD2A54410AD7A3902BFE504152B81ED5CC2A544185EB51A838FE5041C3F5289CCC2A54410AD7A3006CFE504148E17AD4CB2A5441666666066EFE504185EB5188C62A5441295C8F2276FE5041713D0AA7B42A5441
+</a>
+
+<b>
+0106000000010000000103000000010000003D00000065CD585729FE5041BCD40CDACC2A544165A1DF7415FE5041A01B650DCD2A5441AE47E17A1CFE50419A999919D92A5441000000F020FE50411F85EB01E42A5441CDCCCC8C22FE5041333333E3F42A5441EC51B8BE20FE5041F6285C9FF52A544185EB519822FE504185EB5168032B5441295C8FC226FE5041CDCCCC5C102B5441713D0A8727FE5041B81E85DB112B54411F85EB1128FE50411F85EBB1142B5441D7A3703D68FE504133333303062B5441713D0AB76AFE5041295C8F32062B54417B14AEB76CFE504152B81E35072B5441EC51B8CE6DFE5041F6285C5F082B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>515328 - 1441242
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -222  </desc>
+<a>
+0106000000010000000103000000010000001F000000C3F528CCA9EB5041E17A14FE9E025541E17A14EEA6EB5041F6285CDF9E02554100000040A7EB50419A999969A0025541F6285C7FA7EB504133333353A50255419A9999D9A7EB50418FC2F528AA0255418FC2F518A8EB5041EC51B8FEAE02554152B81E15A8EB5041713D0AF7B30255417B14AEF7A7EB50413D0AD763B9025541000000B0A7EB5041F6285C4FBE0255419A999999A7EB504185EB51F8C3025541F6285C7FA7EB504133333363C802554148E17A84A7EB50419A9999E9CD025541666666E6A7EB5041A4703D0AD3025541CDCCCC4CA8EB5041713D0A87D7025541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000028000000000000B0A7EB5041F6285C4FBE0255419A999999A7EB504185EB51F8C3025541F6285C7FA7EB504133333363C802554148E17A84A7EB50419A9999E9CD025541666666E6A7EB5041A4703D0AD3025541BD42A647A8EB50418BE0414DD7025541A4703D7AA8EB5041295C8FD2D8025541F3EE3568ABEB504137DCC5C8D80255414F27B942AEEB5041A6163CAFD80255416A949B6AB1EB5041A3CD0093D8025541EA6DB7AFB4EB5041FFDD45EDD7025541C85650AFB4EB5041B736F4E6D70255418518F9ADB4EB504155072DE7D70255414BF9F71DB4EB50414C5F9BFCD2025541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>515328 - 3569705
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -222  </desc>
+<a>
+0106000000010000000103000000010000001F000000C3F528CCA9EB5041E17A14FE9E025541E17A14EEA6EB5041F6285CDF9E02554100000040A7EB50419A999969A0025541F6285C7FA7EB504133333353A50255419A9999D9A7EB50418FC2F528AA0255418FC2F518A8EB5041EC51B8FEAE02554152B81E15A8EB5041713D0AF7B30255417B14AEF7A7EB50413D0AD763B9025541000000B0A7EB5041F6285C4FBE0255419A999999A7EB504185EB51F8C3025541F6285C7FA7EB504133333363C802554148E17A84A7EB50419A9999E9CD025541666666E6A7EB5041A4703D0AD3025541CDCCCC4CA8EB5041713D0A87D7025541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000028000000000000B0A7EB5041F6285C4FBE0255419A999999A7EB504185EB51F8C3025541F6285C7FA7EB504133333363C802554148E17A84A7EB50419A9999E9CD025541666666E6A7EB5041A4703D0AD3025541BD42A647A8EB50418BE0414DD7025541A4703D7AA8EB5041295C8FD2D8025541F3EE3568ABEB504137DCC5C8D80255414F27B942AEEB5041A6163CAFD80255416A949B6AB1EB5041A3CD0093D8025541EA6DB7AFB4EB5041FFDD45EDD7025541C85650AFB4EB5041B736F4E6D70255418518F9ADB4EB504155072DE7D70255414BF9F71DB4EB50414C5F9BFCD2025541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900653 - 244137
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000002000000010300000002000000100000003D0AD7235FEA5041C3F5287C152E54418FC2F5B867EA5041C3F528AC202E544114AE47E176EA5041333333C3142E5441B81E856B7BEA5041B81E858B112E5441B81E852B75EA504166666616072E54411F85EBE168EA5041000000D0EE2D5441B81E853B5CEA50410AD7A350EE2D54417B14AE3751EA50418FC2F5E8ED2D5441D7A3703D46EA5041295C8FB2F12D5441333333034EEA5041EC51B8DEFC2D544114AE476150EA5041CDCCCC5CF92D54413333334355EA5041F6285CCFF82D5441F6285CBF58EA504185EB5108FD2D5441713D0A8759EA50413D0AD793012E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000007700000016FBCBF099EA5041A6A71DFBAF2D54412920386098EA5041BADCA2BBAD2D54419A99990990EA5041B81E85FBAE2D544109F6EE8786EA5041CBFBDFA9B02D54410A8D40067CEA504188C7919FB22D544186604F9D7BEA5041B387EBB4B22D54413A73211C7AEA504112054903B32D54410899212C78EA504154673268B32D5441E17A14DE76EA5041C3F528ACB32D5441D7A370ED6EEA5041666666B6B72D5441C3F528DC65EA5041E17A141EC22D5441000000105AEA5041A4703D1ACC2D5441000000405CEA50413D0AD763D12D54419A9999F95BEA50419A999929D52D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900653 - 280150
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000002000000010300000002000000100000003D0AD7235FEA5041C3F5287C152E54418FC2F5B867EA5041C3F528AC202E544114AE47E176EA5041333333C3142E5441B81E856B7BEA5041B81E858B112E5441B81E852B75EA504166666616072E54411F85EBE168EA5041000000D0EE2D5441B81E853B5CEA50410AD7A350EE2D54417B14AE3751EA50418FC2F5E8ED2D5441D7A3703D46EA5041295C8FB2F12D5441333333034EEA5041EC51B8DEFC2D544114AE476150EA5041CDCCCC5CF92D54413333334355EA5041F6285CCFF82D5441F6285CBF58EA504185EB5108FD2D5441713D0A8759EA50413D0AD793012E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000007700000016FBCBF099EA5041A6A71DFBAF2D54412920386098EA5041BADCA2BBAD2D54419A99990990EA5041B81E85FBAE2D544109F6EE8786EA5041CBFBDFA9B02D54410A8D40067CEA504188C7919FB22D544186604F9D7BEA5041B387EBB4B22D54413A73211C7AEA504112054903B32D54410899212C78EA504154673268B32D5441E17A14DE76EA5041C3F528ACB32D5441D7A370ED6EEA5041666666B6B72D5441C3F528DC65EA5041E17A141EC22D5441000000105AEA5041A4703D1ACC2D5441000000405CEA50413D0AD763D12D54419A9999F95BEA50419A999929D52D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911967 - 399949
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000D7000000C3F528BC34E25041E17A140EFDA65441CDCCCC9C24E250418FC2F54800A75441C3F528FC25E2504114AE47D105A754417B14AE1726E250417B14AEA70AA754411F85EB7125E25041666666260DA75441295C8F7222E25041D7A3703D14A754415C8FC21520E250413333333316A7544114AE47911CE25041E17A146E16A754410AD7A3F019E25041E17A145E16A7544185EB51F818E25041A4703DBA17A75441713D0AC71DE25041B81E851B24A7544185EB51B81FE25041EC51B84E26A75441295C8F4223E250410000006028A754411F85EBF126E25041D7A370FD28A75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000076010000C3F528FC25E2504114AE47D105A754410721E6FE25E25041CF48884C06A754419C40E42826E25041619D55BA0AA754412622F61525E25041CA27F91F14A75441917CC84325E250410BDD190116A75441698404213FE25041AD70E8280CA75441AA75091D40E250414845EF2712A75441B91567AD2DE25041DB3860BF1AA754418A41DC3329E25041E6DE09171CA7544112407D0626E2504181448D331CA75441F1C0520324E25041A2B92B8028A754411F85EBF126E25041D7A370FD28A75441B29D92A52EE250412B64936828A754410000006036E25041333333D327A75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911973 - 400097
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+0106000000020000000103000000010000001F000000C3F5281CE7E650418FC2F54821AA5441295C8F02F2E650410AD7A3B027AA544185EB51C8F4E650410AD7A3E029AA5441C3F528FCF7E6504148E17AE42AAA5441C3F5281CFBE650410AD7A3702BAA544185EB5178F9E650410AD7A3502DAA5441EC51B89EFBE650416666661630AA5441295C8F92FDE650410AD7A3C030AA544185EB51B8FFE65041AE47E11A31AA5441F6285CEF00E750411F85EBC131AA544148E17A2403E7504114AE472132AA54416666669603E75041666666362EAA54416666668604E75041AE47E1BA2CAA544148E17AA404E750410AD7A3102CAA5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000AE010000110CCB00A1E65041EEB52E5D2CAA5441A29F656D9FE65041C6DAA5E32CAA5441A4AE92589CE650412D13532C2EAA5441682098459BE65041AC7B7DEC2DAA5441CC6F838D97E650417BAD780F2DAA54411D1FD78097E65041E6A4AF002DAA54410AD7A38097E650410AD7A3002DAA544105175D8097E65041224621002DAA5441E467DB0D97E65041C4FB897A2CAA5441F6AD3AB296E65041B64AE8712CAA5441653CE53D95E65041465D2D602CAA54410B6C210B94E6504193ED34512DAA54419EBE275E92E65041AD8F7D482FAA5441A4703D3A92E65041666666762FAA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911973 - 410318
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000020000000103000000010000001F000000C3F5281CE7E650418FC2F54821AA5441295C8F02F2E650410AD7A3B027AA544185EB51C8F4E650410AD7A3E029AA5441C3F528FCF7E6504148E17AE42AAA5441C3F5281CFBE650410AD7A3702BAA544185EB5178F9E650410AD7A3502DAA5441EC51B89EFBE650416666661630AA5441295C8F92FDE650410AD7A3C030AA544185EB51B8FFE65041AE47E11A31AA5441F6285CEF00E750411F85EBC131AA544148E17A2403E7504114AE472132AA54416666669603E75041666666362EAA54416666668604E75041AE47E1BA2CAA544148E17AA404E750410AD7A3102CAA5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000B4010000E17A149EA1E650418FC2F5382CAA5441E50BCB00A1E65041F8B52E5D2CAA5441A29F656D9FE65041C6DAA5E32CAA5441A4AE92589CE650412D13532C2EAA5441682098459BE65041AC7B7DEC2DAA5441CC6F838D97E650417BAD780F2DAA5441211FD78097E65041E7A4AF002DAA54410AD7A38097E650410AD7A3002DAA544106175D8097E65041214621002DAA5441E567DB0D97E65041C3FB897A2CAA5441F1AD3AB296E65041B74AE8712CAA5441653CE53D95E65041465D2D602CAA54410B6C210B94E6504193ED34512DAA54419FBE275E92E65041AD8F7D482FAA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13600 - 56288
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000002A000000CDCCCC3C0B1F5141C3F5287C672155417B14AEA70A1F5141A4703DAA5C215541A0E0F5AD0B1F514139E2E462572155415DC753A60A1F5141143AB1B556215541A7C9DA5BFD1E5141EAC2332E5C2155419F9825ACFE1E5141E3917E7E5D2155416A9A7C32031F51417347C3335D2155412520463C071F514161E8E95E672155419350DE69041F514102A74D1F69215541093FBDD5011F5141CB8E81886A215541D0AD9D95FF1E51418CE1242068215541A68D170EFB1E51415FB01F4E5F215541C3F5284CF91E514152B81E455D215541CDCCCCCCF31E51418FC2F5A85F215541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000050000000CAAB8744D81E5141CC495BBF6C215541CCED7CF3D41E51417BE4ED516E215541D8E72DC1D31E51412A1C75EB6E215541594BBE96D31E5141BD2CBA006F215541F6577268D31E5141909DEE176F215541BA086A9BD21E51411BD5B27E6F2155417BA66D56D21E5141349446A16F2155413FD0508FD01E5141F29A0DC77021554133333383C81E51410AD7A37077215541F1F8AD5EC91E5141CDE7CC6B78215541CF52E057CD1E514117C05EC774215541B505D5BAD11E5141B3A0A36C712155419AB8C91DD61E5141C47E00806E2155411504C8ACDA1E5141ED88A0C76C215541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899881 - 2048078
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -41  </desc>
+<a>
+01060000000100000001030000000100000035000000E17A141EEFE75041E17A149E77335441713D0AA7F1E7504148E17A3476335441000000E0F5E750413D0AD73374335441295C8F92F7E75041A4703D6A733354413D0AD753F9E750413D0AD7E37133544185EB51C8FBE7504152B81E35703354417B14AEA7F8E750417B14AEE758335441AE47E11AF3E75041666666965833544100000010F3E7504114AE47D1563354415C8FC2E5E9E750417B14AE17553354415C8FC2C5E9E75041E17A142E4B335441E17A14AEF5E75041C3F5284C4B335441E17A14FEF8E7504114AE47F148335441AE47E19AF9E750411F85EB8148335441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000005700000052B81E4594E750413D0AD7E39B3354417B14AE9795E750415C8FC2959F3354419A99990996E75041295C8F02A233544148E17A649BE75041CDCCCC8CA1335441713D0AE79EE75041000000F0A0335441295C8F42A2E75041CDCCCC1CA0335441AE47E14AA5E75041000000509F335441C3F528BCA8E75041A4703D2A9E33544185EB5148A7E75041B81E85EB99335441D7A3701DA5E7504185EB51A8943354417B14AEE7A4E75041C3F528AC903354413D0AD763A5E75041713D0A778E335441AE47E18AA7E75041F6285C5F84335441C3F5286CA9E75041C3F5287C75335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899881 - 4586384
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -41  </desc>
+<a>
+01060000000100000001030000000100000035000000E17A141EEFE75041E17A149E77335441713D0AA7F1E7504148E17A3476335441000000E0F5E750413D0AD73374335441295C8F92F7E75041A4703D6A733354413D0AD753F9E750413D0AD7E37133544185EB51C8FBE7504152B81E35703354417B14AEA7F8E750417B14AEE758335441AE47E11AF3E75041666666965833544100000010F3E7504114AE47D1563354415C8FC2E5E9E750417B14AE17553354415C8FC2C5E9E75041E17A142E4B335441E17A14AEF5E75041C3F5284C4B335441E17A14FEF8E7504114AE47F148335441AE47E19AF9E750411F85EB8148335441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000005700000052B81E4594E750413D0AD7E39B3354417B14AE9795E750415C8FC2959F3354419A99990996E75041295C8F02A233544148E17A649BE75041CDCCCC8CA1335441713D0AE79EE75041000000F0A0335441295C8F42A2E75041CDCCCC1CA0335441AE47E14AA5E75041000000509F335441C3F528BCA8E75041A4703D2A9E33544185EB5148A7E75041B81E85EB99335441D7A3701DA5E7504185EB51A8943354417B14AEE7A4E75041C3F528AC903354413D0AD763A5E75041713D0A778E335441AE47E18AA7E75041F6285C5F84335441C3F5286CA9E75041C3F5287C75335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507883 - 215271
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -56  </desc>
+<a>
+0106000000010000000103000000010000002700000033333383E53A51415C8FC235001255419A999979E33A514166666666FE1155413D0AD763E13A514185EB5168FB1155418FC2F568E13A5141713D0A47FC1155417B14AE57DF3A5141B81E850BFF115541F6285C9FDE3A51419A999939FF115541C3F5283CE73A51417B14AE5708125541E17A145EE83A5141A4703D4A0A125541B81E853BE83A5141000000B00D125541A4703D6AE53A5141D7A3706D141255419A999949E53A5141B81E851B181255413D0AD733E33A5141EC51B80E1A1255410AD7A3A0E33A51417B14AEE71D1255411F85EBD1E83A5141000000902C125541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000CDCCCCFCEC3A51413D0AD753061255413E61C7E9EB3A5141ED310DC9041255411B08CFD1EA3A5141174CF65803125541523CB5A0EA3A514127CFE81A0312554133333383E53A51415C8FC235001255419A999979E33A514166666666FE1155413D0AD763E13A514185EB5168FB1155418FC2F568E13A5141713D0A47FC1155417B14AE57DF3A5141B81E850BFF115541F6285C9FDE3A51419A999939FF115541C3F5283CE73A51417B14AE5708125541E17A145EE83A5141A4703D4A0A125541B81E853BE83A5141000000B00D1255419906BD90E63A51417184F1AC11125541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507883 - 366452
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -56  </desc>
+<a>
+0106000000010000000103000000010000002700000033333383E53A51415C8FC235001255419A999979E33A514166666666FE1155413D0AD763E13A514185EB5168FB1155418FC2F568E13A5141713D0A47FC1155417B14AE57DF3A5141B81E850BFF115541F6285C9FDE3A51419A999939FF115541C3F5283CE73A51417B14AE5708125541E17A145EE83A5141A4703D4A0A125541B81E853BE83A5141000000B00D125541A4703D6AE53A5141D7A3706D141255419A999949E53A5141B81E851B181255413D0AD733E33A5141EC51B80E1A1255410AD7A3A0E33A51417B14AEE71D1255411F85EBD1E83A5141000000902C125541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000CDCCCCFCEC3A51413D0AD753061255413E61C7E9EB3A5141ED310DC9041255411B08CFD1EA3A5141174CF65803125541523CB5A0EA3A514127CFE81A0312554133333383E53A51415C8FC235001255419A999979E33A514166666666FE1155413D0AD763E13A514185EB5168FB1155418FC2F568E13A5141713D0A47FC1155417B14AE57DF3A5141B81E850BFF115541F6285C9FDE3A51419A999939FF115541C3F5283CE73A51417B14AE5708125541E17A145EE83A5141A4703D4A0A125541B81E853BE83A5141000000B00D1255419906BD90E63A51417184F1AC11125541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>520501 - 230678
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000013000000CDCCCC3C286751411F85EB71876D544152B81E45296751419A999909846D5441C3F5288C29675141F6285C8F816D5441713D0A57296751415C8FC2C57E6D544114AE47C1286751411F85EB917C6D5441F6285CFF27675141C3F5289C796D5441CDCCCC2C26675141F6285C9F746D544114AE47F120675141666666F6756D5441000000201C67514133333383776D5441E17A149E176751410AD7A370796D544166666636136751419A9999897C6D54417B14AE170A675141EC51B83E846D544148E17AB40D67514152B81E45896D5441CDCCCCDC1167514114AE47618F6D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B0000008A86F65629675141B58F4C6A836D54416119BE852967514113672639816D5441BD5DA97C29675141598E28BF806D5441A3A453672967514152378DA07F6D54418A074A4829675141E449398E7E6D5441C462AD1429675141FF3FE8CB7D6D544114AE47C1286751411F85EB917C6D5441125C679C28675141879CD2017C6D544155E32E532867514128E3B4E37A6D5441E552051D28675141CFEF0F107A6D5441D020B1BE276751419B0930EB786D54412F2CD8232767514149966D43776D5441D00E93A226675141FC1FAAE1756D5441CDCCCC2C26675141F6285C9F746D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>520501 - 343602
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000013000000CDCCCC3C286751411F85EB71876D544152B81E45296751419A999909846D5441C3F5288C29675141F6285C8F816D5441713D0A57296751415C8FC2C57E6D544114AE47C1286751411F85EB917C6D5441F6285CFF27675141C3F5289C796D5441CDCCCC2C26675141F6285C9F746D544114AE47F120675141666666F6756D5441000000201C67514133333383776D5441E17A149E176751410AD7A370796D544166666636136751419A9999897C6D54417B14AE170A675141EC51B83E846D544148E17AB40D67514152B81E45896D5441CDCCCCDC1167514114AE47618F6D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B0000008A86F65629675141B58F4C6A836D54416119BE852967514113672639816D5441BD5DA97C29675141598E28BF806D5441A3A453672967514152378DA07F6D54418A074A4829675141E449398E7E6D5441C462AD1429675141FF3FE8CB7D6D544114AE47C1286751411F85EB917C6D5441125C679C28675141879CD2017C6D544155E32E532867514128E3B4E37A6D5441E552051D28675141CFEF0F107A6D5441D020B1BE276751419B0930EB786D54412F2CD8232767514149966D43776D5441D00E93A226675141FC1FAAE1756D5441CDCCCC2C26675141F6285C9F746D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>523939 - 263820
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000002000000010300000002000000E9000000B81E855BF7B85041EC51B8DEBB2F5441295C8F42F8B850411F85EBC1BB2F544152B81E35F9B85041EC51B8AEBB2F5441F6285C7F03B95041AE47E1DABA2F544114AE47F113B950410AD7A3E0B82F5441EC51B89E16B950413D0AD793E22F54413D0AD73321B95041D7A3705DE62F5441000000902DB95041F6285CEFF32F5441333333A338B950418FC2F5A8FB2F5441AE47E14A3DB95041295C8F32FF2F5441A4703DCA3EB9504148E17A64FF2F54413333334343B95041EC51B82E02305441B81E854B47B9504114AE47610730544185EB51784BB95041A4703D1A18305441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009900000052B81E9562B950411F85EBB1FD2F54411BB6B1E362B950415517EE8FFD2F5441713D0A0763B950410AD7A380FD2F5441AB21BA0263B95041504D916EFD2F544131D7460263B950410333AE6CFD2F54415992BDFF62B9504183920D62FD2F54419C0F7FF162B95041D59F5D26FD2F54418141D2E862B95041F4CC0302FD2F5441563D61E662B9504193CCC8F7FC2F5441013CF9C962B9504197F7C080FC2F544185EB51F863B95041F6285CBFFC2F544122CA912D65B950417669281DFA2F5441FC4A6BA164B95041C06B6CA7F82F5441AE4CB65564B950419CC589DDF72F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524030 - 2626388
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+010600000001000000010300000002000000A5000000D7A370CDF7AB504100000080C82054418FC2F588F7AB5041295C8FF2CA2054413D0AD7D3F7AB504152B81E55D520544100000030FDAB5041295C8FF2D6205441000000F003AC5041A4703DAAD9205441AE47E1FA09AC5041CDCCCC0CDC20544185EB51580CAC50418FC2F5F8DC205441000000500DAC504152B81EE5DC205441295C8F120EAC5041EC51B87EDC205441AE47E19A0FAC50413D0AD713DB2054410000003016AC5041B81E852BD5205441A4703D3A16AC5041B81E85DBD42054411F85EB1116AC50419A999959D4205441C3F528CC15AC504100000000D4205441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000B4E55A27E1AB5041DE16CC848520544111205694ECAB50416A87CA1F86205441F8625F97ECAB5041B9CCDF1F86205441C54310AEECAB5041CA166F938620544195A25D31F0AB5041AD5DC75D96205441F258C6C7F2AB50413C6005B9A120544162730590F3AB5041E1BB9F93A720544105BDEFEBF3AB504181F5EB12AA205441CB3DBABAF5AB5041FBA75EC9B72054412DD9A4BAF5AB5041B2D34DCAB720544104AC26C8F5AB5041DD74632FB82054410C04B98DF4AB5041F1538EEEC420544142095B76F4AB504198EBCBF3C52054410DA8BE0AF4AB5041B14E4952D0205441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526595 - 187804
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 8  </desc>
+<a>
+01060000000100000001030000000200000048000000E17A14BE26D15041B81E857BAC5154415C8FC22527D150419A999919AC5154417B14AE7727D15041EC51B8CEAB5154418FC2F5F827D15041C3F528ECAB515441EC51B86E28D15041713D0A87AC5154411F85EBB128D150415C8FC225AD515441F6285C3F29D15041666666E6AD515441333333132AD15041C3F528ECAD5154415C8FC2E52AD15041EC51B8BEAD5154410AD7A3F02BD15041A4703D5AAD51544152B81EB52CD1504166666696AD5154415C8FC2B52DD15041B81E855BAE5154418FC2F5282FD15041AE47E18AAF51544148E17AE430D1504100000080B0515441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000081000000A4703D5A58D150415C8FC2B53F515441078CC1A358D15041859A80E93E515441DC8B22B758D1504189F648B13E515441CF0A31BD58D150418401D5A23E515441AE47E1CA58D15041CDCCCC7C3E51544152B81E455BD1504114AE4791385154418FC2F5185DD15041F6285CBF35515441281AF78B5ED150415A57DAF031515441EE4B9E985ED150410E80B7C931515441333333735ED150415C8FC2A52F5154412127290A5ED1504127510CBE2E515441479C25EA5DD1504177F140792E515441890909D25DD1504159E53C422E51544114AE47715DD15041CDCCCC6C2D515441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526595 - 283182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+01060000000100000001030000000200000048000000E17A14BE26D15041B81E857BAC5154415C8FC22527D150419A999919AC5154417B14AE7727D15041EC51B8CEAB5154418FC2F5F827D15041C3F528ECAB515441EC51B86E28D15041713D0A87AC5154411F85EBB128D150415C8FC225AD515441F6285C3F29D15041666666E6AD515441333333132AD15041C3F528ECAD5154415C8FC2E52AD15041EC51B8BEAD5154410AD7A3F02BD15041A4703D5AAD51544152B81EB52CD1504166666696AD5154415C8FC2B52DD15041B81E855BAE5154418FC2F5282FD15041AE47E18AAF51544148E17AE430D1504100000080B0515441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000007F000000A4703D5A58D150415C8FC2B53F515441078CC1A358D15041859A80E93E515441DC8B22B758D1504189F648B13E515441CF0A31BD58D150418401D5A23E515441AE47E1CA58D15041CDCCCC7C3E51544152B81E455BD1504114AE4791385154418FC2F5185DD15041F6285CBF35515441281AF78B5ED150415A57DAF031515441EE4B9E985ED150410680B7C931515441333333735ED150415C8FC2A52F5154411F27290A5ED1504125510CBE2E515441479C25EA5DD1504177F140792E515441890909D25DD1504159E53C422E51544114AE47715DD15041CDCCCC6C2D515441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527413 - 187174
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000010000000103000000020000003D000000AE47E18AF7BC5041F6285CDF57375441AE47E18AEABC50413D0AD76358375441C3F5282CD6BC50418FC2F5285937544148E17AB4D1BC5041713D0A6759375441B81E85EBCFBC5041AE47E19A593754415C8FC2B5C3BC504148E17A545A3754413D0AD743C3BC5041295C8F025D3754415C8FC255C1BC50418FC2F5C85D375441D7A3708DC1BC5041F6285CBF6037544166666696C1BC50410AD7A35064375441F6285C8FC1BC504152B81EE56737544148E17A64C1BC504185EB51386A3754417B14AE67C1BC5041713D0A976B375441C3F528ECC0BC5041C3F528EC6E375441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A4B6CB54CABC50412F8BA2DA9937544164632E6BC6BC5041304CCBDB923754410F90FA26C5BC504113D9EDB39337544185E61DDDC2BC504166A0558693375441EF4BA79DC0BC5041093C5FEC92375441F6285C5FBFBC504114AE472193375441BA4A4872BFBC50419410867A95375441002BF4F5BFBC50417ECCE24996375441CEF49CF4BFBC504114B2338696375441BA95311BC6BC5041CEDAB3209D375441559D8D1BCEBC504192393CB4A537544144E487DCCEBC504124AFA684A637544113FC2839CFBC5041893BE007A7375441EACE7328D0BC5041CBDC44EAA5375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527413 - 393249
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+0106000000010000000103000000020000003D000000AE47E18AF7BC5041F6285CDF57375441AE47E18AEABC50413D0AD76358375441C3F5282CD6BC50418FC2F5285937544148E17AB4D1BC5041713D0A6759375441B81E85EBCFBC5041AE47E19A593754415C8FC2B5C3BC504148E17A545A3754413D0AD743C3BC5041295C8F025D3754415C8FC255C1BC50418FC2F5C85D375441D7A3708DC1BC5041F6285CBF6037544166666696C1BC50410AD7A35064375441F6285C8FC1BC504152B81EE56737544148E17A64C1BC504185EB51386A3754417B14AE67C1BC5041713D0A976B375441C3F528ECC0BC5041C3F528EC6E375441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A4B6CB54CABC50412F8BA2DA9937544164632E6BC6BC5041304CCBDB923754410F90FA26C5BC504113D9EDB39337544185E61DDDC2BC504166A0558693375441EF4BA79DC0BC5041093C5FEC92375441F6285C5FBFBC504114AE472193375441BA4A4872BFBC50419410867A95375441002BF4F5BFBC50417ECCE24996375441CEF49CF4BFBC504114B2338696375441BA95311BC6BC5041CEDAB3209D375441559D8D1BCEBC504192393CB4A537544144E487DCCEBC504124AFA684A637544113FC2839CFBC5041893BE007A7375441EACE7328D0BC5041CBDC44EAA5375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528429 - 3143523
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+010600000001000000010300000001000000160000005C8FC2150D115141A4703DFA73895441295C8F220711514152B81E657F895441666666B60911514148E17A447D895441EC51B8CE0E1151419A99992974895441713D0A671311514152B81E256B8954419A9999D9171151415C8FC265638954413D0AD7F319115141EC51B8BE5E895441EC51B81E1C1151413D0AD7B3598954415C8FC2051F11514185EB51E85389544185EB517822115141295C8F624F895441295C8F52251151415C8FC2C54A895441E17A14AE29115141CDCCCC5C4389544152B81E552D1151415C8FC2953B89544185EB51782A1151418FC2F5983B895441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000CFA860442D1151410A2469B93B89544185EB51782A1151418FC2F5983B8954415C8FC20528115141CDCCCCAC41895441713D0A97241151413D0AD71347895441D7A3707D20115141C3F5281C4D895441AE47E16A1D115141CDCCCC5C5289544114AE47411A115141F6285C0F59895441713D0AB7161151411F85EB3161895441713D0AC710115141AE47E1FA6C8954415C8FC2150D115141A4703DFA73895441295C8F220711514152B81E657F895441666666B60911514148E17A447D895441EC51B8CE0E1151419A999929748954412182B17112115141034B9A066D895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528429 - 3525838
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+010600000001000000010300000001000000160000005C8FC2150D115141A4703DFA73895441295C8F220711514152B81E657F895441666666B60911514148E17A447D895441EC51B8CE0E1151419A99992974895441713D0A671311514152B81E256B8954419A9999D9171151415C8FC265638954413D0AD7F319115141EC51B8BE5E895441EC51B81E1C1151413D0AD7B3598954415C8FC2051F11514185EB51E85389544185EB517822115141295C8F624F895441295C8F52251151415C8FC2C54A895441E17A14AE29115141CDCCCC5C4389544152B81E552D1151415C8FC2953B89544185EB51782A1151418FC2F5983B895441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000CFA860442D1151410A2469B93B89544185EB51782A1151418FC2F5983B8954415C8FC20528115141CDCCCCAC41895441713D0A97241151413D0AD71347895441D7A3707D20115141C3F5281C4D895441AE47E16A1D115141CDCCCC5C5289544114AE47411A115141F6285C0F59895441713D0AB7161151411F85EB3161895441713D0AC710115141AE47E1FA6C8954415C8FC2150D115141A4703DFA73895441295C8F220711514152B81E657F895441666666B60911514148E17A447D895441EC51B8CE0E1151419A999929748954412182B17112115141034B9A066D895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529783 - 990564
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000001700000066666636281651418FC2F5E891695441F6285CCF3E1651419A9999A99569544152B81ED56C165141CDCCCC4C9D69544185EB5118A9165141D7A3704DA769544100000050A916514148E17AF4A0695441AE47E1AAA9165141713D0A77976954415C8FC2A5A91651415C8FC2358E6954419A9999F9A8165141F6285C1F84695441F6285CBFA916514114AE47F17B695441D7A3702DAA165141666666E6736954418FC2F5F8AA1651417B14AEB76A6954415C8FC2F5AA1651413333335361695441666666B6AA1651419A999959616954415C8FC255AA1651410AD7A3905C695441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000390000003F355E2AAA1651413108AC0461695441FA7E6A54A8165141BE9F1AC75F695441CFF7532BA6165141EC51B87E5E6954416891ED24A416514123DBF9765D695441E3A59BACA1165141E17A14AE5C695441B4C8765697165141E17A141E5A6954415A643BA78B165141560E2D7257695441508D97E683165141A8C64BAF556954411058391C691651412DB29D2F4F695441B07268C15D1651414260E5504C6954415A643B7755165141FED478214A6954411F85EB994A1651413108AC4447695441AAF1D24D4616514185EB51504669544181954313411651416DE7FB5145695441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529783 - 3586734
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000001700000066666636281651418FC2F5E891695441F6285CCF3E1651419A9999A99569544152B81ED56C165141CDCCCC4C9D69544185EB5118A9165141D7A3704DA769544100000050A916514148E17AF4A0695441AE47E1AAA9165141713D0A77976954415C8FC2A5A91651415C8FC2358E6954419A9999F9A8165141F6285C1F84695441F6285CBFA916514114AE47F17B695441D7A3702DAA165141666666E6736954418FC2F5F8AA1651417B14AEB76A6954415C8FC2F5AA1651413333335361695441666666B6AA1651419A999959616954415C8FC255AA1651410AD7A3905C695441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000390000003F355E2AAA1651413108AC0461695441FA7E6A54A8165141BE9F1AC75F695441CFF7532BA6165141EC51B87E5E6954416891ED24A416514123DBF9765D695441E3A59BACA1165141E17A14AE5C695441B4C8765697165141E17A141E5A6954415A643BA78B165141560E2D7257695441508D97E683165141A8C64BAF556954411058391C691651412DB29D2F4F695441B07268C15D1651414260E5504C6954415A643B7755165141FED478214A6954411F85EB994A1651413108AC4447695441AAF1D24D4616514185EB51504669544181954313411651416DE7FB5145695441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532559 - 2936634
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -22  </desc>
+<a>
+01060000000100000001030000000100000071000000295C8F12FD2351415C8FC295F0425441295C8FA201245141295C8F82EC4254415C8FC2B50524514166666606E8425441AE47E1BA0A245141333333C3E0425441295C8FA20D24514133333313DC42544148E17A141024514100000070D742544185EB512811245141E17A140ED642544133333313122451417B14AEF7D44254418FC2F5D813245141D7A370FDD3425441295C8F8215245141AE47E1CAD34254410AD7A3F017245141666666C6D34254415C8FC2C52724514185EB5188D642544152B81E152E2451419A999969D74254413D0AD7C33B245141333333B3D9425441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002900000019C29C548724514168DE192CA44254410010C878862451414E2C4550A3425441B3F949E583245141EE0A0F63A44254415A8AE1E380245141EE0A0F63A4425441A7AB10E17A2451417537049AA4425441A7AB10E17A24514154D361D2A7425441E1C18784782451414E2194E6AB425441BBB6C83A77245141476FC6FAAF4254415BA043B76F24514167C8B758B5425441690F90F85E24514119A7885BBB4254410B04BCDE4E24514165B25585C6425441AAE285F14F2451419816FF3CC84254418B8994934A245141584EBAADCE425441F80E665841245141FFE90216C3425441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532559 - 3569065
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -22  </desc>
+<a>
+01060000000100000001030000000100000071000000295C8F12FD2351415C8FC295F0425441295C8FA201245141295C8F82EC4254415C8FC2B50524514166666606E8425441AE47E1BA0A245141333333C3E0425441295C8FA20D24514133333313DC42544148E17A141024514100000070D742544185EB512811245141E17A140ED642544133333313122451417B14AEF7D44254418FC2F5D813245141D7A370FDD3425441295C8F8215245141AE47E1CAD34254410AD7A3F017245141666666C6D34254415C8FC2C52724514185EB5188D642544152B81E152E2451419A999969D74254413D0AD7C33B245141333333B3D9425441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002900000019C29C548724514168DE192CA44254410010C878862451414E2C4550A3425441B3F949E583245141EE0A0F63A44254415A8AE1E380245141EE0A0F63A4425441A7AB10E17A2451417537049AA4425441A7AB10E17A24514154D361D2A7425441E1C18784782451414E2194E6AB425441BBB6C83A77245141476FC6FAAF4254415BA043B76F24514167C8B758B5425441690F90F85E24514119A7885BBB4254410B04BCDE4E24514165B25585C6425441AAE285F14F2451419816FF3CC84254418B8994934A245141584EBAADCE425441F80E665841245141FFE90216C3425441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>533957 - 3096711
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -174  </desc>
+<a>
+0106000000010000000103000000010000000F000000EC51B80E5E275141295C8F325A5B54410AD7A3005B275141C3F5280C485B544114AE47E15A27514133333353475B5441E17A146E57275141666666D6325B5441666666E655275141F6285CBF295B5441666666A642275141295C8F12365B54410AD7A3A0332751410AD7A3B03F5B5441CDCCCCBC3727514166666656585B5441AE47E1AA252751417B14AEC75C5B5441666666E625275141F6285C2F5F5B54419A9999492B275141CDCCCC5C7A5B54411F85EBB1372751410AD7A380725B544148E17AF443275141C3F528BC6A5B5441CDCCCC0C4E27514166666656645B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000CDCCCCBC3727514166666656585B5441B733E6B435275141DD9993284C5B5441BC751AA1342751414C3A7AED4B5B544177615A5B34275141049FF0544A5B544192F5C7E3332751416CAC39054A5B5441F089E59E332751413CE61272495B5441C71DA3F4322751419209EFE1445B5441EA46B9603427514167E88E30445B5441CE8A985234275141B07FD5DB435B5441A6DD65F233275141CD56F09A415B5441EC51B84E3027514114AE47D1415B5441CDCCCC5C2227514148E17AC44A5B54410472035C242751416F578FA8555B5441763A233D2527514155AC104A555B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>533957 - 3442763
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -174  </desc>
+<a>
+0106000000010000000103000000010000000F000000EC51B80E5E275141295C8F325A5B54410AD7A3005B275141C3F5280C485B544114AE47E15A27514133333353475B5441E17A146E57275141666666D6325B5441666666E655275141F6285CBF295B5441666666A642275141295C8F12365B54410AD7A3A0332751410AD7A3B03F5B5441CDCCCCBC3727514166666656585B5441AE47E1AA252751417B14AEC75C5B5441666666E625275141F6285C2F5F5B54419A9999492B275141CDCCCC5C7A5B54411F85EBB1372751410AD7A380725B544148E17AF443275141C3F528BC6A5B5441CDCCCC0C4E27514166666656645B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000CDCCCCBC3727514166666656585B5441B733E6B435275141DD9993284C5B5441BC751AA1342751414C3A7AED4B5B544177615A5B34275141049FF0544A5B544192F5C7E3332751416CAC39054A5B5441F089E59E332751413CE61272495B5441C71DA3F4322751419209EFE1445B5441EA46B9603427514167E88E30445B5441CE8A985234275141B07FD5DB435B5441A6DD65F233275141CD56F09A415B5441EC51B84E3027514114AE47D1415B5441CDCCCC5C2227514148E17AC44A5B54410472035C242751416F578FA8555B5441763A233D2527514155AC104A555B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>626860 - 2133956
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000260000008FC2F518DDFF5041666666167B0B55419A9999B9DDFF5041666666B6790B5541F6285C6FDFFF504133333363780B554133333343E4FF504166666676760B5541713D0A97E3FF5041E17A14BE730B5541E17A145EE2FF5041AE47E1CA720B5541AE47E1FACDFF5041C3F5280C740B5541AE47E1FAC4FF50411F85EBD1740B5541E17A140EBDFF50410AD7A320740B5541D7A3707DB3FF50418FC2F588720B5541D7A3702DA4FF5041C3F528DC700B5541EC51B87E9CFF50417B14AE476F0B5541CDCCCC2C98FF50411F85EB916E0B5541713D0AB796FF5041A4703D8A6E0B5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000000AD7A330A2FF504152B81E25950B5541B81E854BA3FF5041295C8F02960B554185EB51C8A5FF50411F85EB21980B5541EC51B84EA9FF50417B14AE779B0B55417B14AE97AFFF5041CDCCCC8CA10B554133333363B3FF5041000000D09A0B5541666666E6B9FF5041E17A147E8F0B5541E17A14BEB1FF5041A4703DEA880B55417B14AEE7ACFF504166666616850B5541E17A14BEA9FF50417B14AED7820B5541713D0A77A7FF50413D0AD783810B55416348E4B5A8FF50413BAD8BBE7E0B55417418BA36A1FF50419D6E60797A0B5541886625699CFF5041B9128ED5770B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>626860 - 4645918
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000260000008FC2F518DDFF5041666666167B0B55419A9999B9DDFF5041666666B6790B5541F6285C6FDFFF504133333363780B554133333343E4FF504166666676760B5541713D0A97E3FF5041E17A14BE730B5541E17A145EE2FF5041AE47E1CA720B5541AE47E1FACDFF5041C3F5280C740B5541AE47E1FAC4FF50411F85EBD1740B5541E17A140EBDFF50410AD7A320740B5541D7A3707DB3FF50418FC2F588720B5541D7A3702DA4FF5041C3F528DC700B5541EC51B87E9CFF50417B14AE476F0B5541CDCCCC2C98FF50411F85EB916E0B5541713D0AB796FF5041A4703D8A6E0B5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000000AD7A330A2FF504152B81E25950B5541B81E854BA3FF5041295C8F02960B554185EB51C8A5FF50411F85EB21980B5541EC51B84EA9FF50417B14AE779B0B55417B14AE97AFFF5041CDCCCC8CA10B554133333363B3FF5041000000D09A0B5541666666E6B9FF5041E17A147E8F0B5541E17A14BEB1FF5041A4703DEA880B55417B14AEE7ACFF504166666616850B5541E17A14BEA9FF50417B14AED7820B5541713D0A77A7FF50413D0AD783810B55416348E4B5A8FF50413BAD8BBE7E0B55417418BA36A1FF50419D6E60797A0B5541886625699CFF5041B9128ED5770B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>536780 - 998533
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000180000001F85EBF1E75D5141E17A143E8C525441EC51B83EE95D5141B81E85CB8852544166666636E75D5141333333838752544148E17A94E65D5141D7A3701D875254410AD7A3A0DD5D51416666660681525441666666C6D95D51417B14AE677E52544152B81E65D35D51418FC2F5687A525441C3F528CCCC5D5141CDCCCC6C78525441C3F5286CCB5D51417B14AE977B525441C3F5284CC75D51413D0AD713815254413D0AD7A3C05D514185EB5148865254411F85EB91B85D5141AE47E14A8B525441333333E3B05D514148E17A4490525441713D0A87B65D514185EB51A894525441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006500000016B2535ECB5D514174E312AA7B52544160250BC6CC5D5141863A8978785254418F9C7780CA5D514123BE68FD7B5254419A60D256C75D514132F686168052544130D5E4B0C55D5141861343D381525441A531EF0EC15D514165E1B61385525441CAFE84B6BB5D51415A1D5C3D885254416B37F2E6B65D5141DEA4C2D28A52544141DA09F0B25D5141EC77EAD38C525441AD0DC35FAF5D51417A28A2578E5254417EA31887AE5D5141132BFCB78D52544117A672E7AD5D5141CE5220F68C5254412D14A4D0AD5D5141D57B71E48B52544185EB51F8AE5D5141B81E85BB86525441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>536780 - 3490947
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+010600000001000000010300000001000000180000001F85EBF1E75D5141E17A143E8C525441EC51B83EE95D5141B81E85CB8852544166666636E75D5141333333838752544148E17A94E65D5141D7A3701D875254410AD7A3A0DD5D51416666660681525441666666C6D95D51417B14AE677E52544152B81E65D35D51418FC2F5687A525441C3F528CCCC5D5141CDCCCC6C78525441C3F5286CCB5D51417B14AE977B525441C3F5284CC75D51413D0AD713815254413D0AD7A3C05D514185EB5148865254411F85EB91B85D5141AE47E14A8B525441333333E3B05D514148E17A4490525441713D0A87B65D514185EB51A894525441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006500000016B2535ECB5D514174E312AA7B52544160250BC6CC5D5141863A8978785254418F9C7780CA5D514123BE68FD7B5254419A60D256C75D514132F686168052544130D5E4B0C55D5141861343D381525441A531EF0EC15D514165E1B61385525441CAFE84B6BB5D51415A1D5C3D885254416B37F2E6B65D5141DEA4C2D28A52544141DA09F0B25D5141EC77EAD38C525441AD0DC35FAF5D51417A28A2578E5254417EA31887AE5D5141132BFCB78D52544117A672E7AD5D5141CE5220F68C5254412D14A4D0AD5D5141D57B71E48B52544185EB51F8AE5D5141B81E85BB86525441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537636 - 3153532
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -51  </desc>
+<a>
+0106000000010000000103000000030000002B00000000000050FE5651410AD7A3B03D63544152B81EA5FD565141E17A141E3E635441333333C3FC565141E17A142E3F63544114AE4731FC5651418FC2F5484163544152B81E45FB5651410AD7A3A04563544185EB51F8F95651417B14AE1747635441295C8F22F6565141000000204D6354413D0AD703F7565141295C8F624D635441666666E6F9565141C3F5283C4E635441AE47E1AAFA565141666666764E6354413D0AD713FE5651417B14AE774F635441F6285C3FFE56514114AE47314F63544166666676045751419A99991945635441D7A3709D0657514152B81E753D635441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000FAA2897EF8565141804F100735635441FE06CDE807575141140A494936635441160390D10857514145A7F489306354417A9F30520957514139349A002C635441FB38D5350A575141363A878427635441520CB9750B575141F38E8D89236354418772F9330D575141F4F510FC1D635441E12B9DD9F0565141A192360A16635441E818B681DF565141BE3806F91063544186AF0E7DDC565141C675F38B106354410142BB10E056514177ACDAA61563544118D7853CE356514139677D2D1A63544182A5EF77E556514139470B5D1D635441B5C94B26E75651418C709E1021635441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537636 - 3538595
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -51  </desc>
+<a>
+0106000000010000000103000000030000002B00000000000050FE5651410AD7A3B03D63544152B81EA5FD565141E17A141E3E635441333333C3FC565141E17A142E3F63544114AE4731FC5651418FC2F5484163544152B81E45FB5651410AD7A3A04563544185EB51F8F95651417B14AE1747635441295C8F22F6565141000000204D6354413D0AD703F7565141295C8F624D635441666666E6F9565141C3F5283C4E635441AE47E1AAFA565141666666764E6354413D0AD713FE5651417B14AE774F635441F6285C3FFE56514114AE47314F63544166666676045751419A99991945635441D7A3709D0657514152B81E753D635441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000FAA2897EF8565141804F100735635441FE06CDE807575141140A494936635441160390D10857514145A7F489306354417A9F30520957514139349A002C635441FB38D5350A575141363A878427635441520CB9750B575141F38E8D89236354418772F9330D575141F4F510FC1D635441E12B9DD9F0565141A192360A16635441E818B681DF565141BE3806F91063544186AF0E7DDC565141C675F38B106354410142BB10E056514177ACDAA61563544118D7853CE356514139677D2D1A63544182A5EF77E556514139470B5D1D635441B5C94B26E75651418C709E1021635441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537736 - 1242419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000003B0000005C8FC2B5785D51415C8FC295A96D5441E17A148E785D514148E17AE4AA6D5441000000B0795D51417B14AE97A86D544152B81E757A5D51419A9999D9A66D5441D7A3706D7F5D5141AE47E10A8C6D544148E17A948C5D51417B14AEE7886D5441333333638F5D514152B81EC5886D54411F85EB71935D514114AE4771886D54415C8FC275985D51410AD7A340886D5441B81E850B9E5D514185EB5178886D5441A4703D9AA35D51410AD7A3E0886D5441713D0A57AB5D514152B81E65896D54415C8FC285B45D51413D0AD7A3896D544148E17A84B75D5141713D0AC7896D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000641957F0AD5D5141EB501F68896D5441BBC23029A75D514105D9840F896D5441F6285C6F985D5141EC51B83E886D544166666686905D5141713D0AB7886D544155B80E56875D5141ADAB0F4A896D54413A0A677F865D5141127E9A84896D5441BA04F192825D51412B1E23D28A6D544192A562887F5D51418EE8A7D58B6D5441C5082C437F5D5141F3B54A2B8C6D5441295C8FF27B5D5141EC51B86E9E6D5441A7A750A37B5D514171E8997BA06D5441C3F528AC7A5D51410AD7A3E0A66D54419F56A5B17A5D5141FBE140DDA66D54413D0AD7F37C5D514185EB5178A56D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537736 - 3278201
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000003B0000005C8FC2B5785D51415C8FC295A96D5441E17A148E785D514148E17AE4AA6D5441000000B0795D51417B14AE97A86D544152B81E757A5D51419A9999D9A66D5441D7A3706D7F5D5141AE47E10A8C6D544148E17A948C5D51417B14AEE7886D5441333333638F5D514152B81EC5886D54411F85EB71935D514114AE4771886D54415C8FC275985D51410AD7A340886D5441B81E850B9E5D514185EB5178886D5441A4703D9AA35D51410AD7A3E0886D5441713D0A57AB5D514152B81E65896D54415C8FC285B45D51413D0AD7A3896D544148E17A84B75D5141713D0AC7896D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000641957F0AD5D5141EB501F68896D5441BBC23029A75D514105D9840F896D5441F6285C6F985D5141EC51B83E886D544166666686905D5141713D0AB7886D544155B80E56875D5141ADAB0F4A896D54413A0A677F865D5141127E9A84896D5441BA04F192825D51412B1E23D28A6D544192A562887F5D51418EE8A7D58B6D5441C5082C437F5D5141F3B54A2B8C6D5441295C8FF27B5D5141EC51B86E9E6D5441A7A750A37B5D514171E8997BA06D5441C3F528AC7A5D51410AD7A3E0A66D54419F56A5B17A5D5141FBE140DDA66D54413D0AD7F37C5D514185EB5178A56D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>542277 - 2926261
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+010600000001000000010300000001000000130000003D0AD7933D41514152B81E454AFE5441000000A03B415141F6285CAF53FE54418FC2F5983B415141AE47E10A56FE5441C3F5281C3C4151419A99998958FE544148E17A943D4151411F85EB215AFE544152B81E8540415141333333635BFE5441000000004741514114AE47F15CFE5441CDCCCC9C494151417B14AE6737FE5441666666864C415141E17A148E0DFE544185EB51384B415141713D0AD70BFE5441D7A3705D47415141D7A370AD0AFE5441D7A3701D374151411F85EB110AFE5441E17A142E31415141C3F528BC0AFE5441CDCCCC7C2E4151417B14AE7731FE5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000CE194FD83741514140F1E7180AFE5441D77EDB08344151419862F38945FE54415C8FC2553D4151413D0AD74346FE54413D0AD7A33E41514185EB519847FE54413D0AD7933D41514152B81E454AFE5441000000A03B415141F6285CAF53FE54418FC2F5983B415141AE47E10A56FE5441C3F5281C3C4151419A99998958FE544148E17A943D4151411F85EB215AFE544152B81E8540415141333333635BFE5441000000004741514114AE47F15CFE5441CDCCCC9C494151417B14AE6737FE5441666666864C415141E17A148E0DFE544185EB51384B415141713D0AD70BFE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546469 - 1459050
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -50  </desc>
+<a>
+0106000000010000000103000000010000000F000000333333432EF35041AE47E12A7E41554152B81E6523F35041333333736C415541A4703DAA1DF3504148E17AE470415541E17A148E1BF350419A99996971415541D7A370AD13F35041F6285C3F78415541666666F60EF35041713D0AF77C415541F6285C2F0DF3504185EB51A87E415541295C8FE21BF3504152B81EF58C415541E17A143E1FF35041C3F5285C8A41554185EB51D82CF35041EC51B8EE9A415541B81E852B32F350419A9999E996415541E17A141E33F35041295C8F22964155415C8FC2853AF350417B14AEC790415541B81E85DB33F350410000007086415541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000E17A141E33F35041295C8F22964155415C8FC2853AF350417B14AEC790415541B81E85DB33F350410000007086415541333333432EF35041AE47E12A7E41554152B81E6523F35041333333736C415541A4703DAA1DF3504148E17AE470415541E17A148E1BF350419A99996971415541D7A370AD13F35041F6285C3F78415541666666F60EF35041713D0AF77C41554194410F700DF350419CE40A817E4155413B95136B18F350411524C99589415541E461E62919F35041BDAA6A4F8A415541E1041C421CF35041AECE008C8D415541DC8C35A91FF35041B314AEDE8A415541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546469 - 1459053
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -52  </desc>
+<a>
+0106000000010000000103000000010000000F000000333333432EF35041AE47E12A7E41554152B81E6523F35041333333736C415541A4703DAA1DF3504148E17AE470415541E17A148E1BF350419A99996971415541D7A370AD13F35041F6285C3F78415541666666F60EF35041713D0AF77C415541F6285C2F0DF3504185EB51A87E415541295C8FE21BF3504152B81EF58C415541E17A143E1FF35041C3F5285C8A41554185EB51D82CF35041EC51B8EE9A415541B81E852B32F350419A9999E996415541E17A141E33F35041295C8F22964155415C8FC2853AF350417B14AEC790415541B81E85DB33F350410000007086415541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003700000052B81E6523F35041333333736C41554152B81E451CF35041EC51B8CE61415541713D0A1717F3504185EB51A85A415541B81E85DB13F350411F85EBC1564155410000002012F35041C3F528DC57415541D7A3708D0CF35041CDCCCC2C54415541713D0AF704F35041666666365F415541333333F302F35041295C8FC2664155417B14AE27FBF25041713D0A677141554133333373F7F2504114AE47317541554100000030F5F250417B14AEA77741554152B81EF5F5F2504152B81EF582415541AE47E14AF7F25041F6285C6F9041554148E17A64F6F25041295C8F4295415541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546469 - 3466023
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -50  </desc>
+<a>
+0106000000010000000103000000010000000F000000333333432EF35041AE47E12A7E41554152B81E6523F35041333333736C415541A4703DAA1DF3504148E17AE470415541E17A148E1BF350419A99996971415541D7A370AD13F35041F6285C3F78415541666666F60EF35041713D0AF77C415541F6285C2F0DF3504185EB51A87E415541295C8FE21BF3504152B81EF58C415541E17A143E1FF35041C3F5285C8A41554185EB51D82CF35041EC51B8EE9A415541B81E852B32F350419A9999E996415541E17A141E33F35041295C8F22964155415C8FC2853AF350417B14AEC790415541B81E85DB33F350410000007086415541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000E17A141E33F35041295C8F22964155415C8FC2853AF350417B14AEC790415541B81E85DB33F350410000007086415541333333432EF35041AE47E12A7E41554152B81E6523F35041333333736C415541A4703DAA1DF3504148E17AE470415541E17A148E1BF350419A99996971415541D7A370AD13F35041F6285C3F78415541666666F60EF35041713D0AF77C41554194410F700DF350419CE40A817E4155413B95136B18F350411524C99589415541E461E62919F35041BDAA6A4F8A415541E1041C421CF35041AECE008C8D415541DC8C35A91FF35041B314AEDE8A415541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546469 - 3467213
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -52  </desc>
+<a>
+0106000000010000000103000000010000000F000000333333432EF35041AE47E12A7E41554152B81E6523F35041333333736C415541A4703DAA1DF3504148E17AE470415541E17A148E1BF350419A99996971415541D7A370AD13F35041F6285C3F78415541666666F60EF35041713D0AF77C415541F6285C2F0DF3504185EB51A87E415541295C8FE21BF3504152B81EF58C415541E17A143E1FF35041C3F5285C8A41554185EB51D82CF35041EC51B8EE9A415541B81E852B32F350419A9999E996415541E17A141E33F35041295C8F22964155415C8FC2853AF350417B14AEC790415541B81E85DB33F350410000007086415541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003700000052B81E6523F35041333333736C41554152B81E451CF35041EC51B8CE61415541713D0A1717F3504185EB51A85A415541B81E85DB13F350411F85EBC1564155410000002012F35041C3F528DC57415541D7A3708D0CF35041CDCCCC2C54415541713D0AF704F35041666666365F415541333333F302F35041295C8FC2664155417B14AE27FBF25041713D0A677141554133333373F7F2504114AE47317541554100000030F5F250417B14AEA77741554152B81EF5F5F2504152B81EF582415541AE47E14AF7F25041F6285C6F9041554148E17A64F6F25041295C8F4295415541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546931 - 3128298
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000001100000085EB5198BA005141C3F528CC115255419A999909BE005141B81E851B1352554114AE4791C2005141AE47E19A14525541F6285CDFC60051416666660616525541CDCCCCFCCA005141295C8F4217525541AE47E11ACF005141F6285C7F18525541C3F5287CD20051418FC2F5A819525541D7A3701DD5005141713D0AA71352554114AE4731CF005141C3F5286C125255418FC2F598CA005141295C8F2211525541000000B0C40051413D0AD7130F5255419A9999C9BB005141000000C00B52554185EB5178B30051416666661609525541333333C3B10051413D0AD7D30D525541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000356146D6B1005141EB63E39E0D5255416CDE2251B6005141AC946DF30F525541955DF6BABC00514148FA1DAB12525541B5623C46C70051419F5D9925165255410A1F1289D20051414DCE848B19525541F2108C0CD5005141C7D8A0CD13525541EA179951CF0051412834DF72125255412F2A312DC80051418475CB4A105255419F6BD1E7C2005141FDC948690E5255415AA51430BF005141BBC173050D5255413303F083BB0051418352B3A90B5255417ADA609EB70051416DA35F6A0A525541B59D9E7DB300514119A94A1A09525541356146D6B1005141EB63E39E0D525541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546931 - 3511621
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000001100000085EB5198BA005141C3F528CC115255419A999909BE005141B81E851B1352554114AE4791C2005141AE47E19A14525541F6285CDFC60051416666660616525541CDCCCCFCCA005141295C8F4217525541AE47E11ACF005141F6285C7F18525541C3F5287CD20051418FC2F5A819525541D7A3701DD5005141713D0AA71352554114AE4731CF005141C3F5286C125255418FC2F598CA005141295C8F2211525541000000B0C40051413D0AD7130F5255419A9999C9BB005141000000C00B52554185EB5178B30051416666661609525541333333C3B10051413D0AD7D30D525541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000356146D6B1005141EB63E39E0D5255416CDE2251B6005141AC946DF30F525541955DF6BABC00514148FA1DAB12525541B5623C46C70051419F5D9925165255410A1F1289D20051414DCE848B19525541F2108C0CD5005141C7D8A0CD13525541EA179951CF0051412834DF72125255412F2A312DC80051418475CB4A105255419F6BD1E7C2005141FDC948690E5255415AA51430BF005141BBC173050D5255413303F083BB0051418352B3A90B5255417ADA609EB70051416DA35F6A0A525541B59D9E7DB300514119A94A1A09525541356146D6B1005141EB63E39E0D525541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>548701 - 248871
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000200000001030000000100000010000000A4703D2A4D0C5141CDCCCC0CA72455415C8FC285510C5141C3F528BCAE2455417B14AED7510C514133333343AF24554185EB51085A0C5141CDCCCC1CBD245541713D0AE75B0C51418FC2F508BC245541F6285CFF610C51417B14AE77B924554185EB5198640C514166666646B92455410AD7A300670C5141EC51B84EB924554114AE47016C0C51410AD7A3F0B52455415C8FC2F56D0C5141295C8F42B5245541CDCCCCBC690C5141713D0A57AC245541D7A3700D660C5141000000B0A42455418FC2F568650C51418FC2F578A324554166666686620C514148E17A749D245541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000720000003B586DB1290C51411440CCB577245541B864AC001F0C51415376298F80245541123731531E0C51411ECC503381245541A387185C1E0C514160AFDE368124554191EDB76F1E0C514142FEB33E812455419A230C7A1E0C5141928BD34281245541DE9F88F91E0C5141D2D1B7758124554152B81E851F0C5141D7A370AD812455412AC97E0B220C51411BDCDDC7832455413D0AD733230C5141EC51B8BE84245541D7A3700D220C51410AD7A3D087245541AE47E16A1B0C51419A9999D98B245541333333A31F0C5141CDCCCCEC94245541666666F6210C5141C3F528EC99245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>548701 - 382182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000200000001030000000100000010000000A4703D2A4D0C5141CDCCCC0CA72455415C8FC285510C5141C3F528BCAE2455417B14AED7510C514133333343AF24554185EB51085A0C5141CDCCCC1CBD245541713D0AE75B0C51418FC2F508BC245541F6285CFF610C51417B14AE77B924554185EB5198640C514166666646B92455410AD7A300670C5141EC51B84EB924554114AE47016C0C51410AD7A3F0B52455415C8FC2F56D0C5141295C8F42B5245541CDCCCCBC690C5141713D0A57AC245541D7A3700D660C5141000000B0A42455418FC2F568650C51418FC2F578A324554166666686620C514148E17A749D245541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000720000003B586DB1290C51411440CCB577245541B864AC001F0C51415376298F80245541123731531E0C51411ECC503381245541A387185C1E0C514160AFDE368124554191EDB76F1E0C514142FEB33E812455419A230C7A1E0C5141928BD34281245541DE9F88F91E0C5141D2D1B7758124554152B81E851F0C5141D7A370AD812455412AC97E0B220C51411BDCDDC7832455413D0AD733230C5141EC51B8BE84245541D7A3700D220C51410AD7A3D087245541AE47E16A1B0C51419A9999D98B245541333333A31F0C5141CDCCCCEC94245541666666F6210C5141C3F528EC99245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>551868 - 1470839
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -41  </desc>
+<a>
+010600000001000000010300000001000000280000008FC2F508E8F65041333333639D215541713D0AF7E1F65041000000E0982155418FC2F518DDF6504114AE47E19F215541000000A0D6F65041295C8FB2AA2155413D0AD7F3CFF650413D0AD753B8215541295C8FC2D0F65041D7A3707DB82155415C8FC235D5F650417B14AE87B8215541713D0AD7DDF65041C3F5280CBD2155413D0AD773EBF65041E17A145EC3215541713D0A77F2F65041D7A3703DC621554148E17AF402F75041E17A143ECB215541713D0A3707F7504152B81E65CB215541666666A608F750419A999929D22155413D0AD7830EF7504148E17AB4D4215541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000340000003D0AD7F3CFF650413D0AD753B821554123D55842D5F65041D3175683B8215541778BD98FD7F65041E6BEDBD5B9215541AD115457E8F6504147F98CFFC12155414BA45E94F0F650410724E852C52155419EFBD6D8F2F65041F546183BC6215541AF22AEF0FEF65041EC2A32EFC9215541A706C8A402F7504196566E11CB2155414DB5B82D07F7504190B7D35ECB215541666666A608F750419A999929D22155413D0AD7830EF7504148E17AB4D42155418FC2F57816F75041A4703D9AD8215541333333831EF75041713D0A47DD215541E17A147E20F75041D7A370FDDD215541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>551868 - 3572536
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -41  </desc>
+<a>
+010600000001000000010300000001000000280000008FC2F508E8F65041333333639D215541713D0AF7E1F65041000000E0982155418FC2F518DDF6504114AE47E19F215541000000A0D6F65041295C8FB2AA2155413D0AD7F3CFF650413D0AD753B8215541295C8FC2D0F65041D7A3707DB82155415C8FC235D5F650417B14AE87B8215541713D0AD7DDF65041C3F5280CBD2155413D0AD773EBF65041E17A145EC3215541713D0A77F2F65041D7A3703DC621554148E17AF402F75041E17A143ECB215541713D0A3707F7504152B81E65CB215541666666A608F750419A999929D22155413D0AD7830EF7504148E17AB4D4215541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000340000003D0AD7F3CFF650413D0AD753B821554123D55842D5F65041D3175683B8215541778BD98FD7F65041E6BEDBD5B9215541AD115457E8F6504147F98CFFC12155414BA45E94F0F650410724E852C52155419EFBD6D8F2F65041F546183BC6215541AF22AEF0FEF65041EC2A32EFC9215541A706C8A402F7504196566E11CB2155414DB5B82D07F7504190B7D35ECB215541666666A608F750419A999929D22155413D0AD7830EF7504148E17AB4D42155418FC2F57816F75041A4703D9AD8215541333333831EF75041713D0A47DD215541E17A147E20F75041D7A370FDDD215541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>614349 - 614351
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000000F0000009A9999494BDB5041D7A3700D5F39544185EB51B84ADB5041666666E65F395441295C8F923CDB5041AE47E19A7639544148E17A442EDB5041EC51B88E8D3954415B3E44103EDB5041929F5E3B973954416A16DC183EDB504117C0492D9739544151D8AFE943DB5041067306B69A39544149816FF143DB5041D96573A99A39544152A93B6647DB504191615FC09C39544155EC722B65DB5041FB73E5966C39544162708F7C61DB50418E5222B86A39544131E7527D61DB50416220E5B66A3954413D0AD7135BDB5041713D0A7767395441CDCCCCDC51DB5041D7A3707D62395441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000006200000000000040AADB504148E17A748A3954410AD7A3C0B0DB504114AE47E18539544148E17A84B5DB50416666663677395441CDCCCC8CB8DB5041EC51B87E6C39544152B81E35BADB50419A999969673954411F85EBC1BBDB50415C8FC24560395441AE47E1CABDDB5041AE47E1BA5739544114AE47D1BEDB5041295C8F6252395441333333A3BFDB504185EB51A84D39544114AE4781BCDB50413D0AD7434F3954413080EF77BADB5041103A31F94F395441ADC7C2B8B7DB5041C9CAD42C51395441D20854D5B5DB5041622DADB051395441E7B2FF99B3DB5041835B786052395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>556200 - 1553547
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -39  </desc>
+<a>
+01060000000100000001030000000100000014000000AE47E17A81C150410AD7A36048F35441EC51B86E81C15041EC51B89E49F35441000000307FC15041A4703DEA4CF354417B14AEC785C15041295C8F8254F35441AE47E13A8CC15041CDCCCC7C4DF3544148E17A3493C150411F85EB2146F35441713D0A9794C15041666666A644F35441E17A14BE97C15041EC51B8DE3EF3544148E17AE499C15041C3F5280C3BF354419A9999D99BC150416666664637F35441B81E85FB97C1504185EB51D836F35441F6285C0F93C15041CDCCCC2C36F35441A4703D1A91C15041AE47E19A36F35441666666868FC1504148E17A8438F35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000A4703DA29BC150413D0AD7DB36F354413EA4380394C1504168F90FAA3AF3544110A7695B90C15041FC1D18983EF3544154E3A50391C1504146B6F3BD3EF35441FCA9F12A92C15041250681D540F354415A643B1F91C15041105839F441F35441A69BC42890C15041355EBA5942F35441CBA145AE8FC15041B4C8765E43F354417F6ABC248EC15041BA490C7243F3544139B4C8968DC15041BC74935042F35441A69BC4D08BC150416DE7FB7943F3544139B4C86E89C1504160E5D04A44F35441759318DC86C150416891ED2C45F354412DB29DEF83C15041022B87A646F35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>556200 - 3474378
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -39  </desc>
+<a>
+01060000000100000001030000000100000014000000AE47E17A81C150410AD7A36048F35441EC51B86E81C15041EC51B89E49F35441000000307FC15041A4703DEA4CF354417B14AEC785C15041295C8F8254F35441AE47E13A8CC15041CDCCCC7C4DF3544148E17A3493C150411F85EB2146F35441713D0A9794C15041666666A644F35441E17A14BE97C15041EC51B8DE3EF3544148E17AE499C15041C3F5280C3BF354419A9999D99BC150416666664637F35441B81E85FB97C1504185EB51D836F35441F6285C0F93C15041CDCCCC2C36F35441A4703D1A91C15041AE47E19A36F35441666666868FC1504148E17A8438F35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000A4703DA29BC150413D0AD7DB36F354413EA4380394C1504168F90FAA3AF3544110A7695B90C15041FC1D18983EF3544154E3A50391C1504146B6F3BD3EF35441FCA9F12A92C15041250681D540F354415A643B1F91C15041105839F441F35441A69BC42890C15041355EBA5942F35441CBA145AE8FC15041B4C8765E43F354417F6ABC248EC15041BA490C7243F3544139B4C8968DC15041BC74935042F35441A69BC4D08BC150416DE7FB7943F3544139B4C86E89C1504160E5D04A44F35441759318DC86C150416891ED2C45F354412DB29DEF83C15041022B87A646F35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557085 - 366199
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000005D0000005C8FC24572AC5041333333736DCB5441713D0A7776AC5041EC51B87E75CB5441666666A678AC5041F6285CAF79CB54411F85EB117BAC504148E17A547ECB5441295C8FB287AC50411F85EB1179CB5441666666B68FAC5041D7A3708D76CB54413D0AD7939BAC5041CDCCCC1C74CB5441CDCCCC1C9EAC5041EC51B8CE7ECB5441CDCCCC4CABAC5041000000007ECB544166666666AFAC5041000000407FCB544100000020BCAC50419A9999197DCB5441333333F3C1AC5041000000407BCB544100000070D0AC50417B14AE4774CB5441000000C0DEAC5041000000A06CCB5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000860000000DD6473397AC504139513D0375CB54413D0AD7939BAC5041CDCCCC1C74CB5441280BBA969BAC5041A79BFA2874CB5441E2BBBF969BAC5041719D122974CB54419BF67FA39BAC504162CF472174CB544159D48E999BAC50414C09F7F773CB5441487E2DCC9AAC5041A11B31EE6ECB54419D5EF13C9AAC5041708E44786BCB54412E447F0AC0AC50410C84D1E967CB544191FDA290CFAC5041468F698665CB544128CA9079D7AC50415FBE2D5F61CB544196CE8903DAAC5041BF35648353CB5441DD65F94ADEAC5041609A3B2150CB5441349E8CE4EFAC50414264C90F4ACB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>558036 - 242061
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000B0000000103000000010000002A0000005C8FC26529F050411F85EB4168B8544114AE47012CF0504152B81E756BB85441713D0A9724F0504114AE47B174B854417B14AE072CF05041AE47E12A7BB85441295C8F922CF0504185EB511880B85441713D0A6731F050410000002075B854419A9999A933F05041AE47E1DA6FB8544185EB519834F050413D0AD7036BB85441C3F5284C34F05041EC51B80E66B85441000000A032F0504114AE47D15FB85441F6285C9F2FF050411F85EB115AB854413D0AD7832DF050418FC2F50857B854417B14AE672AF050413D0AD70355B85441A4703DBA26F050418FC2F54854B85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000008A317C24D2EF5041A114EB516BB85441ADC7F1F4D1EF5041583327606BB8544185F1CD3CCBEF5041E68634636DB85441D9A279E4C6EF5041A899E2BA6FB85441C043E0A9C6EF5041EC70F0F56FB85441A4703D5AC3EF5041C3F5284C73B85441C708F672C1EF5041C66F673E74B854412FE1CCFCBEEF50417A0AAF7775B85441030A7DF4AEEF5041184A525879B854415283528DB1EF5041C56F13CA79B85441A770889BB1EF5041319E82CC79B85441B16C2507BBEF504107B723697BB8544110A6703DC0EF5041A03D704D7CB85441292B263AC4EF504100CB1BFA7BB85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>558036 - 362398
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+01060000000B0000000103000000010000002A0000005C8FC26529F050411F85EB4168B8544114AE47012CF0504152B81E756BB85441713D0A9724F0504114AE47B174B854417B14AE072CF05041AE47E12A7BB85441295C8F922CF0504185EB511880B85441713D0A6731F050410000002075B854419A9999A933F05041AE47E1DA6FB8544185EB519834F050413D0AD7036BB85441C3F5284C34F05041EC51B80E66B85441000000A032F0504114AE47D15FB85441F6285C9F2FF050411F85EB115AB854413D0AD7832DF050418FC2F50857B854417B14AE672AF050413D0AD70355B85441A4703DBA26F050418FC2F54854B85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000008A317C24D2EF5041A114EB516BB85441ADC7F1F4D1EF5041583327606BB8544185F1CD3CCBEF5041E68634636DB85441D9A279E4C6EF5041A899E2BA6FB85441C043E0A9C6EF5041EC70F0F56FB85441A4703D5AC3EF5041C3F5284C73B85441C708F672C1EF5041C66F673E74B854412FE1CCFCBEEF50417A0AAF7775B85441030A7DF4AEEF5041184A525879B854415283528DB1EF5041C56F13CA79B85441A770889BB1EF5041319E82CC79B85441B16C2507BBEF504107B723697BB8544110A6703DC0EF5041A03D704D7CB85441292B263AC4EF504100CB1BFA7BB85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>559968 - 217989
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 8  </desc>
+<a>
+0106000000010000000103000000010000007C0000009A999919DFD2504152B81EC527AF544148E17A84E6D25041C3F528AC31AF5441B81E85DBEED250413D0AD7F33EAF54415C8FC2E5F0D25041E17A140E40AF54417B14AE47F2D250419A99994942AF5441CDCCCC9CF4D250413D0AD7D347AF54419A999959F5D25041C3F528DC47AF54410AD7A3D0F6D250410AD7A3304CAF5441E17A146EF6D25041000000904CAF54415C8FC2D5F7D2504114AE478150AF54413D0AD7C3F8D250417B14AEA752AF5441AE47E12AFAD250417B14AE1755AF5441D7A3704DFCD2504152B81E1558AF54411F85EB11FED2504152B81E855AAF5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000780000000EA55E0834D35041469258D591AF5441223E0BD735D350410D2FAD0792AF54416D2D5DEF43D35041822B8FC297AF5441B81E85CB4CD35041C3F5285C9BAF54419A9999C954D350411F85EBB1A2AF5441D019E4285AD35041F75DCD65A9AF5441CEC89A3960D35041B68F09F7B0AF5441BECB9A8961D35041721C51C8B4AF5441D05A7ABC5FD3504111C43DECC0AF5441EC51B84E5FD35041000000D0C3AF5441DDF47E475ED35041DA1B1BAECAAF544102FEE13A5CD35041321C135ED8AF544121C2A4D05AD35041F8D35038E2AF544180CADF395AD350411FDFB719E6AF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>945944 - 3140125
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+010600000001000000010300000001000000190000003D0AD7C348785141E17A146E0A885441D7A3704D4878514114AE470105885441EC51B8FE47785141A4703D4A048854413333336347785141E17A14AE03885441E17A149E467851416666666603885441C3F5284C4278514148E17A84038854410AD7A3C04078514148E17A94038854411F85EBD13D7851413D0AD79303885441B81E85DB3978514166666666038854417B14AE7736785141D7A3700D0388544185EB5128317851410000005002885441CDCCCC5C2B785141CDCCCC9C018854419A99996926785141D7A3702D018854413D0AD7F3237851415C8FC20501885441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000B97BE0BB09785141A188EFE80288544121DC388B0978514186CE3CFD0A8854414730C28F1D785141856415C30A885441C5B9C27C2C7851411EBE06F50A88544117FDEB2A4178514132416D080B885441521E1BC2487851417066BD590A885441FB61BF4A487851414B0405FB04885441BA70AAF747785141F5202843048854419A4763654778514153DD46B0038854413E6B7089467851411F1FF666038854415049352442785141F09E1886038854411144CEFD3D785141279EE09303885441CEF473013A7851417D65196803885441FD377FBC3578514193AE5AF302885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>945944 - 3518542
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+010600000001000000010300000001000000190000003D0AD7C348785141E17A146E0A885441D7A3704D4878514114AE470105885441EC51B8FE47785141A4703D4A048854413333336347785141E17A14AE03885441E17A149E467851416666666603885441C3F5284C4278514148E17A84038854410AD7A3C04078514148E17A94038854411F85EBD13D7851413D0AD79303885441B81E85DB3978514166666666038854417B14AE7736785141D7A3700D0388544185EB5128317851410000005002885441CDCCCC5C2B785141CDCCCC9C018854419A99996926785141D7A3702D018854413D0AD7F3237851415C8FC20501885441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000B97BE0BB09785141A188EFE80288544121DC388B0978514186CE3CFD0A8854414730C28F1D785141856415C30A885441C5B9C27C2C7851411EBE06F50A88544117FDEB2A4178514132416D080B885441521E1BC2487851417066BD590A885441FB61BF4A487851414B0405FB04885441BA70AAF747785141F5202843048854419A4763654778514153DD46B0038854413E6B7089467851411F1FF666038854415049352442785141F09E1886038854411144CEFD3D785141279EE09303885441CEF473013A7851417D65196803885441FD377FBC3578514193AE5AF302885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>563780 - 169592
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000900000014AE47F18D655141000000A087A85441E17A143E8D655141EC51B87E81A854419A9999B98C65514148E17AF47CA85441E17A148E7965514185EB51287FA85441C3F5280C4965514152B81EA585A85441B81E855B4A655141D7A3702D90A854417B14AEC760655141713D0A578DA85441D7A3705D77655141B81E857B8AA8544114AE47F18D655141000000A087A85441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000ED959D92496551417F2D27DE89A854416E51855B4A6551418B796F2D90A8544101EE39705D655141778B4BC38DA854417B14AEC760655141713D0A578DA85441D15C018264655141B8FC4BDE8CA85441E965715D776551419003847B8AA854418BFA35508765514181B7C97688A8544114AE47F18D655141000000A087A854414D7234768D655141B9A7366A83A85441901E143E8D6551416C68B77E81A85441ED5898B98C65514120067BF47CA854417A7A5660786551419595DD787FA85441A404290C49655141F32F1FA585A85441ED959D92496551417F2D27DE89A85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>563780 - 285891
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+0106000000010000000103000000010000000900000014AE47F18D655141000000A087A85441E17A143E8D655141EC51B87E81A854419A9999B98C65514148E17AF47CA85441E17A148E7965514185EB51287FA85441C3F5280C4965514152B81EA585A85441B81E855B4A655141D7A3702D90A854417B14AEC760655141713D0A578DA85441D7A3705D77655141B81E857B8AA8544114AE47F18D655141000000A087A85441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000ED959D92496551417F2D27DE89A854416E51855B4A6551418B796F2D90A8544101EE39705D655141778B4BC38DA854417B14AEC760655141713D0A578DA85441D15C018264655141B8FC4BDE8CA85441E965715D776551419003847B8AA854418BFA35508765514181B7C97688A8544114AE47F18D655141000000A087A854414D7234768D655141B9A7366A83A85441901E143E8D6551416C68B77E81A85441ED5898B98C65514120067BF47CA854417A7A5660786551419595DD787FA85441A404290C49655141F32F1FA585A85441ED959D92496551417F2D27DE89A85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571181 - 343058
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+0106000000010000000103000000010000000A000000295C8F2247535141666666A62B8354417B14AE07495351418FC2F51828835441E17A14AE3C535141A4703D6A1D8354419A9999893C535141AE47E14A1D8354413D0AD79339535141295C8F821E8354410000000038535141D7A3700D1F8354415C8FC20537535141295C8FC21F8354410000004036535141AE47E1EA208354415C8FC2A545535141F6285C6F2E835441295C8F2247535141666666A62B835441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000A69999893C535141B847E14A1D8354413D0AD79339535141295C8F821E8354410000000038535141D7A3700D1F8354415C8FC20537535141295C8FC21F83544108BD4DA236535141C7649557208354410000004036535141AE47E1EA20835441A3BC38F438535141E33A954A23835441BD38AFE03E53514151476E482883544135F244A242535141250C11CA2B835441D8D59FA545535141D6AC3D6F2E8354416907AE07495351410FDBF51828835441E17A14AE3C535141A4703D6A1D835441A69999893C535141B847E14A1D835441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571627 - 53353
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+0106000000010000000103000000010000003F000000EC51B88E42465141C3F528EC6A8F5441000000304A4651411F85EB416C8F5441AE47E1AA56465141D7A370ED6E8F5441295C8FC268465141666666E6728F544114AE476180465141C3F5283C788F5441F6285CCF94465141666666167C8F5441F6285C9FAB4651410AD7A360808F544185EB5178C7465141E17A147E848F5441295C8F12DC465141D7A3709D878F54418FC2F518F1465141B81E851B8B8F5441295C8F82FD4651413D0AD7F38C8F544148E17A5400475141713D0A678B8F54410AD7A32000475141E17A145E8A8F544100000050FF46514152B81EB5898F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000770000007EE01C5FB345514166C0D1B83C8F5441D6F8C78BAA45514168411DC6398F5441B5EF76F0A8455141F4AAD63D398F544129263188A7455141CA7779C6388F54413AD4C80CA3455141EB3EE54C378F5441828B0E589D455141DE65F6C1358F5441F3248FF88C4551413DC9E37D318F5441C5DD975B834551415FC0D20A2F8F54412CAD4F427C45514157F921482D8F5441A304518277455141182285252C8F5441F6285C4F76455141C3F528DC2B8F54418A10F40875455141F318DB812B8F54413AC5F2C474455141A29D0A6F2B8F5441FC33BB1974455141F69AB1702B8F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571627 - 170516
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000003F000000EC51B88E42465141C3F528EC6A8F5441000000304A4651411F85EB416C8F5441AE47E1AA56465141D7A370ED6E8F5441295C8FC268465141666666E6728F544114AE476180465141C3F5283C788F5441F6285CCF94465141666666167C8F5441F6285C9FAB4651410AD7A360808F544185EB5178C7465141E17A147E848F5441295C8F12DC465141D7A3709D878F54418FC2F518F1465141B81E851B8B8F5441295C8F82FD4651413D0AD7F38C8F544148E17A5400475141713D0A678B8F54410AD7A32000475141E17A145E8A8F544100000050FF46514152B81EB5898F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000580000002ED70F1CD04551411D1FB14E4A8F5441E71F9AC9DB4551417361EAB14D8F54415CCCACE7EA455141C5DE13FE518F54416CE07904FB4551418047D693568F54410A779979FD455141CCA4FE2F578F54411BBE7AAF0C465141F6FC26015C8F54413D0AD73311465141F6285C6F5D8F54417B14AE17254651411F85EB91638F5441EC51B8EE3246514114AE47A1678F5441AE764DEF35465141D2188043688F5441ECB5091737465141BF06EB81688F5441378F2A173B46514181959859698F5441EC51B88E42465141C3F528EC6A8F5441000000304A4651411F85EB416C8F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571627 - 389203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000003F000000EC51B88E42465141C3F528EC6A8F5441000000304A4651411F85EB416C8F5441AE47E1AA56465141D7A370ED6E8F5441295C8FC268465141666666E6728F544114AE476180465141C3F5283C788F5441F6285CCF94465141666666167C8F5441F6285C9FAB4651410AD7A360808F544185EB5178C7465141E17A147E848F5441295C8F12DC465141D7A3709D878F54418FC2F518F1465141B81E851B8B8F5441295C8F82FD4651413D0AD7F38C8F544148E17A5400475141713D0A678B8F54410AD7A32000475141E17A145E8A8F544100000050FF46514152B81EB5898F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000580000002ED70F1CD04551411D1FB14E4A8F5441E71F9AC9DB4551417361EAB14D8F54415CCCACE7EA455141C5DE13FE518F54416CE07904FB4551418047D693568F54410A779979FD455141CCA4FE2F578F54411BBE7AAF0C465141F6FC26015C8F54413D0AD73311465141F6285C6F5D8F54417B14AE17254651411F85EB91638F5441EC51B8EE3246514114AE47A1678F5441AE764DEF35465141D2188043688F5441ECB5091737465141BF06EB81688F5441378F2A173B46514181959859698F5441EC51B88E42465141C3F528EC6A8F5441000000304A4651411F85EB416C8F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571829 - 3006808
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+01060000000100000001030000000100000027000000D7A3706D704E5141EC51B82E3189544133333303604E514114AE47914D8954415C8FC2155C4E51413D0AD76355895441B81E85CB494E5141713D0A277489544148E17A343A4E51418FC2F5688E89544152B81EA5254E51417B14AEE7B0895441CDCCCCAC274E51413D0AD7E3B1895441CDCCCC1C424E5141B81E85ABB989544114AE47D14F4E5141E17A140E9E8954419A9999894F4E5141713D0A779A895441000000C04F4E5141E17A14EE96895441CDCCCCEC4F4E5141666666869389544133333303504E5141D7A370CD91895441C3F5289C504E5141F6285C7F8F895441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000067000000E9B89F34824E51410B413C5E3F895441F2566772814E514107D4908140895441575171397F4E514113A585584489544173AE915F7C4E5141D8C8C34749895441626523377C4E514167C1798A4989544103E50A86784E5141C92EE2A14F8954418E5FA3A1774E51418DD0F840518954418D2B3465754E5141C9A7D2545589544199D4D02E754E5141574600B8558954416EDF5B6C744E5141707B86E45689544159BA640F734E514152E3D5FF5889544133E964AE724E51411C6E17C15989544179799F79724E5141904DA22A5A89544116D566D3704E5141559613775D895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571829 - 3823328
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+01060000000100000001030000000100000027000000D7A3706D704E5141EC51B82E3189544133333303604E514114AE47914D8954415C8FC2155C4E51413D0AD76355895441B81E85CB494E5141713D0A277489544148E17A343A4E51418FC2F5688E89544152B81EA5254E51417B14AEE7B0895441CDCCCCAC274E51413D0AD7E3B1895441CDCCCC1C424E5141B81E85ABB989544114AE47D14F4E5141E17A140E9E8954419A9999894F4E5141713D0A779A895441000000C04F4E5141E17A14EE96895441CDCCCCEC4F4E5141666666869389544133333303504E5141D7A370CD91895441C3F5289C504E5141F6285C7F8F895441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000067000000E9B89F34824E51410B413C5E3F895441F2566772814E514107D4908140895441575171397F4E514113A585584489544173AE915F7C4E5141D8C8C34749895441626523377C4E514167C1798A4989544103E50A86784E5141C92EE2A14F8954418E5FA3A1774E51418DD0F840518954418D2B3465754E5141C9A7D2545589544199D4D02E754E5141574600B8558954416EDF5B6C744E5141707B86E45689544159BA640F734E514152E3D5FF5889544133E964AE724E51411C6E17C15989544179799F79724E5141904DA22A5A89544116D566D3704E5141559613775D895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571829 - 432151
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+01060000000100000001030000000100000027000000D7A3706D704E5141EC51B82E3189544133333303604E514114AE47914D8954415C8FC2155C4E51413D0AD76355895441B81E85CB494E5141713D0A277489544148E17A343A4E51418FC2F5688E89544152B81EA5254E51417B14AEE7B0895441CDCCCCAC274E51413D0AD7E3B1895441CDCCCC1C424E5141B81E85ABB989544114AE47D14F4E5141E17A140E9E8954419A9999894F4E5141713D0A779A895441000000C04F4E5141E17A14EE96895441CDCCCCEC4F4E5141666666869389544133333303504E5141D7A370CD91895441C3F5289C504E5141F6285C7F8F895441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000067000000EDB89F34824E51410E413C5E3F895441F1566772814E514103D49081408954415C5171397F4E514110A585584489544173AE915F7C4E5141D8C8C34749895441606523377C4E514162C1798A4989544101E50A86784E5141C92EE2A14F8954418B5FA3A1774E51418CD0F840518954418B2B3465754E5141CDA7D2545589544199D4D02E754E5141574600B8558954416FDF5B6C744E51416F7B86E45689544154BA640F734E514157E3D5FF588954412EE964AE724E51411B6E17C15989544178799F79724E5141934DA22A5A89544116D566D3704E5141559613775D895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>572505 - 2306685
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -27  </desc>
+<a>
+010600000001000000010300000001000000110000009A999989AB7C51410AD7A3F0957454419A9999F9AE7C5141713D0AD79674544185EB51A8BB7C514152B81E359974544148E17A34C67C5141666666769A745441E17A14AECD7C5141EC51B8FE9A745441C3F5286CD17C5141295C8FC2987454417B14AE37CD7C5141713D0A779374544114AE47B1CA7C51410AD7A340927454411F85EB11C87C5141000000808E7454413D0AD753BF7C51415C8FC2358974544114AE47C1BE7C514185EB51188A7454410AD7A330BC7C5141333333438C7454419A9999D9B67C51411F85EB1190745441B81E852BB47C51411F85EBC191745441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004F00000071720595C77C5141E7BE65DE8E74544153B541DBC87C5141B86F6EDF8F745441DD4BF543C97C514107C9C7369074544148493678C97C51419EFF89609074544180F440E0CA7C5141F2B7E67F917454416F266416CD7C5141B2060E67937454412A986A53CD7C5141D850F79993745441B24BF806CF7C51418166A50895745441010F2D3BD07C514100228630967454413CE2FE6DD07C51419F904F61967454413CE2FE6DD07C51416A608FE2967454413CE2FE6DD07C5141A19C2B7297745441806B0325D07C5141B6C4BFC99774544105A662DECF7C5141B0B1801E98745441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>572505 - 2306687
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -27  </desc>
+<a>
+010600000001000000010300000001000000110000009A999989AB7C51410AD7A3F0957454419A9999F9AE7C5141713D0AD79674544185EB51A8BB7C514152B81E359974544148E17A34C67C5141666666769A745441E17A14AECD7C5141EC51B8FE9A745441C3F5286CD17C5141295C8FC2987454417B14AE37CD7C5141713D0A779374544114AE47B1CA7C51410AD7A340927454411F85EB11C87C5141000000808E7454413D0AD753BF7C51415C8FC2358974544114AE47C1BE7C514185EB51188A7454410AD7A330BC7C5141333333438C7454419A9999D9B67C51411F85EB1190745441B81E852BB47C51411F85EBC191745441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000295C8FC2927C5141B81E857B7C7454415C8FC235957C5141E17A14EE84745441E17A14FE8C7C51413D0AD7D3877454413D0AD7A3947C51417B14AEA78C745441295C8F029D7C5141A4703D2A9174544152B81E55A47C5141D7A3700D947454419A999989AB7C51410AD7A3F0957454415C19653BB67C5141B0B1801E98745441F3A80A99BC7C51414E2CC35199745441FF743A7DC17C51417527C1E69974544152D271F3C77C51417A993D969A7454415AD9D50DCC7C5141657BAA799A7454415FF18D2FCE7C51413A4887859974544105A662DECF7C5141B0B1801E98745441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>572505 - 3448789
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -27  </desc>
+<a>
+010600000001000000010300000001000000110000009A999989AB7C51410AD7A3F0957454419A9999F9AE7C5141713D0AD79674544185EB51A8BB7C514152B81E359974544148E17A34C67C5141666666769A745441E17A14AECD7C5141EC51B8FE9A745441C3F5286CD17C5141295C8FC2987454417B14AE37CD7C5141713D0A779374544114AE47B1CA7C51410AD7A340927454411F85EB11C87C5141000000808E7454413D0AD753BF7C51415C8FC2358974544114AE47C1BE7C514185EB51188A7454410AD7A330BC7C5141333333438C7454419A9999D9B67C51411F85EB1190745441B81E852BB47C51411F85EBC191745441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004F00000071720595C77C5141E7BE65DE8E74544153B541DBC87C5141B86F6EDF8F745441DD4BF543C97C514107C9C7369074544148493678C97C51419EFF89609074544180F440E0CA7C5141F2B7E67F917454416F266416CD7C5141B2060E67937454412A986A53CD7C5141D850F79993745441B24BF806CF7C51418166A50895745441010F2D3BD07C514100228630967454413CE2FE6DD07C51419F904F61967454413CE2FE6DD07C51416A608FE2967454413CE2FE6DD07C5141A19C2B7297745441806B0325D07C5141B6C4BFC99774544105A662DECF7C5141B0B1801E98745441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>572505 - 3450838
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -27  </desc>
+<a>
+010600000001000000010300000001000000110000009A999989AB7C51410AD7A3F0957454419A9999F9AE7C5141713D0AD79674544185EB51A8BB7C514152B81E359974544148E17A34C67C5141666666769A745441E17A14AECD7C5141EC51B8FE9A745441C3F5286CD17C5141295C8FC2987454417B14AE37CD7C5141713D0A779374544114AE47B1CA7C51410AD7A340927454411F85EB11C87C5141000000808E7454413D0AD753BF7C51415C8FC2358974544114AE47C1BE7C514185EB51188A7454410AD7A330BC7C5141333333438C7454419A9999D9B67C51411F85EB1190745441B81E852BB47C51411F85EBC191745441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000295C8FC2927C5141B81E857B7C7454415C8FC235957C5141E17A14EE84745441E17A14FE8C7C51413D0AD7D3877454413D0AD7A3947C51417B14AEA78C745441295C8F029D7C5141A4703D2A9174544152B81E55A47C5141D7A3700D947454419A999989AB7C51410AD7A3F0957454415C19653BB67C5141B0B1801E98745441F3A80A99BC7C51414E2CC35199745441FF743A7DC17C51417527C1E69974544152D271F3C77C51417A993D969A7454415AD9D50DCC7C5141657BAA799A7454415FF18D2FCE7C51413A4887859974544105A662DECF7C5141B0B1801E98745441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574365 - 245064
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+0106000000010000000103000000010000000C000000F6285C4F14BC5041B81E854B21265441666666C614BC50410000008022265441CDCCCCEC0EBC50413D0AD7C32D26544114AE475124BC50413333330340265441CDCCCCDC2BBC504185EB51683F26544114AE470125BC50411F85EB0133265441295C8F6222BC504152B81EC52D2654419A9999A91FBC5041666666962726544148E17A541CBC5041F6285CFF1F265441E17A140E18BC5041713D0AB715265441D7A3705D11BC50418FC2F5A819265441F6285C4F14BC5041B81E854B21265441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000666666C614BC50410000008022265441769A03B114BC5041367E2EA922265441A5D213A313BC5041BBEAC36D25265441FDCF0A1E15BC504159EDCCF22326544142F8C69D18BC5041E4DBF7B7202654418620831D1CBC50417F9742E91F26544105E332481CBC50416B07D2E11F265441F4CD3F821BBC5041DA1EB3051E265441E17A140E18BC5041713D0AB715265441483E1DCD15BC504111C9440B1726544178732F3E15BC5041FA468D5F17265441954497FB14BC5041F98D883D182654413B00E22C14BC5041EB46CAE9182654416E30B93B13BC50418EBB56C718265441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574365 - 325892
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -18  </desc>
+<a>
+0106000000010000000103000000010000000C000000F6285C4F14BC5041B81E854B21265441666666C614BC50410000008022265441CDCCCCEC0EBC50413D0AD7C32D26544114AE475124BC50413333330340265441CDCCCCDC2BBC504185EB51683F26544114AE470125BC50411F85EB0133265441295C8F6222BC504152B81EC52D2654419A9999A91FBC5041666666962726544148E17A541CBC5041F6285CFF1F265441E17A140E18BC5041713D0AB715265441D7A3705D11BC50418FC2F5A819265441F6285C4F14BC5041B81E854B21265441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000666666C614BC50410000008022265441769A03B114BC5041367E2EA922265441A5D213A313BC5041BBEAC36D25265441FDCF0A1E15BC504159EDCCF22326544142F8C69D18BC5041E4DBF7B7202654418620831D1CBC50417F9742E91F26544105E332481CBC50416B07D2E11F265441F4CD3F821BBC5041DA1EB3051E265441E17A140E18BC5041713D0AB715265441483E1DCD15BC504111C9440B1726544178732F3E15BC5041FA468D5F17265441954497FB14BC5041F98D883D182654413B00E22C14BC5041EB46CAE9182654416E30B93B13BC50418EBB56C718265441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585595 - 1527178
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001500000052B81EF5C5DF50417B14AE779EED5441EC51B8CECBDF50410AD7A390ABED544133333303E4DF5041A4703DCAA5ED5441D7A3703DE7DF5041CDCCCC3CAEED5441E17A146EF4DF504114AE4721ABED5441A4703DEAFFDF5041F6285CBFA8ED5441295C8F7205E0504148E17A54A8ED544185EB518805E050418FC2F548A7ED5441E17A142E08E05041A4703DDA86ED5441AE47E12A07E050413D0AD72387ED54410AD7A3B0FCDF504114AE47C18AED544133333363F6DF5041A4703DBA8BED5441AE47E17AF3DF5041CDCCCC1C8DED5441E17A149EEEDF504114AE475190ED5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000280000005124AB7F02E05041314E728DA8ED54418F2EFC1501E050414E83BDA8A8ED5441C56EA5F1FEDF5041DAEDEDF2A8ED54414678FF6AFDDF5041869DF743A9ED54411060EC1CF8DF5041453DB15DAAED5441F8D03276EFDF504123DAED4CACED5441E5D48CEBEBDF504115F48722ADED54410A963056E9DF5041942758BEADED544166ECB47CE7DF5041C308E52DAEED5441D7A3703DE7DF5041CDCCCC3CAEED54413915C287E5DF5041DCA43BC3A9ED5441849F385BE5DF5041E305AA4EA9ED5441316D2A71E4DF5041EF130FEAA6ED5441D683131CE4DF5041FB8D590BA6ED5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585595 - 4200595
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001500000052B81EF5C5DF50417B14AE779EED5441EC51B8CECBDF50410AD7A390ABED544133333303E4DF5041A4703DCAA5ED5441D7A3703DE7DF5041CDCCCC3CAEED5441E17A146EF4DF504114AE4721ABED5441A4703DEAFFDF5041F6285CBFA8ED5441295C8F7205E0504148E17A54A8ED544185EB518805E050418FC2F548A7ED5441E17A142E08E05041A4703DDA86ED5441AE47E12A07E050413D0AD72387ED54410AD7A3B0FCDF504114AE47C18AED544133333363F6DF5041A4703DBA8BED5441AE47E17AF3DF5041CDCCCC1C8DED5441E17A149EEEDF504114AE475190ED5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000280000005124AB7F02E05041314E728DA8ED54418F2EFC1501E050414E83BDA8A8ED5441C56EA5F1FEDF5041DAEDEDF2A8ED54414678FF6AFDDF5041869DF743A9ED54411060EC1CF8DF5041453DB15DAAED5441F8D03276EFDF504123DAED4CACED5441E5D48CEBEBDF504115F48722ADED54410A963056E9DF5041942758BEADED544166ECB47CE7DF5041C308E52DAEED5441D7A3703DE7DF5041CDCCCC3CAEED54413915C287E5DF5041DCA43BC3A9ED5441849F385BE5DF5041E305AA4EA9ED5441316D2A71E4DF5041EF130FEAA6ED5441D683131CE4DF5041FB8D590BA6ED5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>591518 - 1824296
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000230000005C8FC2D575C75041D7A3700D473654410AD7A350AAC75041D7A3706D363654410AD7A3C0D3C75041CDCCCC4C293654413D0AD753D5C75041E17A142E26365441295C8F22D3C75041CDCCCCBC1F3654413D0AD7A3CFC75041CDCCCCCC14365441D7A3701DCFC750415C8FC205133654418FC2F568CCC750417B14AED7093654419A999959CBC75041C3F5280C06365441B81E854BC8C7504152B81E65043654413333337380C750415C8FC2251B365441000000A080C75041CDCCCC2C1C3654413D0AD7F37EC750417B14AED71C3654417B14AE1781C7504185EB518822365441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000007000000965CE0EA80C75041F01DDCFF1A3654418DF7D7BB97C750419C4F55CB26365441A7B80DE6CFC75041842EE5CA15365441BCD06358CBC750417364810B063654413C95470DC8C750419F6DBC8504365441A9EBE4F4C0C75041A53F0FB806365441965CE0EA80C75041F01DDCFF1A365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>591518 - 3196606
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000001000000010300000001000000230000005C8FC2D575C75041D7A3700D473654410AD7A350AAC75041D7A3706D363654410AD7A3C0D3C75041CDCCCC4C293654413D0AD753D5C75041E17A142E26365441295C8F22D3C75041CDCCCCBC1F3654413D0AD7A3CFC75041CDCCCCCC14365441D7A3701DCFC750415C8FC205133654418FC2F568CCC750417B14AED7093654419A999959CBC75041C3F5280C06365441B81E854BC8C7504152B81E65043654413333337380C750415C8FC2251B365441000000A080C75041CDCCCC2C1C3654413D0AD7F37EC750417B14AED71C3654417B14AE1781C7504185EB518822365441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000007000000965CE0EA80C75041F01DDCFF1A3654418DF7D7BB97C750419C4F55CB26365441A7B80DE6CFC75041842EE5CA15365441BCD06358CBC750417364810B063654413C95470DC8C750419F6DBC8504365441A9EBE4F4C0C75041A53F0FB806365441965CE0EA80C75041F01DDCFF1A365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>631192 - 64873
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -23  </desc>
+<a>
+010600000001000000010300000001000000480000001F6E78EF2A51514181C78426E879544101431F0E2B5151416D5BC613E8795441943C24AC2A5151411BC3D76AE779544104C137982951514119B91C8FE5795441B050D26729515141279FAB3BE57954415E4B345424515141F5674C9CE9795441A5E145101D515141A558407AEF795441FFC05EC516515141FF2DEB20F4795441200192111551514132601339F57954419C5967F014515141A7F4699CF57954411C990B48155151414D221598F779544172B4547F165151418565B14CFA795441D407311317515141C067E6F7FA795441FF694C9818515141490C6A74FB795441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000A92AD6F71D5151410EC06697027A5441AE47E18A1C515141F6285C8F037A5441EC51B8EE1B51514185EB51A8057A5441E17A140E175151418FC2F548077A54411F85EBA11551514133333333067A5441AE47E13A1151514148E17A14077A5441713D0A670F515141CDCCCCAC067A544185EB51A80E51514133333393047A5441CDCCCC2C0B51514166666636FC7954413D0AD7C3095151417B14AE07FD7954417B14AE970A515141295C8FE2FE795441C3F528EC055151411F85EBE1017A544152B81ED50C515141B81E855B1B7A54413D0AD75314515141E17A14FE367A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>596305 - 1240672
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+0106000000010000000103000000010000003D00000085EB517881595141CDCCCC4CBB7A54413D0AD7C380595141B81E85EBBB7A5441E17A140E8059514152B81E75BC7A54415C8FC2857F59514166666676BC7A54419A9999197F59514152B81E85BC7A54411F85EBB17E59514166666626BD7A54411F85EB217E5951413D0AD793BD7A5441295C8FB27D59514152B81EB5BD7A5441D7A370FD7C595141333333B3BD7A5441666666567C595141D7A370FDBD7A5441666666667B5951411F85EB31BE7A544114AE47517B5951413D0AD7E3BE7A54410AD7A3907A5951410AD7A370BF7A5441A4703DCA79595141D7A3701DC07A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000DFCBD93B8B595141261F19A4B77A544161BE87D98C5951414770A0BCB67A5441AE47E16A8B595141F6285C8FB47A544152B81EE5875951410AD7A320B07A5441F6285C9F86595141D7A3701DAE7A5441295C8F2286595141B81E859BAF7A544179AD30867A595141602E7DD2B67A5441BC008B54745951410B904649B97A5441E4D9D2826D595141B7C2629DBB7A54414294FFC5695951419CF2A97DBD7A5441666666F666595141E17A142EC17A54417B68CB04685951415BD33928C67A54410E71E2376B595141D444C2B1C47A5441F42D79236D59514118DB67ECC37A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>596305 - 3573848
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -17  </desc>
+<a>
+0106000000010000000103000000010000003D00000085EB517881595141CDCCCC4CBB7A54413D0AD7C380595141B81E85EBBB7A5441E17A140E8059514152B81E75BC7A54415C8FC2857F59514166666676BC7A54419A9999197F59514152B81E85BC7A54411F85EBB17E59514166666626BD7A54411F85EB217E5951413D0AD793BD7A5441295C8FB27D59514152B81EB5BD7A5441D7A370FD7C595141333333B3BD7A5441666666567C595141D7A370FDBD7A5441666666667B5951411F85EB31BE7A544114AE47517B5951413D0AD7E3BE7A54410AD7A3907A5951410AD7A370BF7A5441A4703DCA79595141D7A3701DC07A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000DFCBD93B8B595141261F19A4B77A544161BE87D98C5951414770A0BCB67A5441AE47E16A8B595141F6285C8FB47A544152B81EE5875951410AD7A320B07A5441F6285C9F86595141D7A3701DAE7A5441295C8F2286595141B81E859BAF7A544179AD30867A595141602E7DD2B67A5441BC008B54745951410B904649B97A5441E4D9D2826D595141B7C2629DBB7A54414294FFC5695951419CF2A97DBD7A5441666666F666595141E17A142EC17A54417B68CB04685951415BD33928C67A54410E71E2376B595141D444C2B1C47A5441F42D79236D59514118DB67ECC37A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>596455 - 3998640
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -157  </desc>
+<a>
+0106000000010000000103000000010000000E000000D7A3700D7E515141D7A370DDAF7A544114AE47617E515141F6285C2FAA7A54417B14AE477E515141C3F528FCA37A54410AD7A3907C51514166666656A37A5441C3F5282C6F515141295C8F22A47A54418FC2F51861515141295C8F02A47A544148E17A2463515141A4703D8AB17A54418FC2F5A86451514148E17A14BB7A5441D7A370BD6E51514185EB5138BA7A54418FC2F5A879515141D7A3703DB97A544114AE47D17A51514100000070B97A5441E17A144E7D515141B81E85DBB37A5441000000F07D51514166666606B27A5441D7A3700D7E515141D7A370DDAF7A5441
+</a>
+
+<b>
+0106000000010000000103000000010000001700000038F009356551514173618708BB7A5441000000B065515141AE47E13ABE7A5441CDCCCCDC66515141713D0A47C57A54413D0AD76367515141295C8F62CC7A544161E3B97B67515141799914FACE7A54410F9C9AC768515141E93D651FD17A54411E5447D767515141883E995BD37A54417B14AEF767515141C3F528ACD57A5441529CC07E6E5151417E85F338D37A544100C696A86D515141EAC21934D07A5441C887EC5E735151413AD1EC85CC7A544162AB7C9F785151412D175AFDCA7A5441D8FEE3D77B51514196529F1BCA7A5441F44EC9797C515141A701289AC87A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>597524 - 1767955
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001E0000000000000052D55041EC51B8CE097A54415C8FC2E54FD5504100000030057A544185EB51284CD5504152B81E85FB795441A4703D8A4AD55041AE47E18AF779544114AE473144D5504100000040F8795441A4703D2A23D55041F6285C0FF179544114AE472123D550415C8FC275EE795441F6285CDF21D550419A999909EE79544152B81E05FFD4504166666646E279544148E17AF4EDD450411F85EB81DC795441B81E858BE0D45041EC51B8DED97954413D0AD7B3D3D45041B81E854BD77954415C8FC245CDD4504133333323D679544148E17A24C6D4504166666646D5795441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000008C50DE1809D55041A4840CADE579544152B81E05FFD4504166666646E279544148E17AF4EDD450411F85EB81DC795441B81E858BE0D45041EC51B8DED97954413D0AD7B3D3D45041B81E854BD77954415C8FC245CDD4504133333323D679544148E17A24C6D4504166666646D5795441713D0A47BCD45041713D0A97DB79544114AE4701B9D4504148E17A84DD795441EC51B8EEACD45041E17A14BEE37954413D0AD773B4D4504185EB5168E57954417B14AEE7C1D450417B14AEE7E7795441E17A144ED7D45041C3F528FCEB7954418FC2F598DCD45041000000A0ED795441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>597524 - 3288871
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001E0000000000000052D55041EC51B8CE097A54415C8FC2E54FD5504100000030057A544185EB51284CD5504152B81E85FB795441A4703D8A4AD55041AE47E18AF779544114AE473144D5504100000040F8795441A4703D2A23D55041F6285C0FF179544114AE472123D550415C8FC275EE795441F6285CDF21D550419A999909EE79544152B81E05FFD4504166666646E279544148E17AF4EDD450411F85EB81DC795441B81E858BE0D45041EC51B8DED97954413D0AD7B3D3D45041B81E854BD77954415C8FC245CDD4504133333323D679544148E17A24C6D4504166666646D5795441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000008C50DE1809D55041A4840CADE579544152B81E05FFD4504166666646E279544148E17AF4EDD450411F85EB81DC795441B81E858BE0D45041EC51B8DED97954413D0AD7B3D3D45041B81E854BD77954415C8FC245CDD4504133333323D679544148E17A24C6D4504166666646D5795441713D0A47BCD45041713D0A97DB79544114AE4701B9D4504148E17A84DD795441EC51B8EEACD45041E17A14BEE37954413D0AD773B4D4504185EB5168E57954417B14AEE7C1D450417B14AEE7E7795441E17A144ED7D45041C3F528FCEB7954418FC2F598DCD45041000000A0ED795441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>891792 - 405791
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000001600000085EB5138A4EF5041B81E853B0BE2544114AE47C1A3EF5041B81E85CB0AE2544152B81E9598EF50411F85EBD119E2544148E17A348FEF5041EC51B88E26E254415C8FC28584EF50413D0AD74334E25441713D0A7789EF5041F6285CEF37E25441A4703DAA94EF504185EB51D82DE25441D7A3709DA1EF50419A99996921E25441C3F5284CAFEF50416666661614E2544133333343BBEF5041C3F5282C08E2544148E17A04C7EF5041E17A14AEFCE15441AE47E14AD3EF50418FC2F538F0E15441CDCCCC3CE2EF5041D7A370EDE0E154419A999909E3EF50411F85EB41E0E15441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000028000000E17A140ECFEF504185EB5158D1E154411F85EBF1CEEF5041295C8F82D1E154415C8FC245CEEF5041E17A147ED2E1544170A937FFCDEF5041CF6448DBD2E154414EA86DCCCCEF50411DF89E70D4E15441B68A1AFFCBEF504148CEE67FD5E154411E6ED169CBEF5041874E2445D6E15441EAEA894ECBEF5041AB1D2F69D6E15441A6EF4095C4EF504101B1644BDFE15441EF5815E5BAEF50417A2FA520ECE154417B14AE77AEEF5041C3F5281CFDE1544148E17AE4ADEF504152B81EE5FDE15441AB35D332AAEF50416AED17C102E2544152B81E75A7EF5041C3F5285C06E25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>916942 - 293047
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -34  </desc>
+<a>
+01060000000100000001030000000100000016000000AE47E15A7FE35041AE47E12AB7605441C3F5286C6BE35041B81E854BC060544148E17AE466E3504152B81EA5C16054415C8FC23556E35041EC51B8DEC3605441000000704CE3504114AE4761C56054419A99994945E35041C3F528ECC76054419A99997941E350417B14AEB7C86054411F85EB5135E35041713D0A27CF6054410AD7A35030E3504100000060D1605441295C8F122BE350413D0AD713D46054415C8FC29520E35041295C8F42DC6054417B14AE271FE3504100000090DE605441AE47E11A1BE35041E17A143EEA60544148E17A941BE35041EC51B84EEC605441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000001B000000E17A149E40E35041C3F528FCE0605441D7A370ED49E35041713D0A77DA60544114AE4771A6E35041666666B6AB605441C3F528FCA5E350415C8FC2C5AA60544152B81EA59AE35041295C8FA2AB605441666666F696E35041D7A370BDAC605441AE47E11A85E35041D7A3705DB36054413D0AD7E37BE35041AE47E17AB660544148E17A746AE3504100000010BF605441295C8F9266E35041D7A3700DC0605441D7A370CD55E3504185EB51F8C160544152B81EF54BE350418FC2F558C360544185EB514845E35041F6285C2FC56054410AD7A33040E350410AD7A3B0C6605441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>376994 - 377247
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+010600000001000000010300000001000000140000006C5FD7E406315141141EEB53B4E654411F85EBE106315141E17A144EB4E6544103484F55FB305141D6A6FE92C5E65441D7A3700DF230514114AE4771D0E654411F85EB91003151411F85EBA1EEE65441295C8F220F315141C3F528EC0CE754415C8FC27511315141295C8F1208E75441E17A140E16315141CDCCCC1CFFE65441333333931B31514148E17AD4F5E65441A53FDA5023315141E33444FFE4E654410BF7AA01103151410B0659D1BAE65441817AA9C50E31514100AF97FDB7E65441F7FDA7890D3151414CBFA41FB5E6544110AE01950C31514178B38173B3E65441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A03FA7EB0C3151413472230BB4E65441E46A7E4C0D315141EAFD9BB4B4E65441EEC73CA80D31514199BA9C52B5E65441D2E177BB0E315141ADB39FCAB7E65441ED98BEA4143151414A8167F2C4E654419DE5644523315141E7933CE6E4E654418FC2F5B82831514148E17AF4D8E654415C8FC2E5243151411F85EB01D2E65441000000401F315141A4703D5AC7E65441B81E859B1B315141C3F528ECBDE6544185EB517818315141B81E852BB4E65441333333F315315141666666D6A8E6544114AE47E114315141E17A14AEA2E65441AE47E14A103151417B14AE37A6E65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455593 - 1501657
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001700000085EB51A870B2504152B81EC5F7D054411F85EBB17CB25041CDCCCC6CFCD05441295C8FA284B25041295C8F3200D1544114AE47018AB25041295C8F6203D154417B14AE6790B25041AE47E1AA07D1544148E17AB4AEB25041666666A6C7D0544114AE47B1ABB25041C3F528BCC5D054415C8FC2E59CB2504148E17A34D7D054415C8FC20594B25041A4703D5ACFD05441249A545E8DB25041125FBA0DC9D0544100909A9E86B25041AEE3D54FCDD054416268DA9277B25041869FA46DD6D05441850FE50276B25041267C808ED7D0544129811EC271B25041C095FA81DAD05441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000460000001DF21F399BB250417953C20C94D05441E5E1A8DA9CB250412DC69C6794D05441EC3BC0E29CB25041AAF1326894D05441A669FFEC9CB25041AB47886894D05441A769FFEC9CB25041C0F5CF6994D054414DA3A87995B25041474BB16FA2D0544184E4519D90B25041ECF8EDFBABD05441B2F143138EB25041D91A1BD5B2D05441A354960E88B2504122F34E1ABFD05441136353DC86B25041E6EA83B6C1D05441E64323BC86B25041AAA55ACCC1D05441E34AE6B886B250410ECBF4D2C1D05441EFCFBFF075B250413CBA570FCDD0544194803FB06EB25041C744ADA1D1D05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455593 - 5235930
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001700000085EB51A870B2504152B81EC5F7D054411F85EBB17CB25041CDCCCC6CFCD05441295C8FA284B25041295C8F3200D1544114AE47018AB25041295C8F6203D154417B14AE6790B25041AE47E1AA07D1544148E17AB4AEB25041666666A6C7D0544114AE47B1ABB25041C3F528BCC5D054415C8FC2E59CB2504148E17A34D7D054415C8FC20594B25041A4703D5ACFD05441249A545E8DB25041125FBA0DC9D0544100909A9E86B25041AEE3D54FCDD054416268DA9277B25041869FA46DD6D05441850FE50276B25041267C808ED7D0544129811EC271B25041C095FA81DAD05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004600000019F21F399BB250417753C20C94D05441E1E1A8DA9CB250412AC69C6794D05441F03BC0E29CB25041AFF1326894D05441A269FFEC9CB25041AD47886894D05441A269FFEC9CB25041C1F5CF6994D054414DA3A87995B25041474BB16FA2D0544184E4519D90B25041ECF8EDFBABD05441B2F143138EB25041D91A1BD5B2D05441A054960E88B2504122F34E1ABFD05441146353DC86B25041E6EA83B6C1D05441E74323BC86B25041A8A55ACCC1D05441E34AE6B886B250410ECBF4D2C1D05441EFCFBFF075B250413CBA570FCDD0544194803FB06EB25041C744ADA1D1D05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955414 - 112389
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+01060000000100000001030000000100000024000000B0716414EA3F51417703082331EB5441DDE251DFDD3F5141302957112DEB5441C7D9607DDD3F5141228DB24631EB5441B1D06F1BDD3F5141AF95C23A35EB54416FB59CF5DB3F5141118CF06A38EB5441D6C99E6FDA3F51415C457B143CEB5441FEF3B8F5E43F5141DDDF0AF240EB54415DA00FF8E53F514103D505BD41EB544162FA7DBEE83F51418876578A43EB544188EF7889E93F5141599165FB44EB5441AA6C7872EB3F51411272171E48EB5441A6D7DCC5EB3F5141AB097C7C48EB544190FAC69AEC3F5141423E70DD49EB5441DE49646DF03F5141CBC9CC9750EB5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000001F85EBF1DD3F514148E17AF42CEB544148E17A14EA3F5141295C8F2231EB5441295C8F62E93F5141F6285CDF34EB5441295C8F62E93F51415C8FC2853AEB5441CDCCCC0CF13F5141EC51B80E43EB5441A4703D4AF73F514114AE47D14DEB5441B81E856BFA3F51417B14AE0759EB5441A4703DDAFD3F5141F6285CCF69EB5441CDCCCC9C0040514152B81ED569EB54417B14AE77FF3F51417B14AE6764EB5441B81E854B014051413D0AD71364EB544152B81E250740514185EB51E862EB54413D0AD7C309405141713D0AA762EB54410AD7A32007405141666666B659EB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955414 - 1365324
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+01060000000100000001030000000100000024000000B0716414EA3F51417703082331EB5441DDE251DFDD3F5141302957112DEB5441C7D9607DDD3F5141228DB24631EB5441B1D06F1BDD3F5141AF95C23A35EB54416FB59CF5DB3F5141118CF06A38EB5441D6C99E6FDA3F51415C457B143CEB5441FEF3B8F5E43F5141DDDF0AF240EB54415DA00FF8E53F514103D505BD41EB544162FA7DBEE83F51418876578A43EB544188EF7889E93F5141599165FB44EB5441AA6C7872EB3F51411272171E48EB5441A6D7DCC5EB3F5141AB097C7C48EB544190FAC69AEC3F5141423E70DD49EB5441DE49646DF03F5141CBC9CC9750EB5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000001F85EBF1DD3F514148E17AF42CEB544148E17A14EA3F5141295C8F2231EB5441295C8F62E93F5141F6285CDF34EB5441295C8F62E93F51415C8FC2853AEB5441CDCCCC0CF13F5141EC51B80E43EB5441A4703D4AF73F514114AE47D14DEB5441B81E856BFA3F51417B14AE0759EB5441A4703DDAFD3F5141F6285CCF69EB5441CDCCCC9C0040514152B81ED569EB54417B14AE77FF3F51417B14AE6764EB5441B81E854B014051413D0AD71364EB544152B81E250740514185EB51E862EB54413D0AD7C309405141713D0AA762EB54410AD7A32007405141666666B659EB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955414 - 4085105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+01060000000100000001030000000100000024000000B0716414EA3F51417703082331EB5441DDE251DFDD3F5141302957112DEB5441C7D9607DDD3F5141228DB24631EB5441B1D06F1BDD3F5141AF95C23A35EB54416FB59CF5DB3F5141118CF06A38EB5441D6C99E6FDA3F51415C457B143CEB5441FEF3B8F5E43F5141DDDF0AF240EB54415DA00FF8E53F514103D505BD41EB544162FA7DBEE83F51418876578A43EB544188EF7889E93F5141599165FB44EB5441AA6C7872EB3F51411272171E48EB5441A6D7DCC5EB3F5141AB097C7C48EB544190FAC69AEC3F5141423E70DD49EB5441DE49646DF03F5141CBC9CC9750EB5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000001F85EBF1DD3F514148E17AF42CEB544148E17A14EA3F5141295C8F2231EB5441295C8F62E93F5141F6285CDF34EB5441295C8F62E93F51415C8FC2853AEB5441CDCCCC0CF13F5141EC51B80E43EB5441A4703D4AF73F514114AE47D14DEB5441B81E856BFA3F51417B14AE0759EB5441A4703DDAFD3F5141F6285CCF69EB5441CDCCCC9C0040514152B81ED569EB54417B14AE77FF3F51417B14AE6764EB5441B81E854B014051413D0AD71364EB544152B81E250740514185EB51E862EB54413D0AD7C309405141713D0AA762EB54410AD7A32007405141666666B659EB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955414 - 8353
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+01060000000100000001030000000100000024000000B0716414EA3F51417703082331EB5441DDE251DFDD3F5141302957112DEB5441C7D9607DDD3F5141228DB24631EB5441B1D06F1BDD3F5141AF95C23A35EB54416FB59CF5DB3F5141118CF06A38EB5441D6C99E6FDA3F51415C457B143CEB5441FEF3B8F5E43F5141DDDF0AF240EB54415DA00FF8E53F514103D505BD41EB544162FA7DBEE83F51418876578A43EB544188EF7889E93F5141599165FB44EB5441AA6C7872EB3F51411272171E48EB5441A6D7DCC5EB3F5141AB097C7C48EB544190FAC69AEC3F5141423E70DD49EB5441DE49646DF03F5141CBC9CC9750EB5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000000AD7A32007405141666666B659EB54415C8FC26504405141C3F5286C51EB5441B81E858B00405141D7A370DD4AEB5441E17A140EFB3F5141AE47E1FA43EB5441C3F5286CF63F51413D0AD7433FEB5441CDCCCCFCED3F5141CDCCCC2C36EB54415C8FC285F13F51417B14AE672EEB5441AE47E1EAE83F51415C8FC2052BEB54417B14AE57DE3F51413333331329EB54411F85EBF1DD3F514148E17AF42CEB544148E17A14EA3F5141295C8F2231EB5441295C8F62E93F5141F6285CDF34EB5441295C8F62E93F51415C8FC2853AEB5441CDCCCC0CF13F5141EC51B80E43EB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955414 - 107747
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+01060000000100000001030000000100000024000000B0716414EA3F51417703082331EB5441DDE251DFDD3F5141302957112DEB5441C7D9607DDD3F5141228DB24631EB5441B1D06F1BDD3F5141AF95C23A35EB54416FB59CF5DB3F5141118CF06A38EB5441D6C99E6FDA3F51415C457B143CEB5441FEF3B8F5E43F5141DDDF0AF240EB54415DA00FF8E53F514103D505BD41EB544162FA7DBEE83F51418876578A43EB544188EF7889E93F5141599165FB44EB5441AA6C7872EB3F51411272171E48EB5441A6D7DCC5EB3F5141AB097C7C48EB544190FAC69AEC3F5141423E70DD49EB5441DE49646DF03F5141CBC9CC9750EB5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000000AD7A32007405141666666B659EB54415C8FC26504405141C3F5286C51EB5441B81E858B00405141D7A370DD4AEB5441E17A140EFB3F5141AE47E1FA43EB5441C3F5286CF63F51413D0AD7433FEB5441CDCCCCFCED3F5141CDCCCC2C36EB54415C8FC285F13F51417B14AE672EEB5441AE47E1EAE83F51415C8FC2052BEB54417B14AE57DE3F51413333331329EB54411F85EBF1DD3F514148E17AF42CEB544148E17A14EA3F5141295C8F2231EB5441295C8F62E93F5141F6285CDF34EB5441295C8F62E93F51415C8FC2853AEB5441CDCCCC0CF13F5141EC51B80E43EB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955414 - 308776
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+01060000000100000001030000000100000024000000B0716414EA3F51417703082331EB5441DDE251DFDD3F5141302957112DEB5441C7D9607DDD3F5141228DB24631EB5441B1D06F1BDD3F5141AF95C23A35EB54416FB59CF5DB3F5141118CF06A38EB5441D6C99E6FDA3F51415C457B143CEB5441FEF3B8F5E43F5141DDDF0AF240EB54415DA00FF8E53F514103D505BD41EB544162FA7DBEE83F51418876578A43EB544188EF7889E93F5141599165FB44EB5441AA6C7872EB3F51411272171E48EB5441A6D7DCC5EB3F5141AB097C7C48EB544190FAC69AEC3F5141423E70DD49EB5441DE49646DF03F5141CBC9CC9750EB5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000000AD7A32007405141666666B659EB54415C8FC26504405141C3F5286C51EB5441B81E858B00405141D7A370DD4AEB5441E17A140EFB3F5141AE47E1FA43EB5441C3F5286CF63F51413D0AD7433FEB5441CDCCCCFCED3F5141CDCCCC2C36EB54415C8FC285F13F51417B14AE672EEB5441AE47E1EAE83F51415C8FC2052BEB54417B14AE57DE3F51413333331329EB54411F85EBF1DD3F514148E17AF42CEB544148E17A14EA3F5141295C8F2231EB5441295C8F62E93F5141F6285CDF34EB5441295C8F62E93F51415C8FC2853AEB5441CDCCCC0CF13F5141EC51B80E43EB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918799 - 3237526
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000300000001030000000200000026010000CDCCCCFCD59F5041A4703DEAAA1954415C8FC275D69F5041666666D6AB1954410AD7A360DA9F5041713D0AE7B4195441AE47E10ADD9F50418FC2F508BD195441E17A14BEDD9F5041C3F5288CC619544148E17AC4DD9F504166666666C7195441D7A3702DDC9F504114AE47E1CF195441F6285CAFD89F504148E17A34D5195441713D0AA7D69F504148E17A14D91954418FC2F548D39F504152B81EE5E1195441713D0AB7D29F504185EB51E8EA195441C3F528DCD19F50411F85EB21F0195441EC51B86ED09F5041AE47E1AAF2195441C3F5288CD09F50417B14AE07F8195441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000B5010000C879E75025A0504152280C985C195441295C8F5225A05041713D0A175D195441D7A3703D26A0504133333373631954416666668626A0504100000050661954416666668626A050419A99995969195441666666D625A05041000000206B1954410000001024A05041EC51B83E6D19544148E17AD421A050417B14AEE76E195441713D0AA71FA05041295C8F3271195441713D0A971DA050418FC2F5A87319544185EB51881DA05041E17A147E75195441D7A370FD1DA050415C8FC235771954419A9999D91EA050410AD7A38079195441713D0A5720A050419A9999397D195441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>599242 - 145994
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000001D00000000000070C63051415C8FC215196A5441713D0AA7C7305141EC51B8CE136A5441D7A370CDBD3051418FC2F548106A544133333343BD30514166666616F96954419A999949B7305141A4703D0AF769544152B81E35B8305141666666360A6A5441666666F6B73051419A9999590B6A54415C8FC255B73051417B14AE370B6A544185EB5188B7305141A4703D3A0A6A5441CDCCCCBCB6305141D7A3700DF7695441333333D3B63051419A9999C9F569544148E17AD4AD3051413D0AD7F3F269544114AE4791A83051419A9999E9F46954419A999929A9305141EC51B85E096A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000D7A370CDBD3051418FC2F548106A54419BF44FCDBD30514126B07943106A54416A075CCCBD305141D8028B1A106A544119B48FC3BD305141E6DC96A00E6A5441239EC5B0BD3051413E986D790B6A5441273766A4BD3051419A45EB65096A544129103631BD3051415C523C10F9695441658519C1BA3051418BD05D3AF8695441EF50344DB730514166A2790BF7695441595F7951B7305141F77A55AEF76954417438FE61B7305141934B9506F96954411BD65884B7305141AF3882D2FB6954418902058BB73051414800905DFC6954411DD7BFC5B7305141ADF67825016A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>599242 - 341412
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000001D00000000000070C63051415C8FC215196A5441713D0AA7C7305141EC51B8CE136A5441D7A370CDBD3051418FC2F548106A544133333343BD30514166666616F96954419A999949B7305141A4703D0AF769544152B81E35B8305141666666360A6A5441666666F6B73051419A9999590B6A54415C8FC255B73051417B14AE370B6A544185EB5188B7305141A4703D3A0A6A5441CDCCCCBCB6305141D7A3700DF7695441333333D3B63051419A9999C9F569544148E17AD4AD3051413D0AD7F3F269544114AE4791A83051419A9999E9F46954419A999929A9305141EC51B85E096A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000D7A370CDBD3051418FC2F548106A54419BF44FCDBD30514126B07943106A54416A075CCCBD305141D8028B1A106A544119B48FC3BD305141E6DC96A00E6A5441239EC5B0BD3051413E986D790B6A5441273766A4BD3051419A45EB65096A544129103631BD3051415C523C10F9695441658519C1BA3051418BD05D3AF8695441EF50344DB730514166A2790BF7695441595F7951B7305141F77A55AEF76954417438FE61B7305141934B9506F96954411BD65884B7305141AF3882D2FB6954418902058BB73051414800905DFC6954411DD7BFC5B7305141ADF67825016A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>600325 - 1040786
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+0106000000010000000103000000010000000D000000A4703D8A7D2351417B14AE57446C5441F6285C0F7F2351411F85EB11406C544185EB512883235141E17A14AE366C5441C3F528BC8523514114AE4771316C54417B14AE077A235141B81E858B2F6C5441AE47E13A6A2351419A9999992D6C54410AD7A3C06923514185EB5148306C54410AD7A34068235141E17A14BE386C544148E17A0464235141713D0A17386C544114AE47F15E235141F6285C3F376C5441713D0AF75D2351411F85EB11376C5441713D0AC75C235141295C8FE2416C5441A4703D8A7D2351417B14AE57446C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000A4703D8A7D2351417B14AE57446C5441C462996566235141B3AC729C426C5441B02661536223514142A37475426C54417CC36CB060235141AEB4E746426C544148A0DDC85E23514192111A09426C54411456D5FC5C235141D65298E6416C5441CF7212C95C2351413CA10DD0416C5441D16DEBC95C235141298255C8416C544122B5BA625C235141F2E840BB416C544101D5A5845B235141D5EAE043416C5441413121D95A2351419AB81C8C436C5441DBFCB03D5A235141B76C8B3F466C54415C8FC20558235141295C8FF2456C5441EC51B8CE54235141B81E857B456C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>600325 - 3561284
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+0106000000010000000103000000010000000D000000A4703D8A7D2351417B14AE57446C5441F6285C0F7F2351411F85EB11406C544185EB512883235141E17A14AE366C5441C3F528BC8523514114AE4771316C54417B14AE077A235141B81E858B2F6C5441AE47E13A6A2351419A9999992D6C54410AD7A3C06923514185EB5148306C54410AD7A34068235141E17A14BE386C544148E17A0464235141713D0A17386C544114AE47F15E235141F6285C3F376C5441713D0AF75D2351411F85EB11376C5441713D0AC75C235141295C8FE2416C5441A4703D8A7D2351417B14AE57446C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000A4703D8A7D2351417B14AE57446C5441C462996566235141B3AC729C426C5441B02661536223514142A37475426C54417CC36CB060235141AEB4E746426C544148A0DDC85E23514192111A09426C54411456D5FC5C235141D65298E6416C5441CF7212C95C2351413CA10DD0416C5441D16DEBC95C235141298255C8416C544122B5BA625C235141F2E840BB416C544101D5A5845B235141D5EAE043416C5441413121D95A2351419AB81C8C436C5441DBFCB03D5A235141B76C8B3F466C54415C8FC20558235141295C8FF2456C5441EC51B8CE54235141B81E857B456C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>962513 - 321884
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -35  </desc>
+<a>
+0106000000010000000103000000010000001B000000053362C557205141DDBFAFC4FB7F5441DC943B03622051414C97678DFD7F5441ED68A3B7672051416414CEC7FE7F54416E9CC9FD6E2051416AD44583008054417BCF729674205141EC6775D801805441BA04CB8E78205141D5D87FCA02805441809396A07820514199BA77C4F67F54418F24BCB178205141695DC1E0F17F5441809396A078205141CE7FA500F07F544162714B7E782051417C774576EE7F5441E75B004978205141333BDD33EA7F5441EEDD982578205141B067F1CCE17F5441D7BACB0078205141A0832511D97F54416D89DF6873205141C2D1861CD87F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000000AD7A31038205141713D0A37D37F5441EC51B8DE2E2051418FC2F518D57F544148E17A942C205141AE47E13AD57F5441D7A3708D2B205141B81E853BE47F544114AE47312B20514185EB5138ED7F54413D0AD7232B2051415C8FC235F57F5441F6285C0F2B205141E17A142EF97F54413D0AD7F32A205141C3F528CC00805441CDCCCC6C362051418FC2F5F8008054415C8FC2B53C205141CDCCCCAC00805441A4703D0A43205141333333C3FF7F5441D7A3705D48205141713D0A67FE7F54417B14AE774D2051419A999919FD7F544185EB51685220514100000020FC7F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>962513 - 1062375
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -35  </desc>
+<a>
+0106000000010000000103000000010000001B000000053362C557205141DDBFAFC4FB7F5441DC943B03622051414C97678DFD7F5441ED68A3B7672051416414CEC7FE7F54416E9CC9FD6E2051416AD44583008054417BCF729674205141EC6775D801805441BA04CB8E78205141D5D87FCA02805441809396A07820514199BA77C4F67F54418F24BCB178205141695DC1E0F17F5441809396A078205141CE7FA500F07F544162714B7E782051417C774576EE7F5441E75B004978205141333BDD33EA7F5441EEDD982578205141B067F1CCE17F5441D7BACB0078205141A0832511D97F54416D89DF6873205141C2D1861CD87F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000000AD7A31038205141713D0A37D37F5441EC51B8DE2E2051418FC2F518D57F544148E17A942C205141AE47E13AD57F5441D7A3708D2B205141B81E853BE47F544114AE47312B20514185EB5138ED7F54413D0AD7232B2051415C8FC235F57F5441F6285C0F2B205141E17A142EF97F54413D0AD7F32A205141C3F528CC00805441CDCCCC6C362051418FC2F5F8008054415C8FC2B53C205141CDCCCCAC00805441A4703D0A43205141333333C3FF7F5441D7A3705D48205141713D0A67FE7F54417B14AE774D2051419A999919FD7F544185EB51685220514100000020FC7F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>962513 - 3216792
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -35  </desc>
+<a>
+0106000000010000000103000000010000001B000000053362C557205141DDBFAFC4FB7F5441DC943B03622051414C97678DFD7F5441ED68A3B7672051416414CEC7FE7F54416E9CC9FD6E2051416AD44583008054417BCF729674205141EC6775D801805441BA04CB8E78205141D5D87FCA02805441809396A07820514199BA77C4F67F54418F24BCB178205141695DC1E0F17F5441809396A078205141CE7FA500F07F544162714B7E782051417C774576EE7F5441E75B004978205141333BDD33EA7F5441EEDD982578205141B067F1CCE17F5441D7BACB0078205141A0832511D97F54416D89DF6873205141C2D1861CD87F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000000AD7A31038205141713D0A37D37F5441EC51B8DE2E2051418FC2F518D57F544148E17A942C205141AE47E13AD57F5441D7A3708D2B205141B81E853BE47F544114AE47312B20514185EB5138ED7F54413D0AD7232B2051415C8FC235F57F5441F6285C0F2B205141E17A142EF97F54413D0AD7F32A205141C3F528CC00805441CDCCCC6C362051418FC2F5F8008054415C8FC2B53C205141CDCCCCAC00805441A4703D0A43205141333333C3FF7F5441D7A3705D48205141713D0A67FE7F54417B14AE774D2051419A999919FD7F544185EB51685220514100000020FC7F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>954430 - 3566902
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -28  </desc>
+<a>
+0106000000010000000103000000010000002C000000B1F8DD07105A51414C04569FA6865441FC6040C5125A514146C62615A3865441E891719D195A5141A32705629E865441E75950B31D5A51417F51E1939B865441AD66797D1D5A51416C1AE40399865441354C80071E5A514197DCD2AA978654411A559F74205A5141C29EC151968654414CB6C8B0235A5141D369CF6597865441980ED37F245A5141E334DD7998865441FB83BFD82C5A5141545ACBA994865441E7E0DEBA515A5141C32C702A8B86544101967877615A5141FBDEF12381865441023DF6A8685A51415B36E44C7686544186C25EC86C5A5141A5C0D8ED6E865441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000510000000D62DEA7115A5141C524E6D1A3865441D32ACC08105A51416044331DA08654419266EA42115A5141B5E281529F86544180E901AC155A5141AD9341C89C865441453B422A185A5141465D4F3B9F865441E991719D195A5141A72705629E8654410139B8F01B5A5141AB9E42C99C865441A469B7251D5A5141FDB419F59B865441461522521D5A5141E1CDF2A99B865441BE608B341C5A5141CEB896F299865441DA9CDD2B1D5A5141A1D6962198865441EBA27F331E5A51419A26FA669786544132425920205A51419759C72E96865441514AA439225A5141C92F0B2B96865441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>791514 - 1278198
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+010600000001000000010300000001000000170000009A99992953CA5041F6285C5FBB5554415C8FC2054ECA5041AE47E18ABB555441DCAE759F4ACA504194B892D0455554412C38A0AA4FCA50418CF2A1D945555441D7A3707D4ECA50418FC2F5581D5554413D0AD7334DCA50418FC2F5181C555441666666B624CA5041F6285C0F1C55544148E17A5423CA5041D7A3704D1D555441C3F528CC21CA504152B81EB52B555441EC51B87E1CCA50418FC2F5B8605554410000001014CA504166666606B355544152B81EB511CA50419A9999A9CD5554410AD7A3000FCA50417B14AED7E7555441AE47E19A0FCA5041CDCCCCECF0555441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000009A99992953CA5041F6285C5FBB5554411685FE9E4CCA504139A541AFBB5554411ABFDADE47CA504191DB737643555441470F67A74FCA5041A9DDAA6A455554416F79D9B44ECA504185207B661C555441666666B624CA5041F6285C0F1C55544148E17A5423CA5041D7A3704D1D555441C3F528CC21CA504152B81EB52B555441EC51B87E1CCA50418FC2F5B8605554410000001014CA504166666606B355544152B81EB511CA50419A9999A9CD5554410AD7A3000FCA50417B14AED7E7555441AE47E19A0FCA5041CDCCCCECF05554418FC2F5B819CA50413D0AD7831E565441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>791514 - 5255342
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+010600000001000000010300000001000000170000009A99992953CA5041F6285C5FBB5554415C8FC2054ECA5041AE47E18ABB555441DCAE759F4ACA504194B892D0455554412C38A0AA4FCA50418CF2A1D945555441D7A3707D4ECA50418FC2F5581D5554413D0AD7334DCA50418FC2F5181C555441666666B624CA5041F6285C0F1C55544148E17A5423CA5041D7A3704D1D555441C3F528CC21CA504152B81EB52B555441EC51B87E1CCA50418FC2F5B8605554410000001014CA504166666606B355544152B81EB511CA50419A9999A9CD5554410AD7A3000FCA50417B14AED7E7555441AE47E19A0FCA5041CDCCCCECF0555441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000009A99992953CA5041F6285C5FBB5554411685FE9E4CCA504139A541AFBB5554411ABFDADE47CA504191DB737643555441470F67A74FCA5041A9DDAA6A455554416F79D9B44ECA504185207B661C555441666666B624CA5041F6285C0F1C55544148E17A5423CA5041D7A3704D1D555441C3F528CC21CA504152B81EB52B555441EC51B87E1CCA50418FC2F5B8605554410000001014CA504166666606B355544152B81EB511CA50419A9999A9CD5554410AD7A3000FCA50417B14AED7E7555441AE47E19A0FCA5041CDCCCCECF05554418FC2F5B819CA50413D0AD7831E565441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>604163 - 360352
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -11  </desc>
+<a>
+0106000000010000000103000000010000000D0000008FC2F5A869DD5041A4703DCA1D2155413D0AD7D369DD504185EB51481F215541333333B369DD50415C8FC225212155418FC2F52869DD50417B14AED723215541CDCCCC1C67DD5041EC51B8AE2A2155418FC2F56870DD5041B81E85DB2B215541E17A14FE6FDD50417B14AEC72F2155419A9999D96EDD5041295C8F323521554148E17A6472DD50410AD7A3D034215541295C8F0279DD5041000000B01921554152B81EA574DD5041666666261921554114AE476174DD504152B81EF51A2155418FC2F5A869DD5041A4703DCA1D215541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000295C8F0279DD5041000000B019215541560B05B574DD5041329D5B281921554175ACF57D74DD504139C880311A21554114AE476174DD504152B81EF51A215541C4CEA95474DD5041AB2274F81A215541C3A5991B74DD50417D5F1F531B2155415980DCA172DD50413F8CFBD123215541EC496C7C70DD504176EDE3042B21554168CBBD6C70DD504148F540002C215541FFD1874270DD504118A092442D215541E17A14FE6FDD50417B14AEC72F215541BCA2716A6FDD50413175BD83322155419B03F7DF6EDD5041B86CDF3135215541C1905F1771DD504151689BF434215541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607926 - 401649
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000003000000010300000001000000CF00000085EB51786CA7504148E17A34F05355411F85EB516CA75041713D0A37EF5355410000009073A750413D0AD7A3ED535541333333B378A7504148E17A64E75355418FC2F5D86AA750419A9999E9E7535541295C8F4262A7504148E17A34F25355410AD7A3905AA750411F85EBD1FC535541E17A14FE57A75041E17A145EFF535541C3F528CC54A7504152B81E250154554185EB519851A750417B14AE9701545541D7A3707D3EA75041713D0A17FD535541A4703D8A30A75041713D0AB7FF53554114AE47C130A7504166666626045455411F85EBD12FA7504148E17A2408545541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000037000000E651BDF08CA65041C37776E744545541AC4B376A8AA650417DD157094754554110F34B688AA65041966F50344754554109D650638BA65041C7D0CA0A47545541DD6E18228FA65041F941727E455455411FF49DFA91A650414E99B14C445455416389507093A65041F844D1B3435455417D5ECCF2A4A650412FE95E343C545541143B9199A6A65041EF1C2F7F3B5455418865DCEFA8A650411720C2DE3A545541938A1FEFB2A6504141BB182A385455413C65D7F2BDA65041B33F9A2F35545541DA7CCAA0C4A6504171EE32613354554107BCC304D0A650411925484C30545541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607926 - 419809
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000003000000010300000001000000CF00000085EB51786CA7504148E17A34F05355411F85EB516CA75041713D0A37EF5355410000009073A750413D0AD7A3ED535541333333B378A7504148E17A64E75355418FC2F5D86AA750419A9999E9E7535541295C8F4262A7504148E17A34F25355410AD7A3905AA750411F85EBD1FC535541E17A14FE57A75041E17A145EFF535541C3F528CC54A7504152B81E250154554185EB519851A750417B14AE9701545541D7A3707D3EA75041713D0A17FD535541A4703D8A30A75041713D0AB7FF53554114AE47C130A7504166666626045455411F85EBD12FA7504148E17A2408545541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000037000000E651BDF08CA65041C37776E744545541AC4B376A8AA650417DD157094754554110F34B688AA65041966F50344754554109D650638BA65041C7D0CA0A47545541DD6E18228FA65041F941727E455455411FF49DFA91A650414E99B14C445455416389507093A65041F844D1B3435455417D5ECCF2A4A650412FE95E343C545541143B9199A6A65041EF1C2F7F3B5455418865DCEFA8A650411720C2DE3A545541938A1FEFB2A6504141BB182A385455413C65D7F2BDA65041B33F9A2F35545541DA7CCAA0C4A6504171EE32613354554107BCC304D0A650411925484C30545541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607988 - 2916194
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000009C0000007B14AE074CAE50419A999979954F554148E17A3450AE5041713D0A07934F5541000000C053AE50411F85EBF1904F55410000003055AE5041B81E851B904F5541CDCCCC5C5BAE5041CDCCCC7C8C4F55410AD7A3905DAE50411F85EB318B4F55411F85EB3160AE504152B81EA5894F55411F85EBA166AE50417B14AED7854F554148E17AC46CAE5041000000508F4F554114AE47B16FAE504185EB51C8934F55413333336372AE5041C3F528BC974F554148E17A748AAE5041EC51B8AEAB4F55410000002096AE504166666616B94F5541EC51B88E97AE5041295C8F52B64F5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000007FABC6D792AE50411FDEED9E1E4F554170BB00C69DAE50414925A054154F554142A49CD997AE504127DF6D140E4F5541A5BD989690AE5041899C6E9D054F554152B81ED58BAE5041A4703DCA124F5541E34BD4B78AAE5041F65FDF4D144F5541D42CC19A86AE50417B03B7E4194F554107E0DBDF82AE50416D503E131F4F554150E3EA887EAE50410BFD49C3254F554157AEDA5F8FAE5041E9B75DBD1F4F55411792B3D190AE5041CCBAF2F8214F554140D3C0A094AE5041F068128A284F5541EBBB6B5699AE5041298757FA264F554198A116DC92AE504100C6C5C31E4F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607988 - 5286268
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000009C0000007B14AE074CAE50419A999979954F554148E17A3450AE5041713D0A07934F5541000000C053AE50411F85EBF1904F55410000003055AE5041B81E851B904F5541CDCCCC5C5BAE5041CDCCCC7C8C4F55410AD7A3905DAE50411F85EB318B4F55411F85EB3160AE504152B81EA5894F55411F85EBA166AE50417B14AED7854F554148E17AC46CAE5041000000508F4F554114AE47B16FAE504185EB51C8934F55413333336372AE5041C3F528BC974F554148E17A748AAE5041EC51B8AEAB4F55410000002096AE504166666616B94F5541EC51B88E97AE5041295C8F52B64F5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000007FABC6D792AE50411FDEED9E1E4F554170BB00C69DAE50414925A054154F554142A49CD997AE504127DF6D140E4F5541A5BD989690AE5041899C6E9D054F554152B81ED58BAE5041A4703DCA124F5541E34BD4B78AAE5041F65FDF4D144F5541D42CC19A86AE50417B03B7E4194F554107E0DBDF82AE50416D503E131F4F554150E3EA887EAE50410BFD49C3254F554157AEDA5F8FAE5041E9B75DBD1F4F55411792B3D190AE5041CCBAF2F8214F554140D3C0A094AE5041F068128A284F5541EBBB6B5699AE5041298757FA264F554198A116DC92AE504100C6C5C31E4F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608044 - 1637677
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000200000014000000F6285C1FA3A35041A4703D2A9D5755417B14AEB7A0A35041B81E854B9D575541AE47E16A9EA350410AD7A3809D57554185EB51F89CA35041666666D69D575541AE47E16A9BA35041000000909E575541F6285C7F95A35041C3F5284C975755419A99992992A3504114AE47B1985755417B14AEE78EA3504114AE47B19B575541AE47E15A8FA3504114AE47819C5755419A99998991A3504152B81E559B575541295C8F8298A3504185EB5178A55755411F85EB61A5A350410AD7A3E0BD575541333333A3B3A35041713D0A37D657554148E17A04B7A350419A9999E9D3575541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000DC6C7484C4A3504199680F0BC95755410F439B98C2A3504161FFF824C557554123D585CEC2A35041E7F11C96C45755418A731183BFA3504126155F27BE57554137CE7726BCA3504165C0C109B85755415CADE090B9A35041E09F91D2B35755419A999929B9A35041E17A14DEB3575541C96BA190B7A350419440B907B1575541AA93F929B3A35041CFBBB536A9575541A70D9ED7B0A350410E9F1717A5575541B179EADEAFA35041E8DB615DA35755410B40259FADA350414BCBC65E9F5755417F4465BAA7A35041513D19AA98575541377217BAA4A3504115B7DDF99B575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608044 - 5286050
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000200000014000000F6285C1FA3A35041A4703D2A9D5755417B14AEB7A0A35041B81E854B9D575541AE47E16A9EA350410AD7A3809D57554185EB51F89CA35041666666D69D575541AE47E16A9BA35041000000909E575541F6285C7F95A35041C3F5284C975755419A99992992A3504114AE47B1985755417B14AEE78EA3504114AE47B19B575541AE47E15A8FA3504114AE47819C5755419A99998991A3504152B81E559B575541295C8F8298A3504185EB5178A55755411F85EB61A5A350410AD7A3E0BD575541333333A3B3A35041713D0A37D657554148E17A04B7A350419A9999E9D3575541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000DC6C7484C4A3504199680F0BC95755410F439B98C2A3504161FFF824C557554123D585CEC2A35041E7F11C96C45755418A731183BFA3504126155F27BE57554137CE7726BCA3504165C0C109B85755415CADE090B9A35041E09F91D2B35755419A999929B9A35041E17A14DEB3575541C96BA190B7A350419440B907B1575541AA93F929B3A35041CFBBB536A9575541A70D9ED7B0A350410E9F1717A5575541B179EADEAFA35041E8DB615DA35755410B40259FADA350414BCBC65E9F5755417F4465BAA7A35041513D19AA98575541377217BAA4A3504115B7DDF99B575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 201118
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D575541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000007242AD7CFA25041C6A764FCEF5655415DDF8981CFA250411C63C4A6EF56554156A864FECDA250416FFBB725EF5655413CB66BABCCA250415CFA40C6EE565541281670E5CBA25041BD4514EDEE56554189333373CAA2504127B81E65F95655418FC2F5F8C9A25041E5999919FC565541A2F528ECC7A25041F651B84E025755417DE17A74C5A250419947E13A095755417DE17AB4C3A25041AE47E11A0E5755415BC6327EC4A25041EAAF419A0E575541A7DA98FBC5A25041809C82980E57554111F26157C9A250417EB879560E5755415B3D0A07CBA25041B67A148E08575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 253763
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -46  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D575541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000BF6B7BE49CA350415D6447B15357554133B69D6399A350417326B68155575541A884D76299A350415AC81C8255575541D351FE6199A35041B1418D8255575541782A313298A3504163E3EA22565755411F4BB45A98A350415645749C56575541BEA93AEA9BA35041F63039565D575541D584A9AA9CA35041D056D5C25E575541F6285C7F9EA35041B81E856B62575541F6285CAFA1A35041AE47E12A68575541C3F5285CA4A350415C8FC2F56C575541F6285C0FA8A350415C8FC28573575541000000E0ABA350416666662672575541EC51B8CEAFA35041E17A140E70575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 419403
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D575541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000007242AD7CFA25041C6A764FCEF5655415DDF8981CFA250411C63C4A6EF56554156A864FECDA250416FFBB725EF5655413CB66BABCCA250415CFA40C6EE565541281670E5CBA25041BD4514EDEE56554189333373CAA2504127B81E65F95655418FC2F5F8C9A25041E5999919FC565541A2F528ECC7A25041F651B84E025755417DE17A74C5A250419947E13A095755417DE17AB4C3A25041AE47E11A0E5755415BC6327EC4A25041EAAF419A0E575541A7DA98FBC5A25041809C82980E57554111F26157C9A250417EB879560E5755415B3D0A07CBA25041B67A148E08575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608372 - 201065
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+01060000000100000001030000000100000006000000AE47E18A57A45041295C8F72825155415C8FC21557A4504148E17A7486515541C3F5284C58A4504185EB51288651554152B81E555BA4504114AE47216C5155418FC2F5F859A450419A9999796C515541AE47E18A57A45041295C8F7282515541
+</a>
+
+<b>
+0106000000010000000103000000010000000700000098F2E08A57A450417945927282515541D3E8324257A450412B0837EF84515541DC8C0C6E58A45041E4F1B1058551554152B81E555BA4504117AE47216C515541B0C2F5F859A45041BA9999796C515541C447E18A57A45041295C8F728251554198F2E08A57A450417945927282515541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608372 - 419287
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -25  </desc>
+<a>
+01060000000100000001030000000100000006000000AE47E18A57A45041295C8F72825155415C8FC21557A4504148E17A7486515541C3F5284C58A4504185EB51288651554152B81E555BA4504114AE47216C5155418FC2F5F859A450419A9999796C515541AE47E18A57A45041295C8F7282515541
+</a>
+
+<b>
+0106000000010000000103000000010000000700000098F2E08A57A450417945927282515541D3E8324257A450412B0837EF84515541DC8C0C6E58A45041E4F1B1058551554152B81E555BA4504117AE47216C515541B0C2F5F859A45041BA9999796C515541C447E18A57A45041295C8F728251554198F2E08A57A450417945927282515541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200533 - 1095564
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -158  </desc>
+<a>
+0106000000010000000103000000010000000600000014AE47F178195141333333E3C33B54415C8FC2155619514114AE47D1C93B544148E17A9430195141295C8F32D03B5441EC694947341951414EC008CDDA3B5441449C567F78195141188CFCD6CE3B544114AE47F178195141333333E3C33B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000071A836D977195141E459BB9DE03B54410AD7A31078195141C3F528ECDA3B544114AE47F178195141333333E3C33B544154503B89311951414DD5EC08D03B5441423F46A73A195141E56E6359EB3B544171A836D977195141E459BB9DE03B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200533 - 3217832
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -158  </desc>
+<a>
+0106000000010000000103000000010000000600000014AE47F178195141333333E3C33B54415C8FC2155619514114AE47D1C93B544148E17A9430195141295C8F32D03B5441EC694947341951414EC008CDDA3B5441449C567F78195141188CFCD6CE3B544114AE47F178195141333333E3C33B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000071A836D977195141E459BB9DE03B54410AD7A31078195141C3F528ECDA3B544114AE47F178195141333333E3C33B544154503B89311951414DD5EC08D03B5441423F46A73A195141E56E6359EB3B544171A836D977195141E459BB9DE03B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>636082 - 181114
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000002000000460000008FC2F5B8DAFD5041F6285C1FDDBE5441AE47E14ADCFD50411F85EB71DFBE5441D7A370ADE1FD5041666666D6D7BE54410AD7A3D0E9FD504100000040D1BE5441EC51B84EF1FD5041EC51B84ECCBE54416666666602FE5041C3F5283CD9BE5441AE47E19A05FE50413D0AD753E0BE5441295C8FF210FE50410AD7A300E0BE5441666666361AFE504100000040DEBE5441295C8F621AFE5041E17A143EDDBE54415C8FC2A50EFE5041713D0AD7D6BE5441E17A145E08FE5041C3F5282CD1BE5441D7A3700D04FE5041E17A141ECFBE54410AD7A31002FE5041E17A149ECDBE5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000846B5CFEEEFD50419BBD090ABABE54415F284AFBEEFD5041D9982206BABE5441DC1AC5FAEEFD504127857905BABE544176FF35F7EEFD5041E3BAF300BABE54414CD886F6EEFD50417A271500BABE544168B922F6EEFD5041FCEC95FFB9BE5441EA10AEF3EEFD5041CA0E77FCB9BE5441A99BF4E7EEFD5041B8F390EDB9BE54413F078EBAEEFD5041228CDFB3B9BE54419C478F89EEFD504150D69C75B9BE5441E7D1A280EEFD50418CDB456AB9BE5441BC4BD87EEEFD50410C30FF67B9BE5441EB1CE2D1EDFD5041A2A4348CB8BE544131BB029FEDFD5041F62A8F4BB8BE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>636082 - 391506
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000001000000010300000002000000460000008FC2F5B8DAFD5041F6285C1FDDBE5441AE47E14ADCFD50411F85EB71DFBE5441D7A370ADE1FD5041666666D6D7BE54410AD7A3D0E9FD504100000040D1BE5441EC51B84EF1FD5041EC51B84ECCBE54416666666602FE5041C3F5283CD9BE5441AE47E19A05FE50413D0AD753E0BE5441295C8FF210FE50410AD7A300E0BE5441666666361AFE504100000040DEBE5441295C8F621AFE5041E17A143EDDBE54415C8FC2A50EFE5041713D0AD7D6BE5441E17A145E08FE5041C3F5282CD1BE5441D7A3700D04FE5041E17A141ECFBE54410AD7A31002FE5041E17A149ECDBE5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000846B5CFEEEFD50419BBD090ABABE54415F284AFBEEFD5041D9982206BABE5441DC1AC5FAEEFD504127857905BABE544176FF35F7EEFD5041E3BAF300BABE54414CD886F6EEFD50417A271500BABE544168B922F6EEFD5041FCEC95FFB9BE5441EA10AEF3EEFD5041CA0E77FCB9BE5441A99BF4E7EEFD5041B8F390EDB9BE54413F078EBAEEFD5041228CDFB3B9BE54419C478F89EEFD504150D69C75B9BE5441E7D1A280EEFD50418CDB456AB9BE5441BC4BD87EEEFD50410C30FF67B9BE5441EB1CE2D1EDFD5041A2A4348CB8BE544131BB029FEDFD5041F62A8F4BB8BE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>614437 - 3075842
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000003000000010300000001000000180000005C8FC275C7DC5041E17A148E9C275441B81E85CBC7DC5041A4703DCA9D275441D7A3707DC8DC5041EC51B8AE9E275441C3F5280CCADC504114AE47619F275441F6285CEFCBDC5041AE47E10AA027544133333383CFDC50410AD7A390A12754410AD7A390D1DC5041000000A0A22754410AD7A340D3DC5041C3F5287CA3275441D7A370ADD4DC504152B81EA5A42754410AD7A370D5DC5041666666D6A5275441C3F5285CD8DC504166666676A5275441B81E850BE3DC50419A9999A9A5275441713D0A47E3DC5041B81E85DB8A275441B81E854BE3DC5041295C8FD287275441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002900000049DAC7B4D4DC5041BF211EA8A6275441FBCFE8ECCEDC504112484BCEE627544107C44F8FCCDC5041586288CDFF275441EAEE48E3B3DC504156659554FC275441B32E5E28B2DC504103FB547B05285441EB2680FAB1DC5041D6E8BE0D0728544102920A94B5DC5041BA4F01A90728544102310E45B8DC50411DFC69120828544144201FACB9DC5041DF27D1BB08285441CC353365BBDC5041FD61689109285441A7B7E78DBCDC50410DB874680A285441CD73486CBDDC50411847FE270B2854415C8FC2F5BDDC50418FC2F5380C2854413D0AD763C0DC50418FC2F5980E285441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>614437 - 5260909
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+010600000003000000010300000001000000180000005C8FC275C7DC5041E17A148E9C275441B81E85CBC7DC5041A4703DCA9D275441D7A3707DC8DC5041EC51B8AE9E275441C3F5280CCADC504114AE47619F275441F6285CEFCBDC5041AE47E10AA027544133333383CFDC50410AD7A390A12754410AD7A390D1DC5041000000A0A22754410AD7A340D3DC5041C3F5287CA3275441D7A370ADD4DC504152B81EA5A42754410AD7A370D5DC5041666666D6A5275441C3F5285CD8DC504166666676A5275441B81E850BE3DC50419A9999A9A5275441713D0A47E3DC5041B81E85DB8A275441B81E854BE3DC5041295C8FD287275441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002900000049DAC7B4D4DC5041BF211EA8A6275441FBCFE8ECCEDC504112484BCEE627544107C44F8FCCDC5041586288CDFF275441EAEE48E3B3DC504156659554FC275441B32E5E28B2DC504103FB547B05285441EB2680FAB1DC5041D6E8BE0D0728544102920A94B5DC5041BA4F01A90728544102310E45B8DC50411DFC69120828544144201FACB9DC5041DF27D1BB08285441CC353365BBDC5041FD61689109285441A7B7E78DBCDC50410DB874680A285441CD73486CBDDC50411847FE270B2854415C8FC2F5BDDC50418FC2F5380C2854413D0AD763C0DC50418FC2F5980E285441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411592 - 291471
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000030000006E00000085EB51D899A15041A4703D3A9D565541295C8F028AA15041CDCCCC8C85565541CDCCCCEC8EA150415C8FC2E583565541666666B69DA150410AD7A3A098565541B81E855B9EA15041000000509956554166666686A0A15041C3F5286C985655418FC2F568A3A1504114AE47B1965655411C62379BB0A1504196412CF58E56554141CB6600A6A15041DF2301537E5655411CC2FE62A3A15041040D16EC7F565541AED68F22A1A150414D1F4D047D565541EC51B83E9CA15041A4703DFA7E565541333333839AA15041F6285C8F7B565541EC51B87EA6A15041EC51B82E75565541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000004A94AEF2EBA150410385BDCD40565541C3F5281CEBA1504152B81EA53F565541000000A096A150417B14AE6770565541A0790E9397A1504175ACB11274565541754AD558A3A15041FB85A8526D565541183ABE4FADA15041CB515760675655417E0DD2EFBBA15041BD46DE045F565541902AF1A2C7A150419738B4C75756554111C1FC6FDBA15041F28157894C565541356F09E4ECA1504193AA4C83425655414A94AEF2EBA150410385BDCD40565541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411592 - 432241
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000030000006E00000085EB51D899A15041A4703D3A9D565541295C8F028AA15041CDCCCC8C85565541CDCCCCEC8EA150415C8FC2E583565541666666B69DA150410AD7A3A098565541B81E855B9EA15041000000509956554166666686A0A15041C3F5286C985655418FC2F568A3A1504114AE47B1965655411C62379BB0A1504196412CF58E56554141CB6600A6A15041DF2301537E5655411CC2FE62A3A15041040D16EC7F565541AED68F22A1A150414D1F4D047D565541EC51B83E9CA15041A4703DFA7E565541333333839AA15041F6285C8F7B565541EC51B87EA6A15041EC51B82E75565541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000BF4BAE47BAA1504119141F45345655419EBDCCCCA6A15041228C5DDF3D5655417FBDA34095A15041DB004931465655419E927C3E95A150414107D24D46565541B114D33C95A150413B62D96346565541043FC31595A150414444986948565541F08956F394A15041E616C4364A5655413D0AD7E394A15041666666064B56554164A0C2D594A150416BA2EAC14B565541E8AEBC4FA0A15041D69B6628465655413D0AD743A7A150413D0AD7C3425655412A0717A9B1A150411DCE7AA23D565541A5BE09A7BCA150413A42C235385655417A330B09BCA150418558602F37565541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538333 - 91693
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+010600000001000000010300000001000000170000005D31CC661C5751411858392C1C6754413DE307EA1B5751411C2028391A67544156ABF6F61957514161C6B8DC14675441B0E94CF4175751412A32B6220F6754411F17F43C1457514172087079046754414BF595D31057514129B54527FB66544143C147800C575141988B617EFC66544146F17033075751414AB18287FD665441890C289202575141B8603CA0FE6654415B55E8390657514179155C8E0867544110FD1B130C575141F623EBD817675441858573ED0C5751415F48CBAC196754412CAB94F60D575141351C65991C675441D1E527540E575141FF8F4A1F1E675441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000310000006D201DB21A575141550BB6E41A6754411EBE10121B5751413F8B69D71B6754413CCFC8B61B575141C609BE0F1D6754412BC49D201C575141463296B81C675441DB884A641C57514115B632221C675441C964A5601C575141D0259E131C67544196AD965A1C575141FB4863FB1B6754412514CD591C57514155E33CF81B675441D85A65C51A5751410E2969141767544150CC55B61A5751410F61FEEA16675441794D1D991A5751414704A39A16675441A3D7361C1A5751412B40294315675441A1636A001A5751413E01B7F61467544112358F061A575141D5004C3A15675441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538333 - 293741
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+010600000001000000010300000001000000170000005D31CC661C5751411858392C1C6754413DE307EA1B5751411C2028391A67544156ABF6F61957514161C6B8DC14675441B0E94CF4175751412A32B6220F6754411F17F43C1457514172087079046754414BF595D31057514129B54527FB66544143C147800C575141988B617EFC66544146F17033075751414AB18287FD665441890C289202575141B8603CA0FE6654415B55E8390657514179155C8E0867544110FD1B130C575141F623EBD817675441858573ED0C5751415F48CBAC196754412CAB94F60D575141351C65991C675441D1E527540E575141FF8F4A1F1E675441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000310000006D201DB21A575141550BB6E41A6754411EBE10121B5751413F8B69D71B6754413CCFC8B61B575141C609BE0F1D6754412BC49D201C575141463296B81C675441DB884A641C57514115B632221C675441C964A5601C575141D0259E131C67544196AD965A1C575141FB4863FB1B6754412514CD591C57514155E33CF81B675441D85A65C51A5751410E2969141767544150CC55B61A5751410F61FEEA16675441794D1D991A5751414704A39A16675441A3D7361C1A5751412B40294315675441A1636A001A5751413E01B7F61467544112358F061A575141D5004C3A15675441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499110 - 226669
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000006000000010300000002000000CD0000000AD7A33081065141B81E85BBAF315441CDCCCCAC890651411F85EB01B3315441EC51B81E96065141B81E859BB831544114AE47F1A40651415C8FC225C0315441F6285C7FB0065141B81E852BC631544152B81EB5B5065141A4703DDAC1315441713D0AE7B60651415C8FC225C1315441295C8FF2B70651417B14AE17C03154417B14AE67BA06514166666606BE315441D7A370EDC0065141B81E85DBB831544100000010C40651410AD7A330B631544185EB5188CC065141E17A146EB0315441295C8FE2D0065141B81E85FBAB315441713D0AE7D10651418FC2F5C8AA315441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000005C8FC27580065141CDCCCC5CAF315441EF2265A17C065141CF2B52ACAD315441CF1D7FEC790651414BB13A08AC3154413CC042E26F0651413D2F2E2FA5315441CDCCCC5C66065141000000109F3154411A06A44963065141A25ACA3CA2315441F8ED77EF65065141C6B56D01A5315441D7D54B9568065141D904FB18A931544164B075616A065141905A7A91AA315441B0B1098E6C065141122DDC58AC31544168C0890B70065141D63B5CD6AF3154410BB7DD2E76065141E4C9C11FB23154413C1D1F847D065141FBC63C04B63154418CCA99B27E0651414A173213B3315441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499110 - 364997
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+010600000006000000010300000002000000CD0000000AD7A33081065141B81E85BBAF315441CDCCCCAC890651411F85EB01B3315441EC51B81E96065141B81E859BB831544114AE47F1A40651415C8FC225C0315441F6285C7FB0065141B81E852BC631544152B81EB5B5065141A4703DDAC1315441713D0AE7B60651415C8FC225C1315441295C8FF2B70651417B14AE17C03154417B14AE67BA06514166666606BE315441D7A370EDC0065141B81E85DBB831544100000010C40651410AD7A330B631544185EB5188CC065141E17A146EB0315441295C8FE2D0065141B81E85FBAB315441713D0AE7D10651418FC2F5C8AA315441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000005C8FC27580065141CDCCCC5CAF315441EF2265A17C065141CF2B52ACAD315441CF1D7FEC790651414BB13A08AC3154413CC042E26F0651413D2F2E2FA5315441CDCCCC5C66065141000000109F3154411A06A44963065141A25ACA3CA2315441F8ED77EF65065141C6B56D01A5315441D7D54B9568065141D904FB18A931544164B075616A065141905A7A91AA315441B0B1098E6C065141122DDC58AC31544168C0890B70065141D63B5CD6AF3154410BB7DD2E76065141E4C9C11FB23154413C1D1F847D065141FBC63C04B63154418CCA99B27E0651414A173213B3315441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>615477 - 43640
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -715  </desc>
+<a>
+0106000000010000000103000000010000003C000000F6285C1F17FC50417B14AE4726F154418FC2F5A814FC5041295C8FA223F1544185EB512813FC50413333337322F15441C3F528DC11FC504152B81EE521F15441AE47E1AA10FC50413D0AD71321F1544114AE47C10BFC5041E17A145E24F154417B14AE0702FC5041EC51B88E27F1544114AE4721FEFB5041F6285C3F29F1544152B81EA5FAFB50411F85EBC12AF15441333333F3F9FB5041D7A370DD2FF1544152B81E35F6FB50410AD7A36035F15441E17A147EF3FB5041D7A3703D42F15441B81E85ABF9FB5041713D0AD744F15441EC51B83EFDFB50418FC2F55846F15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004D0000000AD7A3D01DFC5041C3F5286C54F15441FF9502531AFC5041C52743945AF15441D4F136DB18FC5041D5B4E7215DF154411058392C17FC5041DF4F8D0F60F1544169A5F5A011FC5041E4A85C4F61F154413F8817A40EFC504154A1B6FB61F15441F09988F30CFC5041F1152F5D62F154411F5CC03208FC504147175E6F63F15441E436EDDF04FC5041AD90162F64F15441A0BCD7FA01FC5041165DBDF764F154418A93AE2501FC5041367EDB3265F1544152B81EB500FC5041A4703DAA68F154413D0AD76300FC50412DB29DBF69F15441B0D030A1FEFB5041DEE4297F69F15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>616482 - 51566
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000025000000A4703D5ACE055141F6285CFF484754415C8FC265D1055141D7A3702D4147544152B81E05D5055141713D0A673C47544114AE47A1D905514152B81E853947544100000040E4055141666666E635475441C3F5284CE705514166666616344754411F85EB41F1055141F6285C5F2A475441A4703DFAEC0551419A9999C9234754417B14AE57EA055141666666961F4754415C8FC245E9055141666666361C475441B81E851BE9055141295C8FE21447544148E17A94EA0551418FC2F50807475441CDCCCC9CE9055141B81E856B04475441713D0A97E8055141B81E858B02475441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000600000001553D43DF1055141F7FE10592A475441B0E6B500EB05514126A92E7930475441C542FF46E7055141F67A7819344754416FE74A63E405514186E468D135475441FD7D286BE20551412A5E368636475441A204FA68D9055141BD2A53A83947544157222CFED40551410BAF32703C475441C0A1F844D30551410D7CC4B53E47544191508F77D1055141D826FA154147544158AB8BBDCE0551419F335400484754417D0F972ECE055141B47C1A48494754410B7921D1C9055141702E5F8E50475441BF0F5D26C505514177EAD04F5947544166666676BE055141A4703DFA65475441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>616482 - 85289
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000100000025000000A4703D5ACE055141F6285CFF484754415C8FC265D1055141D7A3702D4147544152B81E05D5055141713D0A673C47544114AE47A1D905514152B81E853947544100000040E4055141666666E635475441C3F5284CE705514166666616344754411F85EB41F1055141F6285C5F2A475441A4703DFAEC0551419A9999C9234754417B14AE57EA055141666666961F4754415C8FC245E9055141666666361C475441B81E851BE9055141295C8FE21447544148E17A94EA0551418FC2F50807475441CDCCCC9CE9055141B81E856B04475441713D0A97E8055141B81E858B02475441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000600000001553D43DF1055141F7FE10592A475441B0E6B500EB05514126A92E7930475441C542FF46E7055141F67A7819344754416FE74A63E405514186E468D135475441FD7D286BE20551412A5E368636475441A204FA68D9055141BD2A53A83947544157222CFED40551410BAF32703C475441C0A1F844D30551410D7CC4B53E47544191508F77D1055141D826FA154147544158AB8BBDCE0551419F335400484754417D0F972ECE055141B47C1A48494754410B7921D1C9055141702E5F8E50475441BF0F5D26C505514177EAD04F5947544166666676BE055141A4703DFA65475441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617303 - 234645
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -19  </desc>
+<a>
+01060000000100000001030000000100000022000000A4703DFAB6FC50415C8FC295C133544133333303B7FC5041EC51B84EC333544152B81E05B9FC5041D7A3708DC33354419A999919BAFC50413D0AD773C4335441A4703DEABFFC504152B81E55C4335441E17A140EC1FC504114AE4721C63354411F85EBB1C0FC5041AE47E1AAC93354415C8FC2E5BEFC5041295C8FF2C833544166666656BDFC5041CDCCCC6CCC33544152B81EF5BBFC50418FC2F548CB335441295C8FC2BAFC504185EB5158CB335441AE47E17ABBFC5041AE47E11ACE33544166666666BAFC50419A9999A9CF3354413D0AD723B9FC5041295C8F52D0335441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000406C867EC1FC5041A020AB7EC5335441979190C1C0FC5041DE1EF04ECA335441A49E5557C1FC504157B0F430D0335441AF367C6AC1FC5041A01F1973D0335441D5FCC08BC2FC5041A7B71A0ED0335441519F87ADC4FC50412EA301A4CF33544183691851C6FC50418CD20886CF335441CCD7FE5EC7FC50413C7E3581CF3354419ABD039DC8FC5041E0D3E20FCF3354414D35AB07C9FC5041D0E62374CE335441186532B4C8FC5041BCFD204ACE335441C439302CC8FC50415C8FC065CA3354410CC15A34C8FC5041E5480486C83354411E7B2CFCC6FC50417EBE96B2C1335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617303 - 387428
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -19  </desc>
+<a>
+01060000000100000001030000000100000022000000A4703DFAB6FC50415C8FC295C133544133333303B7FC5041EC51B84EC333544152B81E05B9FC5041D7A3708DC33354419A999919BAFC50413D0AD773C4335441A4703DEABFFC504152B81E55C4335441E17A140EC1FC504114AE4721C63354411F85EBB1C0FC5041AE47E1AAC93354415C8FC2E5BEFC5041295C8FF2C833544166666656BDFC5041CDCCCC6CCC33544152B81EF5BBFC50418FC2F548CB335441295C8FC2BAFC504185EB5158CB335441AE47E17ABBFC5041AE47E11ACE33544166666666BAFC50419A9999A9CF3354413D0AD723B9FC5041295C8F52D0335441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000406C867EC1FC5041A020AB7EC5335441979190C1C0FC5041DE1EF04ECA335441A49E5557C1FC504157B0F430D0335441AF367C6AC1FC5041A01F1973D0335441D5FCC08BC2FC5041A7B71A0ED0335441519F87ADC4FC50412EA301A4CF33544183691851C6FC50418CD20886CF335441CCD7FE5EC7FC50413C7E3581CF3354419ABD039DC8FC5041E0D3E20FCF3354414D35AB07C9FC5041D0E62374CE335441186532B4C8FC5041BCFD204ACE335441C439302CC8FC50415C8FC065CA3354410CC15A34C8FC5041E5480486C83354411E7B2CFCC6FC50417EBE96B2C1335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>637748 - 57157
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000000F000000C3F5282C6CF2504148E17AD4D23455410AD7A3106BF25041A4703DCAD4345541E17A141E79F2504148E17A34F9345541B81E859BA6F250413D0AD7B3EB3455418FC2F5F8A5F250417B14AEF7E73455411F85EBD1A4F25041295C8FD2E4345541F6285C9FA3F2504100000000E434554148E17AA49EF25041713D0A07E234554114AE47E198F25041AE47E10AE0345541AE47E12A96F25041C3F528CCDE3455417B14AEC78CF2504148E17AA4D83455416666669684F250411F85EB81D33455411F85EB1181F25041000000E0D0345541D7A3700D7FF250415C8FC285CF345541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000000AD7A3106BF25041A4703DCAD43455410CE9220079F2504132ADE2E6F8345541C56F361E79F2504107CD7034F93455414B11C7387BF2504193F79494F83455416C878C168BF2504158EBF3DEF334554191E928278FF2504182AC269CF23455416B98E51496F250412199969BF0345541B81E859BA6F250413D0AD7B3EB345541150CF908A6F25041ABA2DD55E834554182AAFCD5A4F25041AF509E14E534554160EE8D98A2F250410D067FD3E3345541CE80B7FF9FF250413A379390E2345541B98DF0269FF250411289B63AE2345541CDEAAEB09EF25041499FDF0BE2345541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>621105 - 1570990
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+0106000000010000000103000000010000000A0000000000007028C45041E17A145E0AEA544152B81E5511C450415C8FC24522EA544148E17AB41DC45041B81E859B2BEA54416666663627C45041C3F528EC24EA5441000000E029C4504152B81EB524EA5441EC51B80E34C4504152B81E451BEA54416666663633C450411F85EB5118EA54417B14AEB731C45041B81E85AB15EA5441713D0AA72EC450418FC2F5C811EA54410000007028C45041E17A145E0AEA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000006317DDEE26C450419594751E25EA544190E7F98723C45041FF34CC2E27EA54410CE8FA6720C45041C45F4EB529EA54416E37230D1EC450411C568DDE2BEA54411F85EBD122C450417B14AE772FEA5441F6285C3F2AC45041F6285C0F28EA54418FC2F5182EC45041CDCCCC8C24EA54410AD7A37031C45041EC51B87E20EA5441333333D334C4504148E17AF41DEA5441C6070E1134C4504136D0FD1E1BEA5441000000E029C4504152B81EB524EA544115D2183D27C45041B56CFFEE24EA54416317DDEE26C450419594751E25EA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>621105 - 3288810
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -16  </desc>
+<a>
+0106000000010000000103000000010000000A0000000000007028C45041E17A145E0AEA544152B81E5511C450415C8FC24522EA544148E17AB41DC45041B81E859B2BEA54416666663627C45041C3F528EC24EA5441000000E029C4504152B81EB524EA5441EC51B80E34C4504152B81E451BEA54416666663633C450411F85EB5118EA54417B14AEB731C45041B81E85AB15EA5441713D0AA72EC450418FC2F5C811EA54410000007028C45041E17A145E0AEA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000006317DDEE26C450419594751E25EA544190E7F98723C45041FF34CC2E27EA54410CE8FA6720C45041C45F4EB529EA54416E37230D1EC450411C568DDE2BEA54411F85EBD122C450417B14AE772FEA5441F6285C3F2AC45041F6285C0F28EA54418FC2F5182EC45041CDCCCC8C24EA54410AD7A37031C45041EC51B87E20EA5441333333D334C4504148E17AF41DEA5441C6070E1134C4504136D0FD1E1BEA5441000000E029C4504152B81EB524EA544115D2183D27C45041B56CFFEE24EA54416317DDEE26C450419594751E25EA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>652626 - 240834
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+010600000002000000010300000001000000140000009A999929E52B5141D7A3702D1530554133333313E72B5141CDCCCCFC15305541D7A3700DE92B5141A4703D6A13305541295C8F02EA2B51410AD7A320123055418FC2F568E42B51417B14AE770F3055417B14AE97E52B51418FC2F5480D30554152B81EE5D12B514114AE47A104305541AE47E11ABD2B514152B81EB5F82F55413D0AD733B92B5141AE47E1AAF52F5541295C8F92AD2B5141000000C0E82F554114AE47B1A92B5141EC51B80EE52F5541B81E857BA22B5141CDCCCC4CEC2F5541713D0A47A32B5141295C8F92ED2F5541B81E85EBAA2B5141000000D0F92F5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000250000002783ECCF9D2B5141BAA65A1AE62F5541D24962129A2B51413A93FDD3DF2F5541F5DA46BA942B51415698DCDCD62F5541000000B0922B5141B81E850BD82F554100000060952B514133333393DE2F55411F85EB21972B514152B81ED5E12F554166666666992B5141C3F528FCE42F5541D7A370CD9C2B514148E17A04EB2F5541CDCCCCDCA12B514100000090F42F55410AD7A3D0A22B5141EC51B82EF82F5541C3F5283CA92B51419A9999D90430554133333323AA2B514100000010073055415C8FC265AD2B5141295C8F720A305541E17A144EB22B51410AD7A3800D305541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>915685 - 975678
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+01060000000100000001030000000200000018000000C3F5289C1CE55041E17A14FEB8645441CDCCCC1C15E55041295C8FC2BC64544185EB51181FE5504166666676B9645441333333C323E55041B81E85ABB7645441F6285CEF26E55041333333E3B664544185EB516826E5504100000030BF645441F6285CEF26E5504148E17A64C464544148E17A0431E55041E17A14CEC4645441AE47E1BA42E55041F6285C6FC5645441AE47E1EA48E5504185EB51C8C8645441AE47E1BA58E55041A4703DDACB6454419A99999959E55041333333A3CB6454413D0AD7635BE5504166666666C86454411F85EB6160E55041C3F528BCC1645441 [...]
+</a>
+
+<b>
+0106000000020000000103000000010000000A00000035E49E3B43E550413C5C59A7C5645441BCA6E68549E55041BAD76AE6C8645441ED9C085C58E55041FD57D3C7CB6454410C7DD5C059E55041833A3D5CCB645441E62FACF75AE5504161B7092AC9645441DAC7345F5BE5504192D06164C8645441540645E24CE550411C703C15C26454414C5FBA4A46E550417E4C6F44BF6454416CC0EFC542E550418AE93693BE64544135E49E3B43E550413C5C59A7C564544101030000000100000005000000E92D5A0943E550410ACC678DC5645441F0355A2F43E5504119DC67D9C56454411A478A3C43E5504135E881B5C564544135E49E [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>63619 - 3996899
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -58  </desc>
+<a>
+0106000000010000000103000000010000001E000000A12F5CFF44545141DF1BC3E5748054410AD7A32045545141713D0A9777805441AE47E1DA4A545141F6285C0F77805441C3F5280C4B54514152B81E1583805441000000204B54514148E17AE48A80544185EB51684A545141CDCCCCFC91805441F6285C9F67545141F6285C0F968054410AD7A3506954514114AE4711958054411F85EBA17554514152B81E8575805441295C8FF2775451415C8FC25571805441295C8FF26E54514148E17A246F8054417B14AE876B545141713D0AC76080544185EB511875545141295C8FB254805441CDCCCCEC86545141000000C051805441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000002C00000097FAD14170545141AF3227766F8054416BA98F167354514183AC65F06E805441251FC53676545141AD54B6A66D805441E14E31177A545141A212D3A26B805441B81E85FB7954514148E17A346B80544169B0E42B785451412A1B9DFB6A805441EFC5BE7B775451415E84529C6A805441DBFA49B17654514174B40BCD698054410AD7A33077545141CDCCCC9C69805441B2FE4BCF77545141E9B01BFE698054410AD7A3F078545141CDCCCC9C6A8054410AD7A3307A545141CDCCCC3C6A8054410AD7A3707B545141CDCCCC6C698054410AD7A3D07C545141CDCCCC7C68805441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242187 - 1419829
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001E000000E54343661B075141F8EB433A5CFE5441A2F5CB9C1E075141E3E0AEC05BFE54412D04B280240751416935E96C5BFE544128F80F282B075141F08923195BFE5441166C74072C075141F08923195BFE544145DB298036075141E7C3D5885BFE54418BE21C72390751416552C2A45BFE544175735A893A07514113A25A5A59FE5441E658D24C3B075141AB82302758FE5441332613CF3D075141A2BCE29658FE544104656735400751411785812259FE5441496C5A27430751418387D21D5AFE5441BA51D2EA43075141F46C4AE15AFE544155EC53EF48075141423A8B635DFE5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000002900000025F80F282B075141F38923195BFE544149DC80BA2A075141A6E7861E5BFE5441959E0A3A290751415F903A335BFE5441687B703F260751417079EE575BFE54417062863423075141F95FB6805BFE54416511548320075141BB4774A75BFE54410016FF8D1E07514181EDDEC25BFE5441E24343661B075141F3EB433A5CFE5441DEF351651B075141A49B10385CFE5441264539641B07514141ED39385CFE5441D7A370AD220751415C8FC2756DFE54410AD7A3D0270751417B14AE076DFE544152B81E9534075141B81E85EB70FE5441C3F5289C34075141EC51B8FE71FE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242187 - 4110570
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+0106000000010000000103000000010000001E000000E54343661B075141F8EB433A5CFE5441A2F5CB9C1E075141E3E0AEC05BFE54412D04B280240751416935E96C5BFE544128F80F282B075141F08923195BFE5441166C74072C075141F08923195BFE544145DB298036075141E7C3D5885BFE54418BE21C72390751416552C2A45BFE544175735A893A07514113A25A5A59FE5441E658D24C3B075141AB82302758FE5441332613CF3D075141A2BCE29658FE544104656735400751411785812259FE5441496C5A27430751418387D21D5AFE5441BA51D2EA43075141F46C4AE15AFE544155EC53EF48075141423A8B635DFE5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000002900000025F80F282B075141F38923195BFE544149DC80BA2A075141A6E7861E5BFE5441959E0A3A290751415F903A335BFE5441687B703F260751417079EE575BFE54417062863423075141F95FB6805BFE54416511548320075141BB4774A75BFE54410016FF8D1E07514181EDDEC25BFE5441E24343661B075141F3EB433A5CFE5441DEF351651B075141A49B10385CFE5441264539641B07514141ED39385CFE5441D7A370AD220751415C8FC2756DFE54410AD7A3D0270751417B14AE076DFE544152B81E9534075141B81E85EB70FE5441C3F5289C34075141EC51B8FE71FE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>923207 - 791530
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -22  </desc>
+<a>
+0106000000010000000103000000010000005700000066666656A2C35041713D0AD728475441EC51B85E9EC35041B81E85EB3F475441DEBA84F99DC35041D83AF08B414754419B4E5E1498C35041FDCA40EE624754411ED40B3698C35041D8E297FF6C4754419AC32AFD49C35041B7A316346C4754413D0AD7C34AC35041F6285C9F6E475441F6285CBF48C3504148E17A14704754413B45372949C35041370A34E66F475441AF938FD048C350412977D43470475441DAB25B254AC35041D51D2EDF724754419F7F0C824BC35041E494065276475441F43A11DA4BC3504189E420A2774754411F85EB314CC350413333334378475441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C3F5280C4AC35041333333B39B475441B81E852B4AC3504152B81EA5A1475441AE47E18A9FC35041000000109947544152B81ED59DC35041C3F5280C9447544100000000A1C3504148E17A848D4754410AD7A350A7C350413D0AD74385475441E17A14BE9BC3504148E17A94804754411F85EB718DC3504152B81EF5834754410AD7A3507BC3504148E17A24884754415C8FC2A54BC35041EC51B8CE8C4754419A9999F94AC3504152B81E058F475441666666364AC3504114AE475196475441C3F5280C4AC35041333333B39B475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>923207 - 943282
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -21  </desc>
+<a>
+0106000000010000000103000000010000005700000066666656A2C35041713D0AD728475441EC51B85E9EC35041B81E85EB3F475441DEBA84F99DC35041D83AF08B414754419B4E5E1498C35041FDCA40EE624754411ED40B3698C35041D8E297FF6C4754419AC32AFD49C35041B7A316346C4754413D0AD7C34AC35041F6285C9F6E475441F6285CBF48C3504148E17A14704754413B45372949C35041370A34E66F475441AF938FD048C350412977D43470475441DAB25B254AC35041D51D2EDF724754419F7F0C824BC35041E494065276475441F43A11DA4BC3504189E420A2774754411F85EB314CC350413333334378475441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000520000005C8FC205CDC35041AE47E1BA15475441EC51B81ECCC35041333333130E475441F6285CFFCBC350417B14AE070D47544114AE47E1CBC350418FC2F5080C4754413D0AD773CBC3504148E17AE408475441295C8F52CBC35041295C8FF2074754411F85EBA1CAC35041EC51B8DE02475441713D0AB7CAC3504148E17A740147544114AE4701CBC3504114AE4761FC46544114AE4761CBC35041CDCCCCDCF54654411F85EBD1CAC35041EC51B8CEF5465441B81E853BC9C350419A9999C9F4465441295C8FE2C7C35041AE47E14AF346544166666696B8C35041EC51B8DEEB465441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>923207 - 1824992
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -22  </desc>
+<a>
+0106000000010000000103000000010000005700000066666656A2C35041713D0AD728475441EC51B85E9EC35041B81E85EB3F475441DEBA84F99DC35041D83AF08B414754419B4E5E1498C35041FDCA40EE624754411ED40B3698C35041D8E297FF6C4754419AC32AFD49C35041B7A316346C4754413D0AD7C34AC35041F6285C9F6E475441F6285CBF48C3504148E17A14704754413B45372949C35041370A34E66F475441AF938FD048C350412977D43470475441DAB25B254AC35041D51D2EDF724754419F7F0C824BC35041E494065276475441F43A11DA4BC3504189E420A2774754411F85EB314CC350413333334378475441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C3F5280C4AC35041333333B39B475441B81E852B4AC3504152B81EA5A1475441AE47E18A9FC35041000000109947544152B81ED59DC35041C3F5280C9447544100000000A1C3504148E17A848D4754410AD7A350A7C350413D0AD74385475441E17A14BE9BC3504148E17A94804754411F85EB718DC3504152B81EF5834754410AD7A3507BC3504148E17A24884754415C8FC2A54BC35041EC51B8CE8C4754419A9999F94AC3504152B81E058F475441666666364AC3504114AE475196475441C3F5280C4AC35041333333B39B475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>923207 - 4454255
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -22  </desc>
+<a>
+0106000000010000000103000000010000005700000066666656A2C35041713D0AD728475441EC51B85E9EC35041B81E85EB3F475441DEBA84F99DC35041D83AF08B414754419B4E5E1498C35041FDCA40EE624754411ED40B3698C35041D8E297FF6C4754419AC32AFD49C35041B7A316346C4754413D0AD7C34AC35041F6285C9F6E475441F6285CBF48C3504148E17A14704754413B45372949C35041370A34E66F475441AF938FD048C350412977D43470475441DAB25B254AC35041D51D2EDF724754419F7F0C824BC35041E494065276475441F43A11DA4BC3504189E420A2774754411F85EB314CC350413333334378475441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C3F5280C4AC35041333333B39B475441B81E852B4AC3504152B81EA5A1475441AE47E18A9FC35041000000109947544152B81ED59DC35041C3F5280C9447544100000000A1C3504148E17A848D4754410AD7A350A7C350413D0AD74385475441E17A14BE9BC3504148E17A94804754411F85EB718DC3504152B81EF5834754410AD7A3507BC3504148E17A24884754415C8FC2A54BC35041EC51B8CE8C4754419A9999F94AC3504152B81E058F475441666666364AC3504114AE475196475441C3F5280C4AC35041333333B39B475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660093 - 407932
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+01060000000100000001030000000700000059000000B81E859BBFB7504148E17AE412D8544166666646ADB750415C8FC2350ED85441295C8F529AB750418FC2F5C809D85441CDCCCC2C94B750410AD7A36006D8544148E17AE492B75041AE47E19A05D854417B14AE378DB7504185EB517801D85441EC51B8DE88B7504100000080FED754413D0AD7B387B75041EC51B81EFDD75441333333C388B75041713D0A97FCD75441E17A14EE89B750410AD7A320FED7544114AE47518CB75041F6285C8FFFD75441666666A68EB75041E17A14FE00D854419A99990991B75041EC51B85E02D854410AD7A3A092B75041F6285C0F03D85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000002D41254B66B75041EFC5FC5A17D854411014AE4767B75041C832339313D85441ACA3700D6CB75041A4703DFA0BD85441478FC22576B750415E90C24509D85441330AD7A376B75041AC7A14EE05D8544160AE471166B7504118CDCC3C0DD854412B51721C63B750414580154111D85441EC51B89E5FB75041F6285CFF15D85441345C8F025FB750412BB81E1518D854411509A4C35FB750416CACF8CD1DD8544185EB512861B750410000006028D85441ACA11E3461B750418513878D28D85441E88859AA61B750413583B4552AD85441EE7B144E62B75041E0A270CD2CD85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660093 - 430003
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 7  </desc>
+<a>
+01060000000100000001030000000700000059000000B81E859BBFB7504148E17AE412D8544166666646ADB750415C8FC2350ED85441295C8F529AB750418FC2F5C809D85441CDCCCC2C94B750410AD7A36006D8544148E17AE492B75041AE47E19A05D854417B14AE378DB7504185EB517801D85441EC51B8DE88B7504100000080FED754413D0AD7B387B75041EC51B81EFDD75441333333C388B75041713D0A97FCD75441E17A14EE89B750410AD7A320FED7544114AE47518CB75041F6285C8FFFD75441666666A68EB75041E17A14FE00D854419A99990991B75041EC51B85E02D854410AD7A3A092B75041F6285C0F03D85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000D7A3700D6CB75041A4703DFA0BD85441B8E8C32576B75041DA77C34509D85441E245D7A376B75041FA0414EE05D8544114AE471166B75041CDCCCC3C0DD854411734C42A62B750417C54728912D85441A875B89E5FB7504142A25CFF15D85441871890025FB750413D791E1518D85441685F809060B7504174A231E023D8544185EB512861B750410000006028D85441F22C39B461B750412225CD7B2AD85441D6B9144E62B75041B73170CD2CD8544175A463BA63B750410C7299622ED854411F85EBC164B750417B14AE872FD8544185EB51486CB75041C3F528CC3BD85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660145 - 177208
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000200000062000000713D0A07E7C050413D0AD72358DA5441F6285C2FE9C050415C8FC2755BDA54413D0AD793E8C050417B14AE975FDA5441CDCCCC6CE5C05041AE47E1AA6ADA5441CDCCCC1CE3C05041A4703DFA70DA544185EB5158DDC05041B81E85BB75DA544148E17AC4E0C05041A4703D2A78DA5441AE47E1CAE2C050413D0AD7337BDA544133333373E6C05041CDCCCCFC83DA544185EB51B8E7C0504152B81EB583DA544152B81EB5E6C05041A4703D3A7DDA54418FC2F5E8E6C05041B81E853B78DA5441EC51B80EE8C05041AE47E16A71DA54417B14AE37EAC0504114AE47016BDA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000228CEB950EC15041EA9D621F43DA5441C0D3A3800BC150418FD7A30044DA5441D2F214EF05C15041A80E4FE144DA54418D8D8A1809C15041031311F746DA54417B14AE970CC150411F85EBA145DA5441C927500D13C1504130364CAC45DA5441745C8FB223C150413B3D0AC745DA5441CAD0483428C15041ACCBF12446DA544152B81EE52DC15041B81E859B46DA5441E17A141E32C15041CDCCCC5C47DA5441AE1E85BB49C15041275C8F324DDA544123E17A8449C15041350AD7734BDA54418FC2F5F841C15041B81E85DB49DA5441F75046EA3FC15041BD1FDA0449DA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660145 - 351464
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000200000062000000713D0A07E7C050413D0AD72358DA5441F6285C2FE9C050415C8FC2755BDA54413D0AD793E8C050417B14AE975FDA5441CDCCCC6CE5C05041AE47E1AA6ADA5441CDCCCC1CE3C05041A4703DFA70DA544185EB5158DDC05041B81E85BB75DA544148E17AC4E0C05041A4703D2A78DA5441AE47E1CAE2C050413D0AD7337BDA544133333373E6C05041CDCCCCFC83DA544185EB51B8E7C0504152B81EB583DA544152B81EB5E6C05041A4703D3A7DDA54418FC2F5E8E6C05041B81E853B78DA5441EC51B80EE8C05041AE47E16A71DA54417B14AE37EAC0504114AE47016BDA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000228CEB950EC15041EA9D621F43DA5441C0D3A3800BC150418FD7A30044DA5441D2F214EF05C15041A80E4FE144DA54418D8D8A1809C15041031311F746DA54417B14AE970CC150411F85EBA145DA5441C927500D13C1504130364CAC45DA5441745C8FB223C150413B3D0AC745DA5441CAD0483428C15041ACCBF12446DA544152B81EE52DC15041B81E859B46DA5441E17A141E32C15041CDCCCC5C47DA5441AE1E85BB49C15041275C8F324DDA544123E17A8449C15041350AD7734BDA54418FC2F5F841C15041B81E85DB49DA5441F75046EA3FC15041BD1FDA0449DA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660268 - 177308
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -6  </desc>
+<a>
+01060000000100000001030000000100000028000000E17A147E88B65041000000C09DE254417B14AE7788B65041F6285CFFB7E254410000008089B65041A4703DAAB7E2544114AE4701CDB650419A9999E9A1E254417B14AE87CCB65041EC51B81EA1E25441713D0A37ADB650419A9999C96CE254413D0AD7E3AAB650410000003068E25441F6285C2FAAB65041713D0A3765E254418FC2F578AAB65041A4703D1A62E25441CDCCCCCCA7B650413D0AD7A35EE2544152B81E15A6B65041A4703DCA5DE25441F6285C0FA5B650411F85EBC15DE2544148E17A54A4B650417B14AEA75FE25441A4703D1AA5B6504148E17A0463E25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A000000FE73607B88B650419D0B1FD6A8E25441C914AE7788B6504139E95AFFB7E25441534DFC1189B65041FE1AABCDB7E254410000008089B65041A4703DAAB7E2544114AE4701CDB650419A9999E9A1E254417B14AE87CCB65041EC51B81EA1E254412EC1084BBDB65041E8EA19A887E2544140A80937ADB65041F70F9AC96CE25441B5D8D6E3AAB650412AE0FF2F68E25441EBB65B2FAAB65041BEB00A3765E2544154A2F478AAB65041D6453E1A62E25441F2B9644BA8B65041C8DBDA475FE25441CDCCCCCCA7B650413D0AD7A35EE2544152B81E15A6B65041A4703DCA5DE25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956655 - 2836872
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+01060000000100000001030000000100000018000000FD533DCBFD5051414F75B2EAF59D544147D57AE724515141B3E6961BEF9D5441A03DBAFF28515141DFC0D16CEE9D544147AA6D602C515141109710D5ED9D5441110E868E2D51514145180CA0ED9D544118D655FD2D5151413B9B6060EC9D5441AE0CEF812E5151412045563FEB9D5441D687292A2F5151414E3EA1D0E99D5441228A540932515141E6259326E59D5441E707FFA828515141FB6F6FB7C69D5441E1781CBF275151414F2EFD37C69D5441882F573926515141EC328A5CC59D54417279D98C2351514115925323C39D5441D8F4BF8D21515141299E84EAC09D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000210000007FFE9AC032515141C4C8B5EFE39D544116031ADB32515141F99B923EE49D544114AE473135515141C3F528CCDF9D544185EB51D836515141713D0A37DB9D5441713D0AF73651514114AE47A1DA9D54410000008037515141E17A140ED89D54418FC2F538375151410AD7A300D49D5441000000A03551514185EB51D8CF9D5441E17A14FE3351514148E17A04CE9D54410AD7A3302C5151413D0AD7A3C89D5441C46AE2FA285151411092A4D9C69D5441DEE22AFF28515141C01364E6C69D544185EB51582651514148E17A74C59D54413333330324515141713D0AA7C39D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956655 - 3490242
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -13  </desc>
+<a>
+01060000000100000001030000000100000018000000FD533DCBFD5051414F75B2EAF59D544147D57AE724515141B3E6961BEF9D5441A03DBAFF28515141DFC0D16CEE9D544147AA6D602C515141109710D5ED9D5441110E868E2D51514145180CA0ED9D544118D655FD2D5151413B9B6060EC9D5441AE0CEF812E5151412045563FEB9D5441D687292A2F5151414E3EA1D0E99D5441228A540932515141E6259326E59D5441E707FFA828515141FB6F6FB7C69D5441E1781CBF275151414F2EFD37C69D5441882F573926515141EC328A5CC59D54417279D98C2351514115925323C39D5441D8F4BF8D21515141299E84EAC09D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000210000007FFE9AC032515141C4C8B5EFE39D544116031ADB32515141F99B923EE49D544114AE473135515141C3F528CCDF9D544185EB51D836515141713D0A37DB9D5441713D0AF73651514114AE47A1DA9D54410000008037515141E17A140ED89D54418FC2F538375151410AD7A300D49D5441000000A03551514185EB51D8CF9D5441E17A14FE3351514148E17A04CE9D54410AD7A3302C5151413D0AD7A3C89D5441C46AE2FA285151411092A4D9C69D5441DEE22AFF28515141C01364E6C69D544185EB51582651514148E17A74C59D54413333330324515141713D0AA7C39D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>663919 - 2976404
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+010600000001000000010300000001000000180000005C8FC2B54CF45041C3F5284CDA4B5441666666564CF45041AE47E11AD34B54417B14AEA74BF45041295C8FD2CC4B5441EC51B87E49F4504114AE4731C04B5441713D0A4749F45041EC51B89EC04B544185EB519845F450411F85EB21BE4B54418FC2F5E840F45041CDCCCC1CBB4B5441713D0AC73DF4504166666626B94B5441333333D33BF4504166666626B84B5441A4703D5A33F4504185EB51D8B24B5441CDCCCCFC1EF450418FC2F5C8A44B54413D0AD7E30CF4504166666686984B5441EC51B89EF1F350418FC2F568874B5441D7A370FDE7F350419A9999A9804B5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000530000007FB11C390FF450419B58041B9A4B5441192AFF4710F450416E8886D29A4B544172E6E13C14F45041E54AB2809D4B5441E223901F15F45041AC64421A9E4B54413755512E16F450413009AED19E4B5441D78E53A71CF4504194DD3434A34B5441568515E21DF4504185BB6F09A44B5441CDCCCCFC1EF450418FC2F5C8A44B5441C2EDA1AC20F4504173E618F3A54B54416E31523621F450410E4F2852A64B544125CC471C24F450419F076852A84B54410AF9C88D25F45041372D8351A94B5441DA69628428F45041B0E33F5DAB4B5441721299852AF45041B08092BFAC4B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>663919 - 5248536
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+010600000001000000010300000001000000180000005C8FC2B54CF45041C3F5284CDA4B5441666666564CF45041AE47E11AD34B54417B14AEA74BF45041295C8FD2CC4B5441EC51B87E49F4504114AE4731C04B5441713D0A4749F45041EC51B89EC04B544185EB519845F450411F85EB21BE4B54418FC2F5E840F45041CDCCCC1CBB4B5441713D0AC73DF4504166666626B94B5441333333D33BF4504166666626B84B5441A4703D5A33F4504185EB51D8B24B5441CDCCCCFC1EF450418FC2F5C8A44B54413D0AD7E30CF4504166666686984B5441EC51B89EF1F350418FC2F568874B5441D7A370FDE7F350419A9999A9804B5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000530000007FB11C390FF450419B58041B9A4B5441192AFF4710F450416E8886D29A4B544172E6E13C14F45041E54AB2809D4B5441E223901F15F45041AC64421A9E4B54413755512E16F450413009AED19E4B5441D78E53A71CF4504194DD3434A34B5441568515E21DF4504185BB6F09A44B5441CDCCCCFC1EF450418FC2F5C8A44B5441C2EDA1AC20F4504173E618F3A54B54416E31523621F450410E4F2852A64B544125CC471C24F450419F076852A84B54410AF9C88D25F45041372D8351A94B5441DA69628428F45041B0E33F5DAB4B5441721299852AF45041B08092BFAC4B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>434855 - 434987
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -15  </desc>
+<a>
+0106000000010000000103000000010000001A000000295C8FE21AB05041000000B0E4E35441A4703DCA1DB050419A999909E5E35441A4703DBA36B050419A9999D9CCE35441333333F302B05041AE47E14AB9E35441295C8FA2F4AF5041E17A14BEAFE3544133333323EEAF50417B14AEC7ADE35441EC51B82EECAF5041AE47E19AADE35441EC51B85EEAAF5041EC51B85EAEE35441295C8FE2E8AF5041713D0A97AFE354417B14AE67E8AF50413D0AD753B2E35441A4703D8AE8AF5041713D0A07B6E35441C3F528CCE8AF504185EB5108BDE3544114AE47E1E8AF5041E17A14FEC4E3544114AE4751EBAF5041713D0A67C5E35441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000EE570C2424B05041F9FD548FD3E354413EFE5C0224B050411EBF3D83D3E354418D179E0D24B05041F57F6F59D3E35441E3E0100420B050416F771EDFD1E35441E41C2DD016B05041C6F5F116CEE3544135EF95E0FCAF5041B6EBAF4BC4E35441DF83BAB9F0AF504136297D94BFE35441295C8F52EDAF504114AE47E1BEE354411F85EB51ECAF504114AE47D1BEE3544114AE4751EBAF5041713D0A67C5E3544114AE47E1E8AF5041E17A14FEC4E35441A4703D5AE4AF5041333333D3E2E35441E17A147EE2AF504185EB51B8EBE354413D0AD773E0AF50419A999979F5E35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>664016 - 208956
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -648  </desc>
+<a>
+01060000000100000001030000000100000013000000E17A14CEED2A51411F85EBB1853354419A9999D9EB2A5141EC51B87E853354417B14AE17EA2A5141E17A140E863354419A9999F9E82A51410AD7A340873354418FC2F518E82A5141A4703DBA883354410AD7A360E72A51417B14AE678A3354419A999919E72A51410AD7A3008C33544185EB5138E72A5141F6285C8F8D3354413D0AD793E72A5141AE47E15A8F335441D7A3702DE82A5141713D0A279133544114AE4741E92A51413D0AD7D392335441295C8F52EA2A51416666662694335441000000F0F12A5141713D0A179E335441D7A3702DF42A5141000000E09B335441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000009A999919E72A51410AD7A3008C335441306FFE3BE72A51417376CEA18D3354418B3A024FE72A51415B8E47018E3354410C0BE05CE72A51419B19E7468E33544135886A95E72A514131139A5F8F335441E43E5235E82A51413CA84A3391335441BD76219AEB2A5141B4AAC66C9333544147AB7B64F02A5141785726809933544174092625F22A514176811A309C335441BA0E5932F32A51418F7181089933544116A1B903F42A514162CF870F953354419767D0E5F32A5141670D5CC78A33544145D56F14F32A514168563A5388335441C6A427EBF02A5141AE226D9E86335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>664016 - 395330
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -648  </desc>
+<a>
+01060000000100000001030000000100000013000000E17A14CEED2A51411F85EBB1853354419A9999D9EB2A5141EC51B87E853354417B14AE17EA2A5141E17A140E863354419A9999F9E82A51410AD7A340873354418FC2F518E82A5141A4703DBA883354410AD7A360E72A51417B14AE678A3354419A999919E72A51410AD7A3008C33544185EB5138E72A5141F6285C8F8D3354413D0AD793E72A5141AE47E15A8F335441D7A3702DE82A5141713D0A279133544114AE4741E92A51413D0AD7D392335441295C8F52EA2A51416666662694335441000000F0F12A5141713D0A179E335441D7A3702DF42A5141000000E09B335441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000009A999919E72A51410AD7A3008C335441306FFE3BE72A51417376CEA18D3354418B3A024FE72A51415B8E47018E3354410C0BE05CE72A51419B19E7468E33544135886A95E72A514131139A5F8F335441E43E5235E82A51413CA84A3391335441BD76219AEB2A5141B4AAC66C9333544147AB7B64F02A5141785726809933544174092625F22A514176811A309C335441BA0E5932F32A51418F7181089933544116A1B903F42A514162CF870F953354419767D0E5F32A5141670D5CC78A33544145D56F14F32A514168563A5388335441C6A427EBF02A5141AE226D9E86335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>664198 - 1735577
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000000B00000048E17A040D965041E17A144E47175541CDCCCC9CE0955041B81E856B54175541A4703D1AE89550418FC2F538731755413D0AD743F095504152B81E259017554133333383F19550417B14AEF790175541AE47E1EA0896504148E17AF48C1755413D0AD7A321965041713D0AB7881755419A9999391B965041666666566E175541CDCCCC2C16965041295C8F9259175541F6285CBF0F965041F6285C9F4D17554148E17A040D965041E17A144E47175541
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000363EA4DEE495504155AC79ED65175541A4703D1AE89550418FC2F538731755413D0AD743F095504152B81E259017554133333383F19550417B14AEF790175541AE47E1EA0896504148E17AF48C1755413D0AD7A321965041713D0AB7881755419A9999391B965041666666566E175541CDCCCC2C16965041295C8F92591755419E46D88013965041998EF39A5417554154B067A0109650414E71C3414F175541CCF3549EE2955041A14069AB5C175541363EA4DEE495504155AC79ED65175541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>664198 - 3428598
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -8  </desc>
+<a>
+0106000000010000000103000000010000000B00000048E17A040D965041E17A144E47175541CDCCCC9CE0955041B81E856B54175541A4703D1AE89550418FC2F538731755413D0AD743F095504152B81E259017554133333383F19550417B14AEF790175541AE47E1EA0896504148E17AF48C1755413D0AD7A321965041713D0AB7881755419A9999391B965041666666566E175541CDCCCC2C16965041295C8F9259175541F6285CBF0F965041F6285C9F4D17554148E17A040D965041E17A144E47175541
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000363EA4DEE495504155AC79ED65175541A4703D1AE89550418FC2F538731755413D0AD743F095504152B81E259017554133333383F19550417B14AEF790175541AE47E1EA0896504148E17AF48C1755413D0AD7A321965041713D0AB7881755419A9999391B965041666666566E175541CDCCCC2C16965041295C8F92591755419E46D88013965041998EF39A5417554154B067A0109650414E71C3414F175541CCF3549EE2955041A14069AB5C175541363EA4DEE495504155AC79ED65175541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>665959 - 1009120
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001D00000085EB511847FE5041F6285C4F133B5441295C8F0255FE50410AD7A330173B544152B81E7554FE5041713D0AE7133B5441D7A3707D57FE504152B81E35123B5441CDCCCCDC5BFE50410AD7A330133B5441295C8FD25CFE50417B14AE77153B544148E17AB45CFE50415C8FC255193B54410000002067FE5041D7A3703D1C3B54419A9999A974FE5041EC51B8AE1A3B5441713D0AD774FE504185EB51A80D3B54410AD7A34072FE50418FC2F5680C3B5441D7A370BD72FE5041E17A148E0A3B54419A9999B954FE50417B14AEC7023B54419A99991954FE504114AE4761043B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000009B240F2347FE504174AE9773133B5441AF34A71854FE50417BF321EF163B5441BAAC2DA554FE504150ABD225163B54413373B58E54FE5041C6904C7F143B5441E86EAE4A56FE504120602623133B5441307F24A257FE50414BC277A5123B54414A7943B15BFE5041BDD05C8F133B544167AE19115DFE50419236E41D153B54410ED00A305DFE504162EBAF2F163B5441FC2EA3A55DFE50418BADDA69193B54417C36F98D65FE5041274C5F861B3B54414E61783267FE5041311461351B3B54412BA96FA068FE504116EB288B1A3B54419298958A69FE504160A8610C1B3B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>665959 - 3441985
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -10  </desc>
+<a>
+0106000000010000000103000000010000001D00000085EB511847FE5041F6285C4F133B5441295C8F0255FE50410AD7A330173B544152B81E7554FE5041713D0AE7133B5441D7A3707D57FE504152B81E35123B5441CDCCCCDC5BFE50410AD7A330133B5441295C8FD25CFE50417B14AE77153B544148E17AB45CFE50415C8FC255193B54410000002067FE5041D7A3703D1C3B54419A9999A974FE5041EC51B8AE1A3B5441713D0AD774FE504185EB51A80D3B54410AD7A34072FE50418FC2F5680C3B5441D7A370BD72FE5041E17A148E0A3B54419A9999B954FE50417B14AEC7023B54419A99991954FE504114AE4761043B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000009B240F2347FE504174AE9773133B5441AF34A71854FE50417BF321EF163B5441BAAC2DA554FE504150ABD225163B54413373B58E54FE5041C6904C7F143B5441E86EAE4A56FE504120602623133B5441307F24A257FE50414BC277A5123B54414A7943B15BFE5041BDD05C8F133B544167AE19115DFE50419236E41D153B54410ED00A305DFE504162EBAF2F163B5441FC2EA3A55DFE50418BADDA69193B54417C36F98D65FE5041274C5F861B3B54414E61783267FE5041311461351B3B54412BA96FA068FE504116EB288B1A3B54419298958A69FE504160A8610C1B3B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>665965 - 2909660
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+01060000000100000001030000000100000016000000D7A3709D7A655141E17A148EC6625441A4703D5A7465514185EB51D8C9625441E17A14AE6A6551417B14AEE7CE6254413D0AD7E35B65514152B81EA5D6625441C3F5281C54655141000000D0DA625441295C8F624A6551418FC2F5E8DF625441E17A146E39655141295C8FE2E86254415C8FC2D526655141A4703DBAF2625441E17A146E0F655141E17A141EFF625441C3F5283C0C6551419A9999C905635441EC51B83E0A655141EC51B87E0C635441295C8F5208655141F6285CCF14635441C3F5288C1A655141713D0A270B635441B81E85FB2D655141CDCCCCDC00635441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000069F87DF15D655141D1689F9CD56254413D0AD7E35B65514152B81EA5D6625441C3F5281C54655141000000D0DA6254416BBEA8BE4A65514124C0FAC2DF6254416A879C2840655141EB48C052E5625441D833AC7B3965514139655DDBE86254416AE5176735655141693D4504EB62544108228D1326655141768E0C21F3625441E17A146E0F655141E17A141EFF625441EDF45EDD0D65514128175D470263544132FE038C5E6551411480B706D862544169F87DF15D655141D1689F9CD5625441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>665965 - 3634951
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 6  </desc>
+<a>
+01060000000100000001030000000100000016000000D7A3709D7A655141E17A148EC6625441A4703D5A7465514185EB51D8C9625441E17A14AE6A6551417B14AEE7CE6254413D0AD7E35B65514152B81EA5D6625441C3F5281C54655141000000D0DA625441295C8F624A6551418FC2F5E8DF625441E17A146E39655141295C8FE2E86254415C8FC2D526655141A4703DBAF2625441E17A146E0F655141E17A141EFF625441C3F5283C0C6551419A9999C905635441EC51B83E0A655141EC51B87E0C635441295C8F5208655141F6285CCF14635441C3F5288C1A655141713D0A270B635441B81E85FB2D655141CDCCCCDC00635441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000069F87DF15D655141D1689F9CD56254413D0AD7E35B65514152B81EA5D6625441C3F5281C54655141000000D0DA6254416BBEA8BE4A65514124C0FAC2DF6254416A879C2840655141EB48C052E5625441D833AC7B3965514139655DDBE86254416AE5176735655141693D4504EB62544108228D1326655141768E0C21F3625441E17A146E0F655141E17A141EFF625441EDF45EDD0D65514128175D470263544132FE038C5E6551411480B706D862544169F87DF15D655141D1689F9CD5625441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>667836 - 2951182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -23  </desc>
+<a>
+0106000000010000000103000000010000001E0000003D0AD733D4FA5041F6285C0F6138554185EB51E8CEFA50415C8FC20568385541D7A3708DCDFA5041F6285CCF6A385541A4703D8ACCFA50419A9999896E3855417B14AED7CBFA5041A4703D8A7538554148E17A64CBFA5041713D0A478D38554133333363CBFA5041D7A370ED92385541E17A143ECBFA5041C3F528AC9838554166666616CBFA50410AD7A3C09E3855417B14AE27CBFA5041000000D0A0385541A4703DFACBFA5041C3F5287CA3385541CDCCCC7CE8FA50417B14AEA79F385541CDCCCC1CF1FA50419A9999799E385541713D0AC7F3FA5041F6285C5F9E385541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000003D0AD7B3D9FA5041666666D66B38554185EB5168F7FA5041666666A64F385541C74D5F7CF7FA5041F0D048B44F385541EB410785F5FA50419393AC494E385541D3E89A09F1FA5041C2CF963D4B385541AE47E19AEAFA50419A9999C946385541476BA674E9FA50414F9676E645385541456F65E1E2FA504169C3DC644E385541E22161ABDAFA50411A93B6B458385541A2D0C359D2FA50414C0FBB7E63385541C3552767CFFA504160771CCA6638554177B801D3CDFA5041F8653F406A385541E076BB83CCFA5041440AEFCA6E385541D93320B5CBFA50418D110DB572385541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>832664 - 803459
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -340  </desc>
+<a>
+01060000000100000001030000000100000045000000B591E4FDB5A6504163C4F460F6345441AEE127ECB1A650416B46604BF4345441295C8F72B0A65041295C8F12F8345441C3F5283CAFA65041A4703DBA02355441A4703DBAADA65041AE47E16A0735544152B81EA5ACA650410AD7A3A009355441E17A146EAAA65041CDCCCC3C0C35544185EB5118A7A650419A9999F90F355441D7A370DDA4A65041F6285CFF0F35544148E17AC4A1A650417B14AE0710355441AE47E11AA0A65041D7A370BD123554418FC2F5589FA65041E17A141E14355441EC51B8DE98A650418FC2F548213554419A9999599BA650413D0AD7B322355441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000008E0000007B14AE07A8A65041F6285C3F3D355441D7A3700DA2A65041AE47E11A45355441CDCCCC1CA1A65041E17A146E4635544185EB51C8A0A65041EC51B83E49355441E17A149EA0A65041000000A04A355441AE47E13AA0A6504114AE47014C3554417B14AEE79EA650419A9999A94D355441000000309EA650419A9999994F3554418FC2F5E89DA6504185EB519851355441E17A146EA1A65041666666565935544100000030A3A65041000000A05D355441A4703D3AA4A650419A999929603554417B14AE47A5A650419A999949623554415C8FC235A6A6504152B81EC561355441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>832664 - 3104794
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -340  </desc>
+<a>
+01060000000100000001030000000100000045000000B591E4FDB5A6504163C4F460F6345441AEE127ECB1A650416B46604BF4345441295C8F72B0A65041295C8F12F8345441C3F5283CAFA65041A4703DBA02355441A4703DBAADA65041AE47E16A0735544152B81EA5ACA650410AD7A3A009355441E17A146EAAA65041CDCCCC3C0C35544185EB5118A7A650419A9999F90F355441D7A370DDA4A65041F6285CFF0F35544148E17AC4A1A650417B14AE0710355441AE47E11AA0A65041D7A370BD123554418FC2F5589FA65041E17A141E14355441EC51B8DE98A650418FC2F548213554419A9999599BA650413D0AD7B322355441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000320000005C8FC285A9A65041D7A3709D2A355441D7A370FDA5A65041E17A146E2F35544166666676ADA650416666660632355441295C8FD2AEA650411F85EBF131355441CDCCCCDCAFA6504148E17AB4313554411F85EBF1B3A6504133333363333554417B14AE77B7A650415C8FC22535355441333333F3BBA65041C3F5281C363554410C826A1FC5A650415D982CFD3C355441C5C7D07FD1A65041516C996926355441C5DD03FAD3A6504186B7D38127355441BDA779EFD5A6504126834F5028355441AC3B65DAD9A650412FB4C7CF2935544147EC9BA3DBA65041B2CC838F2A355441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>832664 - 3426474
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -340  </desc>
+<a>
+01060000000100000001030000000100000045000000B591E4FDB5A6504163C4F460F6345441AEE127ECB1A650416B46604BF4345441295C8F72B0A65041295C8F12F8345441C3F5283CAFA65041A4703DBA02355441A4703DBAADA65041AE47E16A0735544152B81EA5ACA650410AD7A3A009355441E17A146EAAA65041CDCCCC3C0C35544185EB5118A7A650419A9999F90F355441D7A370DDA4A65041F6285CFF0F35544148E17AC4A1A650417B14AE0710355441AE47E11AA0A65041D7A370BD123554418FC2F5589FA65041E17A141E14355441EC51B8DE98A650418FC2F548213554419A9999599BA650413D0AD7B322355441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000320000005C8FC285A9A65041D7A3709D2A355441D7A370FDA5A65041E17A146E2F35544166666676ADA650416666660632355441295C8FD2AEA650411F85EBF131355441CDCCCCDCAFA6504148E17AB4313554411F85EBF1B3A6504133333363333554417B14AE77B7A650415C8FC22535355441333333F3BBA65041C3F5281C363554410C826A1FC5A650415D982CFD3C355441C5C7D07FD1A65041516C996926355441C5DD03FAD3A6504186B7D38127355441BDA779EFD5A6504126834F5028355441AC3B65DAD9A650412FB4C7CF2935544147EC9BA3DBA65041B2CC838F2A355441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>670862 - 216590
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -425  </desc>
+<a>
+0106000000010000000103000000010000000A000000713D0A577EE350415C8FC2952D235541666666467BE3504148E17A742B235541295C8F3278E35041AE47E1AA2A235541E17A14DE76E350418FC2F5482C235541C3F528CC75E35041EC51B8BE2C2355417B14AE276AE350419A99998932235541D7A3700D79E35041AE47E10A3A235541C3F5286C7AE35041713D0AA73A235541A4703D0A81E350411F85EB712F235541713D0A577EE350415C8FC2952D235541
+</a>
+
+<b>
+0106000000010000000103000000010000001900000099A6591D7AE3504158D377282B235541F68ABD6879E35041757D40FA2A23554150F4864078E35041A513C9C12A23554130C1A3D877E35041683700482B235541493347D777E35041AF41614A2B235541C3CCB1BF77E35041929C96732B2355417D87CD3777E350414770CA172C235541C395BAEA76E3504192705D7B2C2355412057CC4D76E35041757471792D2355411C57CC4D76E35041827471792D235541E455CC4D76E35041477571792D2355415E2DD4FD75E350416B5C6CAD2D23554173A982D874E3504191C45E282F235541E79C163673E3504151FA0D7C2F235541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>677423 - 1198153
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -30  </desc>
+<a>
+01060000000100000001030000000100000019000000B81E851B2F3551410AD7A3A0D49554411F85EB512E355141E17A148ED3955441CDCCCCDC183551410AD7A390D195544148E17A04F2345141D7A370FDCD9554417B14AE07EB345141295C8F12CE9554415C8FC275E2345141F6285C0FCF9554411F85EB61DE345141EC51B83ED1955441CDCCCC4CDD345141295C8FB2D2955441D7A3707DDA345141F6285C6FE0955441E17A14CED7345141295C8F82ED9554417B14AE07D834514152B81E65EF9554415C8FC2F5DC34514152B81EE5F995544100000000E5345141EC51B83E05965441E17A149EE23451418FC2F5E80D965441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A0000007B4CE502E9345141F30820EB049654418BDB4552E7345141B90707F600965441EE94AC20E4345141997283F5FA955441557592A3E0345141C87B180CF595544122E206BEDD345141E6C88B44F0955441078F3695DD3451410A28F790EF955441136EA3DEDC34514171FDA26DEC9554412770DF58DD345141368BE6B4E9955441FAF5F3B9DD345141032A8B8BE79554419AFF39ADDE345141FBFFF60EE29554410535A88EDF3451414DE8850ADC955441DF477BA9DF3451417CE73853DB955441CB205A68E03451414391D12BD995544160B2943BE134514194259AC9D6955441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>678878 - 58375
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -36  </desc>
+<a>
+0106000000010000000103000000010000001800000066666666813F51419A99997906915441666666D67F3F514152B81E7503915441713D0A577A3F514114AE4721F89054415C8FC295743F5141A4703D8AF390544114AE4791673F514185EB5198E990544152B81E05603F514148E17AF4E0905441CDCCCCCC5C3F5141C3F528BCDE90544152B81E95573F514152B81E75DC90544185EB5108533F51410AD7A3A0DA905441000000D04F3F514148E17A84D9905441D7A3706D4C3F514185EB5168D89054415C8FC235483F5141000000B0D6905441F6285C6F453F51413D0AD793D59054413D0AD793403F51418FC2F518D4905441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A0000004A270153313F51410C595AD5D2905441823710FF2C3F5141A3393155D39054414B4F93C5253F5141555E4BD8D4905441E0FA372C0A3F51414B9EB907DA9054410717A9240A3F5141E1E59815DA9054418B75C8190A3F5141BCC88F29DA905441DA03B40C0A3F5141F57C9141DA905441DA03B40C0A3F5141393AAB63DA9054419634AEB6093F51411FF1B3E4DA905441F1E67BF2093F51415DE103B6DB905441B7B993160A3F5141530CEE0EDC90544155BB369C113F51415383A2E2D990544177B04A92213F5141AA6A6886D6905441792B30D82E3F5141118F4582D4905441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>183455 - 334180
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D0000003D0AD713B29B5041C3F5282C2EF054418FC2F508B29B504152B81E652CF05441713D0A27B39B5041295C8FF22AF05441A4703D3AB49B5041000000A029F05441295C8F42B59B5041D7A370ED27F054415C8FC295B69B5041295C8F7225F05441333333D3B79B5041C3F5282C23F05441666666C6B89B5041A4703D9A21F054417B14AED7BA9B504152B81EB51EF05441F90AAFCFBB9B50416ECF5ECC1EF05441D807D021BD9B5041343083241DF05441DE47893BBE9B50417E268FA11BF054411BA6D3EDBF9B5041249E196719F05441E88A4010C19B5041042C9DE917F05441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000200000007B14AE97AE9B5041EC51B89E2CF05441F6285CAFAB9B5041A4703D9A32F05441000000A0AF9B50415C8FC28534F0544114AE4781B09B5041EC51B84E32F054410AD7A300B19B504185EB51E82FF054413D0AD713B29B5041C3F5282C2EF054418FC2F508B29B504152B81E652CF05441713D0A27B39B5041295C8FF22AF05441A4703D3AB49B5041000000A029F05441295C8F42B59B5041D7A370ED27F054415C8FC295B69B5041295C8F7225F05441333333D3B79B5041C3F5282C23F05441666666C6B89B5041A4703D9A21F054417B14AED7BA9B504152B81EB51EF05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>579059 - 1201706
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001A000000666666A65A3F5141A4703D7A486C5441713D0AF75E3F51415C8FC2953E6C544100000050603F5141295C8F523B6C544148E17AE4623F514148E17A94316C5441E17A14CE663F5141C3F5284C266C54410AD7A320673F5141E17A148E246C5441333333B3543F514185EB51D8276C5441CDCCCC0C473F514148E17A642A6C5441666666862E3F5141A4703DDA326C5441295C8F122A3F514100000070336C5441E17A145E293F5141C3F528AC336C544114AE47B1233F5141C3F528CC356C544185EB5168203F51413D0AD773366C5441AE47E1CA1F3F514166666666366C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004D00000085EB5148BD3E5141C3F5283C306C5441A4703D8ABB3E51418FC2F558376C5441A4703D0ABA3E5141AE47E1DA3E6C5441AE47E10AB93E5141295C8FE2446C54418FC2F568B83E5141D7A3705D4C6C54410AD7A3C0B63E5141E17A14AE526C5441E17A141EB53E514185EB51C8596C5441AE47E1BAB33E5141B81E858B5E6C5441D7A3705DB13E514100000010646C5441C3F5286CAC3E5141B81E851B6E6C5441295C8FC2A83E5141AE47E1AA756C54418FC2F558A73E5141E17A142E7B6C54413D0AD7C3A63E51410AD7A360816C54411F85EBB1A63E5141295C8F72866C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>579059 - 3469938
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001A000000666666A65A3F5141A4703D7A486C5441713D0AF75E3F51415C8FC2953E6C544100000050603F5141295C8F523B6C544148E17AE4623F514148E17A94316C5441E17A14CE663F5141C3F5284C266C54410AD7A320673F5141E17A148E246C5441333333B3543F514185EB51D8276C5441CDCCCC0C473F514148E17A642A6C5441666666862E3F5141A4703DDA326C5441295C8F122A3F514100000070336C5441E17A145E293F5141C3F528AC336C544114AE47B1233F5141C3F528CC356C544185EB5168203F51413D0AD773366C5441AE47E1CA1F3F514166666666366C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004D00000085EB5148BD3E5141C3F5283C306C5441A4703D8ABB3E51418FC2F558376C5441A4703D0ABA3E5141AE47E1DA3E6C5441AE47E10AB93E5141295C8FE2446C54418FC2F568B83E5141D7A3705D4C6C54410AD7A3C0B63E5141E17A14AE526C5441E17A141EB53E514185EB51C8596C5441AE47E1BAB33E5141B81E858B5E6C5441D7A3705DB13E514100000010646C5441C3F5286CAC3E5141B81E851B6E6C5441295C8FC2A83E5141AE47E1AA756C54418FC2F558A73E5141E17A142E7B6C54413D0AD7C3A63E51410AD7A360816C54411F85EBB1A63E5141295C8F72866C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979265 - 52900
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000140000009ABA4B446BE650418B7EFA42DA0E554143CAF00D77E6504128B5FCBAAD0E5541295C8F3276E650410AD7A3F0AD0E554152B81E1574E6504114AE4751AD0E55416666667669E65041AE47E11AA70E55411F85EBC15DE650418FC2F5F89F0E5541A4703D6A51E65041B81E858B980E554114AE47914DE6504148E17AA4950E5541295C8F224AE650410AD7A320980E55411F85EB7146E65041D7A3704DA40E55418FC2F50843E6504114AE47C1AE0E55419A99997943E65041D7A3708DB40E5541EC51B8AE44E65041C3F5289CB60E5541C3F528CC48E650419A999909BA0E5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003E00000052B81E1574E6504114AE4751AD0E5541E3A3C1CD71E65041F4F505FCAB0E5541C24E2F556EE6504197C239F4A90E55414352A4376CE6504169E76EB7A80E55416666667669E65041AE47E11AA70E55415D94E04F5EE65041905D764FA00E5541EDEDC4B259E6504102089E879D0E554108B5138856E6504177C5C19F9B0E5541809A9FAE54E650419044D7829A0E554188A1ABE852E65041F4F0A871990E5541ED995ADE52E65041AA9D736B990E5541A4703D6A51E65041B81E858B980E55414ACD871051E650413A2AD847980E55410B761EA250E6504145308DF4970E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>724689 - 129951
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000013000000AEB1C8B55EB150418BDD748EB54A55410DC8BB625EB1504176EC1657B54A554123B9199A5EB15041EBF3673BB54A5541FA4BCB9F4DB15041997C57F6B64A55418991E15350B150418563F3E2C94A5541813F668451B15041D51D4352D24A5541EDF43B9952B1504131777529DC4A5541868CCD1C54B150415EE4C323ED4A554151E3286A65B15041D4EB1408ED4A5541815A9FD26EB15041330208B5EC4A5541E170927F6EB1504179DA3592E94A5541C732CDAF6BB150412E25FA59DD4A554192B6421066B150418E68071AC64A55410E100FC464B150412E5728A4C24A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000853F668451B15041D71D4352D24A55414CE0988752B150419C3BF688DB4A5541EEF43B9952B1504130777529DC4A5541E468CEF553B15041EA1D726EEB4A5541041F3F2054B1504198687521ED4A55410AE6DA8D55B1504198687521ED4A55414EE3286A65B15041D5EB1408ED4A5541904BFF9C6EB15041D363E1B6EC4A554156FE0AB46EB1504167DC6D8DEB4A55416FB4CA9A6EB15041C0BC5599EA4A5541DB8441856EB150414F9B27C9E94A55415025585A6EB150416DB969F0E84A55411C9E5ACA6DB1504106DA9B7EE64A55411CEFCE9D6DB150414FB001BDE54A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>724689 - 329208
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000013000000AEB1C8B55EB150418BDD748EB54A55410DC8BB625EB1504176EC1657B54A554123B9199A5EB15041EBF3673BB54A5541FA4BCB9F4DB15041997C57F6B64A55418991E15350B150418563F3E2C94A5541813F668451B15041D51D4352D24A5541EDF43B9952B1504131777529DC4A5541868CCD1C54B150415EE4C323ED4A554151E3286A65B15041D4EB1408ED4A5541815A9FD26EB15041330208B5EC4A5541E170927F6EB1504179DA3592E94A5541C732CDAF6BB150412E25FA59DD4A554192B6421066B150418E68071AC64A55410E100FC464B150412E5728A4C24A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000853F668451B15041D71D4352D24A55414CE0988752B150419C3BF688DB4A5541EEF43B9952B1504130777529DC4A5541E468CEF553B15041EA1D726EEB4A5541041F3F2054B1504198687521ED4A55410AE6DA8D55B1504198687521ED4A55414EE3286A65B15041D5EB1408ED4A5541904BFF9C6EB15041D363E1B6EC4A554156FE0AB46EB1504167DC6D8DEB4A55416FB4CA9A6EB15041C0BC5599EA4A5541DB8441856EB150414F9B27C9E94A55415025585A6EB150416DB969F0E84A55411C9E5ACA6DB1504106DA9B7EE64A55411CEFCE9D6DB150414FB001BDE54A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>685457 - 685722
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000140000002A25F2AC9B4251413E4CD03333815441D089A231994251418DE556B83381544159C15DBB94425141CE14E7AB348154415C6760069742514166C068C5358154413E20AB7E974251416B1B442F368154410A6D9500984251414DD48EA736815441E1EFAF7D98425141F67EE8373781544113234CD498425141FBD9C3A137815441AC3C9AFF9842514122D72FFD37815441A79B214999425141318BE35B38815441CDCCCCCC9A42514148E17A743E8154415C8FC265A242514148E17A345E8154415C8FC255AA4251413D0AD7237A815441295C8FC2AB425141B81E85BB7A815441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000333333B39442514185EB51A834815441713D0AD7B04251419A9999C92E815441D7A3702DC3425141C3F528CC29815441AE47E1EAC44251411F85EBC127815441B81E855BC542514152B81EB52581544185EB5148C342514152B81E15228154417B14AE07C2425141333333632181544166666646A0425141B81E85EB248154417B14AE8790425141CDCCCC6C22815441A4703DCA8D42514185EB518821815441666666F68C4251411F85EB51228154418FC2F5B890425141AE47E1DA318154419A999929924251410AD7A39033815441333333B39442514185EB51A834815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>685457 - 1191562
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000140000002A25F2AC9B4251413E4CD03333815441D089A231994251418DE556B83381544159C15DBB94425141CE14E7AB348154415C6760069742514166C068C5358154413E20AB7E974251416B1B442F368154410A6D9500984251414DD48EA736815441E1EFAF7D98425141F67EE8373781544113234CD498425141FBD9C3A137815441AC3C9AFF9842514122D72FFD37815441A79B214999425141318BE35B38815441CDCCCCCC9A42514148E17A743E8154415C8FC265A242514148E17A345E8154415C8FC255AA4251413D0AD7237A815441295C8FC2AB425141B81E85BB7A815441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000400000000EE1B116B44251417D444AE72D815441713D0AD7B04251419A9999C92E815441333333B39442514185EB51A834815441C6662661954251418F0B1ACF34815441E58367829742514152DDFFA93581544103E61489984251419F77046D3681544112976B0C9942514150B8AC77378154418D69C78B99425141689FF8C9388154410C6BD59B9A425141F9586E883D8154410E3B848CBD425141E040127F368154411621486FC5425141D586B9814D815441C76AAF99BE42514152E60F9C4F815441DE00B758CA425141019B18567181544148E17AF4CC42514185EB51A870815441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>685457 - 1191594
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000140000002A25F2AC9B4251413E4CD03333815441D089A231994251418DE556B83381544159C15DBB94425141CE14E7AB348154415C6760069742514166C068C5358154413E20AB7E974251416B1B442F368154410A6D9500984251414DD48EA736815441E1EFAF7D98425141F67EE8373781544113234CD498425141FBD9C3A137815441AC3C9AFF9842514122D72FFD37815441A79B214999425141318BE35B38815441CDCCCCCC9A42514148E17A743E8154415C8FC265A242514148E17A345E8154415C8FC255AA4251413D0AD7237A815441295C8FC2AB425141B81E85BB7A815441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000333333B39442514185EB51A834815441713D0AD7B04251419A9999C92E815441D7A3702DC3425141C3F528CC29815441AE47E1EAC44251411F85EBC127815441B81E855BC542514152B81EB52581544185EB5148C342514152B81E15228154417B14AE07C2425141333333632181544166666646A0425141B81E85EB248154417B14AE8790425141CDCCCC6C22815441A4703DCA8D42514185EB518821815441666666F68C4251411F85EB51228154418FC2F5B890425141AE47E1DA318154419A999929924251410AD7A39033815441333333B39442514185EB51A834815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>685457 - 3958529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000140000002A25F2AC9B4251413E4CD03333815441D089A231994251418DE556B83381544159C15DBB94425141CE14E7AB348154415C6760069742514166C068C5358154413E20AB7E974251416B1B442F368154410A6D9500984251414DD48EA736815441E1EFAF7D98425141F67EE8373781544113234CD498425141FBD9C3A137815441AC3C9AFF9842514122D72FFD37815441A79B214999425141318BE35B38815441CDCCCCCC9A42514148E17A743E8154415C8FC265A242514148E17A345E8154415C8FC255AA4251413D0AD7237A815441295C8FC2AB425141B81E85BB7A815441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000333333B39442514185EB51A834815441713D0AD7B04251419A9999C92E815441D7A3702DC3425141C3F528CC29815441AE47E1EAC44251411F85EBC127815441B81E855BC542514152B81EB52581544185EB5148C342514152B81E15228154417B14AE07C2425141333333632181544166666646A0425141B81E85EB248154417B14AE8790425141CDCCCC6C22815441A4703DCA8D42514185EB518821815441666666F68C4251411F85EB51228154418FC2F5B890425141AE47E1DA318154419A999929924251410AD7A39033815441333333B39442514185EB51A834815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>685457 - 5307794
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000140000002A25F2AC9B4251413E4CD03333815441D089A231994251418DE556B83381544159C15DBB94425141CE14E7AB348154415C6760069742514166C068C5358154413E20AB7E974251416B1B442F368154410A6D9500984251414DD48EA736815441E1EFAF7D98425141F67EE8373781544113234CD498425141FBD9C3A137815441AC3C9AFF9842514122D72FFD37815441A79B214999425141318BE35B38815441CDCCCCCC9A42514148E17A743E8154415C8FC265A242514148E17A345E8154415C8FC255AA4251413D0AD7237A815441295C8FC2AB425141B81E85BB7A815441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000400000000EE1B116B44251417D444AE72D815441713D0AD7B04251419A9999C92E815441333333B39442514185EB51A834815441C7662661954251418F0B1ACF34815441E88367829742514150DDFFA93581544101E61489984251419E77046D3681544112976B0C9942514150B8AC77378154418C69C78B99425141649FF8C9388154410C6BD59B9A425141F9586E883D8154410E3B848CBD425141E040127F368154411621486FC5425141D586B9814D815441C76AAF99BE42514152E60F9C4F815441DE00B758CA425141019B18567181544148E17AF4CC42514185EB51A870815441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>3168668 - 3108485
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000080000003D0AD713CBCA5041E17A144ED1AD544185EB5158CCCA504114AE4781D0AD54419A9999C9CDCA5041D7A3704DBBAD544185EB518894CA5041333333B3A5AD54413333330391CA5041333333B3AFAD5441000000708ECA50410AD7A320B9AD5441295C8F528FCA5041A4703DCABAAD54413D0AD713CBCA5041E17A144ED1AD5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000008BF173B991CA504116A26FADADAD5441001D061591CA5041CE609080AFAD54411EBD6ED890CA5041DC52C74FB0AD54410FBB91E890CA504142E5455BB0AD5441E5247BBE91CA5041744B96A9B0AD5441C5E9C68B9BCA5041E2933D2CB4AD5441F5E2BEC5A8CA50416F43FAEAB8AD5441545F6345C8CA50412F5ECA45C4AD5441F991EE12CDCA50417CE22B01C6AD544101AD3A90CDCA50417284B398BEAD54418B795BC9CDCA5041ACC80151BBAD5441E7EFF84EABCA504173D51F4BAEAD5441419C63E696CA5041BC32DF97A6AD5441B1E9AEA094CA50411C7064BCA5AD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>3168668 - 3487010
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000080000003D0AD713CBCA5041E17A144ED1AD544185EB5158CCCA504114AE4781D0AD54419A9999C9CDCA5041D7A3704DBBAD544185EB518894CA5041333333B3A5AD54413333330391CA5041333333B3AFAD5441000000708ECA50410AD7A320B9AD5441295C8F528FCA5041A4703DCABAAD54413D0AD713CBCA5041E17A144ED1AD5441
+</a>
+
+<b>
+010600000001000000010300000001000000100000008BF173B991CA504116A26FADADAD5441001D061591CA5041CE609080AFAD54411EBD6ED890CA5041DC52C74FB0AD54410FBB91E890CA504142E5455BB0AD5441E5247BBE91CA5041744B96A9B0AD5441C5E9C68B9BCA5041E2933D2CB4AD5441F5E2BEC5A8CA50416F43FAEAB8AD5441545F6345C8CA50412F5ECA45C4AD5441F991EE12CDCA50417CE22B01C6AD544101AD3A90CDCA50417284B398BEAD54418B795BC9CDCA5041ACC80151BBAD5441E7EFF84EABCA504173D51F4BAEAD5441419C63E696CA5041BC32DF97A6AD5441B1E9AEA094CA50411C7064BCA5AD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979214 - 1730667
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000030000003F000000379E7625A1965041D81A9F99BB2F55418C636677A196504189C346E5C12F55411217008AA0965041BCB45FECC72F5541D45780389E9650418DEC6B41CD2F554159D98095999650415F56114CD62F5541C5C727B7949650414AECDC6CE12F5541DF8C1AA89896504163B1CF5DE52F554135DFF3349B9650411C568277EA2F55411C4C9AF99A965041BACE0E7BED2F55411CB3CD1E99965041A5CB0DC1F62F5541A1CD9A5696965041F2E84CDEFE2F5541D0958E0191965041CE878C58023055418346B62E859650412F41990A03305541A3E5847D7496504153D4F24503305541 [...]
+</a>
+
+<b>
+0106000000010000000103000000030000003F000000379E7625A1965041D81A9F99BB2F55418C636677A196504189C346E5C12F55411217008AA0965041BCB45FECC72F5541D45780389E9650418DEC6B41CD2F554159D98095999650415F56114CD62F5541C5C727B7949650414AECDC6CE12F5541DF8C1AA89896504163B1CF5DE52F554135DFF3349B9650411C568277EA2F55411C4C9AF99A965041BACE0E7BED2F55411CB3CD1E99965041A5CB0DC1F62F5541A1CD9A5696965041F2E84CDEFE2F5541D0958E0191965041CE878C58023055418346B62E859650412F41990A03305541A3E5847D7496504153D4F24503305541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979214 - 3485438
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000030000003F000000379E7625A1965041D81A9F99BB2F55418C636677A196504189C346E5C12F55411217008AA0965041BCB45FECC72F5541D45780389E9650418DEC6B41CD2F554159D98095999650415F56114CD62F5541C5C727B7949650414AECDC6CE12F5541DF8C1AA89896504163B1CF5DE52F554135DFF3349B9650411C568277EA2F55411C4C9AF99A965041BACE0E7BED2F55411CB3CD1E99965041A5CB0DC1F62F5541A1CD9A5696965041F2E84CDEFE2F5541D0958E0191965041CE878C58023055418346B62E859650412F41990A03305541A3E5847D7496504153D4F24503305541 [...]
+</a>
+
+<b>
+0106000000010000000103000000030000003F000000379E7625A1965041D81A9F99BB2F55418C636677A196504189C346E5C12F55411217008AA0965041BCB45FECC72F5541D45780389E9650418DEC6B41CD2F554159D98095999650415F56114CD62F5541C5C727B7949650414AECDC6CE12F5541DF8C1AA89896504163B1CF5DE52F554135DFF3349B9650411C568277EA2F55411C4C9AF99A965041BACE0E7BED2F55411CB3CD1E99965041A5CB0DC1F62F5541A1CD9A5696965041F2E84CDEFE2F5541D0958E0191965041CE878C58023055418346B62E859650412F41990A03305541A3E5847D7496504153D4F24503305541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979214 - 406674
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000030000003F000000379E7625A1965041D81A9F99BB2F55418C636677A196504189C346E5C12F55411217008AA0965041BCB45FECC72F5541D45780389E9650418DEC6B41CD2F554159D98095999650415F56114CD62F5541C5C727B7949650414AECDC6CE12F5541DF8C1AA89896504163B1CF5DE52F554135DFF3349B9650411C568277EA2F55411C4C9AF99A965041BACE0E7BED2F55411CB3CD1E99965041A5CB0DC1F62F5541A1CD9A5696965041F2E84CDEFE2F5541D0958E0191965041CE878C58023055418346B62E859650412F41990A03305541A3E5847D7496504153D4F24503305541 [...]
+</a>
+
+<b>
+010600000001000000010300000003000000380000003ABE6AA77A9650417DC38AA0223055414058C0C0909650415F9290991F3055419A82AF14919650412D663C3D2130554126D9F2C48F965041B08EC688233055419A82AF149196504164E3A4302430554145A9D45795965041193883D82430554122FC4DF79796504164E3A43024305541C8D15EA3979650413CE509392230554145A9D45795965041B9BC7FED1F3055415233DC18B89650411D1528A61C3055416BB2A914B99650419AEC9D5A1A3055418F5F3075B6965041C7C7DD1F14305541EAFD8E92C396504130CF71410C30554135A9B0EAC2965041EE51094E09305541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979375 - 1749311
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000A9EDFF315BE0504101F5F104CA8354414BC4BF225AE050411F27ECA6E3835441529CEA9A64E0504128C1CE48E383544153A2210A66E05041EB5CC649CA83544108E6AE6067E0504106FE71E4B08354411F85EBE162E05041F6285CBFB1835441212F7B785FE0504175BC971BB28354419B45AD9F5CE050417F0D1343B2835441A9EDFF315BE0504101F5F104CA835441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000003D0AD7B35DE050410AD7A330C38354415C8FC2555DE05041F6285C8FCA835441713D0A275DE050418FC2F538CE835441346AAE155CE05041CAFE6695E3835441569CEA9A64E0504123C1CE48E38354417498A4A066E0504162D7D22AE3835441B81E85FB67E050415C8FC245C983544185EB514869E050417B14AE87B083544107E6AE6067E050410AFE71E4B08354411F85EBE162E05041F6285CBFB1835441202F7B785FE0504175BC971BB2835441CDCCCC8C5EE0504148E17A34B2835441000000005EE0504148E17A34BD8354413D0AD7B35DE050410AD7A330C3835441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979375 - 3393860
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000A9EDFF315BE0504101F5F104CA8354414BC4BF225AE050411F27ECA6E3835441529CEA9A64E0504128C1CE48E383544153A2210A66E05041EB5CC649CA83544108E6AE6067E0504106FE71E4B08354411F85EBE162E05041F6285CBFB1835441212F7B785FE0504175BC971BB28354419B45AD9F5CE050417F0D1343B2835441A9EDFF315BE0504101F5F104CA835441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000003D0AD7B35DE050410AD7A330C38354415C8FC2555DE05041F6285C8FCA835441713D0A275DE050418FC2F538CE835441346AAE155CE05041CAFE6695E3835441569CEA9A64E0504123C1CE48E38354417498A4A066E0504162D7D22AE3835441B81E85FB67E050415C8FC245C983544185EB514869E050417B14AE87B083544107E6AE6067E050410AFE71E4B08354411F85EBE162E05041F6285CBFB1835441202F7B785FE0504175BC971BB2835441CDCCCC8C5EE0504148E17A34B2835441000000005EE0504148E17A34BD8354413D0AD7B35DE050410AD7A330C3835441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>970040 - 967065
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000F5100F52265E5141F8E84DE3B398544128D5347E2A5E5141FC2A20E867985441A5123F35155E5141CC49A5F3629854416CBD245C105E51413DFFD4A7B39854417D3AAB8E145E5141CE608DC9B398544166DEB54E1C5E5141B7B39A84B4985441F36C53A5225E5141298BC113B698544113E1BF25265E51416D838E0BB7985441F5100F52265E5141F8E84DE3B3985441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000713D0A37335E5141295C8F32BB98544152B81E95355E5141EC51B8CE929854418FC2F5E8375E51415C8FC2056B985441EC51B87E2A5E5141713D0AE767985441295C8F42285E5141295C8F829098544152B81E25265E5141713D0A17B7985441713D0A37335E5141295C8F32BB985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>970040 - 2933475
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000F5100F52265E5141F8E84DE3B398544128D5347E2A5E5141FC2A20E867985441A5123F35155E5141CC49A5F3629854416CBD245C105E51413DFFD4A7B39854417D3AAB8E145E5141CE608DC9B398544166DEB54E1C5E5141B7B39A84B4985441F36C53A5225E5141298BC113B698544113E1BF25265E51416D838E0BB7985441F5100F52265E5141F8E84DE3B3985441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000713D0A37335E5141295C8F32BB98544152B81E95355E5141EC51B8CE929854418FC2F5E8375E51415C8FC2056B985441EC51B87E2A5E5141713D0AE767985441295C8F42285E5141295C8F829098544152B81E25265E5141713D0A17B7985441713D0A37335E5141295C8F32BB985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>970040 - 3788619
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000F5100F52265E5141F8E84DE3B398544128D5347E2A5E5141FC2A20E867985441A5123F35155E5141CC49A5F3629854416CBD245C105E51413DFFD4A7B39854417D3AAB8E145E5141CE608DC9B398544166DEB54E1C5E5141B7B39A84B4985441F36C53A5225E5141298BC113B698544113E1BF25265E51416D838E0BB7985441F5100F52265E5141F8E84DE3B3985441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000713D0A37335E5141295C8F32BB98544152B81E95355E5141EC51B8CE929854418FC2F5E8375E51415C8FC2056B985441EC51B87E2A5E5141713D0AE767985441295C8F42285E5141295C8F829098544152B81E25265E5141713D0A17B7985441713D0A37335E5141295C8F32BB985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978656 - 393829
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000015000000295F3A72E5D95041C8A6C5D24C7D5441E747C28AEFD95041775AC6864C7D544152B81E850ADA5041B81E85FB4B7D5441F9BF218C0FDA5041292B5FDE4B7D5441F79D6CBD2DDA50417197512F4B7D5441713D0A4740DA50413D0AD7C34A7D5441BD7019EC5FDA50410B016E0C4A7D54418EB5F5CF66DA5041FF892BDA497D544109A2050666DA504119C7F3823E7D5441E862875663DA5041F65D408D3E7D5441E096D30641DA50411C4331543F7D5441EC1E6DA32EDA5041AB8D9FBE3F7D5441073E57B921DA50414E5E5C09407D54419B1B190212DA5041007B4F64407D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000F6285C8F0CDA50413D0AD783407D5441713D0AA73FDA5041C3F5285C3F7D54410AD7A31066DA5041D7A3707D3E7D544185EB515865DA504148E17A94337D54415C8FC2153FDA50411F85EB71347D544185EB51880EDA5041AE47E18A357D544185EB51C8E8D950415C8FC265367D54413D0AD783E8D950417B14AE27387D5441E17A141EE7D95041CDCCCC5C417D5441F6285C8F0CDA50413D0AD783407D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978656 - 1759464
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000015000000295F3A72E5D95041C8A6C5D24C7D5441E747C28AEFD95041775AC6864C7D544152B81E850ADA5041B81E85FB4B7D5441F9BF218C0FDA5041292B5FDE4B7D5441F79D6CBD2DDA50417197512F4B7D5441713D0A4740DA50413D0AD7C34A7D5441BD7019EC5FDA50410B016E0C4A7D54418EB5F5CF66DA5041FF892BDA497D544109A2050666DA504119C7F3823E7D5441E862875663DA5041F65D408D3E7D5441E096D30641DA50411C4331543F7D5441EC1E6DA32EDA5041AB8D9FBE3F7D5441073E57B921DA50414E5E5C09407D54419B1B190212DA5041007B4F64407D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000F6285C8F0CDA50413D0AD783407D5441713D0AA73FDA5041C3F5285C3F7D54410AD7A31066DA5041D7A3707D3E7D544185EB515865DA504148E17A94337D54415C8FC2153FDA50411F85EB71347D544185EB51880EDA5041AE47E18A357D544185EB51C8E8D950415C8FC265367D54413D0AD783E8D950417B14AE27387D5441E17A141EE7D95041CDCCCC5C417D5441F6285C8F0CDA50413D0AD783407D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978656 - 4398522
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000015000000295F3A72E5D95041C8A6C5D24C7D5441E747C28AEFD95041775AC6864C7D544152B81E850ADA5041B81E85FB4B7D5441F9BF218C0FDA5041292B5FDE4B7D5441F79D6CBD2DDA50417197512F4B7D5441713D0A4740DA50413D0AD7C34A7D5441BD7019EC5FDA50410B016E0C4A7D54418EB5F5CF66DA5041FF892BDA497D544109A2050666DA504119C7F3823E7D5441E862875663DA5041F65D408D3E7D5441E096D30641DA50411C4331543F7D5441EC1E6DA32EDA5041AB8D9FBE3F7D5441073E57B921DA50414E5E5C09407D54419B1B190212DA5041007B4F64407D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000F6285C8F0CDA50413D0AD783407D5441713D0AA73FDA5041C3F5285C3F7D54410AD7A31066DA5041D7A3707D3E7D544185EB515865DA504148E17A94337D54415C8FC2153FDA50411F85EB71347D544185EB51880EDA5041AE47E18A357D544185EB51C8E8D950415C8FC265367D54413D0AD783E8D950417B14AE27387D5441E17A141EE7D95041CDCCCC5C417D5441F6285C8F0CDA50413D0AD783407D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>16579 - 3185678
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000200000008FC2F558ADF85041A4703D4AF46F5441A4703D9AABF85041AE47E1AAF56F544148E17A64A7F85041E17A14BEF76F54415C8FC245A6F85041B81E854BF86F54419A999949A5F85041F6285C3FF96F54413D0AD793AAF850411F85EB21FB6F544114AE47A1A8F85041D7A3703DFF6F544148E17A84B6F8504100000030047054415C8FC2A5C4F850418FC2F538097054413D0AD793C5F85041F6285C3F097054413D0AD733C5F850410AD7A3E0057054418FC2F508C5F850411F85EB41037054413D0AD7F3C4F8504133333383007054413D0AD7B3C4F8504148E17A44FD6F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002700000048E17A64C5F850419A999999DD6F544148E17A94B1F85041F6285CEFD76F54418FC2F5F8B0F85041EC51B8DEDC6F544166666606B4F8504133333353DD6F544114AE47B1B3F85041CDCCCCDCDF6F5441B81E85ABB0F85041666666C6DF6F544175781790B0F85041DC8B729BE86F54415D277887B0F85041D9E3F38DE96F5441CE6DFF3DB0F8504177DE71D5EC6F5441AA1B64B8AFF85041B7356C96EF6F544182939397AFF8504154BE9143F06F5441479EC552AFF85041870CCBFAF06F5441E7F245E9AEF85041F5C49011F26F544123137BC3AEF8504198EEF174F26F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>16579 - 3404185
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000200000008FC2F558ADF85041A4703D4AF46F5441A4703D9AABF85041AE47E1AAF56F544148E17A64A7F85041E17A14BEF76F54415C8FC245A6F85041B81E854BF86F54419A999949A5F85041F6285C3FF96F54413D0AD793AAF850411F85EB21FB6F544114AE47A1A8F85041D7A3703DFF6F544148E17A84B6F8504100000030047054415C8FC2A5C4F850418FC2F538097054413D0AD793C5F85041F6285C3F097054413D0AD733C5F850410AD7A3E0057054418FC2F508C5F850411F85EB41037054413D0AD7F3C4F8504133333383007054413D0AD7B3C4F8504148E17A44FD6F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002700000048E17A64C5F850419A999999DD6F544148E17A94B1F85041F6285CEFD76F54418FC2F5F8B0F85041EC51B8DEDC6F544166666606B4F8504133333353DD6F544114AE47B1B3F85041CDCCCCDCDF6F5441B81E85ABB0F85041666666C6DF6F544175781790B0F85041DC8B729BE86F54415D277887B0F85041D9E3F38DE96F5441CE6DFF3DB0F8504177DE71D5EC6F5441AA1B64B8AFF85041B7356C96EF6F544182939397AFF8504154BE9143F06F5441479EC552AFF85041870CCBFAF06F5441E7F245E9AEF85041F5C49011F26F544123137BC3AEF8504198EEF174F26F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263055 - 1096924
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000250000007B14AE571C075141000000E086455441000000001E0751419A9999598F455441EC51B82E1F07514152B81EC594455441E17A14FE200751419A9999F99C4554413D0AD7632207514100000050A3455441B81E850B23075141666666F6AA455441AE47E14A23075141295C8FD2AD4554419A9999592607514148E17A54AD455441000000402707514166666636AD4554417D5A6C002A0751413B9841B3AC455441D7FFC7C72E075141ACFC5CE7AB455441809326FE300751412E9C04FEAB4554415CD829DC35075141ACFC5CE7AB4554410474A1213707514172114230AC455441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000290000006F679D0B230751411C1CCEF7AA45544111A2610D230751411DC6E80BAB45544106513D2E23075141DF729A87AC4554418F62746023075141FCAA4A28AD45544182EE4D2024075141333B30ACAD4554419A9999592607514148E17A54AD455441000000402707514166666636AD4554417C5A6C002A0751413B9841B3AC455441AC6F60712D0751419E91AB81AC455441568B9F5E3307514175584449AC4554417B14AEC7360751417B14AE37AC455441E17A144E3C075141E17A141EAC45544114AE47A13E07514100000040AC45544193422E9D410751412B451D78AC455441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263055 - 3555793
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000250000007B14AE571C075141000000E086455441000000001E0751419A9999598F455441EC51B82E1F07514152B81EC594455441E17A14FE200751419A9999F99C4554413D0AD7632207514100000050A3455441B81E850B23075141666666F6AA455441AE47E14A23075141295C8FD2AD4554419A9999592607514148E17A54AD455441000000402707514166666636AD4554417D5A6C002A0751413B9841B3AC455441D7FFC7C72E075141ACFC5CE7AB455441809326FE300751412E9C04FEAB4554415CD829DC35075141ACFC5CE7AB4554410474A1213707514172114230AC455441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000290000006F679D0B230751411C1CCEF7AA45544111A2610D230751411DC6E80BAB45544106513D2E23075141DF729A87AC4554418F62746023075141FCAA4A28AD45544182EE4D2024075141333B30ACAD4554419A9999592607514148E17A54AD455441000000402707514166666636AD4554417C5A6C002A0751413B9841B3AC455441AC6F60712D0751419E91AB81AC455441568B9F5E3307514175584449AC4554417B14AEC7360751417B14AE37AC455441E17A144E3C075141E17A141EAC45544114AE47A13E07514100000040AC45544193422E9D410751412B451D78AC455441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>132442 - 1215066
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001F000000FCE9BFA82E8551414541D77C1D8554419E9D8EE52F855141C867DCD6208554419CE65A573185514140B35E732585544116CA4B10358551412ACBE3C832855441261ED00535855141B73D00BA338554416666661640855141CDCCCCEC3085544152B81EB549855141000000602F85544185EB51D84F855141E17A145E2F855441A4703D9A5B855141333333033085544185EB51885D855141666666D61C855441666666B65D855141F6285C0F1B8554413D0AD7435E855141713D0A6712855441A4703D9A5F8551413D0AD7F30A855441A4703D7A6585514185EB5148F2845441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000079000000AE47E10A36855141CDCCCCDCCE845441E17A149E3485514133333343CF8454417B14AE0737855141666666D6D78454410AD7A33033855141C3F5283CD984544114AE47E13085514100000050D0845441AE47E1EA2A855141CDCCCCFCD184544114AE47D1238551415C8FC225D4845441D7A3702D258551417B14AEF7D88454410AD7A3F02485514148E17A74DA8454413333331324855141295C8FD2DB84544152B81E4523855141333333A3DC845441666666F621855141F6285CEFDD84544185EB51382185514166666646DF845441713D0A472085514152B81E15E1845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>132442 - 3978034
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001F000000FCE9BFA82E8551414541D77C1D8554419E9D8EE52F855141C867DCD6208554419CE65A573185514140B35E732585544116CA4B10358551412ACBE3C832855441261ED00535855141B73D00BA338554416666661640855141CDCCCCEC3085544152B81EB549855141000000602F85544185EB51D84F855141E17A145E2F855441A4703D9A5B855141333333033085544185EB51885D855141666666D61C855441666666B65D855141F6285C0F1B8554413D0AD7435E855141713D0A6712855441A4703D9A5F8551413D0AD7F30A855441A4703D7A6585514185EB5148F2845441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000770000003D0AD7D329855141F6285C5F1685544148E17A542C85514152B81E851D855441F6285C3F2E855141E17A149E22855441EC51B82E3385514114AE473134855441261ED00535855141B33D00BA338554410FB7A025358551417FBE4CD932855441A1E65A57318551413FB35E73258554412EFED7133085514144C91C3921855441F65DB4B42E855141D3C94A781D855441E17A149E468551417B14AE271D855441E17A145E4F8551415C8FC2C5EA8454418FC2F51848855141AE47E12ADF8454417B14AE3745855141A4703DEADB8454410000006042855141AE47E1DAD8845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>132442 - 399756
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001F000000FCE9BFA82E8551414541D77C1D8554419E9D8EE52F855141C867DCD6208554419CE65A573185514140B35E732585544116CA4B10358551412ACBE3C832855441261ED00535855141B73D00BA338554416666661640855141CDCCCCEC3085544152B81EB549855141000000602F85544185EB51D84F855141E17A145E2F855441A4703D9A5B855141333333033085544185EB51885D855141666666D61C855441666666B65D855141F6285C0F1B8554413D0AD7435E855141713D0A6712855441A4703D9A5F8551413D0AD7F30A855441A4703D7A6585514185EB5148F2845441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000A04077A6298551414B17C301168554413D0AD7D329855141F6285C5F1685544148E17A542C85514152B81E851D855441F6285C3F2E855141E17A149E22855441EC51B82E3385514114AE473134855441261ED00535855141B33D00BA338554410FB7A025358551417FBE4CD932855441A1E65A57318551413FB35E732585544143F8D8C1308551411B891896238554412EFED7133085514144C91C3921855441F8D7AEB32E8551415C64B07C1D85544192544CB62E855141A418A77C1D855441F75DB4B42E855141D2C94A781D85544182F1C22A2D85514105D5D0C518855441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>254956 - 965992
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000C70000001F85EBF15DA0504100000070643254419A9999B960A050415C8FC275633254417B14AE8762A050418FC2F528633254411F85EBE163A050415C8FC27563325441B81E856B64A05041C3F5280C64325441B81E85DB64A050419A9999A9643254418FC2F58865A0504114AE47B16632544114AE47C165A050419A9999196932544152B81E1566A05041666666266D325441C3F528CC67A05041D7A3708D6D325441CDCCCC3C68A05041C3F5282C6E3254417B14AEF768A05041000000506E3254413D0AD7A368A05041A4703D9A6F3254413D0AD76368A050410AD7A33072325441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003D000000EC51B80E80A0504100000010133254414DB4A28D80A050415862B6C313325441EC51B8FE80A050413D0AD763143254413D0AD74381A05041713D0A571532544114AE471181A05041D7A370ED17325441A3673ADF80A05041BFE518B1183254418F84B18781A050412B696ADA18325441E393350F7FA05041768B8F401C325441D7A370ED7DA05041666666561E32544148E17A047DA050417B14AE771F325441C3F528EC7BA0504185EB5128213254411F85EB617AA0504152B81E65233254414F2C709279A05041A55F4184243254416666662677A0504114AE471128325441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>294747 - 2877325
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000009A999929B3C750418FC2F5987B3E5541B81E85DBCAC75041F6285CCF763E55417B14AED7CBC75041295C8F92763E5541A4703D3AD6C7504152B81EE5733E5541000000D0E8C7504152B81E45703E5541F6285CEF01C850415C8FC2056A3E5541AE47E11AFAC7504100000060583E5541035374A8F5C750416EE2081C503E5541F6285C9F87C750411F85EBE17A3E5541295C8FE28CC75041333333D3833E55419A999929B3C750418FC2F5987B3E5541
+</a>
+
+<b>
+01060000000100000001030000000100000028000000C3F528FCD3C7504152B81ED5313E5541713D0A27D1C75041CDCCCC9C2E3E5541713D0AE7CEC750419A9999392B3E5541F6285CCFCEC75041666666162B3E554100000060C7C75041F6285CEF1D3E554133333353C0C75041F6285C9F113E5541AE47E17ABFC7504148E17AE4103E554152B81E55BEC75041EC51B8AE103E55419A9999D9B9C750419A999989123E5541C3F5289C95C7504152B81E15223E5541713D0A8770C750419A9999F9313E5541000000606AC750410AD7A3A0343E55412BFCDC876AC75041CCD2A68A353E554173B9BC8D6BC750415CA6C0EF363E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>294747 - 5268669
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000009A999929B3C750418FC2F5987B3E5541B81E85DBCAC75041F6285CCF763E55417B14AED7CBC75041295C8F92763E5541A4703D3AD6C7504152B81EE5733E5541000000D0E8C7504152B81E45703E5541F6285CEF01C850415C8FC2056A3E5541AE47E11AFAC7504100000060583E5541035374A8F5C750416EE2081C503E5541F6285C9F87C750411F85EBE17A3E5541295C8FE28CC75041333333D3833E55419A999929B3C750418FC2F5987B3E5541
+</a>
+
+<b>
+01060000000100000001030000000100000028000000C3F528FCD3C7504152B81ED5313E5541713D0A27D1C75041CDCCCC9C2E3E5541713D0AE7CEC750419A9999392B3E5541F6285CCFCEC75041666666162B3E554100000060C7C75041F6285CEF1D3E554133333353C0C75041F6285C9F113E5541AE47E17ABFC7504148E17AE4103E554152B81E55BEC75041EC51B8AE103E55419A9999D9B9C750419A999989123E5541C3F5289C95C7504152B81E15223E5541713D0A8770C750419A9999F9313E5541000000606AC750410AD7A3A0343E55412BFCDC876AC75041CCD2A68A353E554173B9BC8D6BC750415CA6C0EF363E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>23777 - 98870
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001100000014AE4781465951410AD7A320777E544166666686455951417B14AE87727E544185EB5158445951418FC2F5C8717E54411F85EB513E595141B81E853B737E544185EB51183E59514114AE4721727E5441A4703D0A3759514148E17A74737E5441295C8F323059514148E17A44747E544114AE479128595141E17A149E747E5441333333D3195951419A999989747E54419A99995913595141CDCCCC7C747E5441295C8F1205595141AE47E14A767E544166666666FF58514148E17A54767E5441B81E85DBF1585141CDCCCC0C787E5441713D0A67EE585141A4703D3A787E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000F4B9834D4559514181D9C363727E5441E47572A84459514161798CFB717E5441D4CB98A241595141E752A06F727E54411F85EB513E595141B81E853B737E5441BD40812D3E595141E1021689727E5441DB905AC63D5951410EDCE05C727E5441F956F9833A5951416B0661CD727E5441A4703D0A3759514148E17A74737E5441295C8F323059514148E17A44747E544114AE479128595141E17A149E747E5441333333D3195951419A999989747E54419A99995913595141CDCCCC7C747E5441295C8F1205595141AE47E14A767E544166666666FF58514148E17A54767E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>23777 - 300582
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001100000014AE4781465951410AD7A320777E544166666686455951417B14AE87727E544185EB5158445951418FC2F5C8717E54411F85EB513E595141B81E853B737E544185EB51183E59514114AE4721727E5441A4703D0A3759514148E17A74737E5441295C8F323059514148E17A44747E544114AE479128595141E17A149E747E5441333333D3195951419A999989747E54419A99995913595141CDCCCC7C747E5441295C8F1205595141AE47E14A767E544166666666FF58514148E17A54767E5441B81E85DBF1585141CDCCCC0C787E5441713D0A67EE585141A4703D3A787E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000F4B9834D4559514181D9C363727E5441E47572A84459514161798CFB717E5441D4CB98A241595141E752A06F727E54411F85EB513E595141B81E853B737E5441BD40812D3E595141E1021689727E5441DB905AC63D5951410EDCE05C727E5441F956F9833A5951416B0661CD727E5441A4703D0A3759514148E17A74737E5441295C8F323059514148E17A44747E544114AE479128595141E17A149E747E5441333333D3195951419A999989747E54419A99995913595141CDCCCC7C747E5441295C8F1205595141AE47E14A767E544166666666FF58514148E17A54767E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2626704 - 3165582
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002A0000008FC2F5B8FED15041AE47E16AA62A54416666665600D25041CDCCCCDCA62A54419A99994902D250418FC2F578A62A544148E17A9406D250411F85EB11A42A544185EB51B80AD25041295C8F429E2A5441EC51B8BE11D2504148E17A84922A54410AD7A32016D25041CDCCCC5C8D2A54418FC2F5F819D25041D7A3706D8B2A5441EC51B83E22D25041C3F528AC872A54417B14AE3722D25041D7A3707D862A5441295C8F321ED250415C8FC245862A5441F6285CAF1BD25041CDCCCCFC842A5441CDCCCC5C16D25041D7A3700D7B2A5441D7A3701D0AD25041CDCCCC1C7D2A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000008FC2F5B8FED15041AE47E16AA62A54416666665600D25041CDCCCCDCA62A54419A99994902D250418FC2F578A62A544148E17A9406D250411F85EB11A42A544185EB51B80AD25041295C8F429E2A5441EC51B8BE11D2504148E17A84922A54410AD7A32016D25041CDCCCC5C8D2A54418FC2F5F819D25041D7A3706D8B2A5441EC51B83E22D25041C3F528AC872A54417B14AE3722D25041D7A3707D862A5441295C8F321ED250415C8FC245862A5441F6285CAF1BD25041CDCCCCFC842A5441CDCCCC5C16D25041D7A3700D7B2A5441D7A3701D0AD25041CDCCCC1C7D2A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2905028 - 991912
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000000000104E33514152B81E05D53C5441A4703D6A51335141AE47E18AD93C5441F48DF30152335141D70B188AD93C54415C8FC2754E335141AE47E1BAD43C544114AE47D148335141CDCCCCFCCD3C544185EB51D842335141B81E85CBC73C5441D7A3709D3C335141EC51B8EEC13C5441F6285CBF33335141F6285C4FBA3C54417B14AEB72F33514133333303B73C54411F85EB612C33514114AE47A1B43C54415C8FC2852F3351418FC2F548B73C54413D0AD77333335141295C8FA2BA3C544152B81E553C3351413D0AD733C23C5441713D0A9742335141A4703D1AC83C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004F0000000262764F423351418473C0D6C73C5441FDB92BF74033514191482192C63C544122076C773F33514115294E28C53C5441D43813EC3D335141448F8BB3C33C54415BD593E23C335141FB3E37B9C23C544187AD4A533C335141262D4832C23C54410B038BE93B335141F8CF29D8C13C54416FF489C73A33514171E205E1C03C544178A7FD453A335141E8669F72C03C544153CD22023A3351413F08CC38C03C5441442CA52939335141CEF14D80BF3C54417BB2141B38335141050ABB99BE3C54414E2D7093373351411CC55325BE3C544178EA6B2437335141015087C7BD3C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2905028 - 3586923
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000000000104E33514152B81E05D53C5441A4703D6A51335141AE47E18AD93C5441F48DF30152335141D70B188AD93C54415C8FC2754E335141AE47E1BAD43C544114AE47D148335141CDCCCCFCCD3C544185EB51D842335141B81E85CBC73C5441D7A3709D3C335141EC51B8EEC13C5441F6285CBF33335141F6285C4FBA3C54417B14AEB72F33514133333303B73C54411F85EB612C33514114AE47A1B43C54415C8FC2852F3351418FC2F548B73C54413D0AD77333335141295C8FA2BA3C544152B81E553C3351413D0AD733C23C5441713D0A9742335141A4703D1AC83C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004F0000000262764F423351418473C0D6C73C5441FDB92BF74033514191482192C63C544122076C773F33514115294E28C53C5441D43813EC3D335141448F8BB3C33C54415BD593E23C335141FB3E37B9C23C544187AD4A533C335141262D4832C23C54410B038BE93B335141F8CF29D8C13C54416FF489C73A33514171E205E1C03C544178A7FD453A335141E8669F72C03C544153CD22023A3351413F08CC38C03C5441442CA52939335141CEF14D80BF3C54417BB2141B38335141050ABB99BE3C54414E2D7093373351411CC55325BE3C544178EA6B2437335141015087C7BD3C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>3014593 - 247477
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000170000007B14AE2706AE50411F85EBF170D45441295C8FC205AE5041713D0A976ED45441AE47E1AA04AE5041E17A146E6BD454417B14AE0702AE50410AD7A32065D45441A4703D2A00AE50415C8FC2C560D45441713D0A07FEAD5041CDCCCC9C5CD4544185EB5188FCAD5041F6285C2F5AD4544185EB51B8F6AD50413D0AD7D353D4544148E17AF4F3AD5041E17A147E50D4544185EB5128F1AD5041000000504CD4544152B81E05EFAD50418FC2F50848D454418FC2F5B8EBAD504114AE473149D454411F85EB81E9AD5041666666364FD45441B81E859BE6AD504114AE475154D45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000003B634005AE50413DE9851E6DD454414FF7629EFFAD5041BBD393B55FD45441713D0A07FEAD5041CDCCCC9C5CD4544185EB5188FCAD5041F6285C2F5AD4544185EB51B8F6AD50413D0AD7D353D4544148E17AF4F3AD5041E17A147E50D4544185EB5128F1AD5041000000504CD4544152B81E05EFAD50418FC2F50848D454418FC2F5B8EBAD504114AE473149D454411F85EB81E9AD5041666666364FD45441B81E859BE6AD504114AE475154D454417B14AEE7E3AD5041EC51B8AE59D454417BDE28AEE3AD5041D22FF8AE5AD45441295C8F52E3AD5041713D0A475CD45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>3014593 - 275081
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000170000007B14AE2706AE50411F85EBF170D45441295C8FC205AE5041713D0A976ED45441AE47E1AA04AE5041E17A146E6BD454417B14AE0702AE50410AD7A32065D45441A4703D2A00AE50415C8FC2C560D45441713D0A07FEAD5041CDCCCC9C5CD4544185EB5188FCAD5041F6285C2F5AD4544185EB51B8F6AD50413D0AD7D353D4544148E17AF4F3AD5041E17A147E50D4544185EB5128F1AD5041000000504CD4544152B81E05EFAD50418FC2F50848D454418FC2F5B8EBAD504114AE473149D454411F85EB81E9AD5041666666364FD45441B81E859BE6AD504114AE475154D45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000003B634005AE50413DE9851E6DD454414FF7629EFFAD5041BBD393B55FD45441713D0A07FEAD5041CDCCCC9C5CD4544185EB5188FCAD5041F6285C2F5AD4544185EB51B8F6AD50413D0AD7D353D4544148E17AF4F3AD5041E17A147E50D4544185EB5128F1AD5041000000504CD4544152B81E05EFAD50418FC2F50848D454418FC2F5B8EBAD504114AE473149D454411F85EB81E9AD5041666666364FD45441B81E859BE6AD504114AE475154D454417B14AEE7E3AD5041EC51B8AE59D454417BDE28AEE3AD5041D22FF8AE5AD45441295C8F52E3AD5041713D0A475CD45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986361 - 408826
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000040000006B0000007B14AE1789FA50417B14AE271EC454413D0AD76386FA5041A4703DDA1EC454411F85EBD183FA5041713D0A6721C454413D0AD7337BFA50413D0AD7F329C4544114AE47517AFA504148E17AD42AC454417B14AE1779FA50418FC2F5582AC454413333334377FA504148E17AA429C45441EC51B87E6AFA5041295C8F7219C45441713D0AE767FA5041A4703D2A16C4544114AE479166FA5041C3F5281C16C454418FC2F5B861FA50410000006018C4544114AE47515BFA50417B14AE871DC45441D7A370FD59FA50417B14AEC71EC45441D7A3705D59FA50413D0AD7E320C45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000008600000018CDCC2C78FA50415B8FC2154DC454416D29375378FA504182231A6747C4544136DA5C8F78FA50414000846B3EC45441010EA5F078FA50415F32861B30C45441C45098795BFA50410C0615CE37C454413AFB52185BFA5041C7576F1D46C4544165D724DC5AFA50416B20E5184FC454419A777FD459FA50414B736F5D4FC4544132E17A045AFA5041B7CCCC3C48C454414ED8382A5AFA504130E148B142C45441E7B71E455AFA50417AC2F5A83EC454412E5E246C5AFA504105E148E138C454418FC2F5885AFA50411652B8AE34C45441C3F5285C59FA50410AD7A3C033C45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7921 - 57904
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000B000000A4BBA2D485B050415820D3BDE3E05441666666A689B05041EC51B89EDEE054415C8FC2B591B05041C3F528ACD7E054416666660694B05041B81E856BD6E05441666666A684B0504152B81E25C6E054415C8FC2457DB050415C8FC255BEE054413D0AD7E36FB05041C3F5282CB0E05441000000B06EB05041713D0AA7B0E05441C3F5289C60B05041AE47E19AB5E0544134DF19A668B05041FBC7757AC2E05441A4BBA2D485B050415820D3BDE3E05441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000043E9A94093B05041C0A980D6D6E05441035B37D193B05041E55B4B88D6E05441A66B68DF93B05041C7BC9D80D6E05441DF274CFB93B05041E5E08671D6E054411B7BAC9888B05041691F8852CAE05441666666A684B0504152B81E25C6E054415C8FC2457DB050415C8FC255BEE05441FD83F2E36FB050417A09462CB0E05441000000B06EB05041713D0AA7B0E05441FD8DEE9E60B050415E9F519FB5E0544134DF19A668B05041FBC7757AC2E054418E186EC685B0504164DEA1ADE3E05441906439B589B05041F2C86C55DEE0544104DCEE6E91B05041E20BF6E8D7E05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987365 - 60215
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000120000007B14AE177DDC504185EB51F8ABC25441333333E37EDC5041C3F5282CA9C254415C8FC2B581DC50419A999929A9C2544114AE470184DC504100000090A9C25441D7A370ED8EDC504166666676ABC25441713D0AB790DC504133333343ABC2544148E17AC490DC5041333333639CC25441F6285C4F6FDC50417B14AEE798C254411F85EBC165DC50418FC2F53898C25441C3F528BC65DC504148E17A44A5C2544185EB51A866DC5041295C8F52A6C2544148E17A046BDC504100000040ADC25441B81E852B6CDC5041C3F528BCAEC2544152B81E156EDC50415C8FC265AFC25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000007C4E36657EDC5041ABF582F0A9C25441CC169E667EDC50417959CED6A9C254414E7BD9CD7EDC5041DBF85F2EA9C25441987ADCE17EDC5041E5163F2EA9C25441333333E37EDC5041C3F5282CA9C254415C8FC2B581DC50419A999929A9C2544114AE470184DC504100000090A9C254419B6F994384DC50413B54899BA9C254417755ED0C8FDC50411281E072ABC25441EE1197AF90DC5041F3960844ABC25441F3F135B790DC50417816D412ABC2544160B441B790DC5041DA3BD005ABC254413A2242B790DC5041FDA65605ABC254411459B8B790DC5041469C8082AAC25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987365 - 127702
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000120000007B14AE177DDC504185EB51F8ABC25441333333E37EDC5041C3F5282CA9C254415C8FC2B581DC50419A999929A9C2544114AE470184DC504100000090A9C25441D7A370ED8EDC504166666676ABC25441713D0AB790DC504133333343ABC2544148E17AC490DC5041333333639CC25441F6285C4F6FDC50417B14AEE798C254411F85EBC165DC50418FC2F53898C25441C3F528BC65DC504148E17A44A5C2544185EB51A866DC5041295C8F52A6C2544148E17A046BDC504100000040ADC25441B81E852B6CDC5041C3F528BCAEC2544152B81E156EDC50415C8FC265AFC25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000007B4E36657EDC5041A9F582F0A9C25441CC169E667EDC50417559CED6A9C25441517BD9CD7EDC5041D9F85F2EA9C25441957ADCE17EDC5041E1163F2EA9C25441333333E37EDC5041C3F5282CA9C254415C8FC2B581DC50419A999929A9C2544114AE470184DC504100000090A9C254419D6F994384DC50413D54899BA9C254417955ED0C8FDC50411481E072ABC25441EA1197AF90DC5041F3960844ABC25441F5F135B790DC50417816D412ABC2544160B441B790DC5041D83BD005ABC25441392242B790DC504101A75605ABC254411859B8B790DC5041489C8082AAC25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987365 - 327229
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000120000007B14AE177DDC504185EB51F8ABC25441333333E37EDC5041C3F5282CA9C254415C8FC2B581DC50419A999929A9C2544114AE470184DC504100000090A9C25441D7A370ED8EDC504166666676ABC25441713D0AB790DC504133333343ABC2544148E17AC490DC5041333333639CC25441F6285C4F6FDC50417B14AEE798C254411F85EBC165DC50418FC2F53898C25441C3F528BC65DC504148E17A44A5C2544185EB51A866DC5041295C8F52A6C2544148E17A046BDC504100000040ADC25441B81E852B6CDC5041C3F528BCAEC2544152B81E156EDC50415C8FC265AFC25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000007B4E36657EDC5041A9F582F0A9C25441CC169E667EDC50417559CED6A9C25441517BD9CD7EDC5041D9F85F2EA9C25441957ADCE17EDC5041E1163F2EA9C25441333333E37EDC5041C3F5282CA9C254415C8FC2B581DC50419A999929A9C2544114AE470184DC504100000090A9C254419D6F994384DC50413D54899BA9C254417955ED0C8FDC50411481E072ABC25441EA1197AF90DC5041F3960844ABC25441F5F135B790DC50417816D412ABC2544160B441B790DC5041D83BD005ABC25441392242B790DC504101A75605ABC254411859B8B790DC5041489C8082AAC25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979561 - 44638
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000AE47E1EA8DA4504133333333077A54419A9999A98DA45041C3F528FC057A54415C8FC24593A4504114AE4751067A5441295C8F5292A45041C3F5281C037A54413D0AD7A386A45041C3F5285C027A544185EB517888A4504114AE47F1067A5441F6285C0F89A45041D7A370BD0A7A54419A99992989A450415C8FC2650B7A5441000000E089A450413D0AD7F30B7A5441E17A144E8BA45041CDCCCC3C0D7A544114AE47818EA450415C8FC2B5117A5441295C8F3290A45041F6285CDF157A54415C8FC29592A45041000000101A7A54416666660695A45041EC51B85E1E7A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000900000033BF8FFF97A4504136FB2E45227A54417B14AEF798A4504148E17A54237A544199D9279F9AA450413011CE76257A5441295C8FC29AA4504148E17AA4257A5441AE47E15A9DA4504166666666287A54411EE9C59D9BA450415AABEE92227A544100E8C59D9BA450419DA7EE92227A5441E17A14CE96A4504114AE47D1207A544133BF8FFF97A4504136FB2E45227A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979561 - 82473
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000AE47E1EA8DA4504133333333077A54419A9999A98DA45041C3F528FC057A54415C8FC24593A4504114AE4751067A5441295C8F5292A45041C3F5281C037A54413D0AD7A386A45041C3F5285C027A544185EB517888A4504114AE47F1067A5441F6285C0F89A45041D7A370BD0A7A54419A99992989A450415C8FC2650B7A5441000000E089A450413D0AD7F30B7A5441E17A144E8BA45041CDCCCC3C0D7A544114AE47818EA450415C8FC2B5117A5441295C8F3290A45041F6285CDF157A54415C8FC29592A45041000000101A7A54416666660695A45041EC51B85E1E7A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000900000033BF8FFF97A4504136FB2E45227A54417B14AEF798A4504148E17A54237A544199D9279F9AA450413011CE76257A5441295C8FC29AA4504148E17AA4257A5441AE47E15A9DA4504166666666287A54411EE9C59D9BA450415AABEE92227A544100E8C59D9BA450419DA7EE92227A5441E17A14CE96A4504114AE47D1207A544133BF8FFF97A4504136FB2E45227A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>735324 - 3097528
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F0000007B14AE97617C50419A999959741555410AD7A3005D7C50415C8FC2957315554100000090537C5041A4703D8A7C155541E17A149E727C50410AD7A340B1155541713D0AE7757C50418FC2F538B01555418FC2F548767C50411F85EB91AE155541713D0A97757C5041E17A14DEAA15554148E17A346F7C50411F85EB719F15554114AE47D16C7C5041C3F528BC9A15554185EB51C86C7C5041333333D3991555411F85EBA16F7C504114AE479197155541F6285C3F6D7C504114AE474192155541B81E859B697C504152B81E258A155541A4703D4A667C5041EC51B86E82155541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001700000058D6D65E6D7C504171F02354921555414A13A1D26C7C5041E77F064F911555411A762AE06B7C5041B3CECF328F155541FC00B7FD6A7C50414420463A8D1555416521B23B6A7C5041D5C8FE898B1555411F30C23C697C5041F8BAD14889155541CCA582AA687C5041CD8ED2F4871555418BFBB3A2677C50410375868F851555417E863DA9667C50417F7A934B8315554126EB8620667C5041ED7CABF181155541447CCC3D657C5041B4BFF7497F155541DBC3D7BB647C5041F56860C47D15554159CDA86B647C50410838FFD37C15554141C0C3F4637C50410ADC906F7B155541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>735324 - 3381157
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F0000007B14AE97617C50419A999959741555410AD7A3005D7C50415C8FC2957315554100000090537C5041A4703D8A7C155541E17A149E727C50410AD7A340B1155541713D0AE7757C50418FC2F538B01555418FC2F548767C50411F85EB91AE155541713D0A97757C5041E17A14DEAA15554148E17A346F7C50411F85EB719F15554114AE47D16C7C5041C3F528BC9A15554185EB51C86C7C5041333333D3991555411F85EBA16F7C504114AE479197155541F6285C3F6D7C504114AE474192155541B81E859B697C504152B81E258A155541A4703D4A667C5041EC51B86E82155541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001700000058D6D65E6D7C504171F02354921555414A13A1D26C7C5041E77F064F911555411A762AE06B7C5041B3CECF328F155541FC00B7FD6A7C50414420463A8D1555416521B23B6A7C5041D5C8FE898B1555411F30C23C697C5041F8BAD14889155541CCA582AA687C5041CD8ED2F4871555418BFBB3A2677C50410375868F851555417E863DA9667C50417F7A934B8315554126EB8620667C5041ED7CABF181155541447CCC3D657C5041B4BFF7497F155541DBC3D7BB647C5041F56860C47D15554159CDA86B647C50410838FFD37C15554141C0C3F4637C50410ADC906F7B155541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>873359 - 233688
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000004E000000D47CD5904D9450417A571A1F4F2C554126A840EB4494504165DDA46E512C5541E0CFF5A836945041A646AB8A5E2C554102B25F352B94504133EE38D4692C55419DA6870B1A945041AF36901D7A2C5541EDABDDC00F945041CE049CE1832C5541D8D41C78F8935041BEBB76FC932C5541D1385A46EB9350410170EAF4A12C5541A46D9D1CDA935041DB5B2157BB2C5541546FAE3ACC935041E9712DF5C82C5541CCB8E5B0A99350419AAC197BE52C55413C7C9F55E9935041CE4C743E2E2D55414AA9769E0D9450415500C414612D5541DDD96E8B209450411D57C46C502D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000F5DAAAA027945041C66BFD17612D5541669E6944289450416892D318622D55413B6EF5702594504115121695652D554134B2D87032945041DA893D9E732D5541BE12258026945041E1F824C27D2D554141FA1C2C2A9450417897CD8B822D55415FBE0A903A945041BE13960B912D5541A907F9DB3B945041E3F5074B8F2D5541AD41E9173E945041E33124468C2D5541B876597C4094504100A5850A892D554144D0EBCC419450416309B243872D554118DE01073E94504167960C5F812D5541D437C54940945041F520BF7C7F2D554105A672C04594504148A17C007C2D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2905854 - 249924
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000200000001245081C167A5141B73C6F12A289544152B81EE50D7A514185EB51E89F895441AE47E17A067A5141E17A141E9F8954413D0AD7D3027A5141E17A145E9F8954413D0AD793017A51417B14AE97A1895441295C8F42017A5141F6285C6FA289544185EB51080E7A514100000030A5895441C3F5280C197A51411F85EB41A7895441713D0A071C7A51411F85EB81A7895441295C8F021F7A5141295C8F02A7895441F6285C9F277A5141D7A3705DA389544133333343397A51418FC2F548B089544152B81EE53E7A51411F85EBC1B48954419A999919467A5141EC51B89EBD895441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000720000009945D43D1A7A5141CEB93B17A789544123A117321D7A51414474CFEDA689544131216942207A51417969580EA68954411EA95430257A514196E629FCA3895441FD17D514287A5141278D97D6A2895441B7DC6AD42B7A5141E7EA468FA5895441A8AE5A3B307A5141DDFBFAE8A8895441ABCCF541307A51413579AFEDA8895441E0FACB9B307A5141B8F9312BA9895441CBF5F678317A5141CB6332CBA9895441FC7CCAB2327A51410FCFB7AAAA8954413067E51C357A51412F68CB6CAC895441DDAD3A7D397A514141E7E297AF895441F28C49533A7A51413A94BE32B0895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2905854 - 337552
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000200000001245081C167A5141B73C6F12A289544152B81EE50D7A514185EB51E89F895441AE47E17A067A5141E17A141E9F8954413D0AD7D3027A5141E17A145E9F8954413D0AD793017A51417B14AE97A1895441295C8F42017A5141F6285C6FA289544185EB51080E7A514100000030A5895441C3F5280C197A51411F85EB41A7895441713D0A071C7A51411F85EB81A7895441295C8F021F7A5141295C8F02A7895441F6285C9F277A5141D7A3705DA389544133333343397A51418FC2F548B089544152B81EE53E7A51411F85EBC1B48954419A999919467A5141EC51B89EBD895441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000720000009945D43D1A7A5141CEB93B17A789544123A117321D7A51414474CFEDA689544131216942207A51417969580EA68954411EA95430257A514196E629FCA3895441FD17D514287A5141278D97D6A2895441B7DC6AD42B7A5141E7EA468FA5895441A8AE5A3B307A5141DDFBFAE8A8895441ABCCF541307A51413579AFEDA8895441E0FACB9B307A5141B8F9312BA9895441CBF5F678317A5141CB6332CBA9895441FC7CCAB2327A51410FCFB7AAAA8954413067E51C357A51412F68CB6CAC895441DDAD3A7D397A514141E7E297AF895441F28C49533A7A51413A94BE32B0895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>3170132 - 1132600
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000050000003201000033333303CC4251410AD7A310FC295441F6285C0FC642514114AE47D1F72954417B14AE37C34251417B14AE07F6295441000000D0C04251417B14AEF7F5295441E17A148EBF4251418FC2F538F6295441C3F5285CBD425141666666C6F62954415C8FC215B9425141F6285C0FFF2954419A999949B042514148E17A24FE295441713D0AE7AE425141EC51B8BE102A54415C8FC215B8425141333333C31A2A5441333333F3B542514185EB5138212A544133333303B4425141C3F528AC272A5441666666D6B5425141713D0A57292A5441AE47E18AB6425141333333332A2A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000500000064010000C7E5834C9D425141910F95B3632954411B1561EFA6425141DF172A2D68295441A4703D8AB34251417B14AE076E295441C4E7B78FB6425141ED28C63B71295441105C15FFB94251415B4E79AE712954413617953CBC4251410ED879336D2954413515F330BB4251417AF746836A295441ECA81DF0BB4251410ACCADED66295441EFB0A51EC042514176EB7A3D64295441F2B82D4DC4425141BB4D26445E2954415FDA9CA8C24251412363C95956295441D413A48FCD4251418D7E529251295441B770BCDDD74251411D555B084F29544100DD911ED74251418870E4404A295441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>974276 - 974251
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000310BED16EE8E50416A98EB27CB2754413421B78AF28E5041BD94F469CA27544119C42C32F58E5041F14EB6F8C927544125AC9104F98E50413AD25345C9275441CC908FB3F98E504174B4EA75C6275441D34216A7F68E50415E12E22CC3275441EF074A5AF18E5041E87813AFBE275441A5DC1014F08E50412841B99EBD27544144602762EA8E504182BCB80BBA275441D6B8295FE38E5041C8493C38B52754415B3067F9DE8E5041CBEE0FA4B52754419F40D4CDDC8E5041FF4D1E28C727544122DBE0C3D78E5041E806F736C92754416C00DD80A68E5041A037937CC8275441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000035000000DA53960BD38E50410587CEA9D3275441295C8FC2D38E5041AE47E13AD5275441CDCCCC3CD78E504185EB5158D4275441F6285CFFDE8E504148E17AE4D227544114AE4731E08E50415C8FC2A5D22754413D0AD7B3E58E504152B81E85D127544100000000F18E504185EB5138D12754418FC2F508F88E504114AE4791D0275441E17A143EF98E5041CDCCCC4CD02754419A9999A9F58E5041B81E852BCD275441EE660D4BF58E504178DE90F4C9275441254DB8D1D48E50416F0D1F5ECF27544140B260B8D18E504140144027D027544185EB5108D28E504166666636D1275441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>974276 - 1822773
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000310BED16EE8E50416A98EB27CB2754413421B78AF28E5041BD94F469CA27544119C42C32F58E5041F14EB6F8C927544125AC9104F98E50413AD25345C9275441CC908FB3F98E504174B4EA75C6275441D34216A7F68E50415E12E22CC3275441EF074A5AF18E5041E87813AFBE275441A5DC1014F08E50412841B99EBD27544144602762EA8E504182BCB80BBA275441D6B8295FE38E5041C8493C38B52754415B3067F9DE8E5041CBEE0FA4B52754419F40D4CDDC8E5041FF4D1E28C727544122DBE0C3D78E5041E806F736C92754416C00DD80A68E5041A037937CC8275441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000035000000DF53960BD38E50410187CEA9D3275441295C8FC2D38E5041AE47E13AD5275441CDCCCC3CD78E504185EB5158D4275441F6285CFFDE8E504148E17AE4D227544114AE4731E08E50415C8FC2A5D22754413D0AD7B3E58E504152B81E85D127544100000000F18E504185EB5138D12754418FC2F508F88E504114AE4791D0275441E17A143EF98E5041CDCCCC4CD02754419A9999A9F58E5041B81E852BCD275441F1660D4BF58E504175DE90F4C9275441234DB8D1D48E50416C0D1F5ECF2754413DB260B8D18E504142144027D027544185EB5108D28E504166666636D1275441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>974276 - 4452545
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000310BED16EE8E50416A98EB27CB2754413421B78AF28E5041BD94F469CA27544119C42C32F58E5041F14EB6F8C927544125AC9104F98E50413AD25345C9275441CC908FB3F98E504174B4EA75C6275441D34216A7F68E50415E12E22CC3275441EF074A5AF18E5041E87813AFBE275441A5DC1014F08E50412841B99EBD27544144602762EA8E504182BCB80BBA275441D6B8295FE38E5041C8493C38B52754415B3067F9DE8E5041CBEE0FA4B52754419F40D4CDDC8E5041FF4D1E28C727544122DBE0C3D78E5041E806F736C92754416C00DD80A68E5041A037937CC8275441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000035000000DF53960BD38E50410187CEA9D3275441295C8FC2D38E5041AE47E13AD5275441CDCCCC3CD78E504185EB5158D4275441F6285CFFDE8E504148E17AE4D227544114AE4731E08E50415C8FC2A5D22754413D0AD7B3E58E504152B81E85D127544100000000F18E504185EB5138D12754418FC2F508F88E504114AE4791D0275441E17A143EF98E5041CDCCCC4CD02754419A9999A9F58E5041B81E852BCD275441F1660D4BF58E504175DE90F4C9275441234DB8D1D48E50416C0D1F5ECF2754413DB260B8D18E504142144027D027544185EB5108D28E504166666636D1275441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>282489 - 180364
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000020000002E0000003D0AD753CDB35041EC51B87EACE254418FC2F558E7B3504148E17A04A9E25441A4703DEAE8B350417B14AE17A8E25441C3F5280CF9B350419A99997991E2544148E17A94F2B35041D7A3705D97E25441D7A3709DEDB35041EC51B84E96E2544152B81E25EEB35041EC51B8CE92E2544133333333F6B350415C8FC21589E25441666666B6F5B35041A4703D9A86E254415C8FC205EEB350417B14AEB788E25441713D0AF7ECB350413D0AD79387E2544148E17A94F2B3504114AE473184E254410AD7A390E6B35041713D0A577FE25441AE47E14ADFB350411F85EB6185E25441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000050000000C3F528DCC7B35041C3F5289C7AE254416EE2A24CC7B3504199F08DB579E25441D4925648C2B3504190E2181E74E25441C21234B7C1B350414013E37D73E25441D6D47412BCB35041864112436DE25441BFEE6F39BAB350414834EB386BE254415009C0DAB9B350419D7665D06AE2544101FD1B1ABBB3504193569D017EE25441743246A0B5B3504125D7015C8FE25441CDA478CCB3B350417680F37696E25441AE47E12AB3B35041713D0A0799E25441D1D5AD15B0B35041C6600FFDAEE25441DE87AC50B7B35041DD5C5B6CAEE254413D0AD753CDB35041EC51B87EACE25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>952374 - 1315095
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000713D0A37E2035141F6285C5FF3DD5441C3F5284CEC035141EC51B80E13DE5441CDCCCCBCF4035141333333932DDE5441713D0AE71004514148E17A3424DE5441000000400F04514185EB51981DDE5441A4703D5A0C0451413333337315DE544114AE47210104514152B81E25F2DD5441E17A14CEFC03514152B81E95E4DD5441295C8F12EC03514114AE4761FBDD544133333323E7035141F6285C8FFDDD5441EC51B82EE303514152B81E05F2DD5441713D0A37E2035141F6285C5FF3DD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000900000050E8F992E90351414DBBC47F0ADE54414A1D4B97E90351410EED558D0ADE5441C3F5284CEC035141EC51B80E13DE5441A284ABB5EF03514146DD2FC71DDE544112F61D1EF903514136E6BCDB1ADE54417232C1BE06045141CD4F5DA616DE5441B19705300C04514117A962EE14DE5441BF41FE1806045141AB6DD1C501DE544150E8F992E90351414DBBC47F0ADE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>952374 - 3187436
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000713D0A37E2035141F6285C5FF3DD5441C3F5284CEC035141EC51B80E13DE5441CDCCCCBCF4035141333333932DDE5441713D0AE71004514148E17A3424DE5441000000400F04514185EB51981DDE5441A4703D5A0C0451413333337315DE544114AE47210104514152B81E25F2DD5441E17A14CEFC03514152B81E95E4DD5441295C8F12EC03514114AE4761FBDD544133333323E7035141F6285C8FFDDD5441EC51B82EE303514152B81E05F2DD5441713D0A37E2035141F6285C5FF3DD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000900000050E8F992E90351414DBBC47F0ADE54414A1D4B97E90351410EED558D0ADE5441C3F5284CEC035141EC51B80E13DE5441A284ABB5EF03514146DD2FC71DDE544112F61D1EF903514136E6BCDB1ADE54417232C1BE06045141CD4F5DA616DE5441B19705300C04514117A962EE14DE5441BF41FE1806045141AB6DD1C501DE544150E8F992E90351414DBBC47F0ADE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985344 - 277260
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000026000000A7228B9603AA50410A1D75F15AD15441947C217503AA50414E2392B55AD154412CD32F2803AA50411765A92B5AD1544110B3CD2503AA504106D963275AD154413B827E6D00AA5041696C5F4755D15441AD2FFAE9FFA95041965DB66054D154413818C8F5FEA9504141B3CDA752D154411E7AA2CCFEA950415891BC6552D154414EEA7BBCFEA95041C2F9CD4B52D15441ACFF8DB9FEA9504160E2194752D154416EFACC5CFCA950416471167C4ED15441675275D7FAA950412643F20A4CD1544160BD5E5BF9A950418AE361294AD15441BE440135F8A9504174BFA99648D15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000E17A14BE03AA504185EB51385BD1544152B81E5507AA5041E17A146E59D15441C3F5282C0AAA504185EB51D856D1544152B81EF509AA5041AE47E19A56D15441F6285CFF06AA5041D7A370DD52D15441713D0A0706AA50415C8FC2E553D15441B81E857B04AA50411F85EB7152D15441B81E854B06AA5041713D0A8750D1544152B81E6506AA50417B14AE6750D15441EC51B80E06AA50417B14AE3750D154416666661605AA504148E17A444FD15441AE47E15A03AA5041EC51B87E4FD15441F6285C6F02AA50418FC2F5584FD15441295C8F4201AA504185EB51984ED15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>963990 - 334073
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000054000000FDF97286D45C51419BF8B213428C544126FC54E4D25C5141B9D17437418C544162BE5BA1C65C51415C72FBD93A8C5441217A4C65C05C51416571FDB0378C5441C7FFDC4FBF5C5141B3806E26378C5441F05B6CF2BD5C5141396CC09E368C5441060AB473BC5C5141C92EB607368C544150EB2E08BA5C5141ACA9CA15358C5441F5F8DA70B75C51419530B012348C5441AC7AF1FDB65C5141A4D226E5338C5441106E5966B15C5141B2F61205328C544139664336B05C5141747697A2318C54414BFF3328AD5C514141440FBE308C54418047BE2AA95C51416AC84F912F8C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000D5FD8E039C5C5141BF8C14224B8C54410CBD51039A5C514185E06597488C5441C2540EB7985C5141CB5BBD58458C5441FA13D1B6965C5141A8891F21438C544131D393B6945C51419C1C97F7428C544133B51725935C51411C6219D5438C5441504BBD39925C5141E4A256D5458C5441C498B232915C5141213189CE468C54417D7F7B7E8E5C51413EC72EE3458C5441C8BEDA1C885C514186EBCDB34E8C5441EA4B279D775C514121F2EFA0658C5441695B87656B5C51415D1F6FC6768C54418484A4506A5C5141663DEB57788C5441A11A4A65695C51413D3ABD19798C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>817699 - 59860
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000006D0000000AD7A3C05C4E51419A9999C9D3685441A4703D7A5E4E5141C3F5282CD5685441A4703D3A5F4E514185EB51A8D568544114AE47415E4E5141A4703D0ADC68544114AE47215E4E5141C3F528ECDF685441EC51B8AE5F4E514148E17AE4E368544152B81E85654E5141AE47E16ADD685441713D0A87694E51417B14AEE7D66854417B14AE476B4E51413D0AD783CF685441CDCCCCDC6D4E5141C3F5289CA76854417B14AE076F4E5141295C8F82956854418FC2F5A86D4E5141E17A143E9468544152B81EF56C4E5141EC51B8CE936854413D0AD7F36A4E5141713D0A6793685441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000980000008FC2F5881D4E51413D0AD723A76854415E9710D2214E5141972D7D17A968544152B81EC5244E5141F6285C6FAA6854410AD7A340274E5141D7A3700DAC6854411F85EBA1344E5141666666B6B868544148E17AC43B4E51419A9999C9BE68544114AE4741444E5141C3F5280CC5685441666666264C4E51410AD7A3D0C96854410AD7A3C05C4E51419A9999C9D3685441A4703D7A5E4E5141C3F5282CD5685441A4703D3A5F4E514185EB51A8D568544114AE47415E4E5141A4703D0ADC68544114AE47215E4E5141C3F528ECDF685441EC51B8AE5F4E514148E17AE4E3685441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608311 - 252435
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000019000000295C8F820BB15041295C8F92D3495541D7A3708D09B15041F6285C5FDC4955410781F27004B1504159C48F69E54955415CDA47A3FCB05041406F2517F149554116E1D7A6F8B05041CB855CAFFB4955415A59573AF4B05041099729D4F849554179B55363F0B05041FF198EED014A5541F79C3283F6B050418C3A556D054A5541B1BB9A83FFB050412437467DF74955414788415FFDB050411FAA1E20F6495541A91A2556FDB05041BB7CAC5AF5495541CF4D4DD3FDB05041CA574800F5495541CC77C427FFB05041D9B0AE23F249554109922E93FFB050414B067D69EF495541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002900000012E1D7A6F8B05041C8855CAFFB495541C4C43604F6B05041464A323EFB4955416EF7FCCCF4B0504117039D96FA495541CFBC1E3CF4B05041759C4FD5F8495541012D8468F0B05041901985F0014A5541F69C3283F6B050418F3A556D054A5541AEBB9A83FFB050412737467DF74955414B88415FFDB050411AAA1E20F6495541AC1A2556FDB05041B67CAC5AF5495541D14D4DD3FDB05041C8574800F5495541C977C427FFB05041D8B0AE23F249554104922E93FFB0504146067D69EF4955419460B7EC04B15041CDAAF4C2E549554114AE473109B15041C3F528CCE7495541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608311 - 419087
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000019000000295C8F820BB15041295C8F92D3495541D7A3708D09B15041F6285C5FDC4955410781F27004B1504159C48F69E54955415CDA47A3FCB05041406F2517F149554116E1D7A6F8B05041CB855CAFFB4955415A59573AF4B05041099729D4F849554179B55363F0B05041FF198EED014A5541F79C3283F6B050418C3A556D054A5541B1BB9A83FFB050412437467DF74955414788415FFDB050411FAA1E20F6495541A91A2556FDB05041BB7CAC5AF5495541CF4D4DD3FDB05041CA574800F5495541CC77C427FFB05041D9B0AE23F249554109922E93FFB050414B067D69EF495541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000D0BC1E3CF4B05041769C4FD5F8495541012D8468F0B05041931985F0014A5541F69C3283F6B050418F3A556D054A5541AEBB9A83FFB050412737467DF74955414B88415FFDB050411AAA1E20F6495541AC1A2556FDB05041B67CAC5AF5495541D14D4DD3FDB05041C8574800F5495541C977C427FFB05041D8B0AE23F249554104922E93FFB0504146067D69EF4955419460B7EC04B15041CDAAF4C2E549554114AE473109B15041C3F528CCE749554158D9062F15B15041949428FCD24955413192C18C16B1504101C7D6D3D0495541713D0AA71CB1504152B81E55C6495541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986152 - 1322085
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000000B000000F6285C7FA4FF50411F85EBE1BBC7544152B81EE5B4FF5041713D0A07BDC7544114AE4761B4FF5041666666C6ADC75441713D0A17B3FF5041D7A3707DACC7544100000070B0FF5041A4703D6AACC7544166666696AEFF5041CDCCCC3CADC75441F6285C3FA9FF5041A4703D3AB2C754411F85EB11A2FF5041713D0A77B8C75441333333539DFF50411F85EB31BCC7544166666646A0FF504185EB51C8BBC75441F6285C7FA4FF50411F85EBE1BBC754411100000048E17A84A9FF5041B81E850BBAC75441295C8F82AAFF504152B81EF5B7C754411F85EBD1B0FF50417B14AE67 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000334E4ABCB1FF50414CDD79DDAFC75441775B5AF7B0FF5041A51B31E6ADC75441778E3B89B1FF50412F213172ACC754413A1535C6AEFF504155605D79ADC754418EDC4215AEFF5041C88379B5ADC75441785A6C19ABFF504100913F7FB0C75441F6285C3FA9FF5041A4703D3AB2C75441F1F8C5B5A8FF504196C2CEB1B2C7544118422F17A7FF5041FEA41416B4C75441E5EE9556A7FF50413DD5D539B4C75441A5697472A8FF50411FE6EBD9B4C7544154E0D27BA8FF5041DCC065FFB4C75441CC3683A5A8FF5041BB1A27A6B5C754413F3FD80CA8FF50414EFEC41FB6C75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986152 - 5308140
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000000B000000F6285C7FA4FF50411F85EBE1BBC7544152B81EE5B4FF5041713D0A07BDC7544114AE4761B4FF5041666666C6ADC75441713D0A17B3FF5041D7A3707DACC7544100000070B0FF5041A4703D6AACC7544166666696AEFF5041CDCCCC3CADC75441F6285C3FA9FF5041A4703D3AB2C754411F85EB11A2FF5041713D0A77B8C75441333333539DFF50411F85EB31BCC7544166666646A0FF504185EB51C8BBC75441F6285C7FA4FF50411F85EBE1BBC754411100000048E17A84A9FF5041B81E850BBAC75441295C8F82AAFF504152B81EF5B7C754411F85EBD1B0FF50417B14AE67 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000334E4ABCB1FF50414CDD79DDAFC75441775B5AF7B0FF5041A51B31E6ADC75441778E3B89B1FF50412F213172ACC754413A1535C6AEFF504155605D79ADC754418EDC4215AEFF5041C88379B5ADC75441785A6C19ABFF504100913F7FB0C75441F6285C3FA9FF5041A4703D3AB2C75441F1F8C5B5A8FF504196C2CEB1B2C7544118422F17A7FF5041FEA41416B4C75441E5EE9556A7FF50413DD5D539B4C75441A5697472A8FF50411FE6EBD9B4C7544154E0D27BA8FF5041DCC065FFB4C75441CC3683A5A8FF5041BB1A27A6B5C754413F3FD80CA8FF50414EFEC41FB6C75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981118 - 130702
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000004AA58A1B2BA95041366C54AF044855416D1FCF0A2BA95041EC7E13A104485541E92018CE1BA950415BF0B2B2024855411ECF963EEFA85041220EA7BBFE475541D7A3702DEDA85041D7A370AD05485541EC51B8DEEDA8504152B81EB5064855417B14AE2701A95041295C8F6208485541295C8F6208A950413D0AD7B308485541E17A14AE1AA950418FC2F58809485541A4703DBA1FA95041B81E857B0A48554114AE471128A9504185EB51D80D4855414AA58A1B2BA95041366C54AF04485541
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000295C8F6208A950413D0AD7B3084855418510C4C809A950417DCF23C4084855411EC7EED70AA95041DDB7543001485541404029B908A95041A7E80800014855413DAEF66E08A95041CCC26EF9004855418A07336106A95041560B4FCB00485541CB1FC21802A950418764F16C00485541CB0F6090FAA85041CC397EC2FF475541945EA32CF4A850416A27B132FF4755410667EE85F0A85041E6FBD0D8FE4755418BF1ED3DEFA85041FB64DEBDFE475541D7A3702DEDA85041D7A370AD05485541EC51B8DEEDA8504152B81EB5064855417B14AE2701A95041295C8F6208485541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981118 - 418126
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000004AA58A1B2BA95041366C54AF044855416D1FCF0A2BA95041EC7E13A104485541E92018CE1BA950415BF0B2B2024855411ECF963EEFA85041220EA7BBFE475541D7A3702DEDA85041D7A370AD05485541EC51B8DEEDA8504152B81EB5064855417B14AE2701A95041295C8F6208485541295C8F6208A950413D0AD7B308485541E17A14AE1AA950418FC2F58809485541A4703DBA1FA95041B81E857B0A48554114AE471128A9504185EB51D80D4855414AA58A1B2BA95041366C54AF04485541
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000295C8F6208A950413D0AD7B3084855418510C4C809A950417DCF23C4084855411EC7EED70AA95041DDB7543001485541404029B908A95041A7E80800014855413DAEF66E08A95041CCC26EF9004855418A07336106A95041560B4FCB00485541CB1FC21802A950418764F16C00485541CB0F6090FAA85041CC397EC2FF475541945EA32CF4A850416A27B132FF4755410667EE85F0A85041E6FBD0D8FE4755418BF1ED3DEFA85041FB64DEBDFE475541D7A3702DEDA85041D7A370AD05485541EC51B8DEEDA8504152B81EB5064855417B14AE2701A95041295C8F6208485541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>787671 - 1803165
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000E000000713D0A2709A950418FC2F5F8F06954416666667609A9504166666676F0695441AE47E12A0EA9504185EB51B8E8695441C3F528BC0EA950418FC2F5C8E7695441B81E857B0EA95041D7A3708DE7695441295C8F520CA950413D0AD773E669544192D2ADCE09A950416B0DFC2BE56954417B14AEB7F0A85041000000100F6A5441333333C3F5A8504152B81E350F6A5441D7A3707DFFA850415C8FC235FF6954411F85EBD101A950418FC2F508FD6954419A99991903A95041D7A370EDFA695441B81E852B05A950415C8FC285F7695441713D0A2709A950418FC2F5F8F0695441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000713D0A2709A950418FC2F5F8F06954416666667609A9504166666676F0695441AE47E12A0EA9504185EB51B8E8695441C3F528BC0EA950418FC2F5C8E7695441B81E857B0EA95041D7A3708DE7695441295C8F520CA950413D0AD773E6695441568B72F9F3A8504168ADF6270F6A5441C653F2ADF6A850410E9AFD3B0F6A54411F85EBD101A950418FC2F508FD6954419A99991903A95041D7A370EDFA695441B81E852B05A950415C8FC285F7695441713D0A2709A950418FC2F5F8F0695441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>787671 - 3502083
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000E000000713D0A2709A950418FC2F5F8F06954416666667609A9504166666676F0695441AE47E12A0EA9504185EB51B8E8695441C3F528BC0EA950418FC2F5C8E7695441B81E857B0EA95041D7A3708DE7695441295C8F520CA950413D0AD773E669544192D2ADCE09A950416B0DFC2BE56954417B14AEB7F0A85041000000100F6A5441333333C3F5A8504152B81E350F6A5441D7A3707DFFA850415C8FC235FF6954411F85EBD101A950418FC2F508FD6954419A99991903A95041D7A370EDFA695441B81E852B05A950415C8FC285F7695441713D0A2709A950418FC2F5F8F0695441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000713D0A2709A950418FC2F5F8F06954416666667609A9504166666676F0695441AE47E12A0EA9504185EB51B8E8695441C3F528BC0EA950418FC2F5C8E7695441B81E857B0EA95041D7A3708DE7695441295C8F520CA950413D0AD773E6695441568B72F9F3A8504168ADF6270F6A5441C653F2ADF6A850410E9AFD3B0F6A54411F85EBD101A950418FC2F508FD6954419A99991903A95041D7A370EDFA695441B81E852B05A950415C8FC285F7695441713D0A2709A950418FC2F5F8F0695441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>399440 - 13616
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000002000000B0000000666666B6B58250419A9999B9F6105541A4703D4AB68250413D0AD713F51055418FC2F5B8B68250418FC2F5D8F3105541295C8F22B7825041B81E85ABF2105541A4703D7AB78250410AD7A3B0F1105541000000E0B78250419A999999F010554185EB5178B88250415C8FC2F5EE10554166666626B9825041713D0A17ED105541AE47E1AAB9825041AE47E1AAEB10554152B81ED5B98250415C8FC215E910554100000050BA8250413D0AD703E7105541A4703D8ABB825041295C8FE2E3105541C3F5280CBC825041295C8FD2E2105541A4703DCABD8250418FC2F548E0105541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000910F884FE68250412F2FE647A110554150D8B750E6825041A0502E47A11055410AD7A380E682504152B81E15A0105541D7A370FDE0825041713D0A879F105541476CC4A6DE825041669606419F1055410AD7A390DC825041295C8F029F105541D6E6BDEFD9825041F2C49EB39E1055412AAB9DEFD98250411B6E84B49E105541C3F5281CDD825041A4703DEA9F1055413D0AD753DE825041AE47E1AAA1105541D7A3703DDE8250418FC2F5F8A210554114AE47F1DA825041E17A14FEA41055418FC2F508D8825041666666B6A6105541D7A370BDD48250415C8FC2F5A8105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>399440 - 61862
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000002000000B0000000666666B6B58250419A9999B9F6105541A4703D4AB68250413D0AD713F51055418FC2F5B8B68250418FC2F5D8F3105541295C8F22B7825041B81E85ABF2105541A4703D7AB78250410AD7A3B0F1105541000000E0B78250419A999999F010554185EB5178B88250415C8FC2F5EE10554166666626B9825041713D0A17ED105541AE47E1AAB9825041AE47E1AAEB10554152B81ED5B98250415C8FC215E910554100000050BA8250413D0AD703E7105541A4703D8ABB825041295C8FE2E3105541C3F5280CBC825041295C8FD2E2105541A4703DCABD8250418FC2F548E0105541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000910F884FE68250412F2FE647A110554150D8B750E6825041A0502E47A11055410AD7A380E682504152B81E15A0105541D7A370FDE0825041713D0A879F105541476CC4A6DE825041669606419F1055410AD7A390DC825041295C8F029F105541D6E6BDEFD9825041F2C49EB39E1055412AAB9DEFD98250411B6E84B49E105541C3F5281CDD825041A4703DEA9F1055413D0AD753DE825041AE47E1AAA1105541D7A3703DDE8250418FC2F5F8A210554114AE47F1DA825041E17A14FEA41055418FC2F508D8825041666666B6A6105541D7A370BDD48250415C8FC2F5A8105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978599 - 133496
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000500000000AD7A39024AD5041AE47E15A6B085541B93315771FAD5041B30911086A0855418536E1EEF8AC50418A43F8A5600855416AAA4231E3AC5041D59318AD570855416A1927FFD4AC50414980FDB75408554165A4FB06C5AC50415A258F7A4D085541B916C83FB7AC5041D9670E98470855418F223225A7AC504195B36BCE3F08554176B1E144A6AC50416F3E1E213F0855415148C9E589AC5041451FE6BA25085541F7D0A1FF8CAC5041FE65E84313085541EA185F948EAC50412937B674050855413E8B34A48FAC504130EF69EAFA075541DDB976C191AC50418C6D16D9E2075541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005A0000005DB451996CAC5041BCB98F2C27085541834678976FAC5041EEEA7C9428085541E2AE5C3C76AC504110E78AB32B085541DE8D47BEAAAC5041328C5C5E440855411152D85004AD50411677CF726E085541382C6EA80AAD50419645DBE56D0855416A5D95C70DAD5041BD8E19276E0855411DE57F7E11AD5041E259048771085541903DED9414AD50413D572740750855413E7A24EF15AD5041260B2FE37B0855415F6F4F3716AD5041367388D57F085541BF3D95AC16AD5041F0366F638608554188E8E38C1AAD50416C6D0ECB8A085541034DD9CA1AAD5041EFDBB5348D085541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>967165 - 3517568
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001C0000008A490B105A4B5141D5DD29B85C0155415E4A1B03544B51415584BC635C015541123A22B8424B51418127E93D5B01554103B21505424B5141381D98315B015541883B68B53C4B514122A5195F5A015541446CEE3D3B4B51411366B7F85C01554152642BD43A4B51413164710A5E015541F3746E5B384B514142DBE0F8630155418B1CFD08364B514132DCA9566A01554111A06CC6344B51418CC671ED6D015541B7F88EE8344B514120306ADC73015541307D5615444B5141F0E16D2A7301554179350A10454B5141ECD9B71E73015541D567BF6F524B5141774AC97E72015541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000110000005E4A1B03544B51415584BC635C0155418A490B105A4B5141D5DD29B85C015541101258C9654B514196FDC05B5D015541020797DE664B514115D808575D015541A001163C684B51411AE71F88590155418FF8B5886A4B5141B7149BF64D0155410FF08BB06C4B5141FB381BC444015541950925D96D4B5141C82B98984001554181B693876C4B51412A9B097040015541B81E856B4D4B5141333333B33C0155410AD7A320434B5141AE47E10A4F01554185EB51C8414B51410AD7A37051015541666666563F4B5141CDCCCCCC5501554128E793C73C4B5141C570565B5A015541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>967165 - 3517987
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C0000008A490B105A4B5141D5DD29B85C0155415E4A1B03544B51415584BC635C015541123A22B8424B51418127E93D5B01554103B21505424B5141381D98315B015541883B68B53C4B514122A5195F5A015541446CEE3D3B4B51411366B7F85C01554152642BD43A4B51413164710A5E015541F3746E5B384B514142DBE0F8630155418B1CFD08364B514132DCA9566A01554111A06CC6344B51418CC671ED6D015541B7F88EE8344B514120306ADC73015541307D5615444B5141F0E16D2A7301554179350A10454B5141ECD9B71E73015541D567BF6F524B5141774AC97E72015541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000008A490B105A4B5141D5DD29B85C0155415E4A1B03544B51415584BC635C015541FD3322B8424B51411627E93D5B015541D08FB18D424B51417AC9FD3A5B01554128E793C73C4B5141C570565B5A015541F6285C2F3B4B5141295C8F325D015541EC51B88E384B5141CDCCCC6C63015541F3746E5B384B514142DBE0F8630155418B1CFD08364B514132DCA9566A015541A4703DBA344B5141C3F528EC6D015541666666E6344B5141000000E073015541307D5615444B5141F0E16D2A7301554179350A10454B5141ECD9B71E73015541D567BF6F524B5141774AC97E72015541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2848831 - 3068718
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001800000014AE4741F73B5141000000C0B46B54413D0AD773F83B51415C8FC2A5B16B5441F6285CBFF93B51418FC2F558AF6B5441F6285C7FFD3B51410AD7A310A96B5441C3F5289C033C5141CDCCCC1CA26B5441B81E855B063C51411F85EBB19F6B5441000000700C3C5141E17A143E9A6B544114AE47F1063C5141E17A140E9E6B544114AE4731013C5141333333B3A16B5441AE47E13AFA3B51413D0AD7C3A56B54417B14AE17F43B5141E17A149EA86B5441B81E853BEE3B51411F85EB01AB6B544185EB5138E63B514133333343AE6B5441EC51B86EE53B5141D7A3708DAE6B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000B81E85ABDF3B5141F6285CAFC56B5441C3F528ACDC3B51411F85EBA1C76B5441333333B3D93B51415C8FC285CA6B544185EB51B8D63B5141E17A141ECD6B54416C21BC86CD3B514177ED356DD66B5441516D7EB2D13B51413A8CF664D46B5441F1C0C042DA3B51418FF02CACCC6B54417F2264BDDD3B5141B47783B4C96B54417D2E05B9DD3B51414A8C06ACC96B5441CF710294E93B5141730B0F60BF6B544103F52343E93B5141FE28AFDDBD6B5441549ED54AE93B5141E8E36DD6BD6B5441E95F096EE53B514113ED2E90AE6B5441B81E85ABDF3B5141F6285CAFC56B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2848831 - 3316765
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001800000014AE4741F73B5141000000C0B46B54413D0AD773F83B51415C8FC2A5B16B5441F6285CBFF93B51418FC2F558AF6B5441F6285C7FFD3B51410AD7A310A96B5441C3F5289C033C5141CDCCCC1CA26B5441B81E855B063C51411F85EBB19F6B5441000000700C3C5141E17A143E9A6B544114AE47F1063C5141E17A140E9E6B544114AE4731013C5141333333B3A16B5441AE47E13AFA3B51413D0AD7C3A56B54417B14AE17F43B5141E17A149EA86B5441B81E853BEE3B51411F85EB01AB6B544185EB5138E63B514133333343AE6B5441EC51B86EE53B5141D7A3708DAE6B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000B81E85ABDF3B5141F6285CAFC56B5441C3F528ACDC3B51411F85EBA1C76B5441333333B3D93B51415C8FC285CA6B544185EB51B8D63B5141E17A141ECD6B54416C21BC86CD3B514177ED356DD66B5441516D7EB2D13B51413A8CF664D46B5441F1C0C042DA3B51418FF02CACCC6B54417F2264BDDD3B5141B47783B4C96B54417D2E05B9DD3B51414A8C06ACC96B5441CF710294E93B5141730B0F60BF6B544103F52343E93B5141FE28AFDDBD6B5441549ED54AE93B5141E8E36DD6BD6B5441E95F096EE53B514113ED2E90AE6B5441B81E85ABDF3B5141F6285CAFC56B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>1990468 - 398615
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003C000000CDCCCC1C42AA50417B14AE472FD9544185EB51983DAA5041B81E854B34D95441CDCCCC6C39AA50415C8FC2952FD95441EC51B8BE33AA50415C8FC2252CD95441E17A143E34AA5041EC51B83E2BD95441CDCCCCEC30AA50410AD7A3D029D95441295C8FE22CAA5041295C8F1228D954415C8FC2652AAA50410AD7A30027D954413D0AD74327AA5041713D0AA725D95441A4703DCA22AA50418FC2F5B823D95441F6285CAF1FAA50410000008023D95441C3F5281C1DAA5041F6285C8F27D954410AD7A3B011AA504114AE473129D9544152B81EE50BAA504185EB51882BD95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000045C8FA243AA504146C2F54840D95441ADA46F8D43AA5041A3D6061F40D9544149AE0B8443AA504160B4620C40D95441427B147243AA5041C8C7B8E83FD954414914586D43AA5041C80652DF3FD954415A7E434D43AA50418120A39F3FD95441B3A0CB9C40AA50411B64F5483AD954417E658EED3EAA5041AC53E7F036D954414FEB51983DAA5041E31E854B34D954413FD4CBFF39AA50410BACCA3B30D95441CDCCCC6C39AA50415C8FC2952FD954414051B8BE33AA5041728FC2252CD95441C17A143E34AA50410C52B83E2BD954416EF1155732AA50415A66CD6C2AD95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403764 - 170790
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000040000000103000000010000001900000048E17A34A01551415C8FC2C5ADDB54415C8FC2259D1551413D0AD763A9DB54419A999949A1155141F6285CCFA4DB54410AD7A3F09E155141E17A142EA3DB54413D0AD7F39B155141A4703D2AA6DB544148E17A34991551418FC2F548A6DB5441EC51B82E951551415C8FC2D5A0DB544152B81EF584155141B81E85BBB3DB54419A999909721551418FC2F538C7DB5441D7A370FD6B15514133333313CDDB5441F6285C6F6A15514148E17AA4D1DB54413333333368155141295C8FA2D7DB544185EB5118651551415C8FC2C5DCDB544152B81ED56815514185EB51C8DADB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007500000014AE4791A2165141D7A3709D01DB5441BC3A2C60A816514178F19B9BFEDA5441F3D15A92B11651411804F9F3FADA544145532CD4BB1651413CB5E1C2F3DA5441287ECC22C2165141C4B0437DEDDA544165EF5AEAC816514174BC3E07E7DA54419E3C72CFCE1651414A59CA31E2DA544170EBCD1EDA165141D2D97004DEDA5441DED66BD8DC165141723CD567DDDA5441084CEF03E016514145DA4692DCDA5441F20F3621E316514184B5F348D4DA544160EC793AD71651419B52A49ED5DA5441010CB280D3165141B68F8B0AD6DA544166666676D2165141EC51B86ED6DA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403764 - 251771
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000040000000103000000010000001900000048E17A34A01551415C8FC2C5ADDB54415C8FC2259D1551413D0AD763A9DB54419A999949A1155141F6285CCFA4DB54410AD7A3F09E155141E17A142EA3DB54413D0AD7F39B155141A4703D2AA6DB544148E17A34991551418FC2F548A6DB5441EC51B82E951551415C8FC2D5A0DB544152B81EF584155141B81E85BBB3DB54419A999909721551418FC2F538C7DB5441D7A370FD6B15514133333313CDDB5441F6285C6F6A15514148E17AA4D1DB54413333333368155141295C8FA2D7DB544185EB5118651551415C8FC2C5DCDB544152B81ED56815514185EB51C8DADB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005B00000049D70C3A1E165141A904F8B962DB544148E17A64101651417B14AEB76DDB544122C570F60E1651415BA09C756EDB54417C8388840D1651417154F2916FDB5441E19A9C1A06165141706159C172DB544189DBFA3A0416514177574B9973DB5441DE0BE35AFC155141EE3AA1B277DB54416933AE7CF5155141AE9725A47ADB54419A9999C9F415514152B81E257BDB5441C1DF8DB2F3155141F5967C687BDB5441D860A758F1155141C5A8716A7CDB5441E0CA1BECEC155141578B360B7DDB544152B81EA5E91551415C8FC2D57DDB544186D9E359E41551413A5522FB7DDB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403764 - 287571
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000040000000103000000010000001900000048E17A34A01551415C8FC2C5ADDB54415C8FC2259D1551413D0AD763A9DB54419A999949A1155141F6285CCFA4DB54410AD7A3F09E155141E17A142EA3DB54413D0AD7F39B155141A4703D2AA6DB544148E17A34991551418FC2F548A6DB5441EC51B82E951551415C8FC2D5A0DB544152B81EF584155141B81E85BBB3DB54419A999909721551418FC2F538C7DB5441D7A370FD6B15514133333313CDDB5441F6285C6F6A15514148E17AA4D1DB54413333333368155141295C8FA2D7DB544185EB5118651551415C8FC2C5DCDB544152B81ED56815514185EB51C8DADB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005B00000049D70C3A1E165141A904F8B962DB544148E17A64101651417B14AEB76DDB544122C570F60E1651415BA09C756EDB54417C8388840D1651417154F2916FDB5441E19A9C1A06165141706159C172DB544189DBFA3A0416514177574B9973DB5441DE0BE35AFC155141EE3AA1B277DB54416933AE7CF5155141AE9725A47ADB54419A9999C9F415514152B81E257BDB5441C1DF8DB2F3155141F5967C687BDB5441D860A758F1155141C5A8716A7CDB5441E0CA1BECEC155141578B360B7DDB544152B81EA5E91551415C8FC2D57DDB544186D9E359E41551413A5522FB7DDB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403764 - 391000
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000040000000103000000010000001900000048E17A34A01551415C8FC2C5ADDB54415C8FC2259D1551413D0AD763A9DB54419A999949A1155141F6285CCFA4DB54410AD7A3F09E155141E17A142EA3DB54413D0AD7F39B155141A4703D2AA6DB544148E17A34991551418FC2F548A6DB5441EC51B82E951551415C8FC2D5A0DB544152B81EF584155141B81E85BBB3DB54419A999909721551418FC2F538C7DB5441D7A370FD6B15514133333313CDDB5441F6285C6F6A15514148E17AA4D1DB54413333333368155141295C8FA2D7DB544185EB5118651551415C8FC2C5DCDB544152B81ED56815514185EB51C8DADB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007500000014AE4791A2165141D7A3709D01DB5441BC3A2C60A816514178F19B9BFEDA5441F3D15A92B11651411804F9F3FADA544145532CD4BB1651413CB5E1C2F3DA5441287ECC22C2165141C4B0437DEDDA544165EF5AEAC816514174BC3E07E7DA54419E3C72CFCE1651414A59CA31E2DA544170EBCD1EDA165141D2D97004DEDA5441DED66BD8DC165141723CD567DDDA5441084CEF03E016514145DA4692DCDA5441F20F3621E316514184B5F348D4DA544160EC793AD71651419B52A49ED5DA5441010CB280D3165141B68F8B0AD6DA544166666676D2165141EC51B86ED6DA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979949 - 3185798
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000002000000085EB5108B49F514133333313D4A55441EC51B84EB59F51419A9999C9D7A55441D7A370CDB69F514166666606DCA55441333333E3B79F51419A999959DFA55441EC51B87EBA9F5141EC51B80EE4A5544185EB5108BC9F514152B81EC5E6A5544152B81E35BD9F51411F85EBC1EAA554418FC2F538C19F5141EC51B8AEEBA554419A9999B9CD9F514114AE4721E8A554415C8FC205D49F5141E17A14DEE4A55441B81E854BE39F51418FC2F5D8DDA55441CDCCCC7CF09F514114AE4741D8A55441CDCCCC2CF89F5141AE47E1FAD5A55441CDCCCC1C17A05141F6285CDFBDA55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000002800000025C96F41BC9F51415551461AEAA554419A999959BB9F51417B14AE37E7A5544185EB5118BA9F51419A999919E4A554417B14AE87B79F5141295C8F82DFA55441E17A146EB69F514100000040DCA55441E17A149EB49F51415C8FC2C5D7A5544152B81E15B39F51418FC2F548D4A55441000000509A9F5141713D0A77DAA5544148E17AF48C9F514152B81EF5DEA554411F85EB117E9F5141A4703DBAE3A55441C3F528CC7B9F514152B81E45E5A55441A4703D7A6E9F5141295C8FE2E8A554417B14AE27659F51411F85EB51EAA5544133333363649F51418FC2F5E8EBA55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979949 - 3407978
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000002000000085EB5108B49F514133333313D4A55441EC51B84EB59F51419A9999C9D7A55441D7A370CDB69F514166666606DCA55441333333E3B79F51419A999959DFA55441EC51B87EBA9F5141EC51B80EE4A5544185EB5108BC9F514152B81EC5E6A5544152B81E35BD9F51411F85EBC1EAA554418FC2F538C19F5141EC51B8AEEBA554419A9999B9CD9F514114AE4721E8A554415C8FC205D49F5141E17A14DEE4A55441B81E854BE39F51418FC2F5D8DDA55441CDCCCC7CF09F514114AE4741D8A55441CDCCCC2CF89F5141AE47E1FAD5A55441CDCCCC1C17A05141F6285CDFBDA55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000002800000025C96F41BC9F51415551461AEAA554419A999959BB9F51417B14AE37E7A5544185EB5118BA9F51419A999919E4A554417B14AE87B79F5141295C8F82DFA55441E17A146EB69F514100000040DCA55441E17A149EB49F51415C8FC2C5D7A5544152B81E15B39F51418FC2F548D4A55441000000509A9F5141713D0A77DAA5544148E17AF48C9F514152B81EF5DEA554411F85EB117E9F5141A4703DBAE3A55441C3F528CC7B9F514152B81E45E5A55441A4703D7A6E9F5141295C8FE2E8A554417B14AE27659F51411F85EB51EAA5544133333363649F51418FC2F5E8EBA55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>475530 - 42288
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B00000085EB5128CB3A514152B81E758CB554410AD7A370D53A51411F85EB518DB5544133333333EF3A51418FC2F5988FB55441713D0A17103B51410AD7A3E092B554418FC2F5C81F3B51410000002095B55441A4703DBA213B51413333336395B55441000000D0213B51415C8FC29594B5544133333373243B51418FC2F5B87BB55441713D0AB7253B5141A4703DCA6FB55441A4703DDA223B5141C3F5287C6FB5544104EA0909243B51416575E9EC63B554412BD6B895253B51415D5C7AB655B554414375121F263B51411D85F5A650B55441B81E855B263B5141CDCCCC6C4EB55441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000007BBE26E6183B5141AE322E9163B55441988968BE183B51412160B58F63B55441080BC04B173B5141A0FCFA8163B55441525005DA113B514140FACB7463B55441B58E51F9233B5141C1718B8664B5544104EA0909243B51416575E9EC63B554412BD6B895253B51415D5C7AB655B554414375121F263B51411D85F5A650B55441B81E855B263B5141CDCCCC6C4EB55441CDCCCCDC253B51411F85EBB148B55441EB4B40F6253B5141B399225A44B554413EEACE0B263B51417D6274AC40B55441FF115BE51E3B5141C2AC27D540B5544182F8276E1F3B51414D96C17E42B55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>977672 - 3933956
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C0000007B14AE3708315141000000D018565441A4703D8A09315141D7A3701D115654413D0AD753DE305141EC51B8AE0E565441F67D1568D130514105CEC6C014565441A9FB00A6D13051411DC04B341656544175A94D1BDB3051417A03468416565441451A87BDE2305141C7A0E9091756544160548DBDEB305141FF6E064217565441500C2AE4F230514122C174AC175654411E5BAA48FC3051411C61151818565441D38D7E4D03315141AEFA2A8A185654417B14AE3708315141000000D018565441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000007B14AE3708315141000000D018565441A4703D8A09315141D7A3701D115654413D0AD753DE305141EC51B8AE0E565441A4703DEAD43051417B14AE571656544176A94D1BDB3051417A03468416565441461A87BDE2305141C3A0E909175654415C548DBDEB305141FA6E0642175654414E0C2AE4F23051411DC174AC175654411D5BAA48FC3051411B61151818565441D08D7E4D03315141ABFA2A8A185654417B14AE3708315141000000D018565441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>794076 - 990136
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000018000000D96CBC334C02514151BA1152FF60544114AE47F14402514166666676FE605441EC51B89E44025141CDCCCC6CFE6054414A79929443025141C26F205D016154413D0AD73348025141666666A602615441B81E85AB4902514152B81EC50261544114AE47616902514114AE47510B61544114AE47F1870251410000001013615441D7A3709DC2025141000000A02261544114AE4741C3025141666666C61D6154415A4085DF76025141A7A72CD20761544181B11F2F6C025141151CBC0B05615441E51BE9006C025141B6E298130561544135E3DAE06B0251413E3BACF904615441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000027000000DA5E69724C025141D4574859FF60544114AE47F14402514166666676FE605441EC51B89E44025141CDCCCC6CFE6054414A79929443025141C26F205D016154413D0AD73348025141666666A602615441B81E85AB4902514152B81EC50261544114AE47616902514114AE47510B61544114AE47F1870251410000001013615441D7A3709DC2025141000000A02261544114AE4741C3025141666666C61D615441F3694ED076025141387439CE076154411432C17874025141DAB49032076154413FEFF8A071025141D2349D7506615441FE6A4B8B6F025141ADB60EEB05615441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>794076 - 3375182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000018000000D96CBC334C02514151BA1152FF60544114AE47F14402514166666676FE605441EC51B89E44025141CDCCCC6CFE6054414A79929443025141C26F205D016154413D0AD73348025141666666A602615441B81E85AB4902514152B81EC50261544114AE47616902514114AE47510B61544114AE47F1870251410000001013615441D7A3709DC2025141000000A02261544114AE4741C3025141666666C61D6154415A4085DF76025141A7A72CD20761544181B11F2F6C025141151CBC0B05615441E51BE9006C025141B6E298130561544135E3DAE06B0251413E3BACF904615441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000027000000DA5E69724C025141D4574859FF60544114AE47F14402514166666676FE605441EC51B89E44025141CDCCCC6CFE6054414A79929443025141C26F205D016154413D0AD73348025141666666A602615441B81E85AB4902514152B81EC50261544114AE47616902514114AE47510B61544114AE47F1870251410000001013615441D7A3709DC2025141000000A02261544114AE4741C3025141666666C61D615441F3694ED076025141387439CE076154411432C17874025141DAB49032076154413FEFF8A071025141D2349D7506615441FE6A4B8B6F025141ADB60EEB05615441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979957 - 1878607
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000020000000103000000010000006E0000006109A1F417B45041AFE2D4B7BF255441369A133C18B45041A7EE02EFBF2554413211E0C317B450418CD17FCCBF255441D108A1F417B450419DE2D4B7BF255441EE56424816B45041D1F2FE6CBE2554411CF3764C14B450412974CE96BC255441EF4AB45112B45041C8513A9BBA255441A3D48F160FB450414668F6F4B6255441DFE8AF3E0CB450410D34D2BEB3255441D529862709B45041FFE13141B02554417EDBE2E806B450413EC622B8AD255441FEE0EBD003B450413D498264AA2554419D351E48FBB35041B224B123A82554415CC94EDCF8B35041626E7C99A7255441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006F0000008ED2AC1CE8B350410DE9C51ACF255441195D671AEBB35041F0BD89ADD0255441D355F6D408B45041B9F19B50E02554414421FA5009B450417DF0D691E0255441643AC5BC09B450414CA989CAE0255441D401E8790DB45041F915FBC1E2255441E42F0E3910B4504171362301E4255441E5C8B50615B45041E017D1E8E52554419F5F6B1E18B450416CB9CE22E72554411A1451841CB450410A506CE4E8255441612CDB0817B45041D35F3589E42554416854A62114B45041EE6DC207E22554410EFCE60A0FB45041F4117E72DC2554417B9FCD540DB4504100738CFAD8255441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979957 - 3452139
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000020000000103000000010000006E0000006109A1F417B45041AFE2D4B7BF255441369A133C18B45041A7EE02EFBF2554413211E0C317B450418CD17FCCBF255441D108A1F417B450419DE2D4B7BF255441EE56424816B45041D1F2FE6CBE2554411CF3764C14B450412974CE96BC255441EF4AB45112B45041C8513A9BBA255441A3D48F160FB450414668F6F4B6255441DFE8AF3E0CB450410D34D2BEB3255441D529862709B45041FFE13141B02554417EDBE2E806B450413EC622B8AD255441FEE0EBD003B450413D498264AA2554419D351E48FBB35041B224B123A82554415CC94EDCF8B35041626E7C99A7255441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006F0000008ED2AC1CE8B350410DE9C51ACF255441195D671AEBB35041F0BD89ADD0255441D355F6D408B45041B9F19B50E02554414421FA5009B450417DF0D691E0255441643AC5BC09B450414CA989CAE0255441D401E8790DB45041F915FBC1E2255441E42F0E3910B4504171362301E4255441E5C8B50615B45041E017D1E8E52554419F5F6B1E18B450416CB9CE22E72554411A1451841CB450410A506CE4E8255441612CDB0817B45041D35F3589E42554416854A62114B45041EE6DC207E22554410EFCE60A0FB45041F4117E72DC2554417B9FCD540DB4504100738CFAD8255441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980026 - 379399
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001900000048E17A3470AD5041713D0A6773DD5441AE47E1EA6DAD504148E17A5475DD5441E17A145E6DAD504114AE47217CDD5441C3F528FC6AAD5041E17A14CE87DD5441E17A147E6CAD5041F6285C9F89DD544185EB51D87CAD504185EB51388EDD5441D7A3704D80AD50410AD7A3F08DDD54418610797C80AD5041655ECDCF83DD544152B81E0583AD5041CDCCCCFC7CDD5441E205F4AC82AD5041440EA4F579DD54410AD7A3308BAD5041A4703DCA6EDD5441EC51B80E91AD504148E17A646BDD5441AE47E12A98AD5041713D0AA762DD54413D0AD7F39FAD50418FC2F5F860DD5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000035000000EBE51426AEAD50411D2065AF59DD5441548806D299AD5041BDA15A4D5BDD5441DB2447D292AD5041091CB4B35CDD54412BACE85281AD5041CDF9CC1965DD5441BE9072AC77AD50416276AE396DDD544101C27ADD78AD50412B74E7EA70DD5441069F0AE978AD50417F4B84BA71DD54411F85EBF178AD50417B14AED771DD544114308CC578AD504186690D0472DD544143E49AE374AD504157B5FEE575DD5441295C8FD274AD5041713D0AF775DD54417D660F5D73AD50416D3D7B6775DD5441387BE31C71AD50412AD7622774DD544148E17A3470AD5041713D0A6773DD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980027 - 379516
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000022000000D23689FCE5AD5041C5CD8FEEE5DC54416F90E45EE6AD50411AD43CC4E4DC54415BC6B81BE5AD5041AC24CB87E4DC5441C3F528ECD2AD50415C8FC2A5E0DC544185EB51B8C6AD50418FC2F578DDDC5441AE47E1CABFAD50419A9999D9DDDC54411F85EB51B8AD5041D7A3700DE2DC54417B14AE07BAAD50417B14AE77E4DC5441713D0AF7B7AD5041F6285CAFE6DC5441CDCCCCBCBCAD5041E17A14AEE8DC5441AFFBAE07BEAD5041B1519C08EDDC5441295C8F02C1AD5041713D0A17EFDC5441831855E4BEAD50414AFF4C4EF3DC544185EB5168BFAD5041F6285C9FF4DC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000F9373003C3AD50415E2BDC75F7DC544152B81EC5CAAD50411F85EB51FDDC5441AE47E10ACCAD5041A4703D0AFCDC5441BFCBFEAECCAD5041380DF168FBDC5441F9CB1DD2CDAD50413F805A46FADC544189BCFE6DCEAD5041AE8F79AAF9DC544122739F43C6AD5041F535A4A6EDDC544149049310C2AD5041E1FCBA55E9DC5441DB62296AC2AD50418849789EE3DC544149049310C2AD50416999FB55E2DC54419C8B9CE1C2AD504193C00B96E0DC5441DEF845DDC4AD5041363902C5DFDC5441A54DF23ACAAD504185B35B2BE1DC5441A5D65E43CDAD504147DCCEA2E1DC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980712 - 3087565
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000CF2E9EF4121A5141D98E92AFAB6D5441AB40448F131A51413FF79999AD6D54418FC2F578321A51419A9999D9B26D5441C3F5285C461A5141AE47E1CAB56D5441F6285CAF481A51410AD7A3C0A56D5441D7A3708D4B1A51418FC2F5F8916D54415C8FC2E54A1A51410AD7A3D08F6D54417B14AEA7471A514114AE47018E6D5441000000D03E1A51410AD7A3D0896D54419A999909361A51411F85EB01876D5441000000702F1A5141B81E858B856D5441EC51B85E281A5141EC51B8CE846D54413D0AD753241A514152B81EE5846D5441AE47E11A211A51419A999949856D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000240000007B14AEA7471A514114AE47018E6D54415C8FC2E54A1A51410AD7A3D08F6D544152B81E65361A5141A4703D6A4C6D5441CE523D9F2F1A514125FFAC25366D5441CC9D77FE2A1A5141790671EE266D5441DE4B8DC0281A514141729ACE246D544141B3E1A5261A5141A7F2D5D3226D54411E73C4BA221A5141E12014291F6D544124C582C8201A5141226F9B71216D5441B0A3453F1D1A51419790D8FA246D5441A001305F151A51418AACFCDE2C6D54415B5AEA9F121A5141BB3611B82F6D54419E0112800C1A51415672B8F1356D5441C48A4CF7041A5141918C4BE83C6D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980712 - 3428827
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000CF2E9EF4121A5141D98E92AFAB6D5441AB40448F131A51413FF79999AD6D54418FC2F578321A51419A9999D9B26D5441C3F5285C461A5141AE47E1CAB56D5441F6285CAF481A51410AD7A3C0A56D5441D7A3708D4B1A51418FC2F5F8916D54415C8FC2E54A1A51410AD7A3D08F6D54417B14AEA7471A514114AE47018E6D5441000000D03E1A51410AD7A3D0896D54419A999909361A51411F85EB01876D5441000000702F1A5141B81E858B856D5441EC51B85E281A5141EC51B8CE846D54413D0AD753241A514152B81EE5846D5441AE47E11A211A51419A999949856D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000240000007B14AEA7471A514114AE47018E6D54415C8FC2E54A1A51410AD7A3D08F6D544152B81E65361A5141A4703D6A4C6D5441CE523D9F2F1A514125FFAC25366D5441CC9D77FE2A1A5141790671EE266D5441DE4B8DC0281A514141729ACE246D544141B3E1A5261A5141A7F2D5D3226D54411E73C4BA221A5141E12014291F6D544124C582C8201A5141226F9B71216D5441B0A3453F1D1A51419790D8FA246D5441A001305F151A51418AACFCDE2C6D54415B5AEA9F121A5141BB3611B82F6D54419E0112800C1A51415672B8F1356D5441C48A4CF7041A5141918C4BE83C6D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980087 - 1509515
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000280000001F85EB6104B15041713D0A17C4D954410F00C7EB02B15041B0CE9C13C5D954412A0CF2E301B150416EA29DA7C5D954415C8FC2C500B15041A4703DDAC6D95441A4703D5AFFB05041CDCCCCFCC6D95441E17A145EFEB050413D0AD703C7D95441CDCCCC2CFEB05041EC51B88EC8D954411F85EB91FDB050419A999969CDD95441000000D0FFB050415C8FC285CCD95441C3F528DC05B15041000000E0CAD95441000000400BB15041CDCCCCECC7D954418FC2F50810B1504185EB51E8C4D95441EC51B87E17B1504148E17A24BED9544114AE47211BB15041EC51B85EBBD95441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000280000001F85EB6104B15041713D0A17C4D954410F00C7EB02B15041ADCE9C13C5D954412C0CF2E301B1504173A29DA7C5D954415C8FC2C500B15041A4703DDAC6D95441A4703D5AFFB05041CDCCCCFCC6D95441E17A145EFEB050413D0AD703C7D95441CDCCCC2CFEB05041EC51B88EC8D954411F85EB91FDB050419A999969CDD95441000000D0FFB050415C8FC285CCD95441C3F528DC05B15041000000E0CAD95441000000400BB15041CDCCCCECC7D954418FC2F50810B1504185EB51E8C4D95441EC51B87E17B1504148E17A24BED9544114AE47211BB15041EC51B85EBBD95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980087 - 253903
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000280000001F85EB6104B15041713D0A17C4D954410F00C7EB02B15041B0CE9C13C5D954412A0CF2E301B150416EA29DA7C5D954415C8FC2C500B15041A4703DDAC6D95441A4703D5AFFB05041CDCCCCFCC6D95441E17A145EFEB050413D0AD703C7D95441CDCCCC2CFEB05041EC51B88EC8D954411F85EB91FDB050419A999969CDD95441000000D0FFB050415C8FC285CCD95441C3F528DC05B15041000000E0CAD95441000000400BB15041CDCCCCECC7D954418FC2F50810B1504185EB51E8C4D95441EC51B87E17B1504148E17A24BED9544114AE47211BB15041EC51B85EBBD95441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000320000001F85EB6104B15041713D0A17C4D954410F00C7EB02B15041ADCE9C13C5D954412C0CF2E301B1504173A29DA7C5D954415C8FC2C500B15041A4703DDAC6D95441A4703D5AFFB05041CDCCCCFCC6D95441E17A145EFEB050413D0AD703C7D95441B087FE2DFEB050418B822685C8D95441D4C7EC91FDB0504182199969CDD95441000000D0FFB050415C8FC285CCD9544111A458D401B15041D9F117F9CBD95441DAA428DC05B15041990BFFDFCAD9544129ECFF3F0BB15041B117CCECC7D95441379E38040EB150414F1D2F2EC6D954418FC2F50810B1504185EB51E8C4D95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980099 - 418075
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000300000067000000D7A3703D0CAE5041CDCCCCCCE1DB5441713D0AC711AE5041E17A143EE4DB54419A99996922AE50411F85EBB1EFDB5441C3F5289C28AE5041E17A140EF0DB5441E17A14FE2DAE5041CDCCCC8CEEDB5441EC51B8FE34AE50418FC2F5A8EBDB5441666666E63BAE5041713D0AD7E6DB54418FC2F5B842AE504148E17A44DFDB54410AD7A36051AE5041A4703D8AD2DB54416666669658AE504152B81EB5CCDB5441D7A3703D64AE504152B81E35C4DB54410000009064AE5041C3F5286CC5DB54415C8FC2E565AE5041333333F3C3DB54418FC2F55869AE50419A9999A9C1DB5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000680000009A3C0AB7F3AD504179295CEFE9DB5441C3F5287CFBAD504148E17A34E5DB54414A295C3F01AE50417C999919E2DB54419C84EBF106AE5041AB8EC205E1DB54417FA4703D0CAE504188CCCCCCE1DB544113A4C41B0EAE50411A5CC89FE2DB5441713D0AC711AE5041E17A143EE4DB54419A99996922AE50411F85EBB1EFDB5441C3F5289C28AE5041E17A140EF0DB54419828364C29AE504134B0DADCEFDB5441307914FE2DAE504197CCCC8CEEDB5441E3E4E86533AE50410513AE51ECDB5441EC51B8FE34AE50418FC2F5A8EBDB5441666666E63BAE5041713D0AD7E6DB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>3017977 - 3015188
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000004600000028C944ADC69C50410DE588185F235441915922A8C89C50412557140459235441291B9C36C79C50417B4B18F5572354410775B4ECC69C5041A24D650856235441E428E558C69C5041439085A053235441D603A418C59C50418DDEA1475223544188904631C59C504144C7A9295023544117D119B6C49C5041C68823B84E2354419111ED3AC49C504197966CDA4D235441856B05F1C39C50419F1713E44C23544151C3D093C59C50412033A5284B235441B6DC15C5C59C50417FA84F23492354417CEA5EE7C49C50410C6AC9B147235441856B05F1C39C5041992B434046235441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000046000000CE1F7657AE9C5041178EC7805F235441021BF3ECAF9C50413C8D6628622354412D67C280B09C5041160A730B6523544159B39114B19C50411BD34E8268235441A726EFFBB09C5041CA038CD16A235441D272BE8FB19C5041079ADDE56D23544162D8D254B29C5041F7BCD11271235441A3CA8932B39C5041BB93F6AB7323544148D68541B49C50419510038F76235441A8F96096B49C50416FB4BBF0782354410CC40EC6B59C5041B0262D63792354413A1EBBAEB89C5041CEA407907B2354418D5AF40CBC9C50418956EBE87C235441BFDC15C5C59C504149D1AAB881235441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>3017977 - 3416187
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000004600000028C944ADC69C50410DE588185F235441915922A8C89C50412557140459235441291B9C36C79C50417B4B18F5572354410775B4ECC69C5041A24D650856235441E428E558C69C5041439085A053235441D603A418C59C50418DDEA1475223544188904631C59C504144C7A9295023544117D119B6C49C5041C68823B84E2354419111ED3AC49C504197966CDA4D235441856B05F1C39C50419F1713E44C23544151C3D093C59C50412033A5284B235441B6DC15C5C59C50417FA84F23492354417CEA5EE7C49C50410C6AC9B147235441856B05F1C39C5041992B434046235441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000046000000CE1F7657AE9C5041178EC7805F235441021BF3ECAF9C50413C8D6628622354412D67C280B09C5041160A730B6523544159B39114B19C50411BD34E8268235441A726EFFBB09C5041CA038CD16A235441D272BE8FB19C5041079ADDE56D23544162D8D254B29C5041F7BCD11271235441A3CA8932B39C5041BB93F6AB7323544148D68541B49C50419510038F76235441A8F96096B49C50416FB4BBF0782354410CC40EC6B59C5041B0262D63792354413A1EBBAEB89C5041CEA407907B2354418D5AF40CBC9C50418956EBE87C235441BFDC15C5C59C504149D1AAB881235441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980579 - 376523
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000700000001030000000100000024000000AE47E13AE8FD50410AD7A36005295441713D0A77E8FD50413D0AD7A30429544152B81E75E9FD5041C3F5289C04295441C3F5289CE9FD504148E17A840029544152B81EF5E9FD5041C3F528CCFB28544148E17A64EAFD5041EC51B8DEF428544100000050EBFD504152B81EA5E7285441F6285C0FECFD5041666666E6DD2854411F85EBE1ECFD504185EB51A8CF2854419A999949EDFD50411F85EBB1CC285441C3F5289CEBFD50413D0AD783CC28544166666616E8FD50411F85EB11CC28544185EB5138E5FD504152B81EF5CB2854418FC2F5A8E3FD5041B81E859BDA285441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000F8145ADCD3FD5041517846D8A428544187D9CD9CD1FD50411DA8B87EA42854417B14AEA7D1FD50411F85EB81A528544167F17D70D1FD50413353AA53A72854415CF889ABD0FD5041AED7D1D1AD28544194D0698ECFFD5041281C0F38B72854414CB2E785CEFD5041D2FCF1F0BF285441A80A59E8CDFD50419D632527C5285441B73D6877CDFD5041C9D985E3C8285441B3D15168CDFD504169C98652CA285441EC51B8CED5FD50419A9999D9CA285441F6285CCFD5FD5041CDCCCCCCC9285441DB07AE06D6FD504134782991C728544182715107D6FD5041F43C9387C7285441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>776242 - 992706
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000030000003F000000E17A143E04605141F6285C2FB86C544119FF42B006605141E55DA71FB86C54411987A72105605141E7E344BAB06C54411943F5E805605141E90C9FDCAB6C544117D6E88D0B605141EA79AB37A66C5441713D0A170F605141666666B6A46C5441000000B00F605141295C8FB29F6C544152B81E8509605141666666869F6C54411F85EB41086051410AD7A3909F6C5441D7A370AD0A605141333333739A6C5441EC51B8FE0B6051418FC2F5688E6C544114AE473102605141666666168C6C54418FC2F578FA5F51415C8FC2D5896C5441666666B6DF5F5141D7A370ED826C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000030000003D0000001C3A7C26DC5F51418D3C3FD8886C5441F6285CFFD95F51417B14AE478C6C5441C3F5281CD75F5141D7A3702D916C54413D0AD733D35F5141E17A14BE986C54415C8FC2E5D15F5141B81E852B9B6C5441C3F5283CD25F51410AD7A3709C6C54419A999919D35F5141E17A144E9D6C544148E17A84D45F51413D0AD7039E6C544126776F6BD65F5141EEFF48D29E6C544122454DECD95F5141EF6C552D996C544123019BB3DA5F5141EE386CD7966C5441333333F3E05F51419A9999499A6C54418FC2F528E25F514133333313976C5441AE47E10AE35F51410AD7A330966C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>776242 - 3696473
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000030000003F000000E17A143E04605141F6285C2FB86C544119FF42B006605141E55DA71FB86C54411987A72105605141E7E344BAB06C54411943F5E805605141E90C9FDCAB6C544117D6E88D0B605141EA79AB37A66C5441713D0A170F605141666666B6A46C5441000000B00F605141295C8FB29F6C544152B81E8509605141666666869F6C54411F85EB41086051410AD7A3909F6C5441D7A370AD0A605141333333739A6C5441EC51B8FE0B6051418FC2F5688E6C544114AE473102605141666666168C6C54418FC2F578FA5F51415C8FC2D5896C5441666666B6DF5F5141D7A370ED826C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000030000003D0000001C3A7C26DC5F51418D3C3FD8886C5441F6285CFFD95F51417B14AE478C6C5441C3F5281CD75F5141D7A3702D916C54413D0AD733D35F5141E17A14BE986C54415C8FC2E5D15F5141B81E852B9B6C5441C3F5283CD25F51410AD7A3709C6C54419A999919D35F5141E17A144E9D6C544148E17A84D45F51413D0AD7039E6C544126776F6BD65F5141EEFF48D29E6C544122454DECD95F5141EF6C552D996C544123019BB3DA5F5141EE386CD7966C5441333333F3E05F51419A9999499A6C54418FC2F528E25F514133333313976C5441AE47E10AE35F51410AD7A330966C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980726 - 1087062
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000B30CD92EEF4B51418F663667D0695441E9E093DAF04B5141963C6B62D1695441C9C08660F34B5141337ACC2BD06954411002138DF84B5141A0C7C862CD695441D57186BF004C514122274916CA6954415D4411F2074C5141B74332B0C669544170A827BE0F4C5141AE1127CAC269544180A68F3D164C51412C0BF930BE695441601F2639164C51419102E90BBE6954418D483137164C514101C41205BE6954411F85EB31164C5141AE47E10ABE695441EFB79496134C51418B888CD6B469544171BA68B2124C5141509C2CB9B1695441EF8C2FEA104C5141E1CB0485B2695441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000B70CD92EEF4B51418F663667D0695441E8E093DAF04B51419A3C6B62D1695441C4C08660F34B5141377ACC2BD06954411002138DF84B5141A5C7C862CD695441D47186BF004C514126274916CA695441614411F2074C5141B54332B0C669544170A827BE0F4C5141B21127CAC26954417CA68F3D164C51412F0BF930BE695441641F2639164C51418D02E90BBE6954418D483137164C5141FDC31205BE6954411F85EB31164C5141AE47E10ABE695441F3B79496134C51418F888CD6B469544174BA68B2124C51414B9C2CB9B1695441EB8C2FEA104C5141E2CB0485B2695441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980726 - 3892316
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000B30CD92EEF4B51418F663667D0695441E9E093DAF04B5141963C6B62D1695441C9C08660F34B5141337ACC2BD06954411002138DF84B5141A0C7C862CD695441D57186BF004C514122274916CA6954415D4411F2074C5141B74332B0C669544170A827BE0F4C5141AE1127CAC269544180A68F3D164C51412C0BF930BE695441601F2639164C51419102E90BBE6954418D483137164C514101C41205BE6954411F85EB31164C5141AE47E10ABE695441EFB79496134C51418B888CD6B469544171BA68B2124C5141509C2CB9B1695441EF8C2FEA104C5141E1CB0485B2695441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000B70CD92EEF4B51418F663667D0695441E8E093DAF04B51419A3C6B62D1695441C4C08660F34B5141377ACC2BD06954411002138DF84B5141A5C7C862CD695441D47186BF004C514126274916CA695441614411F2074C5141B54332B0C669544170A827BE0F4C5141B21127CAC26954417CA68F3D164C51412F0BF930BE695441641F2639164C51418D02E90BBE6954418D483137164C5141FDC31205BE6954411F85EB31164C5141AE47E10ABE695441F3B79496134C51418F888CD6B469544174BA68B2124C51414B9C2CB9B1695441EB8C2FEA104C5141E2CB0485B2695441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>333693 - 982444
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002200000058F51AAFF20C51417CE6A99FB18854416B000E9DF40C51418E329E3FB1885441213695C6F70C5141A07E92DFB08854416BE463E2FA0C514104ADA448B0885441267391B0FE0C5141818051F6AF885441702160CC010D51413FEA27CDAF885441F6285C1F040D5141AE47E1BAAF885441CDCCCC0C030D5141EC51B8AEAB885441B81E85BB000D51417B14AE07A488544114AE4701FF0C5141EC51B83E9F8854413D0AD7A3FE0C5141CDCCCC5C9E8854418FC2F588F80C51419A9999F99E8854415C8FC2D5F20C51418FC2F5A89F885441D7A3709DEA0C5141EC51B83EA0885441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000F6285CAFE70C5141C3F5285CAA8854411F85EB91E70C51413D0AD793A98854415C8FC2C5EA0C51411F85EBF1A9885441713D0A97E90C5141713D0A47A98854415C8FC2A5E80C51419A999989A8885441CDCCCCFCE70C514148E17A94A788544185EB51A8E70C5141295C8F92A6885441713D0A17E70C51417B14AEC7A4885441EC51B8DEE60C5141EC51B8CEA38854413D0AD7A3E60C5141A4703D9AA2885441713D0A47E10C5141295C8FD2A388544152B81E05DE0C5141C3F528BCA5885441B81E850BDD0C514114AE4751A788544133333393DD0C5141713D0AF7A8885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>217700 - 4291468
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000190000006C80CAD070B350413DD68631AF4855416AF031BF70B35041E8E0413DAF4855416EE498C870B35041E1F8732AAF4855416BF031BF70B350411B0D5622AF48554105BBA47B71B3504119A4848EAD4855419FA0BF5771B350417C80260CAE485541755D427671B35041D10621CFAD485541A257BA5F75B35041479524B8A84855410DC8BB5E79B35041427D4B83A448554164A6EE547BB35041C95ACFE0A0485541DE90E5277DB350416C9C48859C4855415A56E7F082B3504170E363F0904855410467D6E282B35041D1C1DFEA90485541E4CB59E381B3504191A36C5290485541 [...]
+</a>
+
+<b>
+010600000002000000010300000001000000190000006C80CAD070B350413ED68631AF48554168F031BF70B35041EBE0413DAF48554173E498C870B35041E1F8732AAF48554168F031BF70B350411D0D5622AF48554100BBA47B71B3504114A4848EAD4855419FA0BF5771B350417D80260CAE485541735D427671B35041D60621CFAD4855419F57BA5F75B350414B9524B8A84855410DC8BB5E79B35041417D4B83A448554166A6EE547BB35041C75ACFE0A0485541DE90E5277DB35041719C48859C4855415B56E7F082B3504175E363F090485541FF66D6E282B35041D2C1DFEA90485541E4CB59E381B350418DA36C5290485541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980629 - 2940168
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000190000005D776D121B425141EF72B2CCF4A454410523E73D1A425141BAB7E689F5A454413F6F6A871242514193084725F1A454415BEBAA980C4251416145173DEEA4544117B30A99004251416DA8FD7FE9A4544119A937BBF941514187105FF8E6A4544185DB6F52F741514197887F20E6A45441A933121BF3415141A178C070E4A45441655F681EEC4151410DABF807E2A45441C1ADB9F9EB4151416E0755F4E1A45441C1C84B41EB415141DB147298E2A45441DD959D60E74151416808C70BE6A45441B844C96DD3415141B93E05CCF7A45441917AF022C54151410951A18304A55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000000000050EF415141C3F528FCDEA454419A999979DF415141295C8FB2D9A4544185EB5178DA415141E17A14BED7A45441F6285C6FD44151413D0AD7E3D4A4544148E17A24D341514133333323D4A45441E17A144EBD4151411F85EB91E7A45441AE47E14AA14151410000008000A55441295C8F32A9415141D7A370AD04A55441AE47E19ABA415141295C8FE20DA55441EC51B89ED641514152B81EF5F4A4544100000050EF415141C3F528FCDEA45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980629 - 3390909
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000190000005D776D121B425141EF72B2CCF4A454410523E73D1A425141BAB7E689F5A454413F6F6A871242514193084725F1A454415BEBAA980C4251416145173DEEA4544117B30A99004251416DA8FD7FE9A4544119A937BBF941514187105FF8E6A4544185DB6F52F741514197887F20E6A45441A933121BF3415141A178C070E4A45441655F681EEC4151410DABF807E2A45441C1ADB9F9EB4151416E0755F4E1A45441C1C84B41EB415141DB147298E2A45441DD959D60E74151416808C70BE6A45441B844C96DD3415141B93E05CCF7A45441917AF022C54151410951A18304A55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000000000050EF415141C3F528FCDEA454419A999979DF415141295C8FB2D9A4544185EB5178DA415141E17A14BED7A45441F6285C6FD44151413D0AD7E3D4A4544148E17A24D341514133333323D4A45441E17A144EBD4151411F85EB91E7A45441AE47E14AA14151410000008000A55441295C8F32A9415141D7A370AD04A55441AE47E19ABA415141295C8FE20DA55441EC51B89ED641514152B81EF5F4A4544100000050EF415141C3F528FCDEA45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980630 - 2176946
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000C0000007B14AE97A94B5141B81E85EB9F4454415C8FC205AA4B514148E17AB48C44544152B81E45A34B5141295C8F628D445441295C8F52824B5141000000009144544152B81E75814B51411F85EB019F44544152B81E05804B5141C3F5288CAE44544152B81E45874B5141AE47E1AAAE4454417B14AE37864B5141C3F5282CC3445441E17A144E894B5141AE47E17AC8445441D7A3707DA44B514114AE47E1B64454418FC2F528A94B5141E17A142EB34454417B14AE97A94B5141B81E85EB9F445441
+</a>
+
+<b>
+0106000000010000000103000000010000003800000008878724814B514170AE2369A244544158CFC368814B5141ECF37B879F445441A9CCA07D814B5141757B24789E44544110F668E0834B5141CBCF303C7A445441E7440E2D754B5141809335BF79445441441260DD734B5141C98596D5794454410AD7A3305E4B5141666666567B445441F6285CAF5C4B514114AE47417B445441713D0A275C4B5141A4703D3A7B445441B81E85CB524B51413D0AD7237B445441E17A149E514B514114AE47217B445441666666A64F4B5141CDCCCC4C7B445441B81E851B4F4B51411F85EB01824454413D0AD7334A4B51415C8FC24582445441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980630 - 3289468
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000C0000007B14AE97A94B5141B81E85EB9F4454415C8FC205AA4B514148E17AB48C44544152B81E45A34B5141295C8F628D445441295C8F52824B5141000000009144544152B81E75814B51411F85EB019F44544152B81E05804B5141C3F5288CAE44544152B81E45874B5141AE47E1AAAE4454417B14AE37864B5141C3F5282CC3445441E17A144E894B5141AE47E17AC8445441D7A3707DA44B514114AE47E1B64454418FC2F528A94B5141E17A142EB34454417B14AE97A94B5141B81E85EB9F445441
+</a>
+
+<b>
+0106000000010000000103000000010000003800000008878724814B514170AE2369A244544158CFC368814B5141ECF37B879F445441A9CCA07D814B5141757B24789E44544110F668E0834B5141CBCF303C7A445441E7440E2D754B5141809335BF79445441441260DD734B5141C98596D5794454410AD7A3305E4B5141666666567B445441F6285CAF5C4B514114AE47417B445441713D0A275C4B5141A4703D3A7B445441B81E85CB524B51413D0AD7237B445441E17A149E514B514114AE47217B445441666666A64F4B5141CDCCCC4C7B445441B81E851B4F4B51411F85EB01824454413D0AD7334A4B51415C8FC24582445441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>444409 - 2984765
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000E000000F6285CDF99D55041F6285C6F864E54415C8FC25596D55041295C8F62854E5441D7A3704D82D5504114AE4761C24E5441F6285C5F89D55041E17A14AEC44E544148E17A749CD55041333333E3CA4E5441295C8FE2A6D55041E17A14CECD4E544185EB51F8ADD55041EC51B87EB84E54419A999949B5D55041EC51B87EA24E544100000020BCD55041D7A370ED8D4E5441295C8F52BBD55041295C8FF28C4E544100000090B5D55041000000208C4E5441D7A3709DABD550418FC2F5688A4E54417B14AEA7A1D55041B81E855B884E5441F6285CDF99D55041F6285C6F864E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000B6BA7D7FAED550412D2C34E88A4E5441B190B026A5D550419280C612894E544117D3D64A90D55041D8B556EEC64E54410D1C107E99D550413E087DECC94E544148E17A749CD55041333333E3CA4E5441295C8FE2A6D55041E17A14CECD4E544185EB51F8ADD55041EC51B87EB84E54419A999949B5D55041EC51B87EA24E544100000020BCD55041D7A370ED8D4E5441295C8F52BBD55041295C8FF28C4E544100000090B5D55041000000208C4E5441B6BA7D7FAED550412D2C34E88A4E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>444409 - 5172297
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000E000000F6285CDF99D55041F6285C6F864E54415C8FC25596D55041295C8F62854E5441D7A3704D82D5504114AE4761C24E5441F6285C5F89D55041E17A14AEC44E544148E17A749CD55041333333E3CA4E5441295C8FE2A6D55041E17A14CECD4E544185EB51F8ADD55041EC51B87EB84E54419A999949B5D55041EC51B87EA24E544100000020BCD55041D7A370ED8D4E5441295C8F52BBD55041295C8FF28C4E544100000090B5D55041000000208C4E5441D7A3709DABD550418FC2F5688A4E54417B14AEA7A1D55041B81E855B884E5441F6285CDF99D55041F6285C6F864E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000B6BA7D7FAED550412D2C34E88A4E5441B190B026A5D550419280C612894E544117D3D64A90D55041D8B556EEC64E54410D1C107E99D550413E087DECC94E544148E17A749CD55041333333E3CA4E5441295C8FE2A6D55041E17A14CECD4E544185EB51F8ADD55041EC51B87EB84E54419A999949B5D55041EC51B87EA24E544100000020BCD55041D7A370ED8D4E5441295C8F52BBD55041295C8FF28C4E544100000090B5D55041000000208C4E5441B6BA7D7FAED550412D2C34E88A4E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980905 - 1281814
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000004400000098B55645FB1751414EAAF9A8F3F2544180AA8506FE1751417AF80CB2F0F254411E376288FF175141107AC812EFF2544114AE47A10018514148E17AE4EDF254411F85EB510418514166666696F0F25441B81E858B09185141AE47E1BAF5F25441CCCE925B0A185141E609D0BBF6F25441F2F247A30B1851410DAC8250F8F25441CDCCCC3C0D185141A4703D4AFAF2544148E17A640F18514100000050FEF2544110426A53111851412C4F6D1D04F3544194D9CE1E131851416EF3125202F35441BDEC744812185141D97A3DBBFFF2544143578CC3111851414B0BE026FEF25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000AE47E12AF417514185EB51D8FDF25441C3F5281CF117514148E17AD403F35441295C8FC2F0175141E17A14AE09F354411F85EB71F1175141CDCCCC9C0EF35441D7A370FDF3175141A4703DBA14F3544148E17A94F5175141EC51B85E19F3544185EB51B8F6175141295C8F521FF3544114AE4761F71751415C8FC23526F354419A9999A9F8175141C3F5282C26F354413D0AD703F9175141F6285C5F25F3544133333323FA17514148E17A1422F354415C8FC255FB1751413D0AD7431FF35441CDCCCCCCFC175141C3F5284C1CF3544166666646FE175141000000001AF35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980905 - 3366171
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000004400000098B55645FB1751414EAAF9A8F3F2544180AA8506FE1751417AF80CB2F0F254411E376288FF175141107AC812EFF2544114AE47A10018514148E17AE4EDF254411F85EB510418514166666696F0F25441B81E858B09185141AE47E1BAF5F25441CCCE925B0A185141E609D0BBF6F25441F2F247A30B1851410DAC8250F8F25441CDCCCC3C0D185141A4703D4AFAF2544148E17A640F18514100000050FEF2544110426A53111851412C4F6D1D04F3544194D9CE1E131851416EF3125202F35441BDEC744812185141D97A3DBBFFF2544143578CC3111851414B0BE026FEF25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000AE47E12AF417514185EB51D8FDF25441C3F5281CF117514148E17AD403F35441295C8FC2F0175141E17A14AE09F354411F85EB71F1175141CDCCCC9C0EF35441D7A370FDF3175141A4703DBA14F3544148E17A94F5175141EC51B85E19F3544185EB51B8F6175141295C8F521FF3544114AE4761F71751415C8FC23526F354419A9999A9F8175141C3F5282C26F354413D0AD703F9175141F6285C5F25F3544133333323FA17514148E17A1422F354415C8FC255FB1751413D0AD7431FF35441CDCCCCCCFC175141C3F5284C1CF3544166666646FE175141000000001AF35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>410773 - 53139
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000100000001ECF963EEFA85041220EA7BBFE47554197EF07FA1BA950419BCDA19E024855416D1FCF0A2BA95041EC7E13A1044855414AA58A1B2BA95041366C54AF04485541713D0A372DA950415C8FC255FE4755411F85EBE135A950410AD7A330E9475541D7A3706D3CA950417B14AE37D9475541666666D63BA95041713D0A07D8475541713D0A1729A9504185EB51E8D2475541E17A14AE14A95041A4703DBACC475541F6285C9F09A9504114AE4761C9475541000000D000A95041EC51B8EEC6475541CDCCCCACFFA850419A999989C7475541E17A142EFBA85041295C8FA2D6475541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000713D0A372DA950415C8FC255FE4755416F48A1402DA95041994D5D3EFE475541F84F5C462DA950410B372C2DFE4755411945859030A950411398DF29F64755411F85EBE135A950410AD7A330E9475541D7A3706D3CA950417B14AE37D9475541666666D63BA95041713D0A07D8475541C1B7810430A95041BEC2A8CCD44755419280681429A95041D970A2E8D247554124055E2827A95041E4509856D247554106E8F9D41AA95041116E1B97CE47554137ABD2D619A95041E0C0264ACE475541A92A7C1919A95041A33CD210CE4755410F0F8C1519A9504136FDA00FCE475541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983166 - 210192
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000022000000000000A0407F514148E17A04C1A55441713D0A973F7F51411F85EBA1C0A55441E17A14BE3E7F5141CDCCCC5CC0A5544185EB51583B7F5141713D0AA7BFA55441666666663C7F51411F85EBD1CBA55441713D0A273D7F5141CDCCCCBCD3A55441EC51B8DE3D7F5141EC51B8DED3A55441333333A33E7F5141713D0A27D4A5544148E17AA43F7F5141666666A6D4A55441C3F5283C407F51417B14AEE7D4A554413D0AD7E3407F51410AD7A310D5A5544100000070417F5141295C8F32D5A554418FC2F588477F51413D0AD773D6A554410AD7A3B04C7F514148E17A34D8A55441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000008FC2F588477F51413D0AD773D6A55441AE9813A6477F51411E0EBD7DD6A5544172309DD74C7F514119B4860CD8A55441EA252166517F5141E7474F41D9A5544173F36E85517F5141D32B2942D3A55441BA77A2954E7F5141ACBE027ED3A5544113B78A3E4D7F5141EF646439D3A55441187D604E4C7F514116381517D3A55441B72BF2E24A7F5141622B4D5DD2A5544176434922477F514189FEFD3AD2A5544193A4F147447F51413DA965C5D2A55441C5102913437F51413DA965C5D2A55441A11813B7417F51415D18C8B1D2A55441AD8D6964417F51419A6D5BB8D2A55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980955 - 1675754
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000DB894D97B7AB5041FC6E675B1F02554101140D6CC1AB504152F905EA28025541D25650FED2AB50413992A5073902554106CCE5AAD7AB50415251017E3C0255414BF713A3D8AB5041A217A4D63C0255415A9BAA43DAAB504118C147E63A02554154FD0215DCAB5041A02CA9103602554133333333AFAB5041EC51B86E0A025541967D1480A6AB50416C68554B0D02554151FB0928A6AB50411A07014E0E02554126E6DEBDADAB5041C3343BC815025541F8E974FEB5AB5041E246F3CD1D025541DB894D97B7AB5041FC6E675B1F025541
+</a>
+
+<b>
+010600000001000000010300000001000000090000008FC2F508C2AB5041295C8F82290255411F85EB71D7AB5041B81E851B3D025541713D0AF7D8AB5041AE47E1EA3C025541E17A145EDAAB5041AE47E1FA3A0255410AD7A330DCAB5041B81E852B3602554133333333AFAB5041EC51B86E0A0255413D0AD773A6AB5041F6285C4F0D0255411F85EB21A6AB5041295C8F620E0255418FC2F508C2AB5041295C8F8229025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>980955 - 3554960
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000DB894D97B7AB5041FC6E675B1F02554101140D6CC1AB504152F905EA28025541D25650FED2AB50413992A5073902554106CCE5AAD7AB50415251017E3C0255414BF713A3D8AB5041A217A4D63C0255415A9BAA43DAAB504118C147E63A02554154FD0215DCAB5041A02CA9103602554133333333AFAB5041EC51B86E0A025541967D1480A6AB50416C68554B0D02554151FB0928A6AB50411A07014E0E02554126E6DEBDADAB5041C3343BC815025541F8E974FEB5AB5041E246F3CD1D025541DB894D97B7AB5041FC6E675B1F025541
+</a>
+
+<b>
+010600000001000000010300000001000000090000008FC2F508C2AB5041295C8F82290255411F85EB71D7AB5041B81E851B3D025541713D0AF7D8AB5041AE47E1EA3C025541E17A145EDAAB5041AE47E1FA3A0255410AD7A330DCAB5041B81E852B3602554133333333AFAB5041EC51B86E0A0255413D0AD773A6AB5041F6285C4F0D0255411F85EB21A6AB5041295C8F620E0255418FC2F508C2AB5041295C8F8229025541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287727 - 219991
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000EC51B86EF3A8514185EB510808A654418FC2F5A8EBA851411F85EB0103A65441AE47E1DAE8A85141E17A14AEFFA55441CDCCCCCCDFA85141F6285CBF0CA65441000000A0DBA851410000001012A65441E17A14FEDFA85141C3F528CC13A65441666666F6E8A85141F6285C0F19A65441CDCCCC8CF4A851410AD7A3B01FA6544148E17AE4F4A85141000000B01DA654410AD7A3E0F5A8514185EB518812A65441F6285CAFF6A85141295C8F0207A6544148E17A74F5A851416666662606A65441EC51B86EF3A8514185EB510808A65441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000FFF932B4F4A85141CA38F4390AA65441EA16DC45F3A8514140C7C88209A65441BA6CA900F2A8514128722FE008A65441CBCAC8E4EEA851414D6FDDDA06A65441F225C0A5EBA851411F9908C904A65441060ED031E7A8514156D9701302A65441D8CCCCCCDFA8514116295CBF0CA65441140000A0DBA851410800001012A65441E17A14FEDFA85141C3F528CC13A654419FC0DA35E1A851411339128314A65441696666F6E8A85141D8285C0F19A65441CFCCCC8CF4A85141FCD6A3B01FA65441027FDDA5F4A85141943E171E1FA65441A9DD0CB1F4A85141CEEFB1DC1EA65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287727 - 274994
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000EC51B86EF3A8514185EB510808A654418FC2F5A8EBA851411F85EB0103A65441AE47E1DAE8A85141E17A14AEFFA55441CDCCCCCCDFA85141F6285CBF0CA65441000000A0DBA851410000001012A65441E17A14FEDFA85141C3F528CC13A65441666666F6E8A85141F6285C0F19A65441CDCCCC8CF4A851410AD7A3B01FA6544148E17AE4F4A85141000000B01DA654410AD7A3E0F5A8514185EB518812A65441F6285CAFF6A85141295C8F0207A6544148E17A74F5A851416666662606A65441EC51B86EF3A8514185EB510808A65441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000FFF932B4F4A85141CA38F4390AA65441EA16DC45F3A8514140C7C88209A65441BA6CA900F2A8514128722FE008A65441CBCAC8E4EEA851414D6FDDDA06A65441F225C0A5EBA851411F9908C904A65441060ED031E7A8514156D9701302A65441D8CCCCCCDFA8514116295CBF0CA65441140000A0DBA851410800001012A65441E17A14FEDFA85141C3F528CC13A654419FC0DA35E1A851411339128314A65441696666F6E8A85141D8285C0F19A65441CFCCCC8CF4A85141FCD6A3B01FA65441027FDDA5F4A85141943E171E1FA65441A9DD0CB1F4A85141CEEFB1DC1EA65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>334798 - 333394
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000C0C8FD7B0F105141C4E373FE72885441DF4DCA880E105141C0AA802C738854413C5536CC0F10514194A11E9E7A8854415C8FC2F510105141A4703D6A81885441E57C8AFA10105141135BED958188544140CAADCB131051418C664DC89288544165CA71D524105141178D3D4C94885441614586A3231051412364E11C8E8854419C78B9362310514190CA47E38B88544135640BAF22105141E68266288988544126DF1FDD21105141BB4F33F584885441C7E9F6001F1051416F3B852D76885441E66EE2321E105141E0788F2476885441B81E85AB1D105141E17A141E76885441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000036000000B81E85ABD10F5141D7A370DDA2885441EC51B8BED30F51419A999939A78854411F85EB71D80F514100000020B0885441C3F528BCE70F5141000000A0A6885441D7A3706DF20F5141B81E85FB9F885441000000C0F60F5141C3F5284C9D8854413D0AD7B3F10F51410000001096885441AE47E10AEC0F5141295C8F428E8854413D0AD773E60F514114AE473186885441713D0A07E40F51410000008082885441B81E853BE20F5141666666567F8854413D0AD7B3DF0F5141D7A3701D7A8854411F85EB11DF0F514114AE47F1718854417B14AE47DF0F514148E17AB463885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>334798 - 1118071
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000C0C8FD7B0F105141C4E373FE72885441DF4DCA880E105141C0AA802C738854413C5536CC0F10514194A11E9E7A8854415C8FC2F510105141A4703D6A81885441E57C8AFA10105141135BED958188544140CAADCB131051418C664DC89288544165CA71D524105141178D3D4C94885441614586A3231051412364E11C8E8854419C78B9362310514190CA47E38B88544135640BAF22105141E68266288988544126DF1FDD21105141BB4F33F584885441C7E9F6001F1051416F3B852D76885441E66EE2321E105141E0788F2476885441B81E85AB1D105141E17A141E76885441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000036000000B81E85ABD10F5141D7A370DDA2885441EC51B8BED30F51419A999939A78854411F85EB71D80F514100000020B0885441C3F528BCE70F5141000000A0A6885441D7A3706DF20F5141B81E85FB9F885441000000C0F60F5141C3F5284C9D8854413D0AD7B3F10F51410000001096885441AE47E10AEC0F5141295C8F428E8854413D0AD773E60F514114AE473186885441713D0A07E40F51410000008082885441B81E853BE20F5141666666567F8854413D0AD7B3DF0F5141D7A3701D7A8854411F85EB11DF0F514114AE47F1718854417B14AE47DF0F514148E17AB463885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>334798 - 3918057
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000C0C8FD7B0F105141C4E373FE72885441DF4DCA880E105141C0AA802C738854413C5536CC0F10514194A11E9E7A8854415C8FC2F510105141A4703D6A81885441E57C8AFA10105141135BED958188544140CAADCB131051418C664DC89288544165CA71D524105141178D3D4C94885441614586A3231051412364E11C8E8854419C78B9362310514190CA47E38B88544135640BAF22105141E68266288988544126DF1FDD21105141BB4F33F584885441C7E9F6001F1051416F3B852D76885441E66EE2321E105141E0788F2476885441B81E85AB1D105141E17A141E76885441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000036000000B81E85ABD10F5141D7A370DDA2885441EC51B8BED30F51419A999939A78854411F85EB71D80F514100000020B0885441C3F528BCE70F5141000000A0A6885441D7A3706DF20F5141B81E85FB9F885441000000C0F60F5141C3F5284C9D8854413D0AD7B3F10F51410000001096885441AE47E10AEC0F5141295C8F428E8854413D0AD773E60F514114AE473186885441713D0A07E40F51410000008082885441B81E853BE20F5141666666567F8854413D0AD7B3DF0F5141D7A3701D7A8854411F85EB11DF0F514114AE47F1718854417B14AE47DF0F514148E17AB463885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>334798 - 33520
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000C0C8FD7B0F105141C4E373FE72885441DF4DCA880E105141C0AA802C738854413C5536CC0F10514194A11E9E7A8854415C8FC2F510105141A4703D6A81885441E57C8AFA10105141135BED958188544140CAADCB131051418C664DC89288544165CA71D524105141178D3D4C94885441614586A3231051412364E11C8E8854419C78B9362310514190CA47E38B88544135640BAF22105141E68266288988544126DF1FDD21105141BB4F33F584885441C7E9F6001F1051416F3B852D76885441E66EE2321E105141E0788F2476885441B81E85AB1D105141E17A141E76885441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003600000085EB51E813105141CDCCCCAC6F885441CDCCCCEC1210514114AE47516F8854416666666610105141295C8FA26E885441F6285CFF0A105141713D0A676E885441AE47E18A071051415C8FC2956E8854410AD7A3D003105141CDCCCCAC6E8854413D0AD77300105141713D0A676E8854413D0AD7A3F70F51418FC2F5286C885441295C8F12E90F51411F85EB515F885441295C8F42E70F51418FC2F5285E885441D7A3707DE20F5141A4703D9A5D885441AE47E15ADF0F5141EC51B8DE5E885441333333E3DC0F514152B81E456288544114AE47C1DA0F51413333332366885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>334798 - 92862
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000C0C8FD7B0F105141C4E373FE72885441DF4DCA880E105141C0AA802C738854413C5536CC0F10514194A11E9E7A8854415C8FC2F510105141A4703D6A81885441E57C8AFA10105141135BED958188544140CAADCB131051418C664DC89288544165CA71D524105141178D3D4C94885441614586A3231051412364E11C8E8854419C78B9362310514190CA47E38B88544135640BAF22105141E68266288988544126DF1FDD21105141BB4F33F584885441C7E9F6001F1051416F3B852D76885441E66EE2321E105141E0788F2476885441B81E85AB1D105141E17A141E76885441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003600000085EB51E813105141CDCCCCAC6F885441CDCCCCEC1210514114AE47516F8854416666666610105141295C8FA26E885441F6285CFF0A105141713D0A676E885441AE47E18A071051415C8FC2956E8854410AD7A3D003105141CDCCCCAC6E8854413D0AD77300105141713D0A676E8854413D0AD7A3F70F51418FC2F5286C885441295C8F12E90F51411F85EB515F885441295C8F42E70F51418FC2F5285E885441D7A3707DE20F5141A4703D9A5D885441AE47E15ADF0F5141EC51B8DE5E885441333333E3DC0F514152B81E456288544114AE47C1DA0F51413333332366885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>334798 - 294842
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000C0C8FD7B0F105141C4E373FE72885441DF4DCA880E105141C0AA802C738854413C5536CC0F10514194A11E9E7A8854415C8FC2F510105141A4703D6A81885441E57C8AFA10105141135BED958188544140CAADCB131051418C664DC89288544165CA71D524105141178D3D4C94885441614586A3231051412364E11C8E8854419C78B9362310514190CA47E38B88544135640BAF22105141E68266288988544126DF1FDD21105141BB4F33F584885441C7E9F6001F1051416F3B852D76885441E66EE2321E105141E0788F2476885441B81E85AB1D105141E17A141E76885441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003600000085EB51E813105141CDCCCCAC6F885441CDCCCCEC1210514114AE47516F8854416666666610105141295C8FA26E885441F6285CFF0A105141713D0A676E885441AE47E18A071051415C8FC2956E8854410AD7A3D003105141CDCCCCAC6E8854413D0AD77300105141713D0A676E8854413D0AD7A3F70F51418FC2F5286C885441295C8F12E90F51411F85EB515F885441295C8F42E70F51418FC2F5285E885441D7A3707DE20F5141A4703D9A5D885441AE47E15ADF0F5141EC51B8DE5E885441333333E3DC0F514152B81E456288544114AE47C1DA0F51413333332366885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>232789 - 1850755
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000D7A370FD4DAD504185EB51E8875E5441713D0A474FAD50413D0AD7D3865E544114AE471150AD50410AD7A3207C5E5441713D0A970CAD5041666666D6715E54410AD7A3900CAD5041EC51B8CE725E54419A9999190CAD504185EB5158795E544148E17A140BAD5041E17A14AE7C5E5441AE47E1AA0EAD5041333333337E5E54417B14AE1713AD504114AE47717F5E5441A4703DCA17AD504185EB5178805E5441D7A370FD4DAD504185EB51E8875E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000E216957B16AD5041BDCA9958735E5441D23A0C9D0CAD50410B3477B8715E54410AD7A3900CAD5041EC51B8CE725E54419A9999190CAD504185EB5158795E544148E17A140BAD5041E17A14AE7C5E5441AE47E1AA0EAD5041333333337E5E54417B14AE1713AD504114AE47717F5E5441A4703DCA17AD504185EB5178805E5441D7A370FD4DAD504185EB51E8875E5441713D0A474FAD50413D0AD7D3865E5441570C5B1E50AD504125421D827B5E5441DC1A329B36AD5041E7B737F4775E54415F276E8A20AD504193BD40E1745E54416FBA1CB41BAD5041F52DBC34745E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>232789 - 3604301
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000D7A370FD4DAD504185EB51E8875E5441713D0A474FAD50413D0AD7D3865E544114AE471150AD50410AD7A3207C5E5441713D0A970CAD5041666666D6715E54410AD7A3900CAD5041EC51B8CE725E54419A9999190CAD504185EB5158795E544148E17A140BAD5041E17A14AE7C5E5441AE47E1AA0EAD5041333333337E5E54417B14AE1713AD504114AE47717F5E5441A4703DCA17AD504185EB5178805E5441D7A370FD4DAD504185EB51E8875E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000E216957B16AD5041BDCA9958735E5441D23A0C9D0CAD50410B3477B8715E54410AD7A3900CAD5041EC51B8CE725E54419A9999190CAD504185EB5158795E544148E17A140BAD5041E17A14AE7C5E5441AE47E1AA0EAD5041333333337E5E54417B14AE1713AD504114AE47717F5E5441A4703DCA17AD504185EB5178805E5441D7A370FD4DAD504185EB51E8875E5441713D0A474FAD50413D0AD7D3865E5441570C5B1E50AD504125421D827B5E5441DC1A329B36AD5041E7B737F4775E54415F276E8A20AD504193BD40E1745E54416FBA1CB41BAD5041F52DBC34745E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>232838 - 1850755
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A00000014AE471144AD5041D7A370DD5F5E5441000000400AAD504148E17AC4575E5441A4703DCA07AD5041E17A147E5E5E54419A9999B905AD504100000060665E5441C3F5285C03AD5041E17A146E705E5441713D0A970CAD5041666666D6715E544114AE471150AD50410AD7A3207C5E544148E17A9450AD50418FC2F528755E5441713D0A4752AD5041AE47E1DA615E544114AE471144AD5041D7A370DD5F5E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000E216957B16AD5041BDCA9958735E5441D23A0C9D0CAD50410B3477B8715E54410AD7A3900CAD5041EC51B8CE725E54419A9999190CAD504185EB5158795E544148E17A140BAD5041E17A14AE7C5E5441AE47E1AA0EAD5041333333337E5E54417B14AE1713AD504114AE47717F5E5441A4703DCA17AD504185EB5178805E5441D7A370FD4DAD504185EB51E8875E5441713D0A474FAD50413D0AD7D3865E5441570C5B1E50AD504125421D827B5E5441DC1A329B36AD5041E7B737F4775E54415F276E8A20AD504193BD40E1745E54416FBA1CB41BAD5041F52DBC34745E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>232838 - 3604301
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A00000014AE471144AD5041D7A370DD5F5E5441000000400AAD504148E17AC4575E5441A4703DCA07AD5041E17A147E5E5E54419A9999B905AD504100000060665E5441C3F5285C03AD5041E17A146E705E5441713D0A970CAD5041666666D6715E544114AE471150AD50410AD7A3207C5E544148E17A9450AD50418FC2F528755E5441713D0A4752AD5041AE47E1DA615E544114AE471144AD5041D7A370DD5F5E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000E216957B16AD5041BDCA9958735E5441D23A0C9D0CAD50410B3477B8715E54410AD7A3900CAD5041EC51B8CE725E54419A9999190CAD504185EB5158795E544148E17A140BAD5041E17A14AE7C5E5441AE47E1AA0EAD5041333333337E5E54417B14AE1713AD504114AE47717F5E5441A4703DCA17AD504185EB5178805E5441D7A370FD4DAD504185EB51E8875E5441713D0A474FAD50413D0AD7D3865E5441570C5B1E50AD504125421D827B5E5441DC1A329B36AD5041E7B737F4775E54415F276E8A20AD504193BD40E1745E54416FBA1CB41BAD5041F52DBC34745E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499541 - 1083509
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000400000001030000000100000012000000E17A142EA51F51415C8FC2356C2454415C8FC2B5A01F5141AE47E1BA7124544148E17A34A11F51418FC2F58872245441AE47E12AA31F514133333393782454410AD7A370A51F51419A9999997F24544185EB5128A81F5141713D0AE784245441D7A370FDAD1F51417B14AE778224544185EB5168B41F5141A4703DAA7D2454415C8FC2C5B81F5141D7A3701D7A2454418FC2F5A8BC1F5141F6285CCF762454410AD7A3D0A91F5141CDCCCC7C66245441AE47E14AA51F5141333333136C245441333333D3A51F5141333333936D245441E17A140EA61F5141713D0A876E245441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000EC000000F38BA35E4A1F5141D3EE7E8336245441713D0A07511F51413333336336245441B81E852B541F51419A9999A936245441EC51B81E551F51417B14AEA7362454419A9999D9561F514148E17A14322454417B14AEA7561F51413D0AD7C3312454417B14AE57561F514114AE47413124544148E17A04561F514148E17AB43024544148E17AA4551F514148E17A5430245441F6285C3F551F5141AE47E1FA2F245441295C8FB2541F514114AE47812F24544133333363541F5141CDCCCC1C2F24544152B81E25541F5141B81E85BB2E24544185EB51F8531F514152B81E652E245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499541 - 3889469
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000400000001030000000100000012000000E17A142EA51F51415C8FC2356C2454415C8FC2B5A01F5141AE47E1BA7124544148E17A34A11F51418FC2F58872245441AE47E12AA31F514133333393782454410AD7A370A51F51419A9999997F24544185EB5128A81F5141713D0AE784245441D7A370FDAD1F51417B14AE778224544185EB5168B41F5141A4703DAA7D2454415C8FC2C5B81F5141D7A3701D7A2454418FC2F5A8BC1F5141F6285CCF762454410AD7A3D0A91F5141CDCCCC7C66245441AE47E14AA51F5141333333136C245441333333D3A51F5141333333936D245441E17A140EA61F5141713D0A876E245441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000EC000000F38BA35E4A1F5141D3EE7E8336245441713D0A07511F51413333336336245441B81E852B541F51419A9999A936245441EC51B81E551F51417B14AEA7362454419A9999D9561F514148E17A14322454417B14AEA7561F51413D0AD7C3312454417B14AE57561F514114AE47413124544148E17A04561F514148E17AB43024544148E17AA4551F514148E17A5430245441F6285C3F551F5141AE47E1FA2F245441295C8FB2541F514114AE47812F24544133333363541F5141CDCCCC1C2F24544152B81E25541F5141B81E85BB2E24544185EB51F8531F514152B81E652E245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981592 - 53562
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000009000000579988FE31B1504190EA58E69B295541042ACA0145B150412488DCE69E295541DC48F8AE53B15041331CBB886B295541AABCB15748B15041D4AFF50767295541F43466AC44B15041023D8F886A295541E89194D641B1504165FBE6886C295541FCD88AAB3FB1504196DA12896D295541256777553BB15041E9A306346F295541579988FE31B1504190EA58E69B295541010300000001000000040000003814199B45B150417C28B7C99D295541151F2E5745B150419C8D2ABC9E295541F140539E45B1504147B306CA9D2955413814199B45B150417C28B7C99D295541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000F7D88AAB3FB1504198DA12896D295541C289E1033FB15041238ECCF16D2955412ECB169D35B150414743A5789C295541052ACA0145B150412188DCE69E295541DC48F8AE53B15041361CBB886B29554131B4D31E48B15041B4FD3D3E672955414EBCDDD046B15041B2DE057D682955416BF3EE6745B15041BBB58CD569295541333333E344B1504185EB51686A295541E89194D641B1504162FBE6886C295541F7D88AAB3FB1504198DA12896D295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981592 - 246306
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000009000000579988FE31B1504190EA58E69B295541042ACA0145B150412488DCE69E295541DC48F8AE53B15041331CBB886B295541AABCB15748B15041D4AFF50767295541F43466AC44B15041023D8F886A295541E89194D641B1504165FBE6886C295541FCD88AAB3FB1504196DA12896D295541256777553BB15041E9A306346F295541579988FE31B1504190EA58E69B295541010300000001000000040000003814199B45B150417C28B7C99D295541151F2E5745B150419C8D2ABC9E295541F140539E45B1504147B306CA9D2955413814199B45B150417C28B7C99D295541
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000014D6A12B42B150411B93AF226C29554110E413EB41B15041B07DD4466C2955410000002041B1504148E17AC46C295541F7D88AAB3FB1504198DA12896D29554134F38C5B3FB1504128C67DC16D2955410AC0E80A36B15041DC7470BA9C29554152B81E3545B15041B81E853B9F2955417CA0A53650B1504167FB67E2772955414B8AD1D353B15041987F137E6B2955412351B42B49B150412BB219A46629554187EF11C947B1504137B7FE336729554140567A0545B15041ADE04F5B6A29554114D6A12B42B150411B93AF226C295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981592 - 389461
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000009000000579988FE31B1504190EA58E69B295541042ACA0145B150412488DCE69E295541DC48F8AE53B15041331CBB886B295541AABCB15748B15041D4AFF50767295541F43466AC44B15041023D8F886A295541E89194D641B1504165FBE6886C295541FCD88AAB3FB1504196DA12896D295541256777553BB15041E9A306346F295541579988FE31B1504190EA58E69B295541010300000001000000040000003814199B45B150417C28B7C99D295541151F2E5745B150419C8D2ABC9E295541F140539E45B1504147B306CA9D2955413814199B45B150417C28B7C99D295541
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000014D6A12B42B150411B93AF226C29554110E413EB41B15041B07DD4466C2955410000002041B1504148E17AC46C295541F7D88AAB3FB1504198DA12896D29554134F38C5B3FB1504128C67DC16D2955410AC0E80A36B15041DC7470BA9C29554152B81E3545B15041B81E853B9F2955417CA0A53650B1504167FB67E2772955414B8AD1D353B15041987F137E6B2955412351B42B49B150412BB219A46629554187EF11C947B1504137B7FE336729554140567A0545B15041ADE04F5B6A29554114D6A12B42B150411B93AF226C295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981071 - 53162
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000310000004B5A5091614451417E401684DC565441C28D2D9261445141640FA18ADC565441CAA4C6F061445141213EAE43DC56544179D29D61624451419917FB6BDC5654415B8A16A4624451411EDBF673DC5654411066A873634451419917FB6BDC565441722E8B1F64445141FF7D806ADC565441D924BD99634451414FAD1F69CC56544167D5E79E4F4451414FAD1F69CC5654410D742B61434451414E37391DCD56544179E23FF1434451414FAD1F69CC565441400DE98C41445141B11B34F9CC565441AA74220735445141B9B98015CF56544182363DA927445141F304BEC5D0565441 [...]
+</a>
+
+<b>
+010600000002000000010300000001000000400000003E5BF6BA20445141ADD780DFD25654415DFD53781944514153F5C36ED4565441D9C82B70194451411C4420B9D5565441B3E6A767194451417737C305D6565441B9A84E3019445141D72B4F51D85654414AAD8F3F1944514156D04EAAD85654411C385C6E19445141D429143DDE56544193D1C16419445141CFEBF47DE1565441A45A0E6E19445141FB0D86A7E2565441061009281A44514123234988EE565441A2E1B97B1A44514129590C5DF3565441CD0F09C91A445141A6033198FA565441AF5E7BD21A445141DBFD4EDEFA5654415762D3EC1A4451415ED597F000575441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981071 - 57852
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000310000004B5A5091614451417E401684DC565441C28D2D9261445141640FA18ADC565441CAA4C6F061445141213EAE43DC56544179D29D61624451419917FB6BDC5654415B8A16A4624451411EDBF673DC5654411066A873634451419917FB6BDC565441722E8B1F64445141FF7D806ADC565441D924BD99634451414FAD1F69CC56544167D5E79E4F4451414FAD1F69CC5654410D742B61434451414E37391DCD56544179E23FF1434451414FAD1F69CC565441400DE98C41445141B11B34F9CC565441AA74220735445141B9B98015CF56544182363DA927445141F304BEC5D0565441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004B000000D742A5C63C4451413D8F9A0F125754412D766C6A36445141410168C7125754412D327FC0344451411149E9F4125754410D24B57532445141D557703A13575441F19EC983304451414943C27213575441950F074E2B4451419BD284081457544128FB58A61B445141F438EBCE155754416B6D703F1B4451416221599B095754415CA8E0301B44514135998241085754414BE350221B44514153DFB4B406575441F82C1D101B4451416632F666045754410A9FC9031B4451411FBED6C0025754412C5931051B445141389F599102575441BE8C73F81A445141521EB33202575441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981071 - 248015
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000310000004B5A5091614451417E401684DC565441C28D2D9261445141640FA18ADC565441CAA4C6F061445141213EAE43DC56544179D29D61624451419917FB6BDC5654415B8A16A4624451411EDBF673DC5654411066A873634451419917FB6BDC565441722E8B1F64445141FF7D806ADC565441D924BD99634451414FAD1F69CC56544167D5E79E4F4451414FAD1F69CC5654410D742B61434451414E37391DCD56544179E23FF1434451414FAD1F69CC565441400DE98C41445141B11B34F9CC565441AA74220735445141B9B98015CF56544182363DA927445141F304BEC5D0565441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003E0000001AE767AE1344514142FA18CC195754416A47A0201344514166AFABA41E5754418214B98013445141C8F887A81E5754414670ED551C445141FB79C2321D5754419A756D8730445141D11341DC195754419483BE2B31445141AFBAE9A619575441BA37B9453144514117C0B1B519575441507D140A3D445141ADEA5B3D17575441B328A8083D4451414BFB700A17575441900047053D4451414397879116575441B94F33ED3C44514146F1C39716575441B80761CC3C445141A91244A0165754410FD7F3C93C4451418BFDA9B1145754416E0D114A33445141B439AFF416575441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>334707 - 245921
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000003200000052B81EC592115141F6285CCF0A8E54415C8FC2458B115141713D0A97FD8D5441EC51B84E841151415C8FC245F18D5441000000308211514133333383ED8D5441AE47E16A8111514152B81E25EC8D544185EB51E87F1151417B14AE77E98D54413D0AD7237E11514148E17A54E68D5441F6285C1F7D1151418FC2F5C8E68D5441EC51B83E7C115141295C8FD2E48D544148E17A247A115141666666E6E08D5441A4703D1A78115141AE47E15ADD8D54418FC2F5F87411514148E17AF4D78D5441C3F528DC75115141713D0A47D78D544114AE47416B1151417B14AE87C48D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001700000075695A5B88115141B64278871E8E54412EFBE2FD8511514101A395DD218E5441E8A89CED801151414C436403298E5441B16D6DF0801151415C818604298E544142CAAEA6801151411A3AA2BE298E544166666656831151415C8FC255298E5441D23D0592901151415507F0D0268E5441499C640C911151419DF7A4B9268E5441C3F5280C921151418FC2F588268E5441F6285C9F9A11514148E17A44258E5441EEF208BD99115141AED07FB5218E5441AE47E1BA98115141666666A61D8E5441AD555D50971151412DFCF9D4168E54414BC10C1797115141E6E16CD5158E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>334707 - 368687
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000003200000052B81EC592115141F6285CCF0A8E54415C8FC2458B115141713D0A97FD8D5441EC51B84E841151415C8FC245F18D5441000000308211514133333383ED8D5441AE47E16A8111514152B81E25EC8D544185EB51E87F1151417B14AE77E98D54413D0AD7237E11514148E17A54E68D5441F6285C1F7D1151418FC2F5C8E68D5441EC51B83E7C115141295C8FD2E48D544148E17A247A115141666666E6E08D5441A4703D1A78115141AE47E15ADD8D54418FC2F5F87411514148E17AF4D78D5441C3F528DC75115141713D0A47D78D544114AE47416B1151417B14AE87C48D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001700000075695A5B88115141B64278871E8E54412EFBE2FD8511514101A395DD218E5441E8A89CED801151414C436403298E5441B16D6DF0801151415C818604298E544142CAAEA6801151411A3AA2BE298E544166666656831151415C8FC255298E5441D23D0592901151415507F0D0268E5441499C640C911151419DF7A4B9268E5441C3F5280C921151418FC2F588268E5441F6285C9F9A11514148E17A44258E5441EEF208BD99115141AED07FB5218E5441AE47E1BA98115141666666A61D8E5441AD555D50971151412DFCF9D4168E54414BC10C1797115141E6E16CD5158E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981501 - 3186204
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000004A00000022FAB55EBD9B5041EFB51AEC5C1354411F85EB81B99B50410AD7A3C05E1354411F85EB31B49B504185EB51885F135441D7A3700DA99B50411F85EB316A13544114AE4771A59B50410AD7A3006D135441A4703D2A9C9B5041F6285C5F6F13544114AE4731989B5041000000F07013544148E17AA4969B50410AD7A33071135441CDCCCC2C959B5041EC51B88E7113544152B81ED5929B504152B81ED5721354418FC2F558909B5041B81E85DB74135441E17A14CE8D9B50413D0AD7B37513544148E17A448C9B5041AE47E16A761354411F85EBB18A9B5041D7A3706D77135441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000C3F528CCEC9B50413D0AD743CC135441699AA8E6EC9B504112122B51CA13544172EC9AE6EC9B50418B2DA021CA135441EABD73F9EC9B5041AA407FEFC8135441BF422E32ED9B504107D0DF17C513544115F15584ED9B504155168426C31354418A5264D2ED9B50419C7BCB35C1135441D7A3709DF19B50410AD7A3E0BB13544158D89D0AEF9B5041FAC7929EB7135441FFB6DE7EEA9B5041C398C1A6B513544167EE324DE79B50414CCBEB44B51354414B1F92ECE49B5041647496BCB41354411C4CFCBBE29B50411AB67F44B3135441597E3912E19B504141ABD936B2135441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981501 - 3591106
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000004A00000022FAB55EBD9B5041EFB51AEC5C1354411F85EB81B99B50410AD7A3C05E1354411F85EB31B49B504185EB51885F135441D7A3700DA99B50411F85EB316A13544114AE4771A59B50410AD7A3006D135441A4703D2A9C9B5041F6285C5F6F13544114AE4731989B5041000000F07013544148E17AA4969B50410AD7A33071135441CDCCCC2C959B5041EC51B88E7113544152B81ED5929B504152B81ED5721354418FC2F558909B5041B81E85DB74135441E17A14CE8D9B50413D0AD7B37513544148E17A448C9B5041AE47E16A761354411F85EBB18A9B5041D7A3706D77135441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000C3F528CCEC9B50413D0AD743CC135441699AA8E6EC9B504112122B51CA13544172EC9AE6EC9B50418B2DA021CA135441EABD73F9EC9B5041AA407FEFC8135441BF422E32ED9B504107D0DF17C513544115F15584ED9B504155168426C31354418A5264D2ED9B50419C7BCB35C1135441D7A3709DF19B50410AD7A3E0BB13544158D89D0AEF9B5041FAC7929EB7135441FFB6DE7EEA9B5041C398C1A6B513544167EE324DE79B50414CCBEB44B51354414B1F92ECE49B5041647496BCB41354411C4CFCBBE29B50411AB67F44B3135441597E3912E19B504141ABD936B2135441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981501 - 302576
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000004A00000022FAB55EBD9B5041EFB51AEC5C1354411F85EB81B99B50410AD7A3C05E1354411F85EB31B49B504185EB51885F135441D7A3700DA99B50411F85EB316A13544114AE4771A59B50410AD7A3006D135441A4703D2A9C9B5041F6285C5F6F13544114AE4731989B5041000000F07013544148E17AA4969B50410AD7A33071135441CDCCCC2C959B5041EC51B88E7113544152B81ED5929B504152B81ED5721354418FC2F558909B5041B81E85DB74135441E17A14CE8D9B50413D0AD7B37513544148E17A448C9B5041AE47E16A761354411F85EBB18A9B5041D7A3706D77135441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000330000000AD7A390DE9B5041AE47E1DACD135441B045BDE8DF9B504134442CE3CD1354419D047E12E09B50413427A6E5CD135441666666C6E29B50418FC2F5F8CD135441C3F528CCEC9B50413D0AD743CC135441699AA8E6EC9B504112122B51CA13544172EC9AE6EC9B50418B2DA021CA135441EABD73F9EC9B5041AA407FEFC8135441BF422E32ED9B504107D0DF17C51354414F29C33DED9B50419E98C2D1C41354418A5264D2ED9B50419C7BCB35C1135441D7A3709DF19B50410AD7A3E0BB13544158D89D0AEF9B5041FAC7929EB7135441FFB6DE7EEA9B5041C398C1A6B5135441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608167 - 201838
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002500000085D6F9F636A15041022AF6F425555541A2FCE15B37A15041E7AEAB9925555541EC51B84E38A15041AE47E1BA24555541AE47E18A3AA15041E17A14AE22555541956E12533DA150415382EB2020555541C1C789A439A15041B9E567671F555541C85216121AA150410603DD7119555541316492F6F4A0504163D1977A11555541CE4AC1EBF1A05041791D14B811555541DA9D62C2EFA0504179BBD4AD11555541404ED846ECA050414D499A511155554171EDFE77E1A050417A4AF76F0F5555410ED42D6DDEA0504159FE7A320F555541EC51B8CEDEA05041EC51B86E0D555541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000006000000A73B59EED8A05041BF739423375555415C3970BCD8A05041C2D73FC538555541EF1D0A60E9A050413BB385693D55554157393CBAF0A05041789F8FD23B55554168A8CC2CD9A0504123F3F61835555541A73B59EED8A05041BF73942337555541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660763 - 660762
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B000000A88B90F506DB50418E36B9EBEBD75441E17A14BE03DB5041A4703D8AF4D75441474AE9D502DB50411525F356F6D7544169A71F8A02DB5041BF8C6F16F7D75441D614438201DB504122F7F0F8F8D75441E17A14BEFFDA5041A4703D7AFCD75441DAF6B02AFDDA504143E59EE400D85441E7212F5BFBDA50410855E70704D85441EBDC86E2F3DA50411D6A8F6711D85441CF1D1415EFDA5041CCEBE9361BD854417B14AEF7EEDA504152B81E751BD854415C8FC2C5DEDA5041EC51B88E19D85441F0FF93ECDCDA5041936B3F3023D854416DF505E4E2DA50413F104D7C24D85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000005C8FC2C5DEDA5041EC51B88E19D854417B14AEF7EEDA504152B81E751BD85441E17A14CEF2DA50416666665613D85441E17A14CEFBDA5041A4703D3A03D85441E17A14BEFFDA5041A4703D7AFCD75441E17A14BE03DB5041A4703D8AF4D75441E17A149E08DB5041A4703D7AE7D75441E17A143E06DB5041A4703D9AE6D75441E17A146EFCDA5041A4703D8AE3D75441E17A142EF6DA5041A4703D6AE1D75441E17A14BEE4DA5041A4703D9ADDD75441E17A140EE4DA5041A4703DEAE0D75441E17A14EEE3DA5041A4703DCAE4D75441E17A140EE4DA5041A4703D6AE7D75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660763 - 1506278
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B000000A88B90F506DB50418E36B9EBEBD75441E17A14BE03DB5041A4703D8AF4D75441474AE9D502DB50411525F356F6D7544169A71F8A02DB5041BF8C6F16F7D75441D614438201DB504122F7F0F8F8D75441E17A14BEFFDA5041A4703D7AFCD75441DAF6B02AFDDA504143E59EE400D85441E7212F5BFBDA50410855E70704D85441EBDC86E2F3DA50411D6A8F6711D85441CF1D1415EFDA5041CCEBE9361BD854417B14AEF7EEDA504152B81E751BD854415C8FC2C5DEDA5041EC51B88E19D85441F0FF93ECDCDA5041936B3F3023D854416DF505E4E2DA50413F104D7C24D85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000005C8FC2C5DEDA5041EC51B88E19D854417B14AEF7EEDA504152B81E751BD85441E17A14CEF2DA50416666665613D85441E17A14CEFBDA5041A4703D3A03D85441E17A14BEFFDA5041A4703D7AFCD75441E17A14BE03DB5041A4703D8AF4D75441E17A149E08DB5041A4703D7AE7D75441E17A143E06DB5041A4703D9AE6D75441E17A146EFCDA5041A4703D8AE3D75441E17A142EF6DA5041A4703D6AE1D75441E17A14BEE4DA5041A4703D9ADDD75441E17A140EE4DA5041A4703DEAE0D75441E17A14EEE3DA5041A4703DCAE4D75441E17A140EE4DA5041A4703D6AE7D75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660763 - 4182829
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B000000A88B90F506DB50418E36B9EBEBD75441E17A14BE03DB5041A4703D8AF4D75441474AE9D502DB50411525F356F6D7544169A71F8A02DB5041BF8C6F16F7D75441D614438201DB504122F7F0F8F8D75441E17A14BEFFDA5041A4703D7AFCD75441DAF6B02AFDDA504143E59EE400D85441E7212F5BFBDA50410855E70704D85441EBDC86E2F3DA50411D6A8F6711D85441CF1D1415EFDA5041CCEBE9361BD854417B14AEF7EEDA504152B81E751BD854415C8FC2C5DEDA5041EC51B88E19D85441F0FF93ECDCDA5041936B3F3023D854416DF505E4E2DA50413F104D7C24D85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000005C8FC2C5DEDA5041EC51B88E19D854417B14AEF7EEDA504152B81E751BD85441E17A14CEF2DA50416666665613D85441E17A14CEFBDA5041A4703D3A03D85441E17A14BEFFDA5041A4703D7AFCD75441E17A14BE03DB5041A4703D8AF4D75441E17A149E08DB5041A4703D7AE7D75441E17A143E06DB5041A4703D9AE6D75441E17A146EFCDA5041A4703D8AE3D75441E17A142EF6DA5041A4703D6AE1D75441E17A14BEE4DA5041A4703D9ADDD75441E17A140EE4DA5041A4703DEAE0D75441E17A14EEE3DA5041A4703DCAE4D75441E17A140EE4DA5041A4703D6AE7D75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608155 - 53169
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000016000000E17A14AE52A450413D0AD7D3F452554152B81E3549A4504114AE4711F452554114AE473142A45041F6285C2F18535541000000E048A450415C8FC2B51953554185EB51384BA45041CDCCCC3C1B535541EC51B80E52A450410AD7A3B01F535541D7A370BD5CA45041713D0AE721535541CDCCCC2C63A4504133333363255355418FC2F5C865A4504185EB5148255355419A99996966A450415C8FC2E5215355410AD7A3B065A4504152B81EC5195355418FC2F5F863A450410AD7A3400F535541666666B662A450413D0AD7E30C535541295C8FA262A450419A9999D904535541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000085EB51384BA45041CDCCCC3C1B5355414B78C8AC4DA45041C72AF9980E53554117776FA052A45041164318E8F452554161B730524CA4504111123B51F452554119E093804BA4504191BD6940F452554177CFB50A4BA45041ADCEF436F45255410FEB8F3549A450416C8DB719F45255411EB3DB1748A450410356FBCDF952554114AE473142A45041F6285C2F18535541000000E048A450415C8FC2B51953554185EB51384BA45041CDCCCC3C1B535541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981627 - 3014303
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002C0000003D0AD7D3B5A650415C8FC225FB19554185EB5158B5A65041B81E855BFB195541295C8FB2B4A650410AD7A3B0FC195541CDCCCC0CB5A65041AE47E1CAFC19554185EB5158B2A65041000000D0041A5541EC51B8FEB0A65041295C8FE20C1A5541C3F5280CB2A650417B14AE07131A5541295C8F32B7A65041295C8F42221A55413D0AD733B9A650417B14AE87301A554133333313BAA6504148E17A74301A55417B14AE27B8A6504185EB51F8211A5541666666D6B2A65041E17A14CE121A5541D7A370DDB1A65041CDCCCCDC0C1A5541F6285C1FB3A6504100000000051A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005000000048E17A24D9A6504100000020A9195541F39660E6D4A65041747B70F4A7195541DC0CE67FD1A65041D4BD5904A7195541CDCCCCFCCCA650415C8FC2C5A5195541414F06A4C9A65041C82CCABFA6195541890091E9BFA65041A8818E7FA919554120D8B228BAA650414D79C41FAB195541F9E72687B5A650415519C96EAC1955414B6B4F36B3A65041AD056717AD195541B28B2AC7B1A65041535FF0C2AD195541936D650BAAA65041E8D83F38B1195541FBA1804CA5A650414818555BB31955416E577CD7A1A65041610BDEE9B419554145EE6337A0A6504127FC1EB5B5195541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981627 - 3381307
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002C0000003D0AD7D3B5A650415C8FC225FB19554185EB5158B5A65041B81E855BFB195541295C8FB2B4A650410AD7A3B0FC195541CDCCCC0CB5A65041AE47E1CAFC19554185EB5158B2A65041000000D0041A5541EC51B8FEB0A65041295C8FE20C1A5541C3F5280CB2A650417B14AE07131A5541295C8F32B7A65041295C8F42221A55413D0AD733B9A650417B14AE87301A554133333313BAA6504148E17A74301A55417B14AE27B8A6504185EB51F8211A5541666666D6B2A65041E17A14CE121A5541D7A370DDB1A65041CDCCCCDC0C1A5541F6285C1FB3A6504100000000051A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005000000048E17A24D9A6504100000020A9195541F39660E6D4A65041747B70F4A7195541DC0CE67FD1A65041D4BD5904A7195541CDCCCCFCCCA650415C8FC2C5A5195541414F06A4C9A65041C82CCABFA6195541890091E9BFA65041A8818E7FA919554120D8B228BAA650414D79C41FAB195541F9E72687B5A650415519C96EAC1955414B6B4F36B3A65041AD056717AD195541B28B2AC7B1A65041535FF0C2AD195541936D650BAAA65041E8D83F38B1195541FBA1804CA5A650414818555BB31955416E577CD7A1A65041610BDEE9B419554145EE6337A0A6504127FC1EB5B5195541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>712161 - 431187
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000020000003A000000333333E340A4504152B81E15455655415C8FC25542A450417B14AE1745565541B81E858B46A450411F85EBE1435655415C8FC2F54AA450410000009042565541666666D64EA45041D7A3703D415655419A9999E94FA4504185EB51D8405655411F85EB0151A45041000000D04056554152B81EC553A45041000000B04056554185EB510857A45041A4703D8A405655411F85EB1158A45041AE47E1BA40565541000000005BA450413D0AD74341565541AE47E17A5EA45041713D0AE741565541A4703D9A5FA450419A99997942565541C3F5280C64A45041EC51B8BE44565541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000310000002EA8F6083FA45041F926C95A39565541D7A3707D3DA45041000000B03E565541C151B81E36A450414B0000303D5655415FF29CF631A450419439D0BE3B5655416C6C02B12EA450412E01369C3A565541D0BABFBF21A45041EF7FF028345655410AD7A3A021A45041AE47E18A3456554108920EBF20A45041B0E3B825345655417A94E41320A4504173DD0D8F34565541F805034F1FA45041C36133553556554118DE783720A4504155C360FF36565541A76C2C9D20A4504171E0C7CA37565541412C0C5A21A45041C0A974CB38565541E9B3DFF623A45041153FDDCF3A565541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2905773 - 103082
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000E4000000C99AD3BBEC39514105D3BEB336EA5441FADB5222EE3951410357BC483DEA5441F6285CFFED395141E17A149E35EA54411F85EB21FB395141B81E851B38EA5441F8808A2FFB3951412C4EE5F336EA54414A2ACF32FB39514135CFF6AC36EA544114AE47A1FB395141F6285C4F2DEA5441A7CCCB0DF5395141DBC6DBF52BEA5441CC6E4AE6F4395141C035C0ED2BEA54413D0AD713F4395141295C8FC22BEA54415C8FC2C5ED395141000000D02CEA544166666606EE3951411F85EBD127EA5441A4703D1AEF395141A4703D8A19EA544151759019EF395141D8D7794619EA5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000E90000008FC2F50880395141F6285C2FE6E95441EA9064428139514109A3131AE2E9544148E17A948139514185EB5108E1E95441333333E37D39514133333323DCE954411F85EBD1783951413D0AD7A3D6E95441666666E67539514166666616D2E95441A4703DAA73395141EC51B8FECEE95441AE47E1FA72395141D7A3709DCAE954413D0AD7C36B3951415C8FC2F5CAE95441AE47E18A6F395141EC51B8AECFE95441D7A370CD6F395141295C8FE2D0E95441E17A14AE6C395141000000D0D3E954413D0AD7A367395141E17A141ED5E95441666666A668395141713D0A17D8E95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538894 - 2912145
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000006000000E5000000661FDAE9A42E5141D24D87AADE2554418FC2F588A52E514166666636DD255441B81E85AB9B2E5141AE47E14AD0255441D7A370CD922E5141D7A370ADC42554418FC2F5088C2E5141F6285CCFBB255441295C8F227E2E5141666666F6AF255441A4703DDA612E51419A9999299C255441F6285C0F612E51410AD7A3709D255441F6285C6F5F2E5141CDCCCCCC9D25544114AE47A15D2E51410AD7A3709D2554410AD7A3205C2E51415C8FC2E59C2554413D0AD7C35B2E5141666666369B2554411F85EB515C2E514148E17AC498255441F6285CDF532E51411F85EBE194255441 [...]
+</a>
+
+<b>
+010600000002000000010300000006000000EE000000CDCCCC3C262E5141333333238F255441713D0A17202E51419A999959962554410AD7A360202E51411F85EB719825544152B81EF51F2E51415C8FC2E59C255441000000D01E2E514152B81E35A0255441B81E85AB1D2E5141E17A14BEA5255441CDCCCC8C1D2E5141EC51B87EAA255441C3F5289C1D2E51417B14AE77AE25544148E17AC41C2E5141333333C3B3255441AE47E11A1C2E5141000000E0B82554419A9999491C2E514133333373BD255441EC51B8BE1B2E5141A4703DEABF25544148E17A84192E51413D0AD793C0255441000000C0162E514100000000C1255441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538894 - 2955511
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000006000000E5000000661FDAE9A42E5141D24D87AADE2554418FC2F588A52E514166666636DD255441B81E85AB9B2E5141AE47E14AD0255441D7A370CD922E5141D7A370ADC42554418FC2F5088C2E5141F6285CCFBB255441295C8F227E2E5141666666F6AF255441A4703DDA612E51419A9999299C255441F6285C0F612E51410AD7A3709D255441F6285C6F5F2E5141CDCCCCCC9D25544114AE47A15D2E51410AD7A3709D2554410AD7A3205C2E51415C8FC2E59C2554413D0AD7C35B2E5141666666369B2554411F85EB515C2E514148E17AC498255441F6285CDF532E51411F85EBE194255441 [...]
+</a>
+
+<b>
+010600000001000000010300000037000000BD08000066EC9D7EB52C51410DA928308727544148E17A74AE2C514114AE47A1862754411F85EBB1A52C51419A9999D9872754418FC2F598A02C5141AE47E1EA862754413D0AD7D3952C5141E17A146E89275441E17A144E912C51410AD7A310882754417B14AE378E2C5141666666B6882754410AD7A340872C5141CDCCCCBC8D275441D7A3700D7C2C5141F6285CBF8F275441CDCCCC8C7B2C51415C8FC2E5902754418FC2F5787D2C51418FC2F5C891275441AE47E1AA792C5141713D0A67A427544114AE47C16D2C5141EC51B81EA727544185EB51C8722C5141C3F528FCA8275441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538894 - 3205067
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000006000000E5000000661FDAE9A42E5141D24D87AADE2554418FC2F588A52E514166666636DD255441B81E85AB9B2E5141AE47E14AD0255441D7A370CD922E5141D7A370ADC42554418FC2F5088C2E5141F6285CCFBB255441295C8F227E2E5141666666F6AF255441A4703DDA612E51419A9999299C255441F6285C0F612E51410AD7A3709D255441F6285C6F5F2E5141CDCCCCCC9D25544114AE47A15D2E51410AD7A3709D2554410AD7A3205C2E51415C8FC2E59C2554413D0AD7C35B2E5141666666369B2554411F85EB515C2E514148E17AC498255441F6285CDF532E51411F85EBE194255441 [...]
+</a>
+
+<b>
+010600000001000000010300000037000000BD08000066EC9D7EB52C51410DA928308727544148E17A74AE2C514114AE47A1862754411F85EBB1A52C51419A9999D9872754418FC2F598A02C5141AE47E1EA862754413D0AD7D3952C5141E17A146E89275441E17A144E912C51410AD7A310882754417B14AE378E2C5141666666B6882754410AD7A340872C5141CDCCCCBC8D275441D7A3700D7C2C5141F6285CBF8F275441CDCCCC8C7B2C51415C8FC2E5902754418FC2F5787D2C51418FC2F5C891275441AE47E1AA792C5141713D0A67A427544114AE47C16D2C5141EC51B81EA727544185EB51C8722C5141C3F528FCA8275441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984559 - 984543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000004100000012DA570FC0A55041D2589D1DB8065541F71C3BAEC4A55041AFFA4E68B80655414692F7AFC7A55041A7EDE998B80655416F002CF8CEA550413532A10EB906554124282305D0A55041FB0C7E0AAF065541AC4D8A52D2A550410796841799065541D4F53E49D4A55041DD0AE1DA87065541F23CDF21D4A5504120F16BD687065541E9FB5D2BD4A55041C1D4E67B87065541341AD0ECC3A550411D50D33F85065541B8231ACAC3A55041C5E70C3B850655416A1791F2C3A55041296FF07D830655411EAC79F6C3A550418B0BF252830655417971A807BFA55041114AC6BD82065541 [...]
+</a>
+
+<b>
+01060000001200000001030000000100000033000000E7608D2561A55041ADC66F500F075541354F24CA5FA55041307794240D07554124EDC81A3EA55041168FC3750A0755410A05F86B3BA550415B8B817F04075541B62069B33EA5504119ACD748E7065541B62069B33EA550414C02EFA5CD0655416F52E8503CA55041F48DC796B7065541B62069B33EA55041575A27FEB606554175BB497D40A55041CBF3643CDF0655416F52E8503CA55041F63D919A03075541E487A9E43FA550412A0E33F80807554173A53B2746A550412A0E33F8080755414F37F57862A550417BDCB35A0B075541185145C562A55041F990E4700D075541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2905824 - 2963546
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000039000000FE36CF70195751415B8B12A1743B5441B59576481E5751413245C91C763B544106B7DFB324575141EF5A2C14783B54418D01CFAD26575141BCFD4D9E783B5441B284FF38325751419633368D7A3B5441E744DD223D5751417C7DDEA47B3B5441E15F3AEE43575141414781AF7B3B54411CBB31384B575141D1BF175D7B3B54415C6BC14A535751415962D0867A3B5441CB9DAF0C5C575141A8B79112793B54419305337764575141B2BFEAAA763B54414CABEE246A575141BD07539A743B54419C985C617257514199648103713B5441BFEF1C6F7857514189A348116E3B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000052000000E17A14AE3E5751410AD7A340503B54418FC2F5983F575141EC51B89E603B54416EC2A0973F57514102BAB79E603B5441BF42A89A3F5751411FA291CF603B5441D9080E65365751412CC49E9A603B5441B81E85CB2F5751417B14AE97603B5441849235A42657514168350C40603B54410481235626575141EF584B3E603B54413CF8F56923575141B20D2621603B54413DAB7F4D1B575141EAE07ED35F3B544104289D731A575141B932AA18693B544153B279161A575141E873A64F6E3B54410037CF70195751415D8B12A1743B5441B49576481E5751412E45C91C763B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2905824 - 3502003
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000039000000FE36CF70195751415B8B12A1743B5441B59576481E5751413245C91C763B544106B7DFB324575141EF5A2C14783B54418D01CFAD26575141BCFD4D9E783B5441B284FF38325751419633368D7A3B5441E744DD223D5751417C7DDEA47B3B5441E15F3AEE43575141414781AF7B3B54411CBB31384B575141D1BF175D7B3B54415C6BC14A535751415962D0867A3B5441CB9DAF0C5C575141A8B79112793B54419305337764575141B2BFEAAA763B54414CABEE246A575141BD07539A743B54419C985C617257514199648103713B5441BFEF1C6F7857514189A348116E3B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000052000000E17A14AE3E5751410AD7A340503B54418FC2F5983F575141EC51B89E603B54416EC2A0973F57514102BAB79E603B5441BF42A89A3F5751411FA291CF603B5441D9080E65365751412CC49E9A603B5441B81E85CB2F5751417B14AE97603B5441849235A42657514168350C40603B54410481235626575141EF584B3E603B54413CF8F56923575141B20D2621603B54413DAB7F4D1B575141EAE07ED35F3B544104289D731A575141B932AA18693B544153B279161A575141E873A64F6E3B54410037CF70195751415D8B12A1743B5441B49576481E5751412E45C91C763B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>453701 - 39094
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001900000041813CB948B050410B4011B3D2D154418FC2F5C84BB05041C3F5285CD4D15441666666366CB05041B81E855BE7D1544152B81E557BB050417B14AE37F0D15441F6285C4F94B0504133333333FFD15441A4703DFA95B050417B14AE0700D254419A99996998B05041F6285CFFFAD154417B14AE779DB05041EC51B84EF3D1544148E17A14A2B05041F6285CFFEBD154410AD7A3B09CB050411F85EB61E9D1544185EB514897B05041E17A143EE6D15441EC51B8CE91B05041C3F528ECE2D154418FC2F5888DB050410AD7A3E0DFD15441E17A142E8AB050415C8FC245DDD15441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000004000000CE18456F4CB050417E6EB38ECBD154416F3A1BBB48B05041FCEE77AFD2D154411F85EBC148B05041333333B3D2D15441CE18456F4CB050417E6EB38ECBD15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587267 - 2974623
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000003C0000002730A45B6D4651418D43C35C0B6054413D0AD7236D465141B81E85AB0A6054414C54B2146D46514132480BB90A6054413BE42EC36C46514109A8EFFC096054415C8FC2456F465141295C8FC207605441F6285C0F7546514152B81EA500605441A4703D3A76465141E17A14BEFF5F54410AD7A3807C465141AE47E1DAFB5F5441EC51B89E7A4651413D0AD7D3F65F5441F6285CFF77465141B81E857BF45F544114AE477173465141713D0A57F05F544114AE476169465141D7A370CDEA5F5441000000C0714651415C8FC2E5D55F5441CDCCCC8C6B465141713D0A87D45F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000001562A2266D4651419D4665B40A605441D2BC471E6B465141461EE55C0C60544172D021ED68465141001613050F605441D97C0000674651410E382B6A106054410FE278295F46514161837AFF146054413205A32A5C465141C0D75FAC16605441E6F8599B5B465141C327982E176054419A9999D95D465141B81E85BB18605441AE47E1DA5F465141CDCCCC6C1A6054417B14AE4763465141B81E858B1D6054417B14AE47684651418FC2F5F82260544114AE47B16C4651413D0AD7E327605441AE47E17A714651419A9999892C6054411F85EB11764651417B14AED72F605441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587267 - 3653714
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000003C0000002730A45B6D4651418D43C35C0B6054413D0AD7236D465141B81E85AB0A6054414C54B2146D46514132480BB90A6054413BE42EC36C46514109A8EFFC096054415C8FC2456F465141295C8FC207605441F6285C0F7546514152B81EA500605441A4703D3A76465141E17A14BEFF5F54410AD7A3807C465141AE47E1DAFB5F5441EC51B89E7A4651413D0AD7D3F65F5441F6285CFF77465141B81E857BF45F544114AE477173465141713D0A57F05F544114AE476169465141D7A370CDEA5F5441000000C0714651415C8FC2E5D55F5441CDCCCC8C6B465141713D0A87D45F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000001562A2266D4651419D4665B40A605441D2BC471E6B465141461EE55C0C60544172D021ED68465141001613050F605441D97C0000674651410E382B6A106054410FE278295F46514161837AFF146054413205A32A5C465141C0D75FAC16605441E6F8599B5B465141C327982E176054419A9999D95D465141B81E85BB18605441AE47E1DA5F465141CDCCCC6C1A6054417B14AE4763465141B81E858B1D6054417B14AE47684651418FC2F5F82260544114AE47B16C4651413D0AD7E327605441AE47E17A714651419A9999892C6054411F85EB11764651417B14AED72F605441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>941559 - 1226634
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001C000000AE47E1BAEC895141713D0A97768D5441AE47E1FAEC895141A4703D9A768D5441C3F528ECEC895141AE47E1DA628D5441EC51B8AEEC895141D7A3706D558D5441F6285C9FEC89514100000020528D5441666666D6EC895141E17A14DE498D54418FC2F5C8EC895141C3F5284C348D5441D7A3707DD4895141295C8F02368D5441D7A370CDC18951413D0AD753378D544185EB5138C58951418FC2F5C8398D5441E17A14DEC6895141295C8F423C8D5441CDCCCC7CC089514185EB51184B8D54411F85EB41B989514185EB51B8598D5441E17A143EB2895141AE47E1DA648D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000007A44ABCFD9895141FF1E8AA2358D544131AD79E6D8895141F0BD8AFD358D544121B82458CA895141ABBEAB16388D54416FC79560C889514168BFCC2F3A8D5441B3045A82C08951416E66AA614E8D54414C13AA71BC895141CC09E315588D5441536121CEB6895141689C688F5F8D5441709BC8B0B5895141AACEC0615F8D5441E17A143EB2895141AE47E1DA648D5441295C8FD2B089514148E17A64688D544166666676B0895141666666166B8D5441295C8F12B1895141C3F5288C6D8D5441C3F528FCB28951411F85EB81708D54410AD7A370B589514133333313738D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>941559 - 3169640
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001C000000AE47E1BAEC895141713D0A97768D5441AE47E1FAEC895141A4703D9A768D5441C3F528ECEC895141AE47E1DA628D5441EC51B8AEEC895141D7A3706D558D5441F6285C9FEC89514100000020528D5441666666D6EC895141E17A14DE498D54418FC2F5C8EC895141C3F5284C348D5441D7A3707DD4895141295C8F02368D5441D7A370CDC18951413D0AD753378D544185EB5138C58951418FC2F5C8398D5441E17A14DEC6895141295C8F423C8D5441CDCCCC7CC089514185EB51184B8D54411F85EB41B989514185EB51B8598D5441E17A143EB2895141AE47E1DA648D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000007A44ABCFD9895141FF1E8AA2358D5441D7A3707DD4895141295C8F02368D5441D7A370CDC18951413D0AD753378D544185EB5138C58951418FC2F5C8398D5441E17A14DEC6895141295C8F423C8D5441CDCCCC7CC089514185EB51184B8D5441A022E03EB9895141E9FB6ACC598D5441709BC8B0B5895141AACEC0615F8D5441536121CEB6895141689C688F5F8D54414C13AA71BC895141CC09E315588D5441B3045A82C08951416E66AA614E8D54416FC79560C889514168BFCC2F3A8D544121B82458CA895141ABBEAB16388D544131AD79E6D8895141F0BD8AFD358D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>941559 - 3419373
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001C000000AE47E1BAEC895141713D0A97768D5441AE47E1FAEC895141A4703D9A768D5441C3F528ECEC895141AE47E1DA628D5441EC51B8AEEC895141D7A3706D558D5441F6285C9FEC89514100000020528D5441666666D6EC895141E17A14DE498D54418FC2F5C8EC895141C3F5284C348D5441D7A3707DD4895141295C8F02368D5441D7A370CDC18951413D0AD753378D544185EB5138C58951418FC2F5C8398D5441E17A14DEC6895141295C8F423C8D5441CDCCCC7CC089514185EB51184B8D54411F85EB41B989514185EB51B8598D5441E17A143EB2895141AE47E1DA648D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000007A44ABCFD9895141FF1E8AA2358D544131AD79E6D8895141F0BD8AFD358D544121B82458CA895141ABBEAB16388D54416FC79560C889514168BFCC2F3A8D5441B3045A82C08951416E66AA614E8D54414C13AA71BC895141CC09E315588D5441536121CEB6895141689C688F5F8D5441709BC8B0B5895141AACEC0615F8D5441E17A143EB2895141AE47E1DA648D5441295C8FD2B089514148E17A64688D544166666676B0895141666666166B8D5441295C8F12B1895141C3F5288C6D8D5441C3F528FCB28951411F85EB81708D54410AD7A370B589514133333313738D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>941559 - 3430097
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001C000000AE47E1BAEC895141713D0A97768D5441AE47E1FAEC895141A4703D9A768D5441C3F528ECEC895141AE47E1DA628D5441EC51B8AEEC895141D7A3706D558D5441F6285C9FEC89514100000020528D5441666666D6EC895141E17A14DE498D54418FC2F5C8EC895141C3F5284C348D5441D7A3707DD4895141295C8F02368D5441D7A370CDC18951413D0AD753378D544185EB5138C58951418FC2F5C8398D5441E17A14DEC6895141295C8F423C8D5441CDCCCC7CC089514185EB51184B8D54411F85EB41B989514185EB51B8598D5441E17A143EB2895141AE47E1DA648D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000007A44ABCFD9895141FF1E8AA2358D5441D7A3707DD4895141295C8F02368D5441D7A370CDC18951413D0AD753378D544185EB5138C58951418FC2F5C8398D5441E17A14DEC6895141295C8F423C8D5441CDCCCC7CC089514185EB51184B8D5441A022E03EB9895141E9FB6ACC598D5441709BC8B0B5895141AACEC0615F8D5441536121CEB6895141689C688F5F8D54414C13AA71BC895141CC09E315588D5441B3045A82C08951416E66AA614E8D54416FC79560C889514168BFCC2F3A8D544121B82458CA895141ABBEAB16388D544131AD79E6D8895141F0BD8AFD358D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662142 - 59061
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81E15EEB550417B14AEF70BD05441AE47E14AE8B5504185EB5158FACF5441295C8F52E6B5504114AE47A1F4CF544185EB51E8E4B5504185EB51D8F0CF544166666636B8B55041E17A145EFCCF54417B14AEB7A2B55041713D0A4706D05441333333838DB55041E17A14EE0DD0544185EB51B8A3B55041AE47E15A2FD05441EC51B81EF1B5504114AE47C115D0544152B81E15EEB550417B14AEF70BD05441
+</a>
+
+<b>
+010600000001000000010300000001000000350000007B14AEB7A2B55041713D0A4706D05441350F4B55A2B550416FC78B6A06D05441E0B4B1789EB55041D5B75ED307D05441289566CF93B550414C1844A80BD05441333333838DB55041E17A14EE0DD05441E643C0778EB55041FEBF285E0FD054414B56DAB8A3B5504128D60A592FD054412174C41DA4B55041F38A53392FD05441F708A717A7B55041C155553D2ED0544185CD2CCAA9B550416C4BAC582DD0544129DF1FA4ABB55041525A2FBC2CD05441BBEFD21CF1B550416538E8C115D054413B16F878EFB55041300A4E7210D0544107BC9C41EFB5504117CBEEBF0FD05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982008 - 2629167
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000004A000000EC51B8DEAABA50417B14AEC72A4054411429A850A9BA5041C39681172B40544148E17A24A7BA5041713D0A872B405441CDCCCC8CA7BA5041295C8F822E405441C7F762CAA7BA5041449EEC2130405441927BF634A8BA5041570D7C1233405441B60FFBFFA8BA5041A7802A7939405441591D75BCA9BA50412D98740F3F4054418FA0A133ACBA504142E2A89F5140544133333353ADBA5041666666165A405441E17A143EAEBA5041CDCCCCBC684054418FC2F518BBBA50418FC2F54869405441D7A3705DBCBA5041295C8F026C4054413D0AD713BDBA5041295C8F926A405441 [...]
+</a>
+
+<b>
+01060000000100000001030000000300000013000000E17A14AE87BA5041EC51B84E4B405441B81E853B88BA5041C3F5280C5F405441C3F528BC88BA5041B81E85FB5E405441000000C088BA5041666666D662405441C3F5280C89BA504152B81E55644054410AD7A3D089BA5041333333A365405441C3F528DC8ABA50417B14AE676640544185EB51E8ADBA5041EC51B8BE69405441E17A143EAEBA5041CDCCCCBC6840544133333353ADBA5041666666165A405441C3F5283CABBA5041713D0A574A4054415C8FC215A9BA50418FC2F5283A405441B81E851BA8BA504152B81E4532405441CDCCCC8CA7BA5041295C8F822E405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982008 - 5000374
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000004A000000EC51B8DEAABA50417B14AEC72A4054411429A850A9BA5041C39681172B40544148E17A24A7BA5041713D0A872B405441CDCCCC8CA7BA5041295C8F822E405441C7F762CAA7BA5041449EEC2130405441927BF634A8BA5041570D7C1233405441B60FFBFFA8BA5041A7802A7939405441591D75BCA9BA50412D98740F3F4054418FA0A133ACBA504142E2A89F5140544133333353ADBA5041666666165A405441E17A143EAEBA5041CDCCCCBC684054418FC2F518BBBA50418FC2F54869405441D7A3705DBCBA5041295C8F026C4054413D0AD713BDBA5041295C8F926A405441 [...]
+</a>
+
+<b>
+01060000000100000001030000000300000013000000E17A14AE87BA5041EC51B84E4B405441B81E853B88BA5041C3F5280C5F405441C3F528BC88BA5041B81E85FB5E405441000000C088BA5041666666D662405441C3F5280C89BA504152B81E55644054410AD7A3D089BA5041333333A365405441C3F528DC8ABA50417B14AE676640544185EB51E8ADBA5041EC51B8BE69405441E17A143EAEBA5041CDCCCCBC6840544133333353ADBA5041666666165A405441C3F5283CABBA5041713D0A574A4054415C8FC215A9BA50418FC2F5283A405441B81E851BA8BA504152B81E4532405441CDCCCC8CA7BA5041295C8F822E405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>944447 - 52814
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001F000000713D0A570C875141AE47E12AA7955441B81E85DB0B8751415C8FC235A99554417B14AE970B87514133333383AA955441AE47E10A0B87514166666646AB955441A4703D2A0C875141EC51B8DEAD955441C3F5283C0C875141A4703D4AB0955441295C8F921E8751418FC2F5C8BC9554419A9999691F8751418FC2F5B8BA955441E17A148E1F87514100000030B895544185EB51682087514114AE47F1B4955441295C8FA220875141666666B6AE9554418FC2F5A81E875141713D0A77AE955441000000E01D875141713D0A37AE955441F6285C3F21875141333333E3A2955441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000713D0A570C875141AE47E12AA7955441F91762510C8751412384D342A7955441D3FE01A40B8751411B949B46AA9554417B14AE970B87514133333383AA955441570ADE120B8751415630C73FAB955441F6F812260C875141017BD8C7AD955441D95444260C875141DFF688D5AD955441A4703D2A0C875141EC51B8DEAD9554415B9A123C0C8751415C863847B09554411F8C42790D8751419A154F22B19554415DED41D311875141515B6019B4955441F064FD411387514147472610B5955441E8E672DE138751415AC0DF7DB5955441295C8F921E8751418FC2F5C8BC955441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 256467
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000004DC91B90DB7A5041F2D499ED492B5541F7D40A90DB7A5041AC39ABED492B5541163D0590DB7A5041A3F6B0ED492B5541910AA3D0DB7A5041C80B0AA74A2B5541B9FDF418DC7A5041D6F97B544B2B55410B05720DDB7A5041CFD5B7BE4B2B55413FE3E13ADA7A50417D04E12A4C2B5541844F6DEEDA7A5041CA5401CF4D2B55417B14AEF7DC7A50415C8FC2C54C2B554152689513DE7A5041E8D90FE24C2B554129A0FD20DF7A50410430EBFC4C2B5541D7A3702DE07A50417B14AE174D2B554114076F6FE07A50415A3542CC4C2B5541A1445118E07A50417516C3F54B2B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 256477
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000310000005D563CDAE77A5041980867C6512B5541161DC3B5E67A5041B034F628522B554135DA83BBE77A504114FF1EA5542B554135DDC265E97A5041553ED7C3582B5541559E4651E67A5041559100D0592B5541854D5108E47A504108DAAC975A2B554129A0FFAFE37A5041EF5D1EB55A2B55412B9DD523E27A504147CE00D0552B55416A8D7B94E17A504184203413542B55418C808E82E17A5041DB56ADE7532B554137D051F8DF7A50417BFC5A5F542B554191F76606E27A50416E46F6085A2B554124E83363E27A5041A9CA8E125B2B5541BE948FF2DF7A5041D1348FA25B2B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 256838
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000F7B57809BE7A50415FF3DB095D2B55418C8C0B7EBD7A50414F1B670C5E2B5541D7A370FDBC7A5041AE47E1FA5E2B554114679AB9BE7A50415B485DFF602B554137D49A99C07A5041E17C47B1632B55419046D151C47A504131DEFC3A692B554109285CBFC47A5041807914DE692B5541F6189999C57A504199833D1A692B55417930D663C67A50415A645C6F682B5541E209B71EC77A50418B30EAD1672B5541AF6A3DDAC77A50412BF6FF3F672B55410A38580CC67A50413CAAC245642B55416613FF3FC47A504121F3144E612B5541DF75700DC57A50418A021EB5602B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 256839
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000008486EC57DC7A5041383A82F9542B5541B81E85EBDC7A5041E17A146E542B5541EC51B80EDD7A5041333333D3522B5541FB975DA4DB7A50415E940A88522B55412A5022C7D97A5041A01B0E25522B554145CBF698D77A504104C151B1512B55413D0AD703D87A5041295C8FC2552B5541385316DED67A5041E197279C562B5541DCD05ACFD87A50412F6CCB0C562B554145BF32C3DA7A5041EA20AF77552B5541F766244EDC7A504157C8BF02552B55418486EC57DC7A5041383A82F9542B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 256841
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000454F6DE6CD7A5041AF6DEEB86A2B554167129022CA7A5041CB824751662B554151813443C97A50418C546F0D672B5541918B1EB5C87A5041B3BE5A7F672B55410C74CCCCC77A5041E1B10040682B5541844A9819C77A5041DA04D6D3682B5541E6B6B74EC67A5041767E5D7F692B554192F4C235C57A5041D57E846B6A2B5541203F7CD4C37A5041F9C4D5836B2B5541B6D98A3DC47A50411F7EA2D66B2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B55419B7D4587C77A5041CE83FD146D2B5541BB98ACF3C87A50417EC5FC9C6C2B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 295884
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000008486EC57DC7A5041383A82F9542B5541B81E85EBDC7A5041E17A146E542B5541EC51B80EDD7A5041333333D3522B5541FB975DA4DB7A50415E940A88522B55412A5022C7D97A5041A01B0E25522B554145CBF698D77A504104C151B1512B55413D0AD703D87A5041295C8FC2552B5541385316DED67A5041E197279C562B5541DCD05ACFD87A50412F6CCB0C562B554145BF32C3DA7A5041EA20AF77552B5541F766244EDC7A504157C8BF02552B55418486EC57DC7A5041383A82F9542B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 297593
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000F7B57809BE7A50415FF3DB095D2B55418C8C0B7EBD7A50414F1B670C5E2B5541D7A370FDBC7A5041AE47E1FA5E2B554114679AB9BE7A50415B485DFF602B554137D49A99C07A5041E17C47B1632B55419046D151C47A504131DEFC3A692B554109285CBFC47A5041807914DE692B5541F6189999C57A504199833D1A692B55417930D663C67A50415A645C6F682B5541E209B71EC77A50418B30EAD1672B5541AF6A3DDAC77A50412BF6FF3F672B55410A38580CC67A50413CAAC245642B55416613FF3FC47A504121F3144E612B5541DF75700DC57A50418A021EB5602B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 297643
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000454F6DE6CD7A5041AF6DEEB86A2B554167129022CA7A5041CB824751662B554151813443C97A50418C546F0D672B5541918B1EB5C87A5041B3BE5A7F672B55410C74CCCCC77A5041E1B10040682B5541844A9819C77A5041DA04D6D3682B5541E6B6B74EC67A5041767E5D7F692B554192F4C235C57A5041D57E846B6A2B5541203F7CD4C37A5041F9C4D5836B2B5541B6D98A3DC47A50411F7EA2D66B2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B55419B7D4587C77A5041CE83FD146D2B5541BB98ACF3C87A50417EC5FC9C6C2B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 345895
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000004DC91B90DB7A5041F2D499ED492B5541F7D40A90DB7A5041AC39ABED492B5541163D0590DB7A5041A3F6B0ED492B5541910AA3D0DB7A5041C80B0AA74A2B5541B9FDF418DC7A5041D6F97B544B2B55410B05720DDB7A5041CFD5B7BE4B2B55413FE3E13ADA7A50417D04E12A4C2B5541844F6DEEDA7A5041CA5401CF4D2B55417B14AEF7DC7A50415C8FC2C54C2B554152689513DE7A5041E8D90FE24C2B554129A0FD20DF7A50410430EBFC4C2B5541D7A3702DE07A50417B14AE174D2B554114076F6FE07A50415A3542CC4C2B5541A1445118E07A50417516C3F54B2B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981722 - 346245
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000700000050000000A4703DBAC37A50410AD7A3B06D2B5541EC51B85EC37A50418FC2F5686C2B5541A4703DCAC47A5041A4703D7A6B2B554152B81EF5C67A504152B81E456D2B554185EB51F8CC7A5041A4703D4A6B2B55419A999999CF7A5041F6285CAF692B55411F85EB61D17A5041CDCCCC9C672B55411F85EB71D07A5041D7A370FD652B55413D0AD753D47A5041D7A370AD642B5541C3F528DCD57A5041713D0A77612B55411F85EBD1D77A5041E17A14FE602B55410AD7A3D0D97A5041CDCCCC9C612B554185EB51E8DB7A5041B81E856B612B5541C3F528BCDC7A5041B81E857B602B5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000310000005D563CDAE77A5041980867C6512B5541161DC3B5E67A5041B034F628522B554135DA83BBE77A504114FF1EA5542B554135DDC265E97A5041553ED7C3582B5541559E4651E67A5041559100D0592B5541854D5108E47A504108DAAC975A2B554129A0FFAFE37A5041EF5D1EB55A2B55412B9DD523E27A504147CE00D0552B55416A8D7B94E17A504184203413542B55418C808E82E17A5041DB56ADE7532B554137D051F8DF7A50417BFC5A5F542B554191F76606E27A50416E46F6085A2B554124E83363E27A5041A9CA8E125B2B5541BE948FF2DF7A5041D1348FA25B2B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586946 - 55750
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B000000E17A14AEB94E514133333363E77554419A9999E9B54E5141E17A14EEEC755441CDCCCCFCBF4E514166666606EF755441A5A8D1A0C04E5141054FB583EE75544139B9F487C04E514176E7599FE8755441EDF264B1C04E5141219136A1E1755441D78676D3C14E5141A895C99ADA75544154664504C14E5141AC11C660DA755441E17A14FEBF4E5141C3F5286CDC7554411F85EBD1BC4E5141295C8F62E2755441E17A14AEB94E514133333363E7755441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000E17A14FEBF4E5141C3F5286CDC755441BBFF8609BF4E514159BEC737DE755441949CEC70BD4E5141DA67825EE1755441DD2CEEEDBC4E5141BA98EA2DE27554411F85EBD1BC4E5141295C8F62E2755441E17A14AEB94E514133333363E77554419A9999E9B54E5141E17A14EEEC755441D27B8AF0BF4E51412DD1D903EF7554410CB6C0A0C04E51418125B17FEE7554413AB9F487C04E514172E7599FE8755441AA1C048DC04E5141941FC1C4E7755441C6771E86C04E5141D2919DD7E57554416C1BBCA7C04E5141C3548142E3755441E9F264B1C04E5141219136A1E1755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982286 - 1085174
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000002F000000A4703DFAEC425141F6285C6FF25C5441F6285CCFED425141C3F5281CF85C54417B14AE17F142514166666636035D544124F81461F44251412CD108930E5D5441B8DA25D2F9425141A8289DC80E5D5441105B43A200435141A8289DC80E5D54417C4FE7EF08435141A53C1C920E5D5441AE47E1EA10435141E17A144E0D5D5441EC51B8BE094351411F85EBA1005D5441F6285C9F0243514152B81E95F35C544152B81EA50F43514185EB51B8F15C54410AD7A36021435141000000B0EE5C544185EB515825435141D7A370EDED5C54417C87A3CD2543514107D42E2FE85C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000002F000000A4703DFAEC425141F6285C6FF25C5441F6285CCFED425141C3F5281CF85C54417B14AE17F142514166666636035D54411FF81461F44251412AD108930E5D5441BBDA25D2F9425141A5289DC80E5D5441145B43A200435141A5289DC80E5D54417A4FE7EF08435141A23C1C920E5D5441AE47E1EA10435141E17A144E0D5D5441EC51B8BE094351411F85EBA1005D5441F6285C9F0243514152B81E95F35C544152B81EA50F43514185EB51B8F15C54410AD7A36021435141000000B0EE5C544185EB515825435141D7A370EDED5C54417987A3CD2543514109D42E2FE85C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982286 - 3890774
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000002F000000A4703DFAEC425141F6285C6FF25C5441F6285CCFED425141C3F5281CF85C54417B14AE17F142514166666636035D544124F81461F44251412CD108930E5D5441B8DA25D2F9425141A8289DC80E5D5441105B43A200435141A8289DC80E5D54417C4FE7EF08435141A53C1C920E5D5441AE47E1EA10435141E17A144E0D5D5441EC51B8BE094351411F85EBA1005D5441F6285C9F0243514152B81E95F35C544152B81EA50F43514185EB51B8F15C54410AD7A36021435141000000B0EE5C544185EB515825435141D7A370EDED5C54417C87A3CD2543514107D42E2FE85C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000002F000000A4703DFAEC425141F6285C6FF25C5441F6285CCFED425141C3F5281CF85C54417B14AE17F142514166666636035D54411FF81461F44251412AD108930E5D5441BBDA25D2F9425141A5289DC80E5D5441145B43A200435141A5289DC80E5D54417A4FE7EF08435141A23C1C920E5D5441AE47E1EA10435141E17A144E0D5D5441EC51B8BE094351411F85EBA1005D5441F6285C9F0243514152B81E95F35C544152B81EA50F43514185EB51B8F15C54410AD7A36021435141000000B0EE5C544185EB515825435141D7A370EDED5C54417987A3CD2543514109D42E2FE85C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986557 - 213501
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000037000000A4703DBA8F055141C3F5285CBCD954413D0AD7938A05514166666636C1D954410000002089055141D7A3707DC1D95441F6285C5F88055141AE47E12AC5D95441E17A14DE84055141EC51B83EC8D9544152B81EA582055141F6285C8FC7D954411F85EBD181055141295C8FE2CAD95441295C8FC27F0551419A999979D6D95441666666F681055141A4703DEAD7D95441F6285C3F840551411F85EBE1D7D954416666666686055141666666F6D6D954417B14AE278805514185EB5118D5D954418FC2F5A889055141EC51B80ED3D9544148E17A448F0551415C8FC2D5CAD95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000009157CBC98D0551410C72ED2FBED95441A90AD7938A055141B2666636C1D95441A1A3701D900551414514AE97C9D95441CB285C2F9B0551419C666696B9D954418E703DEA9D055141A5EB5168B5D954418CA3705DA00551410B000020B1D9544190170A2FA1055141A45A5793AFD95441EC51B89EA2055141B81E85DBACD954414CEFA268AC055141B362B5F297D95441767A14EEB5055141A2F5289C83D95441E4329EF7C30551418AA1E89E64D954411F85EB81C80551418FC2F5985AD954417E713DD5C9055141305C22CD57D95441240AD783CA055141D6CCCC5C56D95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986590 - 59434
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000020000005000000095192E66109250411DF3E12A2F2654415465156D109250415CD6973F2F26544195192E6610925041DE0832442F26544181A13A9D1092504190689C382F265441260DFC691192504136D45D0530265441DEFCC90D1292504180BEC5DF3026544183688BDA1292504112B95F1631265441E4FD698A1392504144C91E7830265441D3760EE31392504144C91E78302654413E1FAABB15925041580241352E265441F5434861169250419015C8BA2C2654410C22C40A1892504185260AE62B2654419119237518925041ABCC5E072A265441DA8CB11419925041D272B32828265441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000050463A901F925041CEE98AFC1B265441B8D1911A1F92504100C838221B265441AC0E362B07925041E5E82FA025265441AE52B4FA099250418CF243C229265441FF47CA9D12925041E509E1E025265441B37AF02A13925041349F397A25265441A05327701392504132315E82252654411FE44BCB20925041C4363B821F265441BBB840B61F92504197B419431C26544150463A901F925041CEE98AFC1B265441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>631946 - 631989
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000B1965DF71CC25041FF4152C60B005541290B4D2328C250410AC886E10A005541D7A3707D45C2504152B81EE5080055411F85EBF145C250418FC2F5E8000055418FC2F53842C25041CDCCCCCC000055413D0AD7233CC250410000005001005541295C8F0234C250418FC2F58802005541AE47E11A31C25041E17A141E03005541CDCCCC5C28C25041E17A14DE0400554152B81EF521C25041713D0A4705005541B81E858B0CC25041713D0A7703005541D7A370CD05C250411F85EBD1030055415C8FC25505C250411F85EB110C005541B1965DF71CC25041FF4152C60B005541
+</a>
+
+<b>
+010600000001000000010300000001000000120000005C8FC25505C250411F85EB110C0055417B14AE2705C25041713D0A370F0055417B14AE4702C2504148E17AD441005541666666A629C25041713D0A773E0055411F85EBD12DC2504148E17A043D005541B81E858B41C250419A999929360055410000001043C25041295C8F72330055410AD7A34044C25041D7A370AD1E0055415C8FC24545C25041000000C00C005541D7A3707D45C2504152B81EE5080055418DEE5FBF30C25041951E664C0A005541447416E71EC25041565830A00B00554187BBEFC81EC25041C55D13A10B005541B1965DF71CC25041FF4152C60B005541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>833803 - 833766
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000300000001030000000100000069000000A4703D7AFDFF5041C3F528DC0F3A54410AD7A350FBFF5041295C8F620F3A5441A4703D7AF7FF5041EC51B8CE0E3A54418FC2F518F4FF5041000000700E3A544152B81E35F2FF5041F6285CEF0D3A5441D7A370FDF0FF50419A9999490D3A5441C3F528ECEFFF50410AD7A3600C3A5441295C8F12EFFF5041333333530B3A54415C8FC205EEFF5041000000100B3A544133333383EBFF50415C8FC245153A5441EC51B8EEE5FF50413D0AD743133A5441B81E857BDCFF50418FC2F5680F3A5441713D0AB7D5FF50413D0AD7430D3A544133333363D8FF5041713D0A07113A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000032000000000000A0B7FF5041C3F528DC233A5441F6285C3FB7FF5041F6285CAF263A5441666666F6B7FF50415C8FC2D5273A544166666656B8FF5041C3F528AC2A3A5441713D0A57B8FF5041A4703D8A2E3A5441EC51B8EEB8FF504185EB5108323A5441CDCCCCCCB9FF50411F85EBD1343A5441B81E858BBBFF50410AD7A330393A54411F85EB71BDFF50415C8FC2F53B3A5441D7A3700DC1FF5041AE47E1AA3F3A54417B14AEA7C3FF50410AD7A390413A54418FC2F598C8FF504185EB5148443A5441C3F5289CCBFF5041B81E859B453A544166666676CFFF5041A4703DEA463A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>833803 - 1006407
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000300000001030000000100000069000000A4703D7AFDFF5041C3F528DC0F3A54410AD7A350FBFF5041295C8F620F3A5441A4703D7AF7FF5041EC51B8CE0E3A54418FC2F518F4FF5041000000700E3A544152B81E35F2FF5041F6285CEF0D3A5441D7A370FDF0FF50419A9999490D3A5441C3F528ECEFFF50410AD7A3600C3A5441295C8F12EFFF5041333333530B3A54415C8FC205EEFF5041000000100B3A544133333383EBFF50415C8FC245153A5441EC51B8EEE5FF50413D0AD743133A5441B81E857BDCFF50418FC2F5680F3A5441713D0AB7D5FF50413D0AD7430D3A544133333363D8FF5041713D0A07113A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000032000000000000A0B7FF5041C3F528DC233A5441F6285C3FB7FF5041F6285CAF263A5441666666F6B7FF50415C8FC2D5273A544166666656B8FF5041C3F528AC2A3A5441713D0A57B8FF5041A4703D8A2E3A5441EC51B8EEB8FF504185EB5108323A5441CDCCCCCCB9FF50411F85EBD1343A5441B81E858BBBFF50410AD7A330393A54411F85EB71BDFF50415C8FC2F53B3A5441D7A3700DC1FF5041AE47E1AA3F3A54417B14AEA7C3FF50410AD7A390413A54418FC2F598C8FF504185EB5148443A5441C3F5289CCBFF5041B81E859B453A544166666676CFFF5041A4703DEA463A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>833803 - 3671487
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000300000001030000000100000069000000A4703D7AFDFF5041C3F528DC0F3A54410AD7A350FBFF5041295C8F620F3A5441A4703D7AF7FF5041EC51B8CE0E3A54418FC2F518F4FF5041000000700E3A544152B81E35F2FF5041F6285CEF0D3A5441D7A370FDF0FF50419A9999490D3A5441C3F528ECEFFF50410AD7A3600C3A5441295C8F12EFFF5041333333530B3A54415C8FC205EEFF5041000000100B3A544133333383EBFF50415C8FC245153A5441EC51B8EEE5FF50413D0AD743133A5441B81E857BDCFF50418FC2F5680F3A5441713D0AB7D5FF50413D0AD7430D3A544133333363D8FF5041713D0A07113A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000032000000000000A0B7FF5041C3F528DC233A5441F6285C3FB7FF5041F6285CAF263A5441666666F6B7FF50415C8FC2D5273A544166666656B8FF5041C3F528AC2A3A5441713D0A57B8FF5041A4703D8A2E3A5441EC51B8EEB8FF504185EB5108323A5441CDCCCCCCB9FF50411F85EBD1343A5441B81E858BBBFF50410AD7A330393A54411F85EB71BDFF50415C8FC2F53B3A5441D7A3700DC1FF5041AE47E1AA3F3A54417B14AEA7C3FF50410AD7A390413A54418FC2F598C8FF504185EB5148443A5441C3F5289CCBFF5041B81E859B453A544166666676CFFF5041A4703DEA463A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981794 - 797414
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000120000000832A78802475141F5D95AA35343544185EB373C11475141ED99533E5343544120FE12B01247514182E6F71653435441FF3FA1411B4751416A5765DA2F4354411745E77E1A4751414BF4D9E92E435441314A2DBC1947514170F91F272E43544112E7A1CB184751416C4A7D4D2D435441273D452F17475141C56266EA2B4354417AA68BF214475141DA127E592A435441B7A8751D10475141C2AB21C127435441CF4BA5FF0B47514159280BE4244354410FB0A5850A475141CF490B66244354415A6E1A1709475141DDA37F71244354413B0B8F26084751412166C5AA24435441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000EC51B83EFB4651418FC2F5C86B43544114AE4711FC4651411F85EB416C43544100000020FE4651418FC2F5986D435441EC51B8AE01475141A4703D8A704354411F85EB3104475141F6285C4F73435441A4703DCA06475141D7A370DD764354413D0AD7B30847514148E17A447A4354415C8FC2A50947514185EB51987C4354419A999979194751415C8FC2C579435441CDCCCC1C1B4751418FC2F5786F435441E17A149E17475141000000C07043544185EB518812475141EC51B8FE67435441D7A370ED0F475141295C8F125C4354415C8FC275144751417B14AE6759435441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981794 - 1146274
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000120000000832A78802475141F5D95AA35343544185EB373C11475141ED99533E5343544120FE12B01247514182E6F71653435441FF3FA1411B4751416A5765DA2F4354411745E77E1A4751414BF4D9E92E435441314A2DBC1947514170F91F272E43544112E7A1CB184751416C4A7D4D2D435441273D452F17475141C56266EA2B4354417AA68BF214475141DA127E592A435441B7A8751D10475141C2AB21C127435441CF4BA5FF0B47514159280BE4244354410FB0A5850A475141CF490B66244354415A6E1A1709475141DDA37F71244354413B0B8F26084751412166C5AA24435441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000EC51B83EFB4651418FC2F5C86B43544114AE4711FC4651411F85EB416C43544100000020FE4651418FC2F5986D435441EC51B8AE01475141A4703D8A704354411F85EB3104475141F6285C4F73435441A4703DCA06475141D7A370DD764354413D0AD7B30847514148E17A447A4354415C8FC2A50947514185EB51987C4354419A999979194751415C8FC2C579435441CDCCCC1C1B4751418FC2F5786F435441E17A149E17475141000000C07043544185EB518812475141EC51B8FE67435441D7A370ED0F475141295C8F125C4354415C8FC275144751417B14AE6759435441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>981794 - 3941302
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000120000000832A78802475141F5D95AA35343544185EB373C11475141ED99533E5343544120FE12B01247514182E6F71653435441FF3FA1411B4751416A5765DA2F4354411745E77E1A4751414BF4D9E92E435441314A2DBC1947514170F91F272E43544112E7A1CB184751416C4A7D4D2D435441273D452F17475141C56266EA2B4354417AA68BF214475141DA127E592A435441B7A8751D10475141C2AB21C127435441CF4BA5FF0B47514159280BE4244354410FB0A5850A475141CF490B66244354415A6E1A1709475141DDA37F71244354413B0B8F26084751412166C5AA24435441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000EC51B83EFB4651418FC2F5C86B43544114AE4711FC4651411F85EB416C43544100000020FE4651418FC2F5986D435441EC51B8AE01475141A4703D8A704354411F85EB3104475141F6285C4F73435441A4703DCA06475141D7A370DD764354413D0AD7B30847514148E17A447A4354415C8FC2A50947514185EB51987C4354419A999979194751415C8FC2C579435441CDCCCC1C1B4751418FC2F5786F435441E17A149E17475141000000C07043544185EB518812475141EC51B8FE67435441D7A370ED0F475141295C8F125C4354415C8FC275144751417B14AE6759435441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>836761 - 836875
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000022000000BF84C44D68445141065187C4066054419A9999796F445141F6285C7F056054419A9999D979445141AE47E15A0360544114AE4791804451417B14AEF70160544185EB512883445141EC51B86E016054419A9999A992445141A4703D3AFE5F5441713D0AE7974451415C8FC205FD5F5441D03D10499A445141E2691CA0FA5F5441F1F55FE0A0445141D781AC6DF85F5441E17A14DEA3445141713D0A77F75F5441B17482E7A444514117038A66F45F5441B17482E7A4445141759FA67EF05F5441C99B89EDA3445141B9208477EC5F54411BF90E32A3445141C55F1B4BE95F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000051FC05CA52445141A5665938096054416132E6C2524451413E7DD77809605441121E888D584451412F98AAE609605441291769A2624451416C2C5E2F0860544134C69A7F69445141A9C0117806605441061714C96A4451417F044B03EB5F5441061714C96A4451410222ADC9E05F54410AD7A3706744514185EB5138E25F5441B81E853B5844514114AE4731E95F544152B81E3558445141A4703D7AEC5F5441295C8F5257445141A4703D3AF65F5441EC51B8DE5644514114AE47E1F85F544114AE47A153445141CDCCCC5C0960544151FC05CA52445141A566593809605441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158823 - 3159542
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000000F0000007A5C010AA73F514152976766C50E5541210EE504A73F51415EFFFE65C50E5541CEDD49D19B3F514153BE7205C80E5541B81E858B8F3F514114AE47F1CA0E554155871C618F3F5141AD9106EFCA0E5541D8A710488F3F5141F5E9E3F4CA0E55419A9999097F3F51410AD7A310CA0E55419472AF6B773F5141A21762C7C90E5541B1FA84B5773F5141C6C424ACCD0E5541C120E5EC773F51417867460DD00E554178942FE1773F5141B9607C66D20E5541C3F528FC8C3F5141713D0A67D10E55418D3E2E6A8E3F5141A5C8EFE6CF0E554152337BB08F3F514100EAE3F4CA0E5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001100000038DECD95773F51418DC4FCFFCB0E5541B75FFE74783F5141E033EB77DB0E5541B742B9F6813F5141F422AA1FDB0E5541BD65DA0A963F5141F5FCA16FDA0E55410FB4A53C9A3F5141BC92075EDA0E5541F1E12BEB9C3F51418D286D4CDA0E55413098620FA03F5141D50A3051DA0E55410E8E2B37A23F514101336127D90E5541A4703D2AA73F5141B81E857BD60E554152B81EF5A73F514185EB5118D50E5541D6DA0383A83F5141431FECC6D40E55417CB5E7DEAA3F514158A89A94C70E554163EAF03CAB3F51412D2DBC9EC50E554102B08BE1A63F51417277EF48C50E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158823 - 3568646
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000000F0000007A5C010AA73F514152976766C50E5541210EE504A73F51415EFFFE65C50E5541CEDD49D19B3F514153BE7205C80E5541B81E858B8F3F514114AE47F1CA0E554155871C618F3F5141AD9106EFCA0E5541D8A710488F3F5141F5E9E3F4CA0E55419A9999097F3F51410AD7A310CA0E55419472AF6B773F5141A21762C7C90E5541B1FA84B5773F5141C6C424ACCD0E5541C120E5EC773F51417867460DD00E554178942FE1773F5141B9607C66D20E5541C3F528FC8C3F5141713D0A67D10E55418D3E2E6A8E3F5141A5C8EFE6CF0E554152337BB08F3F514100EAE3F4CA0E5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001100000038DECD95773F51418DC4FCFFCB0E5541B75FFE74783F5141E033EB77DB0E5541B742B9F6813F5141F422AA1FDB0E5541BD65DA0A963F5141F5FCA16FDA0E55410FB4A53C9A3F5141BC92075EDA0E5541F1E12BEB9C3F51418D286D4CDA0E55413098620FA03F5141D50A3051DA0E55410E8E2B37A23F514101336127D90E5541A4703D2AA73F5141B81E857BD60E554152B81EF5A73F514185EB5118D50E5541D6DA0383A83F5141431FECC6D40E55417CB5E7DEAA3F514158A89A94C70E554163EAF03CAB3F51412D2DBC9EC50E554102B08BE1A63F51417277EF48C50E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982102 - 275558
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000F6285CFF97275141666666E640375441333333F3932751410AD7A3303E375441AE47E12A8527514133333383433754417B14AE9773275141713D0AD7493754411F85EB816E2751419A9999E956375441D7A3707D87275141AE47E1EA4D37544148E17AB49F2751413D0AD73345375441F6285CFF97275141666666E640375441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000003B368117712751410EC190A14A37544181DF318475275141CC7CB825493754412782A2749127514115DB8E163F375441D64B0CF593275141E599E0313E37544175A900B7952751413ED39D343D375441CDCCCC5C912751416666669639375441295C8F628B2751417B14AEF731375441713D0A378B275141CDCCCCFC30375441D7A3700D8B275141000000B0303754410AD7A3908127514114AE470134375441666666467127514114AE47C139375441D7A3700D72275141CDCCCCDC3B375441666666666F275141CDCCCC1C3D3754413D0AD713562751415C8FC21540375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982104 - 1320680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001000000028E1365521FD5041343426C820D2544159C8D3351CFD50415976C67A29D254410B8DFD8011FD5041C4DB59EE3FD254412E3CADFB0CFD50412506A86346D25441FDD9532F05FD5041EB3E4A994BD25441F697714AF8FC50417FF05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001000000028E1365521FD5041323426C820D2544154C8D3351CFD50415C76C67A29D25441098DFD8011FD5041C9DB59EE3FD254412E3CADFB0CFD50412406A86346D25441FDD9532F05FD5041E83E4A994BD25441F397714AF8FC504181F05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982104 - 4047321
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001000000028E1365521FD5041343426C820D2544159C8D3351CFD50415976C67A29D254410B8DFD8011FD5041C4DB59EE3FD254412E3CADFB0CFD50412506A86346D25441FDD9532F05FD5041EB3E4A994BD25441F697714AF8FC50417FF05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001000000028E1365521FD5041323426C820D2544154C8D3351CFD50415C76C67A29D25441098DFD8011FD5041C9DB59EE3FD254412E3CADFB0CFD50412406A86346D25441FDD9532F05FD5041E83E4A994BD25441F397714AF8FC504181F05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>917741 - 1350714
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000400000001F85EBD14C44514152B81E9527BD54413D0AD7C3504451415C8FC2F525BD54419611F4C256445141D097774823BD5441740D68A857445141C44EC30A22BD5441AEA35C3E59445141823201A11FBD5441A4703DAA584451419A9999991DBD5441F6285CFF59445141333333A31ABD54415A8FA96159445141C0A0A1CD18BD5441C8211B85574451410C2F87D617BD5441C45E341B57445141F49C1E5B15BD54411F85EB4157445141CDCCCCAC13BD5441D7A3706D56445141295C8F1213BD5441E17A143E534451411F85EBC111BD5441E17A141E4B4451411F85EB111BBD5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000400000001F85EBD14C44514152B81E9527BD54413D0AD7C3504451415C8FC2F525BD54419511F4C256445141D297774823BD5441700D68A857445141BF4EC30A22BD5441AFA35C3E59445141853201A11FBD5441A4703DAA584451419A9999991DBD5441F6285CFF59445141333333A31ABD54415B8FA96159445141C4A0A1CD18BD5441C4211B8557445141092F87D617BD5441C25E341B57445141F99C1E5B15BD54411F85EB4157445141CDCCCCAC13BD5441D7A3706D56445141295C8F1213BD5441E17A143E534451411F85EBC111BD5441E17A141E4B4451411F85EB111BBD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>917741 - 5243741
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000400000001F85EBD14C44514152B81E9527BD54413D0AD7C3504451415C8FC2F525BD54419611F4C256445141D097774823BD5441740D68A857445141C44EC30A22BD5441AEA35C3E59445141823201A11FBD5441A4703DAA584451419A9999991DBD5441F6285CFF59445141333333A31ABD54415A8FA96159445141C0A0A1CD18BD5441C8211B85574451410C2F87D617BD5441C45E341B57445141F49C1E5B15BD54411F85EB4157445141CDCCCCAC13BD5441D7A3706D56445141295C8F1213BD5441E17A143E534451411F85EBC111BD5441E17A141E4B4451411F85EB111BBD5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000400000001F85EBD14C44514152B81E9527BD54413D0AD7C3504451415C8FC2F525BD54419511F4C256445141D297774823BD5441700D68A857445141BF4EC30A22BD5441AFA35C3E59445141853201A11FBD5441A4703DAA584451419A9999991DBD5441F6285CFF59445141333333A31ABD54415B8FA96159445141C4A0A1CD18BD5441C4211B8557445141092F87D617BD5441C25E341B57445141F99C1E5B15BD54411F85EB4157445141CDCCCCAC13BD5441D7A3706D56445141295C8F1213BD5441E17A143E534451411F85EBC111BD5441E17A141E4B4451411F85EB111BBD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>917741 - 171065
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000400000001F85EBD14C44514152B81E9527BD54413D0AD7C3504451415C8FC2F525BD54419611F4C256445141D097774823BD5441740D68A857445141C44EC30A22BD5441AEA35C3E59445141823201A11FBD5441A4703DAA584451419A9999991DBD5441F6285CFF59445141333333A31ABD54415A8FA96159445141C0A0A1CD18BD5441C8211B85574451410C2F87D617BD5441C45E341B57445141F49C1E5B15BD54411F85EB4157445141CDCCCCAC13BD5441D7A3706D56445141295C8F1213BD5441E17A143E534451411F85EBC111BD5441E17A141E4B4451411F85EB111BBD5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000250000008FC2F538F3435141295C8F221DBD54411A0596C4F44351413797CF811EBD5441430D9717F5435141C9DAEEA51EBD54411AB09431F54351415A3E31F01EBD5441D4B623E7F7435141F7D9D6B621BD5441E17A147EF94351417B14AEE721BD5441C1F6FCBAFA435141954718F224BD5441248CB4C9F943514178C1D80526BD54419EC89DDDFA435141FA9B6F1F29BD5441666666F6FB435141713D0A472CBD54419A9999E9FD4351418FC2F5782FBD5441EC51B83EFE43514148E17AC431BD5441C3F5282CFD435141A4703DAA35BD5441000000B0FC4351410AD7A37036BD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>917741 - 410677
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000400000001F85EBD14C44514152B81E9527BD54413D0AD7C3504451415C8FC2F525BD54419611F4C256445141D097774823BD5441740D68A857445141C44EC30A22BD5441AEA35C3E59445141823201A11FBD5441A4703DAA584451419A9999991DBD5441F6285CFF59445141333333A31ABD54415A8FA96159445141C0A0A1CD18BD5441C8211B85574451410C2F87D617BD5441C45E341B57445141F49C1E5B15BD54411F85EB4157445141CDCCCCAC13BD5441D7A3706D56445141295C8F1213BD5441E17A143E534451411F85EBC111BD5441E17A141E4B4451411F85EB111BBD5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000250000008FC2F538F3435141295C8F221DBD54411A0596C4F44351413797CF811EBD5441430D9717F5435141C9DAEEA51EBD54411AB09431F54351415A3E31F01EBD5441D4B623E7F7435141F7D9D6B621BD5441E17A147EF94351417B14AEE721BD5441C1F6FCBAFA435141954718F224BD5441248CB4C9F943514178C1D80526BD54419EC89DDDFA435141FA9B6F1F29BD5441666666F6FB435141713D0A472CBD54419A9999E9FD4351418FC2F5782FBD5441EC51B83EFE43514148E17AC431BD5441C3F5282CFD435141A4703DAA35BD5441000000B0FC4351410AD7A37036BD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557724 - 3182105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000060000000103000000010000002D000000A4703DFA52EE5041E17A146E00BA54419A9999B954EE5041F6285C5F04BA5441C3F5283C52EE5041A4703D5A05BA544185EB514852EE5041D7A370BD06BA5441295C8F6261EE5041000000100CBA5441F6285CDF61EE5041B81E856B0DBA54411F85EB916AEE50413333336317BA544148E17A3474EE50410AD7A34021BA54410AD7A3907AEE5041C3F5289C1BBA5441295C8F827DEE50419A9999A91ABA54417B14AE578BEE50417B14AE2716BA5441295C8FE283EE50416666665613BA54413D0AD70379EE5041333333430EBA5441B81E85EB71EE5041C3F528AC09BA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000008FEB5108A9EE5041C9A370CD77BA5441C3F528CCA5EE50410AD7A3E079BA5441B81E852BABEE5041D7A370CD87BA5441AE47E1BAACEE5041B81E856B91BA54411F85EBA1AEEE50419A99990998BA544148E17A94B1EE5041A4703DFA9EBA544152B81E45B4EE5041F6285CBFA1BA544100000010B7EE50415C8FC225A1BA5441AE47E10AB4EE5041A4703D2A9CBA5441713D0A27B3EE5041295C8F4298BA5441B81E856BB1EE5041000000107EBA5441F6285C6FB0EE504148E17AC479BA54415C8FC2B5ABEE5041000000206CBA5441B81E85BBABEE5041295C8F5272BA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557724 - 3570481
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000060000000103000000010000002D000000A4703DFA52EE5041E17A146E00BA54419A9999B954EE5041F6285C5F04BA5441C3F5283C52EE5041A4703D5A05BA544185EB514852EE5041D7A370BD06BA5441295C8F6261EE5041000000100CBA5441F6285CDF61EE5041B81E856B0DBA54411F85EB916AEE50413333336317BA544148E17A3474EE50410AD7A34021BA54410AD7A3907AEE5041C3F5289C1BBA5441295C8F827DEE50419A9999A91ABA54417B14AE578BEE50417B14AE2716BA5441295C8FE283EE50416666665613BA54413D0AD70379EE5041333333430EBA5441B81E85EB71EE5041C3F528AC09BA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000008FEB5108A9EE5041C9A370CD77BA5441C3F528CCA5EE50410AD7A3E079BA5441B81E852BABEE5041D7A370CD87BA5441AE47E1BAACEE5041B81E856B91BA54411F85EBA1AEEE50419A99990998BA544148E17A94B1EE5041A4703DFA9EBA544152B81E45B4EE5041F6285CBFA1BA544100000010B7EE50415C8FC225A1BA5441AE47E10AB4EE5041A4703D2A9CBA5441713D0A27B3EE5041295C8F4298BA5441B81E856BB1EE5041000000107EBA5441F6285C6FB0EE504148E17AC479BA54415C8FC2B5ABEE5041000000206CBA5441B81E85BBABEE5041295C8F5272BA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557724 - 249290
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000060000000103000000010000002D000000A4703DFA52EE5041E17A146E00BA54419A9999B954EE5041F6285C5F04BA5441C3F5283C52EE5041A4703D5A05BA544185EB514852EE5041D7A370BD06BA5441295C8F6261EE5041000000100CBA5441F6285CDF61EE5041B81E856B0DBA54411F85EB916AEE50413333336317BA544148E17A3474EE50410AD7A34021BA54410AD7A3907AEE5041C3F5289C1BBA5441295C8F827DEE50419A9999A91ABA54417B14AE578BEE50417B14AE2716BA5441295C8FE283EE50416666665613BA54413D0AD70379EE5041333333430EBA5441B81E85EB71EE5041C3F528AC09BA5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000061000000241F85EB71EE504123F628AC09BA5441339BA70671EE504122CEC4B308BA544150B87A0371EE5041059152B008BA544118CDCC9C6DEE504197295CFF04BA5441254F24226DEE50418DC47A4904BA544166619EB66BEE50416C55702E02BA5441C978DFCB6AEE5041AF2D5AD200BA5441784A41AF69EE5041F208F04C00BA5441EA59525768EE504108E2A11600BA54416A9BCB4767EE504170313519FFB95441DCAADCEF65EE50417AF1B2BEFEB9544163939F6164EE5041FC8BE22DFEB95441D9149BAC63EE5041F819F88AFDB954414F9696F762EE50416182BFB1FCB95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557724 - 249293
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000060000000103000000010000002D000000A4703DFA52EE5041E17A146E00BA54419A9999B954EE5041F6285C5F04BA5441C3F5283C52EE5041A4703D5A05BA544185EB514852EE5041D7A370BD06BA5441295C8F6261EE5041000000100CBA5441F6285CDF61EE5041B81E856B0DBA54411F85EB916AEE50413333336317BA544148E17A3474EE50410AD7A34021BA54410AD7A3907AEE5041C3F5289C1BBA5441295C8F827DEE50419A9999A91ABA54417B14AE578BEE50417B14AE2716BA5441295C8FE283EE50416666665613BA54413D0AD70379EE5041333333430EBA5441B81E85EB71EE5041C3F528AC09BA5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000EA535108A9EE5041A4F06FCD77BA5441C87C6D58A7EE5041F61777E278BA54413A1E29CCA5EE5041EC3FA4E079BA5441B81E852BABEE5041D7A370CD87BA54413B912AC7ABEE50417860028D8BBA54414B9BE2BAACEE50412984866B91BA5441343CECA1AEEE504183FA980998BA5441F6B37B94B1EE5041EBC03DFA9EBA54413BF01E45B4EE5041A8FA5BBFA1BA54412164FF0FB7EE5041328EC125A1BA5441AE47E10AB4EE5041A4703D2A9CBA5441713D0A27B3EE5041295C8F4298BA5441B81E856BB1EE5041000000107EBA5441F6285C6FB0EE504148E17AC479BA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557724 - 357275
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000060000000103000000010000002D000000A4703DFA52EE5041E17A146E00BA54419A9999B954EE5041F6285C5F04BA5441C3F5283C52EE5041A4703D5A05BA544185EB514852EE5041D7A370BD06BA5441295C8F6261EE5041000000100CBA5441F6285CDF61EE5041B81E856B0DBA54411F85EB916AEE50413333336317BA544148E17A3474EE50410AD7A34021BA54410AD7A3907AEE5041C3F5289C1BBA5441295C8F827DEE50419A9999A91ABA54417B14AE578BEE50417B14AE2716BA5441295C8FE283EE50416666665613BA54413D0AD70379EE5041333333430EBA5441B81E85EB71EE5041C3F528AC09BA5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000EA535108A9EE5041A4F06FCD77BA5441C87C6D58A7EE5041F61777E278BA54413A1E29CCA5EE5041EC3FA4E079BA5441B81E852BABEE5041D7A370CD87BA54413B912AC7ABEE50417860028D8BBA54414B9BE2BAACEE50412984866B91BA5441343CECA1AEEE504183FA980998BA5441F6B37B94B1EE5041EBC03DFA9EBA54413BF01E45B4EE5041A8FA5BBFA1BA54412164FF0FB7EE5041328EC125A1BA5441AE47E10AB4EE5041A4703D2A9CBA5441713D0A27B3EE5041295C8F4298BA5441B81E856BB1EE5041000000107EBA5441F6285C6FB0EE504148E17AC479BA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557724 - 357887
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000060000000103000000010000002D000000A4703DFA52EE5041E17A146E00BA54419A9999B954EE5041F6285C5F04BA5441C3F5283C52EE5041A4703D5A05BA544185EB514852EE5041D7A370BD06BA5441295C8F6261EE5041000000100CBA5441F6285CDF61EE5041B81E856B0DBA54411F85EB916AEE50413333336317BA544148E17A3474EE50410AD7A34021BA54410AD7A3907AEE5041C3F5289C1BBA5441295C8F827DEE50419A9999A91ABA54417B14AE578BEE50417B14AE2716BA5441295C8FE283EE50416666665613BA54413D0AD70379EE5041333333430EBA5441B81E85EB71EE5041C3F528AC09BA5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000061000000241F85EB71EE504123F628AC09BA5441339BA70671EE504122CEC4B308BA544150B87A0371EE5041059152B008BA544118CDCC9C6DEE504197295CFF04BA5441254F24226DEE50418DC47A4904BA544166619EB66BEE50416C55702E02BA5441C978DFCB6AEE5041AF2D5AD200BA5441784A41AF69EE5041F208F04C00BA5441EA59525768EE504108E2A11600BA54416A9BCB4767EE504170313519FFB95441DCAADCEF65EE50417AF1B2BEFEB9544163939F6164EE5041FC8BE22DFEB95441D9149BAC63EE5041F819F88AFDB954414F9696F762EE50416182BFB1FCB95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>712165 - 54011
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002300000032FCA0B07FAC50419E0B4F473A5955414A4B2D377FAC5041FB20DED83759554105A17B207FAC504157988F6437595541A58BA61B7FAC5041CC8ACB4B37595541327903047FAC50414BCBAB7E325955415BC3CC027FAC504199DB8E3F3259554196FA9D347FAC50415991329E2C5955415FE8F2027FAC5041B05BCC9D2B595541A1A7A5FE7EAC50418A61BF8A2B595541D723B84D7FAC50414A7185C526595541184E81567FAC5041A95329B52559554184295A5B7BAC5041C3B428BF245955412F9234C779AC504145C3CE0B27595541B2D5CF4978AC5041749B7D8329595541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000474B2D377FAC5041FD20DED83759554165D0A0AD7FAC50412C2BEE373A5955412FFCA0B07FAC5041A10B4F473A59554125D658FB7FAC50412D8046593B595541E2B3B7ED7FAC5041620549AB3C59554113B8B7F17FAC5041CA705BD33C595541FDCD74E27FAC50419FE490C23D595541FDCD74E27FAC504144F9216F3E59554159098AE47FAC504147BF056742595541FDCD74E27FAC50410775598842595541FDCD74E27FAC5041AD4C7A8E4259554171DB69E07FAC5041F49D08A942595541BDDD37B47FAC50411B79286C455955418292219D7FAC5041E151B41346595541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>712165 - 130851
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002300000032FCA0B07FAC50419E0B4F473A5955414A4B2D377FAC5041FB20DED83759554105A17B207FAC504157988F6437595541A58BA61B7FAC5041CC8ACB4B37595541327903047FAC50414BCBAB7E325955415BC3CC027FAC504199DB8E3F3259554196FA9D347FAC50415991329E2C5955415FE8F2027FAC5041B05BCC9D2B595541A1A7A5FE7EAC50418A61BF8A2B595541D723B84D7FAC50414A7185C526595541184E81567FAC5041A95329B52559554184295A5B7BAC5041C3B428BF245955412F9234C779AC504145C3CE0B27595541B2D5CF4978AC5041749B7D8329595541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000474B2D377FAC5041FD20DED83759554165D0A0AD7FAC50412C2BEE373A5955412FFCA0B07FAC5041A10B4F473A59554125D658FB7FAC50412D8046593B595541E1B3B7ED7FAC5041620549AB3C59554113B8B7F17FAC5041CA705BD33C595541FDCD74E27FAC50419FE490C23D595541FDCD74E27FAC504144F9216F3E59554159098AE47FAC504147BF056742595541FDCD74E27FAC50410775598842595541FDCD74E27FAC5041AD4C7A8E4259554171DB69E07FAC5041F49D08A942595541BDDD37B47FAC50411B79286C455955418292219D7FAC5041E151B41346595541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>712165 - 329977
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002300000032FCA0B07FAC50419E0B4F473A5955414A4B2D377FAC5041FB20DED83759554105A17B207FAC504157988F6437595541A58BA61B7FAC5041CC8ACB4B37595541327903047FAC50414BCBAB7E325955415BC3CC027FAC504199DB8E3F3259554196FA9D347FAC50415991329E2C5955415FE8F2027FAC5041B05BCC9D2B595541A1A7A5FE7EAC50418A61BF8A2B595541D723B84D7FAC50414A7185C526595541184E81567FAC5041A95329B52559554184295A5B7BAC5041C3B428BF245955412F9234C779AC504145C3CE0B27595541B2D5CF4978AC5041749B7D8329595541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000474B2D377FAC5041FD20DED83759554165D0A0AD7FAC50412C2BEE373A5955412FFCA0B07FAC5041A10B4F473A59554125D658FB7FAC50412D8046593B595541E1B3B7ED7FAC5041620549AB3C59554113B8B7F17FAC5041CA705BD33C595541FDCD74E27FAC50419FE490C23D595541FDCD74E27FAC504144F9216F3E59554159098AE47FAC504147BF056742595541FDCD74E27FAC50410775598842595541FDCD74E27FAC5041AD4C7A8E4259554171DB69E07FAC5041F49D08A942595541BDDD37B47FAC50411B79286C455955418292219D7FAC5041E151B41346595541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982641 - 200901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000400000020000000035194D797B05041A4825A4779495541B81E859B90B05041333333837B4955415C8FC20589B0504185EB5108864955410AD7A34089B050418FC2F588874955417B14AE478FB05041295C8FC28C4955418FC2F5C89AB05041F6285CFF95495541C3F5282CA1B05041A4703DEA994955413D0AD7E3B9B0504152B81EA5A74955418FC2F5A8C1B05041CDCCCCCC9849554148E17A14C9B05041EC51B89E8A49554152B81E55D1B05041A4703DDA7A495541EF27B2F8CCB050412E8E58317A495541EBE61759CAB0504157A60F6984495541704B9EF7C8B0504157A60F6984495541 [...]
+</a>
+
+<b>
+0106000000010000000103000000040000005B000000282A1B96A3B050410ADBEC917849554137F65DCBABB05041AB862E677A495541441153E6ACB050411B485FA67A4955416042FFAEADB0504193CA2FD37A4955415C00559DADB050413E3F1B007B4955412031B445ADB0504147ADEEDE7B4955418C0A2538ADB050410FC548F67B495541CD1E3E0FADB050412662CB597C495541ED19F5FFACB05041761A937A7C495541522378F1ACB05041E7F486B47C4955415D6828E5ACB05041DA4C0CB47C4955410470ECDCACB0504125FAB4C57C49554168C22F27AAB05041D7B3BA987C4955412319A9D3A7B05041EE988D817C495541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982641 - 419093
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000400000020000000035194D797B05041A4825A4779495541B81E859B90B05041333333837B4955415C8FC20589B0504185EB5108864955410AD7A34089B050418FC2F588874955417B14AE478FB05041295C8FC28C4955418FC2F5C89AB05041F6285CFF95495541C3F5282CA1B05041A4703DEA994955413D0AD7E3B9B0504152B81EA5A74955418FC2F5A8C1B05041CDCCCCCC9849554148E17A14C9B05041EC51B89E8A49554152B81E55D1B05041A4703DDA7A495541EF27B2F8CCB050412E8E58317A495541EBE61759CAB0504157A60F6984495541704B9EF7C8B0504157A60F6984495541 [...]
+</a>
+
+<b>
+0106000000010000000103000000040000005B000000282A1B96A3B050410ADBEC917849554137F65DCBABB05041AB862E677A495541441153E6ACB050411B485FA67A4955416042FFAEADB0504193CA2FD37A4955415C00559DADB050413E3F1B007B4955412031B445ADB0504147ADEEDE7B4955418C0A2538ADB050410FC548F67B495541CD1E3E0FADB050412662CB597C495541ED19F5FFACB05041761A937A7C495541522378F1ACB05041E7F486B47C4955415D6828E5ACB05041DA4C0CB47C4955410470ECDCACB0504125FAB4C57C49554168C22F27AAB05041D7B3BA987C4955412319A9D3A7B05041EE988D817C495541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982142 - 5319077
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000B000000D7A3703D73EB50411F85EBE13056544114AE471174EB5041C3F5286C3C565441D7A370CD7AEB50419A9999693C565441AE47E17A87EB50415C8FC2253C565441295C8F9292EB50411F85EBE13B565441E17A144E99EB50417B14AE173B565441295C8F429FEB5041AE47E15A3A565441D7A370FD82EB50413D0AD763E55554410AD7A3106BEB504100000080E7555441713D0A576FEB5041000000600B565441D7A3703D73EB50411F85EBE130565441
+</a>
+
+<b>
+010600000001000000010300000001000000070000006A4619266DEB50412D93AFFCF8555441713D0A576FEB5041000000600B565441D7A3703D73EB50411F85EBE13056544114AE471174EB5041C3F5286C3C565441D7A370CD7AEB50419A9999693C5654413FBD4C3883EB5041A67C8E3C3C5654416A4619266DEB50412D93AFFCF8555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389384 - 186454
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001200000000000050939C50410AD7A3803A225441CDCCCC0C929C50410AD7A3F03D225441713D0AB78C9C50418FC2F5883D225441B81E85BB8D9C50417B14AE873A22544166666696939C5041EC51B8FE2E225441CDCCCC5C969C50415C8FC2B52C2254410AD7A390969C5041CDCCCCBC282254410AD7A320879C50415C8FC2E520225441295C8FE2769C5041666666D6392254415C8FC245789C504152B81E753B225441000000A0799C504148E17AF43C22544185EB51887C9C50417B14AE373F225441D7A3705D859C504185EB51C847225441CDCCCC0C8B9C5041D7A370CD4B225441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000D7A3705D859C504185EB51C847225441B50DEBC3879C504110DFB25949225441CDCCCC0C8B9C5041D7A370CD4B225441000000708F9C5041A4703D4A4D225441A4703D5A919C5041EC51B88E4A22544157D62A85929C504162F39F074422544144CB4888929C5041EAD324E24322544107031389929C5041653CA5D84322544168655889929C5041B7EA62D5432254413D88F789929C5041E75DE9CD4322544105973BCE929C504159F1BD2E3E225441713D0AB78C9C50418FC2F5883D225441B81E85BB8D9C50417B14AE873A225441FE5D657E8E9C5041D7B1C00739225441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389384 - 233496
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001200000000000050939C50410AD7A3803A225441CDCCCC0C929C50410AD7A3F03D225441713D0AB78C9C50418FC2F5883D225441B81E85BB8D9C50417B14AE873A22544166666696939C5041EC51B8FE2E225441CDCCCC5C969C50415C8FC2B52C2254410AD7A390969C5041CDCCCCBC282254410AD7A320879C50415C8FC2E520225441295C8FE2769C5041666666D6392254415C8FC245789C504152B81E753B225441000000A0799C504148E17AF43C22544185EB51887C9C50417B14AE373F225441D7A3705D859C504185EB51C847225441CDCCCC0C8B9C5041D7A370CD4B225441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000DDB71085879C504150ECC21821225441F1D35909819C504158F564EA2F22544198F90C04869C504172C28456322254411F85EBA18A9C5041333333A32B2254410D98F47D959C504171581C8D2C22544138FE3E5D969C50410E6702AD2C225441A5F46364969C5041BB1FDB202C2254419140EA64969C5041119790162C2254410A51362A969C5041FF8D05A6282254411D995EE6879C504103B219842122544170464BC9879C50416663693B212254410F112B96879C5041677C7221212254411E1EDB94879C504172DFC720212254415E5D9D91879C5041B27A221F21225441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389384 - 261608
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001200000000000050939C50410AD7A3803A225441CDCCCC0C929C50410AD7A3F03D225441713D0AB78C9C50418FC2F5883D225441B81E85BB8D9C50417B14AE873A22544166666696939C5041EC51B8FE2E225441CDCCCC5C969C50415C8FC2B52C2254410AD7A390969C5041CDCCCCBC282254410AD7A320879C50415C8FC2E520225441295C8FE2769C5041666666D6392254415C8FC245789C504152B81E753B225441000000A0799C504148E17AF43C22544185EB51887C9C50417B14AE373F225441D7A3705D859C504185EB51C847225441CDCCCC0C8B9C5041D7A370CD4B225441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000DDB71085879C504150ECC21821225441F1D35909819C504158F564EA2F22544198F90C04869C504172C28456322254411F85EBA18A9C5041333333A32B2254410D98F47D959C504171581C8D2C22544138FE3E5D969C50410E6702AD2C225441A5F46364969C5041BB1FDB202C2254419140EA64969C5041119790162C2254410A51362A969C5041FF8D05A6282254411D995EE6879C504103B219842122544170464BC9879C50416663693B212254410F112B96879C5041677C7221212254411E1EDB94879C504172DFC720212254415E5D9D91879C5041B27A221F21225441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982150 - 587529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F000000D75056029D435141BDFC6F6C1E6C5441E9B4484D9D435141B294AAEA1F6C544128C1BD6D9F43514161D6EF522B6C544176EB97C6A6435141FBB40D86256C54410CFB897BA9435141F6AA96C8236C5441BF0BFB61AC43514135B70BE9256C5441D7B17046B7435141B32BC174326C5441F1915F0BB943514137EDC2F3306C5441B5325826B343514105C9FB00296C5441EA2ADFCBB1435141DEB38E54256C5441803AD180B44351410EA29E3C226C5441F6B463C5C94351411C4A6DF6126C5441A90020EBD6435141C9151CE0096C5441D9EE2FD3D3435141BEC6E225FC6B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000E17A149E9B435141C3F5287C406C5441CDCCCC3C9C435141666666D6426C5441A4703D3AA543514148E17AC4416C544148E17AF4A3435141EC51B85E3D6C54419A9999099F4351410AD7A3602C6C5441713D0AF79C435141EC51B81E1E6C5441B81E853B9B4351415C8FC205166C5441EC51B87EAF43514148E17AF4126C5441713D0A67AC435141AE47E18A096C5441B81E859BA943514114AE47210A6C54419A9999E9A74351419A999999056C5441EC51B89EA6435141000000C0036C5441B81E85BB97435141EC51B81E056C5441AE47E15A90435141C3F528EC046C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982150 - 1089297
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F000000D75056029D435141BDFC6F6C1E6C5441E9B4484D9D435141B294AAEA1F6C544128C1BD6D9F43514161D6EF522B6C544176EB97C6A6435141FBB40D86256C54410CFB897BA9435141F6AA96C8236C5441BF0BFB61AC43514135B70BE9256C5441D7B17046B7435141B32BC174326C5441F1915F0BB943514137EDC2F3306C5441B5325826B343514105C9FB00296C5441EA2ADFCBB1435141DEB38E54256C5441803AD180B44351410EA29E3C226C5441F6B463C5C94351411C4A6DF6126C5441A90020EBD6435141C9151CE0096C5441D9EE2FD3D3435141BEC6E225FC6B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000E17A149E9B435141C3F5287C406C5441CDCCCC3C9C435141666666D6426C5441A4703D3AA543514148E17AC4416C544148E17AF4A3435141EC51B85E3D6C54419A9999099F4351410AD7A3602C6C5441713D0AF79C435141EC51B81E1E6C5441B81E853B9B4351415C8FC205166C5441EC51B87EAF43514148E17AF4126C5441713D0A67AC435141AE47E18A096C5441B81E859BA943514114AE47210A6C54419A9999E9A74351419A999999056C5441EC51B89EA6435141000000C0036C5441B81E85BB97435141EC51B81E056C5441AE47E15A90435141C3F528EC046C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982150 - 3894107
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F000000D75056029D435141BDFC6F6C1E6C5441E9B4484D9D435141B294AAEA1F6C544128C1BD6D9F43514161D6EF522B6C544176EB97C6A6435141FBB40D86256C54410CFB897BA9435141F6AA96C8236C5441BF0BFB61AC43514135B70BE9256C5441D7B17046B7435141B32BC174326C5441F1915F0BB943514137EDC2F3306C5441B5325826B343514105C9FB00296C5441EA2ADFCBB1435141DEB38E54256C5441803AD180B44351410EA29E3C226C5441F6B463C5C94351411C4A6DF6126C5441A90020EBD6435141C9151CE0096C5441D9EE2FD3D3435141BEC6E225FC6B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000E17A149E9B435141C3F5287C406C5441CDCCCC3C9C435141666666D6426C5441A4703D3AA543514148E17AC4416C544148E17AF4A3435141EC51B85E3D6C54419A9999099F4351410AD7A3602C6C5441713D0AF79C435141EC51B81E1E6C5441B81E853B9B4351415C8FC205166C5441EC51B87EAF43514148E17AF4126C5441713D0A67AC435141AE47E18A096C5441B81E859BA943514114AE47210A6C54419A9999E9A74351419A999999056C5441EC51B89EA6435141000000C0036C5441B81E85BB97435141EC51B81E056C5441AE47E15A90435141C3F528EC046C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608334 - 5285098
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000007000000010300000001000000620200006D82FB7E9CA250410A28DA92A15355413A4E5D309CA250419F59B10DA2535541111D3E219BA2504109FBB826A4535541DB3D2F759AA25041203F1F9EA5535541EC2AE80C9AA25041013550C7A6535541C48AA25B99A250418854EAD5A85355411A055A3C99A25041E9812ED0A9535541979D72F298A2504137821CAFAB5355419F7356BF96A250410EF049EFB2535541AF85F0B594A25041FACB1502B7535541B234AC7293A25041E9D75620B9535541C146466991A25041D434DC81BC535541CAE74D6A8FA25041C453381CC1535541DFD818298AA250417494E473CD535541 [...]
+</a>
+
+<b>
+010600000001000000010300000003000000FE000000EE565A8659A150415992B49AE85355419C92E6B35AA15041466607F3E75355411AC165235DA15041CDA47895E6535541B1A4BD4A5DA15041F5724E7DE65355417E69F6215FA15041ADF46026E553554141FCD59260A1504113D7F1C2E45355417D1D7A0F63A15041F29AF471E3535541C013693763A150413E84C85CE3535541EFFB3DD965A15041762AECF0E153554117C04C0C68A15041DC5EB7CDE0535541F137331468A1504115F216CAE0535541D8827B3668A15041DA98F2B7E0535541BFC70D426BA150412FEEF150DF5355411DB53C676CA15041D163CCD4DE535541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608321 - 200925
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003B000000ED737BE208B15041B6616BC89C49554166C52CAD09B150411056C3549B495541A8708F8B0EB150414758219F9C4955417FD8896E10B15041BAB5CDA59949554127899D1614B150418DB449869A4955413C3A56E114B1504139114E299E49554114AE477115B150415C8FC2859E4955413D0AD75316B150417B14AEE7944955417F89CF6C0FB150412C8FC95486495541806E31410DB150416B70688A8F495541D43B82D90AB15041652935D68E495541136A75AC0AB150411326A8E68C495541420A021709B15041269970238C495541B20EBEAB0BB150417A15E73883495541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000008B000000BAAA9D5DE7B050410215BD777F4955413E691526E7B05041672F74A47F4955414E674CD8E6B05041F28F3EB27F495541FE2AFEE4E5B05041C69B041D80495541CA28A09AE4B05041622F56BF84495541C0E16CE6E3B0504113F06B8F8849554141F71FD8E2B05041259970238C495541BE87C98FE1B05041F323BAA78B495541E0821A57E1B0504115E2D0E98B4955419BE21C7EDCB05041C49D916A8A49554132647D75DBB05041EBCE31068A495541E9D35D91DAB050411300D2A18949554193C95DB9DAB050410AEE462E8949554143218872D9B05041D30440C188495541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>466331 - 1717110
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000B0000008FC2F56803BB50415C8FC275EE1E55417B14AE87FFBA5041B81E85CBD21E5541F6274E80FFBA50411C3CC138CA1E5541F6274E80FFBA504172BF50B4C21E5541C1A5A42C00BB5041B2211445B81E5541C1A5A42C00BB5041343C0631B01E5541C3F528CCFBBA504185EB5118B11E5541ECB1A73FFABA5041D51EC8FFC91E5541C745969BFABA5041D9F44731D71E5541000000B0FCBA5041713D0A87F01E55418FC2F56803BB50415C8FC275EE1E5541
+</a>
+
+<b>
+010600000001000000010300000001000000130000002346CDF9FEBA5041C9437414CA1E55419A9999F9FEBA504114AE4711CA1E5541713D0AE7FEBA50415C8FC2B5C21E5541D4CEE307FFBA50414770AC30C11E55415AF45447FFBA5041C71E3E41BE1E5541C797E45CFFBA5041716CDD41BD1E55416985EEC9FFBA5041FBC2D327B81E55410000005000BB5041EC51B85EB01E55411BDE3F5E00BB5041E704C15BB01E5541A35B6C6C00BB50415BD48EC4AF1E5541A94C4CF1FBBA50413F038697B01E5541F06BC294FABA504150425D15C01E5541E2251DF3F9BA5041D7E724DDC71E5541F6285CAFF9BA504100000020CB1E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>466331 - 3569489
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000B0000008FC2F56803BB50415C8FC275EE1E55417B14AE87FFBA5041B81E85CBD21E5541F6274E80FFBA50411C3CC138CA1E5541F6274E80FFBA504172BF50B4C21E5541C1A5A42C00BB5041B2211445B81E5541C1A5A42C00BB5041343C0631B01E5541C3F528CCFBBA504185EB5118B11E5541ECB1A73FFABA5041D51EC8FFC91E5541C745969BFABA5041D9F44731D71E5541000000B0FCBA5041713D0A87F01E55418FC2F56803BB50415C8FC275EE1E5541
+</a>
+
+<b>
+0106000000010000000103000000010000001400000014AE4731EFBA5041D7A370ADF41E5541000000B0FCBA5041713D0A87F01E5541FB9B06AEFABA5041D03EE611D81E5541C745969BFABA5041D7F44731D71E5541F6285CAFF9BA504100000020CB1E5541E0251DF3F9BA5041D6E724DDC71E5541EB6BC294FABA504150425D15C01E5541795D59E1FABA5041E3F5E3ADBC1E5541002E5584FBBA50419331626FB51E55413A1BB8D6FBBA5041CC4B6818B11E55417B14AE57F9BA5041713D0A57B11E5541ECD58005F9BA50418AD5C751B51E55413D0AD703F9BA504166666666B51E5541D943C9FAF8BA50419321D998B51E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>466331 - 3569876
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000B0000008FC2F56803BB50415C8FC275EE1E55417B14AE87FFBA5041B81E85CBD21E5541F6274E80FFBA50411C3CC138CA1E5541F6274E80FFBA504172BF50B4C21E5541C1A5A42C00BB5041B2211445B81E5541C1A5A42C00BB5041343C0631B01E5541C3F528CCFBBA504185EB5118B11E5541ECB1A73FFABA5041D51EC8FFC91E5541C745969BFABA5041D9F44731D71E5541000000B0FCBA5041713D0A87F01E55418FC2F56803BB50415C8FC275EE1E5541
+</a>
+
+<b>
+010600000001000000010300000001000000130000002346CDF9FEBA5041C9437414CA1E55419A9999F9FEBA504114AE4711CA1E5541713D0AE7FEBA50415C8FC2B5C21E5541D4CEE307FFBA50414770AC30C11E55415AF45447FFBA5041C71E3E41BE1E5541C797E45CFFBA5041716CDD41BD1E55416985EEC9FFBA5041FBC2D327B81E55410000005000BB5041EC51B85EB01E55411BDE3F5E00BB5041E704C15BB01E5541A35B6C6C00BB50415BD48EC4AF1E5541A94C4CF1FBBA50413F038697B01E5541F06BC294FABA504150425D15C01E5541E2251DF3F9BA5041D7E724DDC71E5541F6285CAFF9BA504100000020CB1E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>897581 - 1167278
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000300000001030000000100000036000000A6B48C1057715141FDB72B8115A054415C36532857715141A7CEB43716A05441CF04F98657715141B0E15C0E19A0544167968F7557715141C23C513F17A05441D6FA277757715141C436A01A17A05441AE47E1DA57715141295C8F921BA054415C8FC2D5537151415C8FC25523A054417B14AEA750715141B81E854B26A0544152B81E355271514185EB514828A05441CDCCCC1C5371514114AE470129A054415C8FC2D5537151413333338329A054411F85EBE154715141F6285CDF29A05441F6285C6F56715141713D0A172AA05441E17A143E587151413D0AD7C329A05441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000036000000A4B48C1057715141FFB72B8115A054415E36532857715141A9CEB43716A05441CF04F98657715141ADE15C0E19A054416B968F7557715141BE3C513F17A05441DBFA277757715141C236A01A17A05441AE47E1DA57715141295C8F921BA054415C8FC2D5537151415C8FC25523A054417B14AEA750715141B81E854B26A0544152B81E355271514185EB514828A05441CDCCCC1C5371514114AE470129A054415C8FC2D5537151413333338329A054411F85EBE154715141F6285CDF29A05441F6285C6F56715141713D0A172AA05441E17A143E587151413D0AD7C329A05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>897581 - 3406634
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000300000001030000000100000036000000A6B48C1057715141FDB72B8115A054415C36532857715141A7CEB43716A05441CF04F98657715141B0E15C0E19A0544167968F7557715141C23C513F17A05441D6FA277757715141C436A01A17A05441AE47E1DA57715141295C8F921BA054415C8FC2D5537151415C8FC25523A054417B14AEA750715141B81E854B26A0544152B81E355271514185EB514828A05441CDCCCC1C5371514114AE470129A054415C8FC2D5537151413333338329A054411F85EBE154715141F6285CDF29A05441F6285C6F56715141713D0A172AA05441E17A143E587151413D0AD7C329A05441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000036000000A4B48C1057715141FFB72B8115A054415E36532857715141A9CEB43716A05441CF04F98657715141ADE15C0E19A054416B968F7557715141BE3C513F17A05441DBFA277757715141C236A01A17A05441AE47E1DA57715141295C8F921BA054415C8FC2D5537151415C8FC25523A054417B14AEA750715141B81E854B26A0544152B81E355271514185EB514828A05441CDCCCC1C5371514114AE470129A054415C8FC2D5537151413333338329A054411F85EBE154715141F6285CDF29A05441F6285C6F56715141713D0A172AA05441E17A143E587151413D0AD7C329A05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586115 - 1085345
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000047000000A4703D6A0A425141000000A0876C54415C8FC2850C4251411F85EB81806C544114AE47510E4251415C8FC2A57B6C5441CDCCCC2C10425141D7A3700D786C54415C8FC21512425141EC51B88E756C5441333333831442514148E17A24736C5441C3F528EC154251419A999919726C54413C7264C7164251418A013277716C54418650CF691242514153D6DDB86D6C54417A013B300F4251416A41F1496C6C5441E2FC1CAE0C42514144C069A96B6C5441734066A209425141A72D8C7B6B6C5441C95EF43A0642514190C278EA6C6C544128D22155FF415141D736C87F706C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000D5CCCC5CE141514150B81E85886C54419A9999A9E04151419A9999498B6C5441EC51B85EDA415141EC51B81E8A6C544133333353D7415141295C8FF2886C5441AE47E10AD44151410AD7A320886C544152B81EC5CE415141295C8F02886C544133333313CC415141CDCCCC6C876C5441A4703D3ACB4151415C8FC2A5876C544152B81E45CB415141713D0A178A6C5441713D0A67CB415141CDCCCC6C8E6C544185EB51C8CB415141E17A147E906C5441E17A147ECC415141A4703D1A956C544133333363CC415141713D0A17986C54419A999979CB415141B81E85AB9E6C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586115 - 3386085
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000047000000A4703D6A0A425141000000A0876C54415C8FC2850C4251411F85EB81806C544114AE47510E4251415C8FC2A57B6C5441CDCCCC2C10425141D7A3700D786C54415C8FC21512425141EC51B88E756C5441333333831442514148E17A24736C5441C3F528EC154251419A999919726C54413C7264C7164251418A013277716C54418650CF691242514153D6DDB86D6C54417A013B300F4251416A41F1496C6C5441E2FC1CAE0C42514144C069A96B6C5441734066A209425141A72D8C7B6B6C5441C95EF43A0642514190C278EA6C6C544128D22155FF415141D736C87F706C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000D5CCCC5CE141514150B81E85886C54419A9999A9E04151419A9999498B6C5441EC51B85EDA415141EC51B81E8A6C544133333353D7415141295C8FF2886C5441AE47E10AD44151410AD7A320886C544152B81EC5CE415141295C8F02886C544133333313CC415141CDCCCC6C876C5441A4703D3ACB4151415C8FC2A5876C544152B81E45CB415141713D0A178A6C5441713D0A67CB415141CDCCCC6C8E6C544185EB51C8CB415141E17A147E906C5441E17A147ECC415141A4703D1A956C544133333363CC415141713D0A17986C54419A999979CB415141B81E85AB9E6C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983083 - 1085726
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000130000009A999939334A5141B81E85AB867154419A999929294A5141CDCCCC6C87715441F6285C1F224A5141CDCCCC3C88715441A4703DEA264A514114AE4731A071544114AE47A1284A514152B81EC5A8715441B81E85DB284A514133333303AA715441333333B32C4A514148E17AB4BC715441713D0AD72E4A5141EC51B80EC0715441295C8F12374A51411F85EB71C67154411F85EB113D4A51418FC2F518CB715441000000A0434A51419A9999A9C871544148E17AF4404A5141E17A14BE9B71544185EB51183E4A514148E17AA46B715441E17A14DE3C4A514152B81EB56C715441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000130000009A999939334A5141B81E85AB867154419A999929294A5141CDCCCC6C87715441F6285C1F224A5141CDCCCC3C887154415A8E9C84264A514182029E329D71544115555E83274A51413049252FA3715441B81E85DB284A514133333303AA715441333333B32C4A514148E17AB4BC715441713D0AD72E4A5141EC51B80EC0715441295C8F12374A51411F85EB71C67154411F85EB113D4A51418FC2F518CB715441000000A0434A51419A9999A9C871544148E17AF4404A5141E17A14BE9B71544185EB51183E4A514148E17AA46B715441E17A14DE3C4A514152B81EB56C715441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983083 - 3187429
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000130000009A999939334A5141B81E85AB867154419A999929294A5141CDCCCC6C87715441F6285C1F224A5141CDCCCC3C88715441A4703DEA264A514114AE4731A071544114AE47A1284A514152B81EC5A8715441B81E85DB284A514133333303AA715441333333B32C4A514148E17AB4BC715441713D0AD72E4A5141EC51B80EC0715441295C8F12374A51411F85EB71C67154411F85EB113D4A51418FC2F518CB715441000000A0434A51419A9999A9C871544148E17AF4404A5141E17A14BE9B71544185EB51183E4A514148E17AA46B715441E17A14DE3C4A514152B81EB56C715441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000130000009A999939334A5141B81E85AB867154419A999929294A5141CDCCCC6C87715441F6285C1F224A5141CDCCCC3C887154415A8E9C84264A514182029E329D71544115555E83274A51413049252FA3715441B81E85DB284A514133333303AA715441333333B32C4A514148E17AB4BC715441713D0AD72E4A5141EC51B80EC0715441295C8F12374A51411F85EB71C67154411F85EB113D4A51418FC2F518CB715441000000A0434A51419A9999A9C871544148E17AF4404A5141E17A14BE9B71544185EB51183E4A514148E17AA46B715441E17A14DE3C4A514152B81EB56C715441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>630579 - 423438
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000002000000F70000003D0AD7135F1C514152B81EE5A32C55411F85EBE15F1C5141713D0AC7A32C5541B81E852B611C5141A4703DCAA32C554114AE4761621C514114AE47E1A32C554133333343631C5141B81E85EBA32C55415C8FC285641C5141B81E85EBA22C55418FC2F518661C514133333373A12C554185EB5108671C5141D7A3708DA02C554185EB5158681C5141F6285C1F9F2C5541C3F5280C691C51411F85EB619E2C55411F85EBA1691C5141295C8F729D2C5541E17A148E6A1C5141CDCCCCEC9B2C55415C8FC2056B1C514152B81E259B2C5541295C8F526B1C51413D0AD7539A2C5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000260000000778F990331C5141500BDADCA82C5541A1DE5A83331C51414B9D0BF6A82C55418DEB2379331C5141B9CAF008A92C55414CD072AA311C5141FCD6F983AC2C55410AD7A3C0301C514148E17A64AE2C5541F6285CBF2F1C5141A4703D5AB02C55410AD7A3802E1C51413D0AD7B3B22C554185EB51582D1C51411F85EBE1B42C55415CA2EFCB2C1C5141F10477E4B52C5541F9377CC72B1C5141A82508DAB72C554114AE47B12B1C5141EC51B81EB82C55415C8FC2E52B1C5141EC51B80EB92C5541B50DE8102C1C51411342DDB6B92C5541EF52B2D52C1C51417A6FDF32BB2C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>352586 - 982796
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000017000000713D0A3787B25041F6285C7F58755441C3F528FC86B25041333333A359755441F62D9C7E89B250418D6CDF145A755441AB1FFA4B91B25041A18D47765B75544190B14B1F94B250415FC642F65B755441620B57CC94B2504159F0E0145C755441295C8F8295B2504152B81E355C755441D1E9150898B25041599BDDC95C7554412E525D9799B250416FA8DE255D75544165F3D33A9DB2504131B880FC5D755441F71C788E9DB25041C50B22775C755441C3F528FCA3B25041295C8F525E7554418FC2F5D8A9B25041713D0A275F755441713D0A37B7B250410AD7A3B060755441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000FE1C4D129EB25041174778565B755441713D0A579EB250410AD7A3605B755441522371889EB250416CA5066D5B755441DB7BF6D5A0B25041145BD4005C755441E8927354A1B250418BE18A205C755441065269D1A1B25041C6610EAC587554410346F41B9EB2504115604C42587554418EFD51929AB25041F326B7DA577554410E63587A97B250410DE5218057755441722F53B894B250416552641B5775544173B1924391B250413C0A5F88567554411F1D0B798EB25041C100A311567554417FFAECCB8BB250413D25CA9F55755441353176EE88B25041EEA3E82555755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>230702 - 150328
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000001C0000003D0AD71336FE5041D7A3709D91295441432F2A5935FE504137F85E8A8E295441A2BE2E7634FE5041DEDE08C98A295441E6D55AB233FE504197CFF6768729544107FDD52C33FE504178157B2B85295441E17A14AE2EFE504185EB511871295441713D0A972AFE5041EC51B86E5E29544148E17A2428FE5041AE47E1FA532954411F85EB2126FE5041A4703D9A4B295441D7A3707D24FE50419A9999C943295441EC51B81E24FE5041AE47E18A42295441C3F5288C23FE504185EB510841295441713D0A0723FE5041000000903F2954417B14AE3722FE5041A4703DFA3D295441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000001599525E22FE50417F05DB453E295441FB2E590C20FE504131DFAAF93B29544165A03C301EFE5041EC33E3CB3B2954410AD7A3C024FE50411F85EBB15729544152B81EB529FE5041713D0A976C29544159B0685229FE504195F824A06C29544105AAD2B42DFE5041B01B1F427E29544194BE237031FE5041EB436AD38C29544154A4A57735FE504163DC228E9C2954414962EFF736FE504193848B399C295441D6E3F37437FE5041050387BC9B2954416365F8F137FE5041E06BAC2A9B2954417E47DE1738FE504161001BF3992954412F9A6FD737FE504160E8EFE398295441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>230702 - 357461
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000001C0000003D0AD71336FE5041D7A3709D91295441432F2A5935FE504137F85E8A8E295441A2BE2E7634FE5041DEDE08C98A295441E6D55AB233FE504197CFF6768729544107FDD52C33FE504178157B2B85295441E17A14AE2EFE504185EB511871295441713D0A972AFE5041EC51B86E5E29544148E17A2428FE5041AE47E1FA532954411F85EB2126FE5041A4703D9A4B295441D7A3707D24FE50419A9999C943295441EC51B81E24FE5041AE47E18A42295441C3F5288C23FE504185EB510841295441713D0A0723FE5041000000903F2954417B14AE3722FE5041A4703DFA3D295441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000001599525E22FE50417F05DB453E295441FB2E590C20FE504131DFAAF93B29544165A03C301EFE5041EC33E3CB3B2954410AD7A3C024FE50411F85EBB15729544152B81EB529FE5041713D0A976C29544159B0685229FE504195F824A06C29544105AAD2B42DFE5041B01B1F427E29544194BE237031FE5041EB436AD38C29544154A4A57735FE504163DC228E9C2954414962EFF736FE504193848B399C295441D6E3F37437FE5041050387BC9B2954416365F8F137FE5041E06BAC2A9B2954417E47DE1738FE504161001BF3992954412F9A6FD737FE504160E8EFE398295441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415759 - 415454
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000005F000000844D5BB87C625141D0C82FD43A3C54413D0AD7837C625141E17A14AE373C5441000000A07B6251410AD7A3002A3C54417B14AE97716251410AD7A320233C5441C92E3FB86E6251418007A328213C54411E3DC3BD686251415F08C60F1D3C54417B14AEA7686251410AD7A3001D3C54410AD7A3806962514148E17AF41B3C5441A4703D3A6D625141EC51B87E193C5441A4703D6A686251419A9999B9093C5441713D0AC76762514152B81EF5073C5441B81E85CB636251418FC2F538073C5441D7A3705D626251410AD7A3A0FB3B5441B81E85EB61625141C3F528BCF73B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000C3F528FC9462514148E17A44243C544185EB518894625141A4703DFA1F3C54411F85EB7192625141295C8F72133C5441A4703D2A83625141A4703D0A113C5441333333F37C625141CDCCCC6C133C54413D0AD7437162514114AE4741173C54415C8FC2356F62514100000030183C5441A4703D3A6D625141EC51B87E193C54410AD7A3806962514148E17AF41B3C54417B14AEA7686251410AD7A3001D3C54417B14AE97716251410AD7A320233C5441000000A07B6251410AD7A3002A3C54413D0AD7837C625141E17A14AE373C5441666666567D625141E17A144E443C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415759 - 1003895
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000005F000000844D5BB87C625141D0C82FD43A3C54413D0AD7837C625141E17A14AE373C5441000000A07B6251410AD7A3002A3C54417B14AE97716251410AD7A320233C5441C92E3FB86E6251418007A328213C54411E3DC3BD686251415F08C60F1D3C54417B14AEA7686251410AD7A3001D3C54410AD7A3806962514148E17AF41B3C5441A4703D3A6D625141EC51B87E193C5441A4703D6A686251419A9999B9093C5441713D0AC76762514152B81EF5073C5441B81E85CB636251418FC2F538073C5441D7A3705D626251410AD7A3A0FB3B5441B81E85EB61625141C3F528BCF73B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000C3F528FC9462514148E17A44243C544185EB518894625141A4703DFA1F3C54411F85EB7192625141295C8F72133C5441A4703D2A83625141A4703D0A113C5441333333F37C625141CDCCCC6C133C54413D0AD7437162514114AE4741173C54415C8FC2356F62514100000030183C5441A4703D3A6D625141EC51B87E193C54410AD7A3806962514148E17AF41B3C54417B14AEA7686251410AD7A3001D3C54417B14AE97716251410AD7A320233C5441000000A07B6251410AD7A3002A3C54413D0AD7837C625141E17A14AE373C5441666666567D625141E17A144E443C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415759 - 3049063
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000020000005F000000844D5BB87C625141D0C82FD43A3C54413D0AD7837C625141E17A14AE373C5441000000A07B6251410AD7A3002A3C54417B14AE97716251410AD7A320233C5441C92E3FB86E6251418007A328213C54411E3DC3BD686251415F08C60F1D3C54417B14AEA7686251410AD7A3001D3C54410AD7A3806962514148E17AF41B3C5441A4703D3A6D625141EC51B87E193C5441A4703D6A686251419A9999B9093C5441713D0AC76762514152B81EF5073C5441B81E85CB636251418FC2F538073C5441D7A3705D626251410AD7A3A0FB3B5441B81E85EB61625141C3F528BCF73B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000425757AD686251412C0A85041D3C5441DC4C946D68625141A969EC181D3C5441CB8C788C66625141C0796BA21F3C5441C66C23FC65625141D3C9B1CB213C5441B96C407B646251413A4A58122D3C5441B5AC071B64625141471A2D7B2E3C5441ADFC874263625141699A643D323C5441A0FCA4C161625141792A7206343C5441A25CC1F16162514189BA7FCF353C5441746CD1F65C625141F81AB406423C54416F4C7C665C625141FC0AFB7E423C54414EFC52BC58625141193BCF98453C54412C8E749D55625141BBE22CE9463C54417069EDD856625141D36380CE483C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415759 - 3307658
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000020000005F000000844D5BB87C625141D0C82FD43A3C54413D0AD7837C625141E17A14AE373C5441000000A07B6251410AD7A3002A3C54417B14AE97716251410AD7A320233C5441C92E3FB86E6251418007A328213C54411E3DC3BD686251415F08C60F1D3C54417B14AEA7686251410AD7A3001D3C54410AD7A3806962514148E17AF41B3C5441A4703D3A6D625141EC51B87E193C5441A4703D6A686251419A9999B9093C5441713D0AC76762514152B81EF5073C5441B81E85CB636251418FC2F538073C5441D7A3705D626251410AD7A3A0FB3B5441B81E85EB61625141C3F528BCF73B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000425757AD686251412C0A85041D3C5441DC4C946D68625141A969EC181D3C5441CB8C788C66625141C0796BA21F3C5441C66C23FC65625141D3C9B1CB213C5441B96C407B646251413A4A58122D3C5441B5AC071B64625141471A2D7B2E3C5441ADFC874263625141699A643D323C5441A0FCA4C161625141792A7206343C5441A25CC1F16162514189BA7FCF353C5441746CD1F65C625141F81AB406423C54416F4C7C665C625141FC0AFB7E423C54414EFC52BC58625141193BCF98453C54412C8E749D55625141BBE22CE9463C54417069EDD856625141D36380CE483C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415759 - 3666699
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000005F000000844D5BB87C625141D0C82FD43A3C54413D0AD7837C625141E17A14AE373C5441000000A07B6251410AD7A3002A3C54417B14AE97716251410AD7A320233C5441C92E3FB86E6251418007A328213C54411E3DC3BD686251415F08C60F1D3C54417B14AEA7686251410AD7A3001D3C54410AD7A3806962514148E17AF41B3C5441A4703D3A6D625141EC51B87E193C5441A4703D6A686251419A9999B9093C5441713D0AC76762514152B81EF5073C5441B81E85CB636251418FC2F538073C5441D7A3705D626251410AD7A3A0FB3B5441B81E85EB61625141C3F528BCF73B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000C3F528FC9462514148E17A44243C544185EB518894625141A4703DFA1F3C54411F85EB7192625141295C8F72133C5441A4703D2A83625141A4703D0A113C5441333333F37C625141CDCCCC6C133C54413D0AD7437162514114AE4741173C54415C8FC2356F62514100000030183C5441A4703D3A6D625141EC51B87E193C54410AD7A3806962514148E17AF41B3C54417B14AEA7686251410AD7A3001D3C54417B14AE97716251410AD7A320233C5441000000A07B6251410AD7A3002A3C54413D0AD7837C625141E17A14AE373C5441666666567D625141E17A144E443C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586071 - 983095
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002B0000002EFA778351405141A4BD0D31166B54418D6B689051405141FA6E4831166B5441E9AED54E524051410437A834166B54418FC2F5685240514152B81E35166B5441434C9F6852405141081D3138166B5441B81E853B54405141333333B30B6B544152B81E6555405141295C8F72056B54417B14AE874A405141EC51B81E066B5441D7A370FD414051417B14AE37066B54413D0AD79328405141CDCCCC6C066B544148E17A340F4051411F85EB21076B54411F85EBB10B4051410AD7A3D0066B5441D7A370DD0B4051413D0AD703096B544152B81E350C405141C3F528DC0C6B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000003791679B3340514197F3344A156B5441F6285C3F304051410AD7A320156B54417E7B0A3C3040514130735668156B54417D52DC1F3040514158AB15C9176B5441A4703DFA2F4051415C8FC2F51A6B5441E6C628DA2F405141348005A51D6B54411D4B0DCF2F4051418E1FF9921E6B5441F94A81B62F405141548CD6A0206B54412D127DAE2F405141ED0F934C216B54410C224AAC2F40514190D1AE7B216B544172C2AFA82F40514122B8DEC8216B54410C5F9E9C2F405141B55466CB226B54417E1502912F405141584D21C4236B54411BA7C2892F40514114FE655F246B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>439670 - 3335515
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000200000067000000CDCCCCDC95095141F6285CDFD6245541CDCCCC9C9509514166666656D6245541AE47E19A900951419A999939CC2455418FC2F518900951417B14AE27CB24554114AE47F18A0951413D0AD743C0245541333333439009514148E17A84BD245541EC51B8AE8D095141666666D6B9245541333333E38A095141713D0A77B5245541A4703DBA85095141B81E856BAB2455411F85EB4185095141CDCCCC5CAA245541713D0AE78309514133333393A724554152B81E15800951419A9999B99B245541EC51B80E7D095141F6285C5F9A245541D7A3700D7909514152B81EF598245541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006A000000A8BA313A3F095141210588D3B22455411CCEDD163F095141C452B004B32455413DD090453C09514183FA379EB7245541666666363C095141713D0AB7B7245541D7A3706D3B095141F6285CFFB824554185EB51B83709514185EB5158B8245541D7A370AD32095141EC51B86EB624554114AE47113009514185EB51A8B4245541EC51B8FE2D09514152B81E75B3245541713D0A672C0951411F85EBC1B12455418FC2F5482A0951415C8FC285B124554152B81E652B095141C3F5288CB3245541F6285CCF2D095141D7A370BDB9245541B81E850B2F095141E17A14AEBC245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918541 - 3132797
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000400000001030000000100000046000000295C8FA212A1504148E17AD4A82154410AD7A3E014A15041A4703D0AAB21544152B81E9516A15041CDCCCCACAC215441B81E857B18A15041295C8F52AE2154411F85EBB11AA15041D7A3702DB0215441713D0A471DA15041295C8F72B22154419A9999991EA1504114AE47C1B3215441E17A14BE1FA15041EC51B81EB52154410000001021A15041666666A6B62154410000002022A150410AD7A390B72154410AD7A36023A15041295C8F52B8215441333333B324A1504114AE47C1B8215441CDCCCC4C26A15041EC51B80EB92154411F85EBD127A15041CDCCCC0CB9215441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000C4B874D6D0A05041ABE63D9E7321544185EB5178D2A050418FC2F58876215441F8D8F2AAD6A0504113AD1B557D2154410DFAD619D9A050415CD87482802154414AE514F1DBA05041576B0D3C832154413AD808D3DFA05041B3930C74862154413EA97071E6A05041EDA226788B21544174CFD57DEBA050416B3933F08E215441F9464196EBA0504139B155BD8C21544141040458EBA05041AEA1257C8821544150F297EDEBA050413E4E38E0842154414478940AECA05041F9E55127842154418395BFDAE2A05041BBEAC7917E215441430BA09BD4A050415A8F8E2E76215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918541 - 3503603
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000400000001030000000100000046000000295C8FA212A1504148E17AD4A82154410AD7A3E014A15041A4703D0AAB21544152B81E9516A15041CDCCCCACAC215441B81E857B18A15041295C8F52AE2154411F85EBB11AA15041D7A3702DB0215441713D0A471DA15041295C8F72B22154419A9999991EA1504114AE47C1B3215441E17A14BE1FA15041EC51B81EB52154410000001021A15041666666A6B62154410000002022A150410AD7A390B72154410AD7A36023A15041295C8F52B8215441333333B324A1504114AE47C1B8215441CDCCCC4C26A15041EC51B80EB92154411F85EBD127A15041CDCCCC0CB9215441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000C4B874D6D0A05041ABE63D9E7321544185EB5178D2A050418FC2F58876215441F8D8F2AAD6A0504113AD1B557D2154410DFAD619D9A050415CD87482802154414AE514F1DBA05041576B0D3C832154413AD808D3DFA05041B3930C74862154413EA97071E6A05041EDA226788B21544174CFD57DEBA050416B3933F08E215441F9464196EBA0504139B155BD8C21544141040458EBA05041AEA1257C8821544150F297EDEBA050413E4E38E0842154414478940AECA05041F9E55127842154418395BFDAE2A05041BBEAC7917E215441430BA09BD4A050415A8F8E2E76215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>872337 - 3109356
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000002D0000005F8F66DDFD6851414B7EFBC3C2945441000F4AF9FF685141A3B453F7C3945441B503A2B8016951418AE61FF6C494544145705866036951410048E1EAC59454413025EEA004695141D39C0F9EC694544114AE47D1046951419A9999B9C694544140AB868D06695141196D7BB6C794544168FF20CA076951411B6DB46AC89454411292555109695141C5E36449C99454414A3187840A69514109EE04F4C9945441E27912830C6951417328631ACB9454411EF8AFCC0D695141362195D6CB945441E02B933F0F69514184E9BAA9CC9454411A423BC410695141FE52EC90CD945441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000085EB51481B695141AE47E14AD594544114AE47F1106951410AD7A3A0CD945441C3F5288C09695141AE47E16AC994544114AE47D1046951419A9999B9C6945441D7A370DDFD6851413D0AD7C3C294544146F9F2D9F0685141A60EB865BB945441039B1A5CDA68514117EE7C7F0E9554413D0AD7B3E7685141A4703DEA12955441295C8F12EF685141AE47E15A1595544114AE4731F1685141EC51B80E16955441D7A3701DF2685141E17A140E16955441CDCCCCDCF3685141AE47E10A16955441B81E855BF46851418FC2F50816955441AE47E16A096951413D0AD7E315955441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>872337 - 3491171
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000002D0000005F8F66DDFD6851414B7EFBC3C2945441000F4AF9FF685141A3B453F7C3945441B503A2B8016951418AE61FF6C494544145705866036951410048E1EAC59454413025EEA004695141D39C0F9EC694544114AE47D1046951419A9999B9C694544140AB868D06695141196D7BB6C794544168FF20CA076951411B6DB46AC89454411292555109695141C5E36449C99454414A3187840A69514109EE04F4C9945441E27912830C6951417328631ACB9454411EF8AFCC0D695141362195D6CB945441E02B933F0F69514184E9BAA9CC9454411A423BC410695141FE52EC90CD945441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000085EB51481B695141AE47E14AD594544114AE47F1106951410AD7A3A0CD945441C3F5288C09695141AE47E16AC994544114AE47D1046951419A9999B9C6945441D7A370DDFD6851413D0AD7C3C294544146F9F2D9F0685141A60EB865BB945441039B1A5CDA68514117EE7C7F0E9554413D0AD7B3E7685141A4703DEA12955441295C8F12EF685141AE47E15A1595544114AE4731F1685141EC51B80E16955441D7A3701DF2685141E17A140E16955441CDCCCCDCF3685141AE47E10A16955441B81E855BF46851418FC2F50816955441AE47E16A096951413D0AD7E315955441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>192772 - 14844
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000900000057000000AC2C1FA66FC350416515BA066126554155892E4F6FC35041522F919C562655418E56BB066FC3504151D2AA6250265541EC0FDA586EC350414458A84A42265541B4424DA16EC35041B859BABE33265541713D0AA76DC350419A9999E932265541AE47E1CA6AC3504185EB51C8322655416AEC7DB96AC35041B859BABE33265541098957BE68C35041F21BB0F8332655410E2F8ABB68C35041C9ED70E531265541BDC85FC86AC35041F09F72D031265541578BDBFC6AC3504130FEEA2E322655417B14AE876EC3504114AE47F1312655415F94C5CC6EC35041ABAFB21531265541 [...]
+</a>
+
+<b>
+0106000000010000000103000000090000008E00000080DA236875C35041A8BD34880E2655415EF71FAB71C35041334EB6970E2655417B06560971C35041A60BA96E1D2655413B92053770C35041C790AD32312655414B83D88C70C350412ACA3FA231265541B0EB6BC870C35041FCFCFFEE3126554114AE47A18FC3504185EB51F82E265541A4703DCA8DC35041713D0A47E5255541F6285C3F99C35041666666B6E425554167A07E9B97C3504176F2891CB425554157FBCADE93C35041553564F5B5255541C98704CE8EC35041204C717AB8255541BACE202B80C350418A393FC2BF255541FF8A154C70C350418D9201C5DF255541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>958590 - 2986914
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000210000000EDD0B6FE36D5141E29D533AB89A544100000010E56D5141000000B0B19A5441EC51B8FEE56D51417B14AE47AF9A5441A4703D6AE76D5141D7A370DDAD9A5441B81E853BEF6D51411F85EB21A99A5441000000B0F76D5141AE47E13AA49A5441CDCCCC3CFE6D5141EC51B89EA09A544185EB51C8096E5141713D0A179B9A54418FC2F5F8136E514100000000979A544114AE47911B6E514152B81EC5949A544114AE4701216E514114AE4751949A5441B81E851B2B6E5141F6285CDF949A5441CDCCCC3C366E5141A4703D9A959A5441713D0AB7386E5141A4703DEA949A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000040000000FD4F7447E66D51418302104A6F9A54417BE98F6ADA6D514126E7BD40789A54410FB6B4DBC86D51418B772ACD859A544134EADA82AC6D51419AE6B5BC9B9A54418A0CBCF1A36D514172581E69A29A54415B7198249D6D514120EC58D2A79A5441E1F37D48986D5141C90824B0AB9A5441439043D1966D5141E0E7AADAAC9A5441A8F64EEB946D514167AC495DAE9A544195ADDE7D936D514140B80680AF9A5441AE47E1EA916D51410AD7A3C0B09A5441AE47E15A876D5141B81E85ABB99A54415C8FC2E5846D5141EC51B84EBC9A54413D0AD7F3826D51415C8FC2C5BF9A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>958590 - 3812684
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000210000000EDD0B6FE36D5141E29D533AB89A544100000010E56D5141000000B0B19A5441EC51B8FEE56D51417B14AE47AF9A5441A4703D6AE76D5141D7A370DDAD9A5441B81E853BEF6D51411F85EB21A99A5441000000B0F76D5141AE47E13AA49A5441CDCCCC3CFE6D5141EC51B89EA09A544185EB51C8096E5141713D0A179B9A54418FC2F5F8136E514100000000979A544114AE47911B6E514152B81EC5949A544114AE4701216E514114AE4751949A5441B81E851B2B6E5141F6285CDF949A5441CDCCCC3C366E5141A4703D9A959A5441713D0AB7386E5141A4703DEA949A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000040000000FD4F7447E66D51418302104A6F9A54417BE98F6ADA6D514126E7BD40789A54410FB6B4DBC86D51418B772ACD859A544134EADA82AC6D51419AE6B5BC9B9A54418A0CBCF1A36D514172581E69A29A54415B7198249D6D514120EC58D2A79A5441E1F37D48986D5141C90824B0AB9A5441439043D1966D5141E0E7AADAAC9A5441A8F64EEB946D514167AC495DAE9A544195ADDE7D936D514140B80680AF9A5441AE47E1EA916D51410AD7A3C0B09A5441AE47E15A876D5141B81E85ABB99A54415C8FC2E5846D5141EC51B84EBC9A54413D0AD7F3826D51415C8FC2C5BF9A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>46511 - 249793
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000340000006CF353F1CED45041FBCB42F214085541B4EFF3ECCED45041BDE942151508554125F7B3F5CED45041D21D8352150855414CE61445CFD45041BC2DE82617085541FAC42C32D0D450418EF265211E085541C08760F0D9D4504124D2F8E63D0855412B29BF71DAD45041D77581DF3D0855419A9999F9D9D450419A9999093E085541FC34519BE2D450416A771DF63E0855412A8A1984E2D450412DB473002E085541B3112513E3D45041ACE0B08125085541D71C4520E3D450415FB0D048250855418A27961AE3D45041664980F524085541B81E85ABE2D450415C8FC25524085541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004E00000055B401D5E6D450413E1D61C01A085541101FE7C5E6D45041BD03D8C319085541A095A47FE6D45041F57E584C190855419A999989E5D45041A4703D9A1808554197B0D3E4E4D45041B03098671708554181C1435AE4D45041EEF5A1AE1608554114AE47F1E3D45041E17A142E16085541F532EDD0E3D45041120C4EF715085541F590101AE3D45041584D7FF214085541D01EC625E2D45041DB54DD8214085541AA92D34AE1D450419593997214085541C0E3DAFDE0D45041CFCCE16C14085541B81E85EBE0D45041B81E856B14085541295C8FE2DBD45041EC51B89E12085541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>801940 - 249283
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000D000000010300000001000000120100007B14AEA7E8F450417B14AE87F5B854416FB507B6EEF4504114621A4DF7B85441C3F528ECEFF4504148E17AC4F6B85441C3F5289CF1F45041CDCCCCACF6B85441C3F528FCF1F45041CDCCCCFCF7B85441C3F5285CF2F450418FC2F508F8B854410AD7A3C0F4F450418FC2F528F6B8544148E17A34F6F4504148E17A74F5B8544185EB5178F7F45041CDCCCC0CF7B854410AD7A3C0F7F4504148E17A64F6B854410AD7A310F9F4504148E17A34F6B8544148E17A64F9F45041CDCCCCACF3B854410AD7A3F0FAF4504148E17AA4EFB8544185EB5168FBF45041CDCCCC5CEFB85441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000420000008245E2041EF65041B89D0AAD44B9544178BBC9E725F65041CE85B62743B9544105B92E7429F65041A0B60F7942B95441862E567F2DF6504184D809B241B95441E9BB2C6930F6504123FFA32241B95441E4DA9A4834F650419734066440B954411A9FBC5639F65041A08E356B3FB954417B14AE873BF65041F6285CFF3EB954410AD7A30040F65041A4703DEA3DB954410AD7A32047F650411F85EB113CB95441A4703D6A47F65041C3F5281C3BB954413D0AD7C346F65041F6285CEF38B95441C3F5280C49F6504114AE47E138B95441713D0A474BF65041713D0AE737B95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>801940 - 250006
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000D000000010300000001000000120100007B14AEA7E8F450417B14AE87F5B854416FB507B6EEF4504114621A4DF7B85441C3F528ECEFF4504148E17AC4F6B85441C3F5289CF1F45041CDCCCCACF6B85441C3F528FCF1F45041CDCCCCFCF7B85441C3F5285CF2F450418FC2F508F8B854410AD7A3C0F4F450418FC2F528F6B8544148E17A34F6F4504148E17A74F5B8544185EB5178F7F45041CDCCCC0CF7B854410AD7A3C0F7F4504148E17A64F6B854410AD7A310F9F4504148E17A34F6B8544148E17A64F9F45041CDCCCCACF3B854410AD7A3F0FAF4504148E17AA4EFB8544185EB5168FBF45041CDCCCC5CEFB85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005002000099539FF808F55041608C0681E2B8544111BDFA4A09F550414509C678E2B85441D36F5AA90AF550410B480DDDE1B85441840D2EDB0AF55041971A3EA6E1B85441C3F5288C0AF550410AD7A3F0DFB854410AD7A3E00AF550410AD7A360DFB8544166156EF60AF550415BAAE066DFB85441F53C6CFF0AF5504162FABB59DFB8544137C0ED850BF55041547B4B81DFB85441C9E322700BF55041CB4D73F5DEB85441F53C6CFF0AF55041550CFEADDCB854418B815ECD0BF55041129FDC09DBB854417EB9E4BC0BF550417E3E2744DAB8544168334AD90BF55041325A802FDAB85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>801940 - 354629
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000D000000010300000001000000120100007B14AEA7E8F450417B14AE87F5B854416FB507B6EEF4504114621A4DF7B85441C3F528ECEFF4504148E17AC4F6B85441C3F5289CF1F45041CDCCCCACF6B85441C3F528FCF1F45041CDCCCCFCF7B85441C3F5285CF2F450418FC2F508F8B854410AD7A3C0F4F450418FC2F528F6B8544148E17A34F6F4504148E17A74F5B8544185EB5178F7F45041CDCCCC0CF7B854410AD7A3C0F7F4504148E17A64F6B854410AD7A310F9F4504148E17A34F6B8544148E17A64F9F45041CDCCCCACF3B854410AD7A3F0FAF4504148E17AA4EFB8544185EB5168FBF45041CDCCCC5CEFB85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005002000099539FF808F55041608C0681E2B8544111BDFA4A09F550414509C678E2B85441D36F5AA90AF550410B480DDDE1B85441840D2EDB0AF55041971A3EA6E1B85441C3F5288C0AF550410AD7A3F0DFB854410AD7A3E00AF550410AD7A360DFB8544166156EF60AF550415BAAE066DFB85441F53C6CFF0AF5504162FABB59DFB8544137C0ED850BF55041547B4B81DFB85441C9E322700BF55041CB4D73F5DEB85441F53C6CFF0AF55041550CFEADDCB854418B815ECD0BF55041129FDC09DBB854417EB9E4BC0BF550417E3E2744DAB8544168334AD90BF55041325A802FDAB85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983695 - 117756
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B00000002FE3E79B9E2504173147F44602F5541B478C446A3E250410AE33FFC602F55417BD05ABD92E25041C489F90A622F5541BF458A0E84E25041DFAAE77A612F55416BE2744975E250417B0F5B195E2F5541B917797A6CE250412274CEB75A2F5541E3BDD18965E2504118A4EC11572F5541423FB47363E2504165A0BAA5542F5541A11554B560E25041A0B91853542F5541FBC939AD61E2504119098695562F554126C1DD1065E250417F1988A6592F5541849274F068E250418236398E5C2F554100FF921A6EE250418653EA755F2F55413118F1C76DE25041AE2DDDF15F2F5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004C0000008D363BD8B9E250416B00E121612F554165F18FA2B9E2504108E2C2E9602F55410DDF447CB9E25041B3989650602F5541CB225C09A6E25041368F66E5602F5541BB1C42E898E25041F72301A6612F55417BD05ABD92E25041C489F90A622F55417175A14F92E250412AEAC406622F5541BF458A0E84E25041DFAAE77A612F5541882CF10784E25041A2016579612F554117712ECE83E2504180172C6C612F55416BE2744975E250417B0F5B195E2F5541B917797A6CE250412274CEB75A2F5541E3BDD18965E2504118A4EC11572F55411E8D3F6F65E25041A12E12F3562F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983695 - 318015
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B00000002FE3E79B9E2504173147F44602F5541B478C446A3E250410AE33FFC602F55417BD05ABD92E25041C489F90A622F5541BF458A0E84E25041DFAAE77A612F55416BE2744975E250417B0F5B195E2F5541B917797A6CE250412274CEB75A2F5541E3BDD18965E2504118A4EC11572F5541423FB47363E2504165A0BAA5542F5541A11554B560E25041A0B91853542F5541FBC939AD61E2504119098695562F554126C1DD1065E250417F1988A6592F5541849274F068E250418236398E5C2F554100FF921A6EE250418653EA755F2F55413118F1C76DE25041AE2DDDF15F2F5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004C0000008D363BD8B9E250416B00E121612F554165F18FA2B9E2504108E2C2E9602F55410DDF447CB9E25041B3989650602F5541CB225C09A6E25041368F66E5602F5541BB1C42E898E25041F72301A6612F55417BD05ABD92E25041C489F90A622F55417175A14F92E250412AEAC406622F5541BF458A0E84E25041DFAAE77A612F5541882CF10784E25041A2016579612F554117712ECE83E2504180172C6C612F55416BE2744975E250417B0F5B195E2F5541B917797A6CE250412274CEB75A2F5541E3BDD18965E2504118A4EC11572F55411E8D3F6F65E25041A12E12F3562F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>539811 - 983725
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001D000000C3F528FCFF105141EC51B8EE533F5441A4703DAA0F11514152B81EF5453F54417B14AE871F1151410AD7A3D0373F54413DB53EA01A115141E39852FE353F544108820B6D1A115141B1651FEB353F544131DE9A8F18115141CFEA0A3D353F5441F5D3C36B161151410D1E3E70343F5441F0FC1FFB121151419A099028333F54414D8CE270111151417B84A496323F544134CDE2280D11514117F56801313F5441AE47E16A0A1151415C8FC2F52F3F5441B23FC470F3105141700BC002483F54413F3980BAF310514197785D3E483F5441756AADA8F5105141EAEBF1E5493F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000666666E6F81051418FC2F5C84C3F54415B476E78F3105141D1A89A0E483F54417B5F1C7AE21051417F1C6EC1593F54415C8FC2D5E2105141666666265A3F5441B81E851BE510514148E17A945C3F5441F133A521E5105141C73D928F5C3F544171C5111EE510514187773E825C3F5441EC51B8BEE5105141AE47E1FA5B3F544171226862E91051411FC30D27593F54412DEDE086F01051410EDA4E90533F5441666666E6F81051418FC2F5C84C3F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956391 - 628727
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000004D000000963791B675F450412F83D4334A1555413574588474F45041D2AF08F449155541DD86C99E72F45041683F33AB49155541225D41746FF45041835701C948155541D9CFC3CF6CF4504169B4CB8148155541E20A20B269F45041ED8E77EA47155541A5B80FDC68F450418BA951C34715554116AA17D468F450418C2C5DAD47155541BB26A4D668F45041FDE653C24715554154F00AC968F45041474832B04715554193E3AD6D66F450412849728D461555412E3C0C365DF45041908B263144155541E97FF7E357F450412413873543155541C3F528BC57F45041713D0AE744155541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A00000043779EE78DF45041F681E28C4D15554114AE475193F45041333333734E1555410243DCBE93F45041D8AB7A854E1555415C8FC23596F45041EC51B8EE4E1555418FC2F55899F4504152B81E854F1555411F85EB519BF4504148E17AB44F155541C3F5284C9DF4504148E17A044E155541F6285CAF9DF45041295C8F724A155541A4703D8A9DF450413D0AD753481555417B14AEC79CF450418FC2F50847155541AE47E17A9BF45041F6285C7F461555410AD7A3009AF450418FC2F5F8451555410AD7A3D098F450411F85EBA1451555413D0AD73397F4504185EB514845155541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>246563 - 3334068
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000002400000053AE47114E6B5141981A858B05955441AE47E1BA4E6B514148E17AA4229554418FC2F508506B51418FC2F5A8549554418FC2F508506B5141D7A370ED5595544152A5FE60506B5141FC526A86589554416DFFA4E74E6B5141017CB42962955441277444514D6B514181E4AB706A955441E4131BA34C6B5141DC71577871955441C363064C4C6B51413B2A3A6879955441B81E859B566B5141D7A3708D79955441713D0A375F6B5141000000A079955441B81E850B696B51415C8FC2D579955441000000C06D6B5141CDCCCCDC79955441AE47E17A6F6B514148E17AC479955441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000F6285CEFAC6B5141E17A144EB9945441AE47E18AA26B514185EB51B8B594544133333303976B5141D7A370ADB1945441D7A3701D946B514100000070B0945441333333C3916B5141713D0A47B69454419A9999C9806B5141D7A370FDAE94544100000040756B5141E17A143EAA9454417B14AE27756B514133333333AF945441D30C8A20766B51411A5536A1AF945441AE4F3378776B51415C182239B0945441AA96D99C7A6B5141B368D79CB19454418C23EF6F806B514100CAFF2FB49454411BAFB397826B514163BFEA23B5945441126CA716846B5141940535CDB5945441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978257 - 984038
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000005000000D5000000C4D8C356FE775041627A8678330F55414487048DFE775041F5884BDF320F5541D03CC8990C7850413B304422340F554154F324A4107850419AA5CF2E330F5541500961D11678504149C817D42E0F5541A9E7954A1678504103DFE1E12D0F5541EA7DDD1517785041749FF3332B0F55411D7C3A62187850418E20B80B2B0F55419AFFBC4C1B7850412D9E30592D0F5541893829421D7850419797151E2E0F5541EB7693551D7850419C45F7832F0F5541B342F02D21785041825278662F0F55419C68DD0C2478504112EA584E2F0F55418CAC2B89277850415E1DF4672E0F5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001800000027B7154B0178504127DEDF32120F5541E6B5FD1401785041AF8294B6100F55414232BAEC007850410416AE060B0F5541BE59284C01785041CBBA0044070F5541968D374501785041E0F8B940070F55414E6F542D017850417C135C42010F554168405D2101785041BA11AD7C000F55414DC9628900785041E6D8913BFC0E5541B982701AFF775041F74B1531FC0E5541A2265DC7FD7750412E5F06D8FC0E5541E47A834EFC7750418EBBD66FFE0E5541B6FDCC35FB775041FA0404A3000F5541B4D02553FA775041E721BE42040F5541A0D0C5B3F977504158C56BBE0A0F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983391 - 708836
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000980000009A9999B9A6165141EC51B84E8B2C5541E17A14AEAD165141713D0A778C2C55418B808A82B2165141110D53568D2C55417916AD0FB41651411808A32D8B2C55419DC64B3EB6165141CAA4E9448B2C5541500F3AE1B6165141555B1CBF8B2C55410E2EFCC9B7165141E1E7227F8C2C554148E17AB4B7165141E17A144E8E2C55419A9999F9B9165141F6285C2F962C554148E17A54BC165141EC51B89E9D2C5541DB5E7FD1BE165141DB762F8C9D2C5541DF2845BFC116514116CEFF1A9E2C5541B81E856BC21651413D0AD793A12C5541B2F050C8C516514173DA166FA02C5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000DF0000009A99997997165141000000D0572C55418FC2F52896165141AE47E1BA572C5541713D0A27941651418FC2F578572C55418FC2F56892165141AE47E1CA562C554152B81ED590165141D7A3709D592C55418FC2F5D88E1651410AD7A3E05B2C5541CDCCCC7C8D165141295C8F825B2C5541D7A3706D8C16514185EB51185C2C5541A4703D1A8A16514185EB51085E2C55417B14AE77871651413D0AD7035C2C55410AD7A35085165141666666A6582C5541C3F528BC82165141A4703DFA552C5541666666E67F165141713D0A074F2C5541F6285C2F8016514185EB51984B2C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983391 - 1414443
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000980000009A9999B9A6165141EC51B84E8B2C5541E17A14AEAD165141713D0A778C2C55418B808A82B2165141110D53568D2C55417916AD0FB41651411808A32D8B2C55419DC64B3EB6165141CAA4E9448B2C5541500F3AE1B6165141555B1CBF8B2C55410E2EFCC9B7165141E1E7227F8C2C554148E17AB4B7165141E17A144E8E2C55419A9999F9B9165141F6285C2F962C554148E17A54BC165141EC51B89E9D2C5541DB5E7FD1BE165141DB762F8C9D2C5541DF2845BFC116514116CEFF1A9E2C5541B81E856BC21651413D0AD793A12C5541B2F050C8C516514173DA166FA02C5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000DF0000009A99997997165141000000D0572C55418FC2F52896165141AE47E1BA572C5541713D0A27941651418FC2F578572C55418FC2F56892165141AE47E1CA562C554152B81ED590165141D7A3709D592C55418FC2F5D88E1651410AD7A3E05B2C5541CDCCCC7C8D165141295C8F825B2C5541D7A3706D8C16514185EB51185C2C5541A4703D1A8A16514185EB51085E2C55417B14AE77871651413D0AD7035C2C55410AD7A35085165141666666A6582C5541C3F528BC82165141A4703DFA552C5541666666E67F165141713D0A074F2C5541F6285C2F8016514185EB51984B2C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983391 - 3210130
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000980000009A9999B9A6165141EC51B84E8B2C5541E17A14AEAD165141713D0A778C2C55418B808A82B2165141110D53568D2C55417916AD0FB41651411808A32D8B2C55419DC64B3EB6165141CAA4E9448B2C5541500F3AE1B6165141555B1CBF8B2C55410E2EFCC9B7165141E1E7227F8C2C554148E17AB4B7165141E17A144E8E2C55419A9999F9B9165141F6285C2F962C554148E17A54BC165141EC51B89E9D2C5541DB5E7FD1BE165141DB762F8C9D2C5541DF2845BFC116514116CEFF1A9E2C5541B81E856BC21651413D0AD793A12C5541B2F050C8C516514173DA166FA02C5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000DF0000009A99997997165141000000D0572C55418FC2F52896165141AE47E1BA572C5541713D0A27941651418FC2F578572C55418FC2F56892165141AE47E1CA562C554152B81ED590165141D7A3709D592C55418FC2F5D88E1651410AD7A3E05B2C5541CDCCCC7C8D165141295C8F825B2C5541D7A3706D8C16514185EB51185C2C5541A4703D1A8A16514185EB51085E2C55417B14AE77871651413D0AD7035C2C55410AD7A35085165141666666A6582C5541C3F528BC82165141A4703DFA552C5541666666E67F165141713D0A074F2C5541F6285C2F8016514185EB51984B2C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983796 - 54011
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000270000001B75E7977FAC504118D0A7574659554116D594837FAC5041EB9A76F346595541B4EC177F7FAC50416684C36247595541993952577FAC50415598CA46485955413B1C5A4D7FAC5041D0CE389348595541168D96677EAC5041D6DB42A54D5955415330550A7EAC50418CCDECBB4F595541AD398E2581AC504175FEB71048595541CDE000DB80AC504152B58EB73F595541FB9991E27FAC504102B3FF7037595541B912655280AC504184A971292B59554162FF987C81AC5041C487B47B255955413DAD6DDD83AC5041BEFB041121595541BD9E14BD84AC504138444A451F595541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000474B2D377FAC5041FD20DED83759554165D0A0AD7FAC50412C2BEE373A5955412FFCA0B07FAC5041A10B4F473A59554125D658FB7FAC50412D8046593B595541E2B3B7ED7FAC5041620549AB3C59554113B8B7F17FAC5041CA705BD33C595541FDCD74E27FAC50419FE490C23D595541FDCD74E27FAC504144F9216F3E59554159098AE47FAC504147BF056742595541FDCD74E27FAC50410775598842595541FDCD74E27FAC5041AD4C7A8E4259554171DB69E07FAC5041F49D08A942595541BDDD37B47FAC50411B79286C455955418292219D7FAC5041E151B41346595541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983796 - 130851
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000270000001B75E7977FAC504118D0A7574659554116D594837FAC5041EB9A76F346595541B4EC177F7FAC50416684C36247595541993952577FAC50415598CA46485955413B1C5A4D7FAC5041D0CE389348595541168D96677EAC5041D6DB42A54D5955415330550A7EAC50418CCDECBB4F595541AD398E2581AC504175FEB71048595541CDE000DB80AC504152B58EB73F595541FB9991E27FAC504102B3FF7037595541B912655280AC504184A971292B59554162FF987C81AC5041C487B47B255955413DAD6DDD83AC5041BEFB041121595541BD9E14BD84AC504138444A451F595541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000474B2D377FAC5041FD20DED83759554165D0A0AD7FAC50412C2BEE373A5955412FFCA0B07FAC5041A10B4F473A59554125D658FB7FAC50412D8046593B595541E1B3B7ED7FAC5041620549AB3C59554113B8B7F17FAC5041CA705BD33C595541FDCD74E27FAC50419FE490C23D595541FDCD74E27FAC504144F9216F3E59554159098AE47FAC504147BF056742595541FDCD74E27FAC50410775598842595541FDCD74E27FAC5041AD4C7A8E4259554171DB69E07FAC5041F49D08A942595541BDDD37B47FAC50411B79286C455955418292219D7FAC5041E151B41346595541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>983796 - 329977
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000270000001B75E7977FAC504118D0A7574659554116D594837FAC5041EB9A76F346595541B4EC177F7FAC50416684C36247595541993952577FAC50415598CA46485955413B1C5A4D7FAC5041D0CE389348595541168D96677EAC5041D6DB42A54D5955415330550A7EAC50418CCDECBB4F595541AD398E2581AC504175FEB71048595541CDE000DB80AC504152B58EB73F595541FB9991E27FAC504102B3FF7037595541B912655280AC504184A971292B59554162FF987C81AC5041C487B47B255955413DAD6DDD83AC5041BEFB041121595541BD9E14BD84AC504138444A451F595541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000474B2D377FAC5041FD20DED83759554165D0A0AD7FAC50412C2BEE373A5955412FFCA0B07FAC5041A10B4F473A59554125D658FB7FAC50412D8046593B595541E1B3B7ED7FAC5041620549AB3C59554113B8B7F17FAC5041CA705BD33C595541FDCD74E27FAC50419FE490C23D595541FDCD74E27FAC504144F9216F3E59554159098AE47FAC504147BF056742595541FDCD74E27FAC50410775598842595541FDCD74E27FAC5041AD4C7A8E4259554171DB69E07FAC5041F49D08A942595541BDDD37B47FAC50411B79286C455955418292219D7FAC5041E151B41346595541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>628727 - 956391
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003A00000043779EE78DF45041F681E28C4D15554114AE475193F45041333333734E1555410243DCBE93F45041D8AB7A854E1555415C8FC23596F45041EC51B8EE4E1555418FC2F55899F4504152B81E854F1555411F85EB519BF4504148E17AB44F155541C3F5284C9DF4504148E17A044E155541F6285CAF9DF45041295C8F724A155541A4703D8A9DF450413D0AD753481555417B14AEC79CF450418FC2F50847155541AE47E17A9BF45041F6285C7F461555410AD7A3009AF450418FC2F5F8451555410AD7A3D098F450411F85EBA1451555413D0AD73397F4504185EB514845155541 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000004D000000963791B675F450412F83D4334A1555413574588474F45041D2AF08F449155541DD86C99E72F45041683F33AB49155541225D41746FF45041835701C948155541D9CFC3CF6CF4504169B4CB8148155541E20A20B269F45041ED8E77EA47155541A5B80FDC68F450418BA951C34715554116AA17D468F450418C2C5DAD47155541BB26A4D668F45041FDE653C24715554154F00AC968F45041474832B04715554193E3AD6D66F450412849728D461555412E3C0C365DF45041908B263144155541E97FF7E357F450412413873543155541C3F528BC57F45041713D0AE744155541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2735396 - 2951732
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001B0000005C8FC255D84351417B14AE4783985441EC51B84ED94351419A9999C984985441D7A3700DDA435141D7A370ED85985441F6285CBFE54351411F85EB217E985441AE47E1CAF3435141713D0AC775985441AE47E17AFD43514148E17A5470985441F6285C7F08445141C3F5287C6B9854413D0AD783134451410AD7A3206798544114AE47912044514114AE4761629854418FC2F5682244514114AE470167985441C3F5284C3F445141713D0A675D985441B81E85CB42445141295C8FF25B985441CDCCCC9C414451415C8FC2455698544148E17A7440445141F6285CCF50985441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004600000048C6A1ACE74351415C4C7CFC7C985441D673ECFBE5435141E86CE4FD7D98544137C160E2E543514116B8160D7E985441E691F1F3DA43514166C2375685985441B9E87310DA43514129884EF08598544147B013D2DF43514168AF90C68E985441C0B67FE8E943514177FA5A3F9E985441C8BA4D63EA4351415FC237F69E985441020D5462EC435141555B65759F985441C369C59CEF435141F0501FBF9D985441D056B78AF44351411D75021F9B98544139456DB1F9435141F0976D6098985441D5152470FC4351410B1AC8F596985441834FADB90244514144D811BF93985441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2735396 - 3603347
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001B0000005C8FC255D84351417B14AE4783985441EC51B84ED94351419A9999C984985441D7A3700DDA435141D7A370ED85985441F6285CBFE54351411F85EB217E985441AE47E1CAF3435141713D0AC775985441AE47E17AFD43514148E17A5470985441F6285C7F08445141C3F5287C6B9854413D0AD783134451410AD7A3206798544114AE47912044514114AE4761629854418FC2F5682244514114AE470167985441C3F5284C3F445141713D0A675D985441B81E85CB42445141295C8FF25B985441CDCCCC9C414451415C8FC2455698544148E17A7440445141F6285CCF50985441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004600000048C6A1ACE74351415C4C7CFC7C985441D673ECFBE5435141E86CE4FD7D98544137C160E2E543514116B8160D7E985441E691F1F3DA43514166C2375685985441B9E87310DA43514129884EF08598544147B013D2DF43514168AF90C68E985441C0B67FE8E943514177FA5A3F9E985441C8BA4D63EA4351415FC237F69E985441020D5462EC435141555B65759F985441C369C59CEF435141F0501FBF9D985441D056B78AF44351411D75021F9B98544139456DB1F9435141F0976D6098985441D5152470FC4351410B1AC8F596985441834FADB90244514144D811BF93985441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>279077 - 162347
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000230000000000001010F7504148E17A049C9454410AD7A3F007F75041E17A14DE97945441CDCCCC8C06F750418FC2F52897945441EC51B84E02F75041CDCCCCFC949454411F85EBE1FCF650418FC2F5389294544100000030FCF65041CDCCCCDC91945441AE47E12AF5F6504152B81E458E945441E17A14FEF3F65041F6285CAF8D945441B1CED7AAE4F650414F6DEBE28594544178E801CAE1F650410059B8528B945441F6285C1FF3F65041E17A145E94945441EC51B88E00F750418FC2F5589B945441EC51B85E0BF75041713D0AF7A094544152B81ED514F750411F85EBE1A5945441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000006937854D13F75041FE089C1ED1945441C6FEAE3313F7504130EFB753D19454415A16DB2E13F750419D830157D19454410CBA14F112F7504171529EC8D1945441C28451DA14F75041BEEA92BED2945441EFEA0FD917F750413C81F64FD49454412130C37118F75041E4861BB0D4945441897F920F1AF75041C2D24889D59454415C8FC2F51BF7504148E17AF4D194544177168B662CF75041EF13F92FB29454418ACA3CEA20F75041F6626A33AC945441481E83E920F75041AB6EB134AC9454418F50C5E520F75041EB83483BAC945441A57071E120F7504148EFE742AC945441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>279077 - 387839
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000230000000000001010F7504148E17A049C9454410AD7A3F007F75041E17A14DE97945441CDCCCC8C06F750418FC2F52897945441EC51B84E02F75041CDCCCCFC949454411F85EBE1FCF650418FC2F5389294544100000030FCF65041CDCCCCDC91945441AE47E12AF5F6504152B81E458E945441E17A14FEF3F65041F6285CAF8D945441B1CED7AAE4F650414F6DEBE28594544178E801CAE1F650410059B8528B945441F6285C1FF3F65041E17A145E94945441EC51B88E00F750418FC2F5589B945441EC51B85E0BF75041713D0AF7A094544152B81ED514F750411F85EBE1A5945441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000006937854D13F75041FE089C1ED1945441C6FEAE3313F7504130EFB753D19454415A16DB2E13F750419D830157D19454410CBA14F112F7504171529EC8D1945441C28451DA14F75041BEEA92BED2945441EFEA0FD917F750413C81F64FD49454412130C37118F75041E4861BB0D4945441897F920F1AF75041C2D24889D59454415C8FC2F51BF7504148E17AF4D194544177168B662CF75041EF13F92FB29454418ACA3CEA20F75041F6626A33AC945441481E83E920F75041AB6EB134AC9454418F50C5E520F75041EB83483BAC945441A57071E120F7504148EFE742AC945441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>828914 - 1258391
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001C000000BBAC51D37C3F51417A2B163B4EA75441C233BD097B3F5141DA90A63050A7544102A0BA2E723F5141FEC6B40853A75441B276C35F6B3F51412C0FF66956A754419A9999B9693F5141A4703DEA56A75441DCE1302C673F514164ABD81357A75441AE47E18A643F5141EC51B83E57A75441E7D035085D3F5141B7BE51E258A754418C335DD6523F5141FB7BDD0E5BA7544149DED6E24F3F5141196A8C0E5CA75441AD40496E493F51412372F1295EA75441E2C04493443F5141AE39FC3760A754410F3E1E243F3F5141C558E54163A75441A9D72F3E433F5141B31441FE66A75441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000220000001F85EBA1903F5141F6285CFF4DA75441295C8F027D3F51413D0AD7634EA75441F94B6AAC7C3F5141E2DBC7FA4EA75441425FD92D7B3F5141668B5CCE50A75441CC1E2E5C773F5141D4682E6252A754416DB4F560723F5141B392BB8B53A75441B05C2B77713F51418B55BFE053A754419929E8F46D3F51415256EBB955A754419239B8946D3F5141447C1C9257A75441EAE04D926E3F51418E49E3675AA75441750C11006D3F5141D80049055BA75441E2718354673F5141C4364A7D5CA754418451E411623F51413D0B870F5EA75441FE9C47BF5F3F514129BE3F3B5EA75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>828914 - 2398161
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001C000000BBAC51D37C3F51417A2B163B4EA75441C233BD097B3F5141DA90A63050A7544102A0BA2E723F5141FEC6B40853A75441B276C35F6B3F51412C0FF66956A754419A9999B9693F5141A4703DEA56A75441DCE1302C673F514164ABD81357A75441AE47E18A643F5141EC51B83E57A75441E7D035085D3F5141B7BE51E258A754418C335DD6523F5141FB7BDD0E5BA7544149DED6E24F3F5141196A8C0E5CA75441AD40496E493F51412372F1295EA75441E2C04493443F5141AE39FC3760A754410F3E1E243F3F5141C558E54163A75441A9D72F3E433F5141B31441FE66A75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000008FC2F5D8813F5141D7A370FD3AA75441D7A3706D813F51417B14AE473CA75441C3F528EC7F3F5141AE47E19A48A75441AE47E17A7E3F514114AE47214CA75441295C8FA27C3F51415C8FC2654EA75441295C8F027D3F51413D0AD7634EA754411F85EBA1903F5141F6285CFF4DA75441A1581A949A3F5141E9A3D9CC4DA754418A320C5A9E3F514134802B7F39A75441000000B0953F51413D0AD7E339A754418FC2F5D8813F5141D7A370FD3AA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>828914 - 3373570
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001C000000BBAC51D37C3F51417A2B163B4EA75441C233BD097B3F5141DA90A63050A7544102A0BA2E723F5141FEC6B40853A75441B276C35F6B3F51412C0FF66956A754419A9999B9693F5141A4703DEA56A75441DCE1302C673F514164ABD81357A75441AE47E18A643F5141EC51B83E57A75441E7D035085D3F5141B7BE51E258A754418C335DD6523F5141FB7BDD0E5BA7544149DED6E24F3F5141196A8C0E5CA75441AD40496E493F51412372F1295EA75441E2C04493443F5141AE39FC3760A754410F3E1E243F3F5141C558E54163A75441A9D72F3E433F5141B31441FE66A75441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000220000001F85EBA1903F5141F6285CFF4DA75441295C8F027D3F51413D0AD7634EA75441F94B6AAC7C3F5141E2DBC7FA4EA75441425FD92D7B3F5141668B5CCE50A75441CC1E2E5C773F5141D4682E6252A754416DB4F560723F5141B392BB8B53A75441B05C2B77713F51418B55BFE053A754419929E8F46D3F51415256EBB955A754419239B8946D3F5141447C1C9257A75441EAE04D926E3F51418E49E3675AA75441750C11006D3F5141D80049055BA75441E2718354673F5141C4364A7D5CA754418451E411623F51413D0B870F5EA75441FE9C47BF5F3F514129BE3F3B5EA75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>828914 - 5244993
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001C000000BBAC51D37C3F51417A2B163B4EA75441C233BD097B3F5141DA90A63050A7544102A0BA2E723F5141FEC6B40853A75441B276C35F6B3F51412C0FF66956A754419A9999B9693F5141A4703DEA56A75441DCE1302C673F514164ABD81357A75441AE47E18A643F5141EC51B83E57A75441E7D035085D3F5141B7BE51E258A754418C335DD6523F5141FB7BDD0E5BA7544149DED6E24F3F5141196A8C0E5CA75441AD40496E493F51412372F1295EA75441E2C04493443F5141AE39FC3760A754410F3E1E243F3F5141C558E54163A75441A9D72F3E433F5141B31441FE66A75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000008FC2F5D8813F5141D7A370FD3AA75441D7A3706D813F51417B14AE473CA75441C3F528EC7F3F5141AE47E19A48A75441AE47E17A7E3F514114AE47214CA75441295C8FA27C3F51415C8FC2654EA75441295C8F027D3F51413D0AD7634EA754411F85EBA1903F5141F6285CFF4DA75441A1581A949A3F5141E9A3D9CC4DA754418A320C5A9E3F514134802B7F39A75441000000B0953F51413D0AD7E339A754418FC2F5D8813F5141D7A370FD3AA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984054 - 1953224
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000370000000BB702580077504125902060F00E5541417C2F8C0277504157BB3D29F20E5541255126FD0877504182A01D11F70E5541C1B08AE00E7750416ED24F16FB0E55413A159C4813775041F9EEEB1FFE0E5541C0B8ACFE14775041476A6E7DFE0E55416CF631A816775041CCF8A3A6FE0E5541391BC8231A775041244BEBE0000F55414B2F7A711C775041072C4FFC020F554125A940221E7750416F8FC9D9050F5541145E1B7B1F775041C4214FE1070F5541482579CA227750415CBC0EB80A0F55413B6405C3247750416BF840B90C0F554121FBAAA228775041017053F1100F5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000030000000F6285C7F4C7750410AD7A300160F554185EB51484C77504100000040160F5541000000B04B7750410AD7A3F0160F554148E17A644B7750418FC2F548170F5541B81E852B4B775041AE47E18A170F5541333333F34977504152B81EF5180F5541CDCCCCCC49775041E17A141E190F554114AE470149775041A4703DFA190F5541CDCCCC9C48775041666666661A0F554166666616487750417B14AEF71A0F5541295C8F62477750419A9999B91B0F5541AE47E13A4777504152B81EE51B0F5541F6285CAF46775041AE47E17A1C0F5541713D0A3746775041CDCCCCFC1C0F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984054 - 4515745
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000370000000BB702580077504125902060F00E5541417C2F8C0277504157BB3D29F20E5541255126FD0877504182A01D11F70E5541C1B08AE00E7750416ED24F16FB0E55413A159C4813775041F9EEEB1FFE0E5541C0B8ACFE14775041476A6E7DFE0E55416CF631A816775041CCF8A3A6FE0E5541391BC8231A775041244BEBE0000F55414B2F7A711C775041072C4FFC020F554125A940221E7750416F8FC9D9050F5541145E1B7B1F775041C4214FE1070F5541482579CA227750415CBC0EB80A0F55413B6405C3247750416BF840B90C0F554121FBAAA228775041017053F1100F5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000030000000F6285C7F4C7750410AD7A300160F554185EB51484C77504100000040160F5541000000B04B7750410AD7A3F0160F554148E17A644B7750418FC2F548170F5541B81E852B4B775041AE47E18A170F5541333333F34977504152B81EF5180F5541CDCCCCCC49775041E17A141E190F554114AE470149775041A4703DFA190F5541CDCCCC9C48775041666666661A0F554166666616487750417B14AEF71A0F5541295C8F62477750419A9999B91B0F5541AE47E13A4777504152B81EE51B0F5541F6285CAF46775041AE47E17A1C0F5541713D0A3746775041CDCCCCFC1C0F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984052 - 54290
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000017000000018AB0195C3D5141AC3F9D0940AF544185EB5198413D5141000000803AAF54415D968268403D5141D4D474113BAF5441809E42DA3C3D51417719D79F42AF5441632140FA383D5141F393A8A04AAF5441E17A14CE313D51417B14AE3760AF544168633C1A2C3D5141661D04C075AF5441713D0A67283D5141C3F5287C85AF5441822570DE503D51417136DFDD7EAF5441F88A8D12513D51414BCC54AE7FAF54419DD4D703553D51412D667E6B9DAF54417026455A5D3D51415485109EA0AF5441EE0C0DD0613D514147FAD96AA3AF544116FE08C9703D514152B81E85B2AF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000600000054E9388D9C3D5141228C7CB1A6AF544159FE2DA3993D5141F76A173991AF54416BA9537C993D5141B9CED81A90AF544106331E60963D51411A32202590AF54411B7F6237993D51419D171FCCA6AF544154E9388D9C3D5141228C7CB1A6AF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2065756 - 1530305
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000032000000EC51B86EF0D8504185EB51F8A31355411F85EB81F1D85041E17A141EA7135541AE47E11AF2D8504152B81E65A8135541A4703DDAF5D85041D7A3704DA7135541295C8FD2F8D850417B14AEE7A5135541D7A3700DFCD85041295C8FA2A3135541F6285C6FFAD8504185EB51A89F13554148E17AA4F9D85041E17A14CE9C135541713D0A07F9D85041C3F528BC99135541333333A3F8D85041B81E850B97135541F6285C6FF8D85041AE47E10A941355415C8FC255F8D8504152B81ED58E135541EC51B86EF8D85041666666368B13554185EB51D8F8D8504114AE470187135541 [...]
+</a>
+
+<b>
+01060000000100000001030000000900000050000000334E3B9CEFD85041311F54F978135541E9461B25EFD850419DE887BE7A135541AC148C34EFD85041B020E87D7A135541ED95DE74EFD850413B3AAE7F79135541DB4D3B9CEFD85041091F54F978135541AE47E11AE7D8504185EB51E874135541AE47E17AE2D85041F6285C2F731355413D0AD733DDD85041AE47E15A71135541E17A146ED4D850410AD7A3706E1355410AD7A300CCD850418FC2F5C86B13554185EB5108CBD8504148E17A246E135541EC51B80ECAD85041A4703D3A70135541CDCCCC3CC8D8504152B81E0573135541209913B0C6D850412E70423075135541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2065756 - 3698515
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000032000000EC51B86EF0D8504185EB51F8A31355411F85EB81F1D85041E17A141EA7135541AE47E11AF2D8504152B81E65A8135541A4703DDAF5D85041D7A3704DA7135541295C8FD2F8D850417B14AEE7A5135541D7A3700DFCD85041295C8FA2A3135541F6285C6FFAD8504185EB51A89F13554148E17AA4F9D85041E17A14CE9C135541713D0A07F9D85041C3F528BC99135541333333A3F8D85041B81E850B97135541F6285C6FF8D85041AE47E10A941355415C8FC255F8D8504152B81ED58E135541EC51B86EF8D85041666666368B13554185EB51D8F8D8504114AE470187135541 [...]
+</a>
+
+<b>
+01060000000100000001030000000900000050000000334E3B9CEFD85041311F54F978135541E9461B25EFD850419DE887BE7A135541AC148C34EFD85041B020E87D7A135541ED95DE74EFD850413B3AAE7F79135541DB4D3B9CEFD85041091F54F978135541AE47E11AE7D8504185EB51E874135541AE47E17AE2D85041F6285C2F731355413D0AD733DDD85041AE47E15A71135541E17A146ED4D850410AD7A3706E1355410AD7A300CCD850418FC2F5C86B13554185EB5108CBD8504148E17A246E135541EC51B80ECAD85041A4703D3A70135541CDCCCC3CC8D8504152B81E0573135541209913B0C6D850412E70423075135541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968671 - 389154
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000390000004E36937314985041F7F8C6BF312154411462536F14985041B8D319A7312154419A9999A9109850413D0AD7D331215441C8677A7910985041304E19D33121544197482D590E98504118C598F6312154413D6770430E98504149BAB148312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A215441AA879E5B09985041031706272B215441968BF5CD089850414FCD423B2B2154412C7A0D27089850413FEBB2041D2154419A9999A9FA9750415C8FC2151F21544152B81E35FA97504166666636212154410AD7A390F9975041B81E853B24215441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000AE47E11A1098504148E17AA465215441E17A142E139850411F85EBE162215441F6285C9F17985041D7A3709D5E2154419A9999A91A985041000000105C215441A4703DAA1C9850415C8FC2E559215441A4703DAA199850417B14AEF754215441666666A6159850419A9999794F215441D7A3707D11985041A4703DFA4921544152B81E150E985041F6285C3F45215441D7A3700D0B9850413333335345215441EC51B88E0B985041A4703D8A422154418FC2F5580C9850418FC2F5D83F2154417B14AE170D985041D7A3704D3E2154411F85EB610E985041A4703D8A3D215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968671 - 389215
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000390000004E36937314985041F7F8C6BF312154411462536F14985041B8D319A7312154419A9999A9109850413D0AD7D331215441C8677A7910985041304E19D33121544197482D590E98504118C598F6312154413D6770430E98504149BAB148312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A215441AA879E5B09985041031706272B215441968BF5CD089850414FCD423B2B2154412C7A0D27089850413FEBB2041D2154419A9999A9FA9750415C8FC2151F21544152B81E35FA97504166666636212154410AD7A390F9975041B81E853B24215441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003500000048E17A942A985041AE47E1CA4E2154419A99992928985041295C8F124B215441713D0A5723985041B81E852B442154415C8FC2852F98504148E17A143C215441EC51B87E2D985041EC51B8AE332154415C8FC2052B985041C3F528AC29215441CDCCCC1C2B985041295C8FF226215441EC51B86E27985041B81E85EB1A215441EC51B83E239850413D0AD7E31B215441666666261E985041F6285C8F1D215441666666161D9850415C8FC2D519215441713D0A071B985041EC51B89E12215441666666261A985041666666360D215441666666461A98504152B81E8509215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968671 - 1817284
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000390000004E36937314985041F7F8C6BF312154411462536F14985041B8D319A7312154419A9999A9109850413D0AD7D331215441C8677A7910985041304E19D33121544197482D590E98504118C598F6312154413D6770430E98504149BAB148312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A215441AA879E5B09985041031706272B215441968BF5CD089850414FCD423B2B2154412C7A0D27089850413FEBB2041D2154419A9999A9FA9750415C8FC2151F21544152B81E35FA97504166666636212154410AD7A390F9975041B81E853B24215441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003500000048E17A942A985041AE47E1CA4E2154419A99992928985041295C8F124B215441713D0A5723985041B81E852B442154415C8FC2852F98504148E17A143C215441EC51B87E2D985041EC51B8AE332154415C8FC2052B985041C3F528AC29215441CDCCCC1C2B985041295C8FF226215441EC51B86E27985041B81E85EB1A215441EC51B83E239850413D0AD7E31B2154419AF7CCCC1E9850411BED79E71B215441666666161D9850415C8FC2D519215441713D0A071B985041EC51B89E12215441666666261A985041666666360D215441666666461A98504152B81E8509215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968671 - 3443061
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000390000004E36937314985041F7F8C6BF312154411462536F14985041B8D319A7312154419A9999A9109850413D0AD7D331215441C8677A7910985041304E19D33121544197482D590E98504118C598F6312154413D6770430E98504149BAB148312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A215441AA879E5B09985041031706272B215441968BF5CD089850414FCD423B2B2154412C7A0D27089850413FEBB2041D2154419A9999A9FA9750415C8FC2151F21544152B81E35FA97504166666636212154410AD7A390F9975041B81E853B24215441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003500000048E17A942A985041AE47E1CA4E2154419A99992928985041295C8F124B215441713D0A5723985041B81E852B442154415C8FC2852F98504148E17A143C215441EC51B87E2D985041EC51B8AE332154415C8FC2052B985041C3F528AC29215441CDCCCC1C2B985041295C8FF226215441EC51B86E27985041B81E85EB1A215441EC51B83E239850413D0AD7E31B2154419AF7CCCC1E9850411BED79E71B215441666666161D9850415C8FC2D519215441713D0A071B985041EC51B89E12215441666666261A985041666666360D215441666666461A98504152B81E8509215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984266 - 1150821
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000042000000961FF172605D51419F50EBE8314254417F2075AE615D51412E9F1BA0314254411DAB6EB9625D514189763DEB2F42544106ACF2F4635D51413662CE102F4254417FFBA6E7645D5141102789F82E425441ACD4D0A9655D5141A7139E592F42544142C1E50A665D5141459E976430425441483FD665665D5141F6EFBDB03142544131642FE0665D51414C111CD2314254410712FC38685D51414C111CD231425441A64146BE695D514131D25AE8314254417BEF12176B5D514155D9509A3242544167B28E956C5D5141F9023F6D334254419C299D016E5D5141DB65DEFE33425441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000042000000921FF172605D51419B50EBE8314254417E2075AE615D51412D9F1BA03142544119AB6EB9625D51418E763DEB2F42544105ACF2F4635D51413962CE102F42544182FBA6E7645D5141102789F82E425441AFD4D0A9655D5141A7139E592F42544145C1E50A665D5141429E976430425441473FD665665D5141FBEFBDB03142544131642FE0665D51414E111CD2314254410A12FC38685D51414E111CD231425441A34146BE695D514134D25AE8314254417CEF12176B5D514157D9509A324254416BB28E956C5D5141F5023F6D334254419C299D016E5D5141DC65DEFE33425441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984266 - 3944990
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000042000000961FF172605D51419F50EBE8314254417F2075AE615D51412E9F1BA0314254411DAB6EB9625D514189763DEB2F42544106ACF2F4635D51413662CE102F4254417FFBA6E7645D5141102789F82E425441ACD4D0A9655D5141A7139E592F42544142C1E50A665D5141459E976430425441483FD665665D5141F6EFBDB03142544131642FE0665D51414C111CD2314254410712FC38685D51414C111CD231425441A64146BE695D514131D25AE8314254417BEF12176B5D514155D9509A3242544167B28E956C5D5141F9023F6D334254419C299D016E5D5141DB65DEFE33425441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000042000000921FF172605D51419B50EBE8314254417E2075AE615D51412D9F1BA03142544119AB6EB9625D51418E763DEB2F42544105ACF2F4635D51413962CE102F42544182FBA6E7645D5141102789F82E425441AFD4D0A9655D5141A7139E592F42544145C1E50A665D5141429E976430425441473FD665665D5141FBEFBDB03142544131642FE0665D51414E111CD2314254410A12FC38685D51414E111CD231425441A34146BE695D514134D25AE8314254417CEF12176B5D514157D9509A324254416BB28E956C5D5141F5023F6D334254419C299D016E5D5141DC65DEFE33425441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>160669 - 160887
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C000000BAF3068E8B405141DB2278360B1B554174A6BB6E8C4051418170EE070D1B55414F2F27AC8D4051418A1AF1DE0E1B55418DCE1A108F4051410ACD20EF101B5541B2655A8F93405141F5A4A758151B554180F0256A99405141FE38CA2E1A1B5541152B190DA140514105834E1F201B5541F877B0AFA34051412086AB8F221B5541D7A370EDAF405141B81E858B1A1B554152B81EA5CC4051411F85EBA1071B5541B81E857BC84051417B14AE37FD1A55418FC2F5A8B7405141713D0AC7D31A55411F85EB21B140514114AE4781C31A55417B14AEE789405141AE47E1BAD81A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000F877B0AFA34051412086AB8F221B55419234EA6CA1405141DD33FD77201B5541BBC5EEFF994051414CFB49A31A1B554180F0256A99405141FE38CA2E1A1B5541B2655A8F93405141F5A4A758151B55418DCE1A108F4051410ACD20EF101B55414F2F27AC8D4051418A1AF1DE0E1B554174A6BB6E8C4051418170EE070D1B55415FF6068E8B405141502878360B1B5541D7896C398B4051415A81E1870A1B554122BFA3B789405141DCA1BE99071B5541E7EDBE81894051414EEA8DFC061B55412D597F108840514155F60367041B5541960BE363874051414D7DAACB031B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>160669 - 1385160
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C000000BAF3068E8B405141DB2278360B1B554174A6BB6E8C4051418170EE070D1B55414F2F27AC8D4051418A1AF1DE0E1B55418DCE1A108F4051410ACD20EF101B5541B2655A8F93405141F5A4A758151B554180F0256A99405141FE38CA2E1A1B5541152B190DA140514105834E1F201B5541F877B0AFA34051412086AB8F221B5541D7A370EDAF405141B81E858B1A1B554152B81EA5CC4051411F85EBA1071B5541B81E857BC84051417B14AE37FD1A55418FC2F5A8B7405141713D0AC7D31A55411F85EB21B140514114AE4781C31A55417B14AEE789405141AE47E1BAD81A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000F877B0AFA34051412086AB8F221B55419234EA6CA1405141DD33FD77201B5541BBC5EEFF994051414CFB49A31A1B554180F0256A99405141FE38CA2E1A1B5541B2655A8F93405141F5A4A758151B55418DCE1A108F4051410ACD20EF101B55414F2F27AC8D4051418A1AF1DE0E1B554174A6BB6E8C4051418170EE070D1B55415FF6068E8B405141502878360B1B5541D7896C398B4051415A81E1870A1B554122BFA3B789405141DCA1BE99071B5541E7EDBE81894051414EEA8DFC061B554131597F10884051415AF60367041B5541930BE363874051414C7DAACB031B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>160669 - 4101820
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C000000BAF3068E8B405141DB2278360B1B554174A6BB6E8C4051418170EE070D1B55414F2F27AC8D4051418A1AF1DE0E1B55418DCE1A108F4051410ACD20EF101B5541B2655A8F93405141F5A4A758151B554180F0256A99405141FE38CA2E1A1B5541152B190DA140514105834E1F201B5541F877B0AFA34051412086AB8F221B5541D7A370EDAF405141B81E858B1A1B554152B81EA5CC4051411F85EBA1071B5541B81E857BC84051417B14AE37FD1A55418FC2F5A8B7405141713D0AC7D31A55411F85EB21B140514114AE4781C31A55417B14AEE789405141AE47E1BAD81A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000F877B0AFA34051412086AB8F221B55419234EA6CA1405141DD33FD77201B5541BBC5EEFF994051414CFB49A31A1B554180F0256A99405141FE38CA2E1A1B5541B2655A8F93405141F5A4A758151B55418DCE1A108F4051410ACD20EF101B55414F2F27AC8D4051418A1AF1DE0E1B554174A6BB6E8C4051418170EE070D1B55415FF6068E8B405141502878360B1B5541D7896C398B4051415A81E1870A1B554122BFA3B789405141DCA1BE99071B5541E7EDBE81894051414EEA8DFC061B554131597F10884051415AF60367041B5541930BE363874051414C7DAACB031B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>959841 - 130490
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000438CE8C649B1504140DA3897AA4A55416F0200E049B150416C60E949AB4A5541000000C049B15041713D0A17AA4A5541AE7862BF49B15041140D9143AA4A554185EB516846B1504185EB5198924A55410AD7A32037B150415C8FC225904A5541AE47E1DA34B1504114AE4711A44A55410EEB198933B15041A46A6040AC4A55414C17A4D633B1504147337F3EAC4A55416C79461834B15041A1DEE73CAC4A554167DCEFDC49B15041F997CFB5AB4A5541438CE8C649B1504140DA3897AA4A5541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000392842F733B15041B9701E95A94A554140FA439633B15041AD62B9EEAB4A554140FA439633B15041C6860F37AC4A55414A596DA733B150415636A43FAC4A55414C17A4D633B1504147337F3EAC4A55416C79461834B15041A1DEE73CAC4A554176E0B9AD3BB15041BB1BD70DAC4A5541633F30DC49B150416DBA12ACAB4A554159E85CC949B1504150BB27B7AA4A5541493E82C149B15041DC7AD57CAA4A5541FB42A34047B15041A5803695984A5541E34CBA3C47B1504137638179984A554144C67E6D46B15041273DFEBC924A55418B0D296446B15041625AA797924A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>959841 - 329661
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000438CE8C649B1504140DA3897AA4A55416F0200E049B150416C60E949AB4A5541000000C049B15041713D0A17AA4A5541AE7862BF49B15041140D9143AA4A554185EB516846B1504185EB5198924A55410AD7A32037B150415C8FC225904A5541AE47E1DA34B1504114AE4711A44A55410EEB198933B15041A46A6040AC4A55414C17A4D633B1504147337F3EAC4A55416C79461834B15041A1DEE73CAC4A554167DCEFDC49B15041F997CFB5AB4A5541438CE8C649B1504140DA3897AA4A5541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000392842F733B15041B9701E95A94A554140FA439633B15041AD62B9EEAB4A554140FA439633B15041C6860F37AC4A55414A596DA733B150415636A43FAC4A55414C17A4D633B1504147337F3EAC4A55416C79461834B15041A1DEE73CAC4A554176E0B9AD3BB15041BB1BD70DAC4A5541633F30DC49B150416DBA12ACAB4A554159E85CC949B1504150BB27B7AA4A5541493E82C149B15041DC7AD57CAA4A5541FB42A34047B15041A5803695984A5541E34CBA3C47B1504137638179984A554144C67E6D46B15041273DFEBC924A55418B0D296446B15041625AA797924A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>8673 - 2002412
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000B000000C57C285BE95651419993F97DAA655441F2A7F66AF35651417E7F582AB1655441CDCCCCDCF7565141E17A14FEA46554410AD7A360FB565141D7A3705D9B6554417B14AE17F8565141E17A142E996554413D0AD7B3F3565141713D0A47956554415C8FC2A5F15651415C8FC25592655441295C8F72EC56514114AE47219D6554418FC2F528E856514185EB5108A6655441333333A3EA565141AE47E13AA7655441C57C285BE95651419993F97DAA65544101030000000100000004000000CC3B7576F35651415033662FB16554411C63E571F35651413C61EE2EB1655441D1072A [...]
+</a>
+
+<b>
+010600000001000000010300000001000000120000000AD7A3A00157514152B81E95B26554410AD7A33009575141EC51B84EB36554411F85EBB10B575141B81E85FBAF655441AE47E14A0E575141EC51B84EAD6554413D0AD7A314575141666666D6A76554417B14AEC715575141295C8F42A565544185EB51E80D57514152B81ED5A565544152B81EB502575141EC51B8FEA2655441333333030457514185EB51689F655441666666560357514185EB51289D65544114AE47D101575141333333A39B65544114AE47F1FD565141713D0AF799655441A4703DEAFB5651410AD7A3E0996554410AD7A360FB565141D7A3705D9B655441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>8673 - 4552771
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000B000000C57C285BE95651419993F97DAA655441F2A7F66AF35651417E7F582AB1655441CDCCCCDCF7565141E17A14FEA46554410AD7A360FB565141D7A3705D9B6554417B14AE17F8565141E17A142E996554413D0AD7B3F3565141713D0A47956554415C8FC2A5F15651415C8FC25592655441295C8F72EC56514114AE47219D6554418FC2F528E856514185EB5108A6655441333333A3EA565141AE47E13AA7655441C57C285BE95651419993F97DAA65544101030000000100000004000000CC3B7576F35651415033662FB16554411C63E571F35651413C61EE2EB1655441D1072A [...]
+</a>
+
+<b>
+010600000001000000010300000001000000120000000AD7A3A00157514152B81E95B26554410AD7A33009575141EC51B84EB36554411F85EBB10B575141B81E85FBAF655441AE47E14A0E575141EC51B84EAD6554413D0AD7A314575141666666D6A76554417B14AEC715575141295C8F42A565544185EB51E80D57514152B81ED5A565544152B81EB502575141EC51B8FEA2655441333333030457514185EB51689F655441666666560357514185EB51289D65544114AE47D101575141333333A39B65544114AE47F1FD565141713D0AF799655441A4703DEAFB5651410AD7A3E0996554410AD7A360FB565141D7A3705D9B655441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984467 - 553004
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000005A3915BD7BE15041D655D776CDF0544162E75C9E7CE150410360AE7ACEF0544133FA7B4C9FE15041070764FFCEF05441E88ACD1BAEE15041BB55D736CFF05441D4DC851AAFE15041F95FAE3ACEF054416334BF18AFE15041AFDC3DB4C8F054417DF642A4ADE1504127EF874DC3F0544112589AA8AAE1504124041FF8BAF05441E440348F95E15041FADE4CA9BAF054415043ECC07DE150415B890A4ABAF054415A3915BD7BE15041D655D776CDF05441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000007B14AE7780E15041C3F5286CA0F05441B81E85CB7FE15041A4703DDAA6F054410AD7A3C07DE150419A999949BAF05441E17A146E96E15041CDCCCCACBAF0544185EB51A8AAE150417B14AEF7BAF05441F6285CDFA4E15041F6285CDFABF054415C8FC275A0E15041F6285CEFA0F05441B81E85DB9AE150418FC2F51895F05441666666B681E150413D0AD7B394F054417B14AE7780E15041C3F5286CA0F05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984467 - 2922594
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000005A3915BD7BE15041D655D776CDF0544162E75C9E7CE150410360AE7ACEF0544133FA7B4C9FE15041070764FFCEF05441E88ACD1BAEE15041BB55D736CFF05441D4DC851AAFE15041F95FAE3ACEF054416334BF18AFE15041AFDC3DB4C8F054417DF642A4ADE1504127EF874DC3F0544112589AA8AAE1504124041FF8BAF05441E440348F95E15041FADE4CA9BAF054415043ECC07DE150415B890A4ABAF054415A3915BD7BE15041D655D776CDF05441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000B81E85CB7FE15041A4703DDAA6F054410AD7A3C07DE150419A999949BAF05441E17A146E96E15041CDCCCCACBAF0544185EB51A8AAE150417B14AEF7BAF05441F6285CDFA4E15041F6285CDFABF054415C8FC275A0E15041F6285CEFA0F05441EC51B8CE97E15041C3F528CCA0F054417B14AE7780E15041C3F5286CA0F05441B81E85CB7FE15041A4703DDAA6F05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984467 - 3701122
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000005A3915BD7BE15041D655D776CDF0544162E75C9E7CE150410360AE7ACEF0544133FA7B4C9FE15041070764FFCEF05441E88ACD1BAEE15041BB55D736CFF05441D4DC851AAFE15041F95FAE3ACEF054416334BF18AFE15041AFDC3DB4C8F054417DF642A4ADE1504127EF874DC3F0544112589AA8AAE1504124041FF8BAF05441E440348F95E15041FADE4CA9BAF054415043ECC07DE150415B890A4ABAF054415A3915BD7BE15041D655D776CDF05441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000B81E85CB7FE15041A4703DDAA6F054410AD7A3C07DE150419A999949BAF05441E17A146E96E15041CDCCCCACBAF0544185EB51A8AAE150417B14AEF7BAF05441F6285CDFA4E15041F6285CDFABF054415C8FC275A0E15041F6285CEFA0F05441EC51B8CE97E15041C3F528CCA0F054417B14AE7780E15041C3F5286CA0F05441B81E85CB7FE15041A4703DDAA6F05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>229996 - 501987
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000027000000333333B370E9504114AE4781FA3054415C8FC2256CE95041B81E856BFA305441AE47E10A6AE95041AE47E12AFA30544185EB515867E950419A9999A9F9305441D7A370FD64E9504166666686F9305441B452099B64E95041BB6D899CF73054417F87727462E9504119125F33F7305441EFAB30E860E95041CA896616F73054414F23AEFF5CE95041289883E7F73054418E8DEC495BE9504191DC9CACF8305441983052035AE95041BB3FA3C7F83054416F7011F557E950412379797AF8305441118D924757E950415AD98575F8305441DAD1DACB55E950410377B98FF9305441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003E0000001F85EBC17AE95041295C8F22EE3054417B14AEC77AE95041000000A0ED305441B81E85CB7AE95041CDCCCC4CED305441CDCCCC3C7BE950410AD7A310EA305441C3F528BC7BE95041F6285C9FE53054413D0AD7E37BE950411F85EB61E03054415C8FC2457AE95041CDCCCC3CE03054413333332379E9504100000030E03054410AD7A3E077E95041CDCCCC1CE03054419A99990976E9504100000030E030544114AE472175E95041EC51B81EE13054419A99994970E95041B81E855BE2305441C3F5281C67E9504100000090E2305441A4703DDA66E95041EC51B82EDE305441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>229996 - 1159093
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000027000000333333B370E9504114AE4781FA3054415C8FC2256CE95041B81E856BFA305441AE47E10A6AE95041AE47E12AFA30544185EB515867E950419A9999A9F9305441D7A370FD64E9504166666686F9305441B452099B64E95041BB6D899CF73054417F87727462E9504119125F33F7305441EFAB30E860E95041CA896616F73054414F23AEFF5CE95041289883E7F73054418E8DEC495BE9504191DC9CACF8305441983052035AE95041BB3FA3C7F83054416F7011F557E950412379797AF8305441118D924757E950415AD98575F8305441DAD1DACB55E950410377B98FF9305441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003E0000001F85EBC17AE95041295C8F22EE3054417B14AEC77AE95041000000A0ED305441B81E85CB7AE95041CDCCCC4CED305441CDCCCC3C7BE950410AD7A310EA305441C3F528BC7BE95041F6285C9FE53054413D0AD7E37BE950411F85EB61E03054415C8FC2457AE95041CDCCCC3CE03054413333332379E9504100000030E03054410AD7A3E077E95041CDCCCC1CE03054419A99990976E9504100000030E030544114AE472175E95041EC51B81EE13054419A99994970E95041B81E855BE2305441C3F5281C67E9504100000090E2305441A4703DDA66E95041EC51B82EDE305441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>229996 - 3951689
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000027000000333333B370E9504114AE4781FA3054415C8FC2256CE95041B81E856BFA305441AE47E10A6AE95041AE47E12AFA30544185EB515867E950419A9999A9F9305441D7A370FD64E9504166666686F9305441B452099B64E95041BB6D899CF73054417F87727462E9504119125F33F7305441EFAB30E860E95041CA896616F73054414F23AEFF5CE95041289883E7F73054418E8DEC495BE9504191DC9CACF8305441983052035AE95041BB3FA3C7F83054416F7011F557E950412379797AF8305441118D924757E950415AD98575F8305441DAD1DACB55E950410377B98FF9305441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003E0000001F85EBC17AE95041295C8F22EE3054417B14AEC77AE95041000000A0ED305441B81E85CB7AE95041CDCCCC4CED305441CDCCCC3C7BE950410AD7A310EA305441C3F528BC7BE95041F6285C9FE53054413D0AD7E37BE950411F85EB61E03054415C8FC2457AE95041CDCCCC3CE03054413333332379E9504100000030E03054410AD7A3E077E95041CDCCCC1CE03054419A99990976E9504100000030E030544114AE472175E95041EC51B81EE13054419A99994970E95041B81E855BE2305441C3F5281C67E9504100000090E2305441A4703DDA66E95041EC51B82EDE305441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987366 - 144003
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C00000085EB510884DD504185EB51D8A2C25441F6285CBF82DD50418FC2F5B896C254411F85EB5179DD5041EC51B88E9AC25441CDCCCC0C74DD50418FC2F5489CC25441E17A149E6FDD5041B81E851B9DC25441B81E855B67DD5041E17A14DE9DC254413333332364DD5041E17A144E9EC25441295C8F725FDD50417B14AE579FC25441666666A65FDD50415C8FC2B5ABC254417B14AE776FDD504152B81EC5A8C25441A4703D7A83DD5041EC51B80EA3C2544185EB510884DD504185EB51D8A2C25441
+</a>
+
+<b>
+010600000001000000010300000001000000170000007F956CD265DD504100617D139EC2544114E0669063DD504127D38D6E9EC25441FCBDFB735FDD50415BFB6D5C9FC25441666666A65FDD50415C8FC2B5ABC254417B14AE776FDD504152B81EC5A8C2544181E2377573DD5041152B7DA1A7C254418CA6CEC873DD50414633A089A7C2544154DC596876DD50413175E9C9A6C254416B6F889E82DD50416145714DA3C254415041AA0584DD5041E50F46BFA2C254413EF5474983DD5041314E16CE9BC254413F35DE3883DD5041109E3F339BC254415FF74EC282DD5041B37DC6D496C25441C79B7EFD7CDD5041D100831099C25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984551 - 55419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000064ACCC671FC5041688834479D945441690F7AB871FC5041FFB4694C9D945441446014B871FC5041A23B24529D9454419F67126074FC504157137AA29C945441BE55102A77FC50415AB77AC59B945441C3F528EC77FC5041666666869B9454411F85EB5179FC5041E17A14BE8494544173914C5279FC5041C797F9B7849454412A9C4F9473FC5041B6E9BA4B839454413FF2FB8873FC5041CBDCF63683945441EE50818773FC5041442A7336839454410746710272FC504152D7AA2A98945441064ACCC671FC504128A7104F9C945441064ACCC671FC504105617A5B9C945441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000003FF2FB8873FC5041CBDCF636839454419C97C06773FC50416393660085945441BCEBE74572FC50412515838894945441BEB272F771FC5041542B22EE989454418925D4CA71FC5041CDA067079C945441064ACCC671FC5041A00FB4699C945441064ACCC671FC50411C5B13739C945441A1E26DC071FC5041F36BC6CE9C9454419647DEB871FC5041534EC4469D945441B497C9B971FC5041CBEBB7469D9454413C33A5BC71FC5041142AE9459D945441064ACCC671FC50416BA50A439D945441064ACCC671FC5041688834479D945441CDE319C271FC5041DAC4E9489D945441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>106289 - 3096391
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000005100000014AE47E1A6185141333333D3648954418FC2F598A9185141A4703D9A6A895441E17A14BEAB1851410AD7A350708954418FC2F598AC185141CDCCCC5C728954418FC2F528AD185141D7A370BD7389544166666676B6185141CDCCCCBC6F89544114AE4741BB185141666666366E895441666666A6BB18514152B81E656F895441CDCCCC1CBE18514114AE47E170895441CDCCCC4CC018514152B81E357289544148E17AA4C218514114AE470174895441CDCCCC9CC518514152B81E95768954415C8FC2B5CF185141AE47E1DA71895441000000F0D018514185EB51B871895441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D1552B9EDF1851416199AC134D89544199438E86EE18514192BAA9516A895441334B2569F0185141E2D5499169895441F72FBDB2F51851414F3417CE67895441D9091095F8185141F4624FCA668954418FE8D688FC185141E85C7E7465895441BD565D3EFE185141405967A764895441028F7D5DFF18514155BB4BB1638954415DFE605701195141F94B68B76189544104A9B59F08195141333401D35A895441A3DA127303195141B75EF478548954418586F27EFD185141864925974A8954417BF63F4FF4185141CDF43F7D4E8954416004CBD1F11851415AA4A2B049895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>106289 - 3440494
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000005100000014AE47E1A6185141333333D3648954418FC2F598A9185141A4703D9A6A895441E17A14BEAB1851410AD7A350708954418FC2F598AC185141CDCCCC5C728954418FC2F528AD185141D7A370BD7389544166666676B6185141CDCCCCBC6F89544114AE4741BB185141666666366E895441666666A6BB18514152B81E656F895441CDCCCC1CBE18514114AE47E170895441CDCCCC4CC018514152B81E357289544148E17AA4C218514114AE470174895441CDCCCC9CC518514152B81E95768954415C8FC2B5CF185141AE47E1DA71895441000000F0D018514185EB51B871895441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D1552B9EDF1851416199AC134D89544199438E86EE18514192BAA9516A895441334B2569F0185141E2D5499169895441F72FBDB2F51851414F3417CE67895441D9091095F8185141F4624FCA668954418FE8D688FC185141E85C7E7465895441BD565D3EFE185141405967A764895441028F7D5DFF18514155BB4BB1638954415DFE605701195141F94B68B76189544104A9B59F08195141333401D35A895441A3DA127303195141B75EF478548954418586F27EFD185141864925974A8954417BF63F4FF4185141CDF43F7D4E8954416004CBD1F11851415AA4A2B049895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>363394 - 363389
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000012000000BB518E883EAF50410300EE336B3D5441DAA45E583BAF50414D2E7FB16B3D54414A0F824F3AAF5041958CBBE6733D544129E4C83D38AF5041F59A4E97743D5441CD6A671A36AF5041BA087474823D5441E61FC1EE44AF50418AF4C2A0873D5441E74600C078AF50414503F679803D54413547987D75AF5041D455C68E7D3D5441418E6D0C75AF5041335139CB7B3D54415330DC2254AF50414E25534D7B3D5441807218364FAF5041BAA152AE843D54410C0501D547AF504177A0DAFC7A3D5441FCAD7E6144AF5041D2DA63F8733D54417A74329F41AF5041F9E64ABA6A3D5441 [...]
+</a>
+
+<b>
+0106000000020000000103000000020000004E00000064AE37E969AF504178D83F86823D54413E6E544545AF50413617D094873D5441A2691EE048AF5041330B7310933D544177C6F84852AF50417CA19A9D953D54414FD8BD4A57AF5041E139000EA23D54411706E6645DAF50410ECD4B8CA83D5441D3C13F0B64AF504147D2657EAE3D5441F3196A196CAF5041775C3DAEAF3D54412171B98873AF50411E44690BA63D54410823EDF979AF50416E7B91AAA63D5441691978E575AF5041C033A9CAB63D5441F647F8057CAF5041A23E7574B93D544190255B177CAF50411B0347F7B83D5441FF6E9BA47BAF5041DA241331B83D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>363389 - 363394
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000020000004E00000064AE37E969AF504178D83F86823D54413E6E544545AF50413617D094873D5441A2691EE048AF5041330B7310933D544177C6F84852AF50417CA19A9D953D54414FD8BD4A57AF5041E139000EA23D54411706E6645DAF50410ECD4B8CA83D5441D3C13F0B64AF504147D2657EAE3D5441F3196A196CAF5041775C3DAEAF3D54412171B98873AF50411E44690BA63D54410823EDF979AF50416E7B91AAA63D5441691978E575AF5041C033A9CAB63D5441F647F8057CAF5041A23E7574B93D544190255B177CAF50411B0347F7B83D5441FF6E9BA47BAF5041DA241331B83D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BB518E883EAF50410300EE336B3D5441DAA45E583BAF50414D2E7FB16B3D54414A0F824F3AAF5041958CBBE6733D544129E4C83D38AF5041F59A4E97743D5441CD6A671A36AF5041BA087474823D5441E61FC1EE44AF50418AF4C2A0873D5441E74600C078AF50414503F679803D54413547987D75AF5041D455C68E7D3D5441418E6D0C75AF5041335139CB7B3D54415330DC2254AF50414E25534D7B3D5441807218364FAF5041BAA152AE843D54410C0501D547AF504177A0DAFC7A3D5441FCAD7E6144AF5041D2DA63F8733D54417A74329F41AF5041F9E64ABA6A3D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>291854 - 1413171
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000018000000EEBCA2459C0351419B0DE671001E5541F2521A2E9D035141CCFEAB35FE1D55419AF25D3B9E035141FCA655C1FE1D55412B8716449E03514105A312B2FE1D5541CDCCCCCC950351413D0AD703FA1D5541CDCCCC1C8B03514148E17AD4F31D5541C3F528BC860351411F85EB71F11D55413D0AD7B38303514114AE4711F01D5541666666368203514185EB5188EF1D5541666666267E03514100000080EE1D554148E17AB47A0351417B14AE47F41D554148E17AA47C035141713D0AA7F41D5541295C8F927E0351415C8FC2F5F41D5541295C8F6280035141CDCCCC6CF51D5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000DBCA83DC9A035141963D6D26041E554100000060A1035141CDCCCCAC071E5541D7A370BDA6035141CDCCCCCC0A1E554166666636AA0351419A9999890C1E554185EB5168AC0351410AD7A3A00D1E55410AD7A330B5035141AE47E1DA0B1E554114AE4761B00351417B14AEC7071E55417B14AEE7AA0351415C8FC2E5041E5541AE47E13AA40351411F85EBB1011E554122F25D3B9E035141BEA655C1FE1D554185467F2B9D03514100F6153CFE1D5541EEBCA2459C0351419B0DE671001E55411192E0279C0351414B636AAD001E5541C31DFBD69B035141E2CC4E70011E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>291854 - 3586166
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000018000000EEBCA2459C0351419B0DE671001E5541F2521A2E9D035141CCFEAB35FE1D55419AF25D3B9E035141FCA655C1FE1D55412B8716449E03514105A312B2FE1D5541CDCCCCCC950351413D0AD703FA1D5541CDCCCC1C8B03514148E17AD4F31D5541C3F528BC860351411F85EB71F11D55413D0AD7B38303514114AE4711F01D5541666666368203514185EB5188EF1D5541666666267E03514100000080EE1D554148E17AB47A0351417B14AE47F41D554148E17AA47C035141713D0AA7F41D5541295C8F927E0351415C8FC2F5F41D5541295C8F6280035141CDCCCC6CF51D5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000DBCA83DC9A035141963D6D26041E554100000060A1035141CDCCCCAC071E5541D7A370BDA6035141CDCCCCCC0A1E554166666636AA0351419A9999890C1E554185EB5168AC0351410AD7A3A00D1E55410AD7A330B5035141AE47E1DA0B1E554114AE4761B00351417B14AEC7071E55417B14AEE7AA0351415C8FC2E5041E5541AE47E13AA40351411F85EBB1011E554122F25D3B9E035141BEA655C1FE1D554185467F2B9D03514100F6153CFE1D5541EEBCA2459C0351419B0DE671001E55411192E0279C0351414B636AAD001E5541C31DFBD69B035141E2CC4E70011E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>938628 - 2923536
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000007000000510200002E11F7ABEC44514175169BCFD02F54414AE35D96ED44514148535409D22F544116C5A752EE445141DACD43FAD22F5441FD668810F04451416152F232D42F54414F3D5D41F344514177A5C46FD62F5441F467B60CF6445141EE226C65D82F5441C195C913F8445141597C6FD1D92F54411361478AFA4451419DF7948BDB2F54410E410A98FC4451411948F6D9DC2F54418047D258044551414C51CDBBCA2F5441BE67825B10455141DFBA5223B72F54414BE4E5F51C455141E9DCB3F6AF2F54418576DE6B25455141A3EA29D2AA2F5441666666062945514100000020A82F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000006000000FD010000B8D1780FAF445141EF2DDA8F382F5441FF3093BEAE4451416494F2A7372F54419A9999F9B744514148E17A94372F54419A999979B9445141C3F5283C372F54410AD7A3E0B94451417B14AE27362F5441333333B3B24451415C8FC2D5302F54413D0AD703AA4451415C8FC2F52A2F54419A999969A944514148E17AB4292F5441A4703DAAA944514100000000282F544148E17A94AD445141E17A147E262F5441F6285CEFAE445141D7A370BD252F544152B81EB5B44451413D0AD793222F5441CDCCCC2CB94451418FC2F538212F5441C3F528CCBE44514152B81EC5202F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>938628 - 3201913
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000007000000510200002E11F7ABEC44514175169BCFD02F54414AE35D96ED44514148535409D22F544116C5A752EE445141DACD43FAD22F5441FD668810F04451416152F232D42F54414F3D5D41F344514177A5C46FD62F5441F467B60CF6445141EE226C65D82F5441C195C913F8445141597C6FD1D92F54411361478AFA4451419DF7948BDB2F54410E410A98FC4451411948F6D9DC2F54418047D258044551414C51CDBBCA2F5441BE67825B10455141DFBA5223B72F54414BE4E5F51C455141E9DCB3F6AF2F54418576DE6B25455141A3EA29D2AA2F5441666666062945514100000020A82F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000006000000FD010000B8D1780FAF445141EF2DDA8F382F5441FF3093BEAE4451416494F2A7372F54419A9999F9B744514148E17A94372F54419A999979B9445141C3F5283C372F54410AD7A3E0B94451417B14AE27362F5441333333B3B24451415C8FC2D5302F54413D0AD703AA4451415C8FC2F52A2F54419A999969A944514148E17AB4292F5441A4703DAAA944514100000000282F544148E17A94AD445141E17A147E262F5441F6285CEFAE445141D7A370BD252F544152B81EB5B44451413D0AD793222F5441CDCCCC2CB94451418FC2F538212F5441C3F528CCBE44514152B81EC5202F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985290 - 159967
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000033000000713D0AC7DF1D5141A4703D8A1C3C5441CDCCCC9CE01D514152B81E251D3C5441E17A14CEE21D5141B81E85BB1E3C5441AE47E1DAE41D51415C8FC2D51F3C54415C8FC295E81D5141D7A370AD213C544114AE47C1EB1D5141B81E85BB223C5441E17A14DEED1D51411F85EB81223C544166666626EF1D514114AE4721223C5441EC51B80EF01D514133333373213C5441D7A3700DF11D51410AD7A3F01E3C54413D0AD7F3F01D51415C8FC2551B3C5441F6285CBFF01D514185EB5158153C5441713D0A27E81D5141CDCCCC8C0E3C544100000010DE1D5141CDCCCCCC063C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004D00000048E17A14BF1D51417B14AED70A3C5441E03EDF44BF1D5141AA7057DA0A3C54415B2EF45CBF1D5141D7F84CCE0A3C54414A8E8E67BF1D51415BCD3FDC0A3C544148E17A14C11D51413D0AD7F30A3C5441641C1A5CC21D514136803CC00B3C54411B66EA6EC21D51410B2536CA0B3C5441B56CDB22C51D514125668E760D3C5441CDE39F4CC51D51418185B18E0D3C54417B3EB982C51D51418FFEF4AD0D3C544164650B15C71D51418DCD74960E3C5441851CF9E0C91D514166153034103C544119B9DB37CD1D514122B64902123C54413C3A6413D01D51412B89A8C3133C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985290 - 397559
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000033000000713D0AC7DF1D5141A4703D8A1C3C5441CDCCCC9CE01D514152B81E251D3C5441E17A14CEE21D5141B81E85BB1E3C5441AE47E1DAE41D51415C8FC2D51F3C54415C8FC295E81D5141D7A370AD213C544114AE47C1EB1D5141B81E85BB223C5441E17A14DEED1D51411F85EB81223C544166666626EF1D514114AE4721223C5441EC51B80EF01D514133333373213C5441D7A3700DF11D51410AD7A3F01E3C54413D0AD7F3F01D51415C8FC2551B3C5441F6285CBFF01D514185EB5158153C5441713D0A27E81D5141CDCCCC8C0E3C544100000010DE1D5141CDCCCCCC063C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004D00000048E17A14BF1D51417B14AED70A3C5441E03EDF44BF1D5141AA7057DA0A3C54415B2EF45CBF1D5141D7F84CCE0A3C54414A8E8E67BF1D51415BCD3FDC0A3C544148E17A14C11D51413D0AD7F30A3C5441641C1A5CC21D514136803CC00B3C54411B66EA6EC21D51410B2536CA0B3C5441B56CDB22C51D514125668E760D3C5441CDE39F4CC51D51418185B18E0D3C54417B3EB982C51D51418FFEF4AD0D3C544164650B15C71D51418DCD74960E3C5441851CF9E0C91D514166153034103C544119B9DB37CD1D514122B64902123C54413C3A6413D01D51412B89A8C3133C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>813136 - 814146
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000280000003D0AD743E6645141F6285C7F3D3A5441AE47E1EAD2645141A4703D0A403A54418FC2F518CD645141D7A3709D423A5441CDCCCCCCC7645141F6285CCF443A5441D43F6A46C464514101623FB3463A5441C642B6E7C36451412889E01F463A54413817978EC0645141274899D0473A5441A4703DBAC0645141A4703D9A483A5441666666D6C1645141000000504D3A54415C8FC205C8645141666666D64C3A5441295C8F22CC64514114AE47014D3A54419A9999D9CC645141EC51B81E4D3A5441713D0AE7CD645141713D0A674D3A544185EB5138D06451418FC2F5184E3A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003400000014AE47F1106551419A999999383A54410AD7A30015655141AE47E16A383A5441C3F5280C14655141EC51B8AE2F3A54418FC2F5F812655141EC51B82E283A544114AE472118655141713D0AA7273A5441EC51B80E1E65514166666696273A5441CDCCCCAC236551417B14AED7273A5441713D0A57296551418FC2F598283A5441A4703D8A3365514148E17A842A3A54411F85EB513265514152B81EC5243A54413D0AD78331655141B81E851B233A54415C8FC24530655141AE47E13A223A5441EC51B84E2F655141B81E85CB213A5441AE47E19A2D65514133333383213A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985164 - 397343
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000070000007A373EB390A450410AF5A0309F665441B1A64D3DB1A45041D5893A50A366544148E17AE4B1A4504114AE4781A2665441CFAE50BFAAA4504181FF08C98B665441805CCB3E7CA4504199471D2F80665441AE47E11A76A4504114AE47118C6654417A373EB390A450410AF5A0309F665441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000EC51B8AE90A45041E17A143E9F66544148E17AA495A45041E17A14DE9F6654413D0AD733B1A4504152B81E55A366544148E17AE4B1A4504114AE4781A2665441B30654BAACA45041CDC4BC2292665441250554BAACA45041E4BFBC2292665441B9FA53BAACA45041DB9EBC22926654416BCFCFB7AAA450412BC829C78B665441A8E03B6B7FA4504171ECCCF980665441F4FE5C4E7CA45041029CFF32806654414A362AAC7BA4504199DFE34A816654410275351B76A4504127C5A4108C665441159BE21A76A45041857546118C66544152E7571E76A45041122EC5138C665441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>818801 - 239112
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000040000009800000048E17AB49F935041CDCCCCFCAA4A55415C8FC2F59E935041B81E854BB44A5541EC51B87E9E9350418FC2F5E8C24A554114AE47F1A59350415C8FC2C5C44A5541CDCCCC5CA893504152B81E85C94A55418FC2F568AA935041D7A3706DCD4A55411F85EB51AE9350418FC2F5A8CB4A5541AE47E13AB293504100000020CC4A55417B14AE17B8935041713D0A27D14A5541C3F5283CBA93504100000010D54A5541713D0AD7BC9350417B14AE27D54A5541AE47E12ABF9350413D0AD7D3D24A55413D0AD7E3C2935041E17A146ED14A5541C3F5282CC793504100000010D54A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003E00000000000060BC9350418FC2F598B54A5541500CF01ABA935041813018AFB24A5541305DB119B69350410D1DE939AD4A5541ED47E36FB59350416CA20409AC4A554162D85DCDB293504123795A67A84A55416303C1A1B2935041937D693DA84A55415B0590D8AE9350411A8CBDC6A44A55412AC86FE2AB935041193F31AEA34A55415AEBB676A79350417C11D375A24A5541C2BA13C0A49350416666E071A24A554189FC2D7E9F93504160A95876A34A5541F8769ACC9E935041EF1FA0D9A34A5541C71B46809E935041F47CD976A54A554148E17AB49F935041CDCCCCFCAA4A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>818801 - 372512
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000040000009800000048E17AB49F935041CDCCCCFCAA4A55415C8FC2F59E935041B81E854BB44A5541EC51B87E9E9350418FC2F5E8C24A554114AE47F1A59350415C8FC2C5C44A5541CDCCCC5CA893504152B81E85C94A55418FC2F568AA935041D7A3706DCD4A55411F85EB51AE9350418FC2F5A8CB4A5541AE47E13AB293504100000020CC4A55417B14AE17B8935041713D0A27D14A5541C3F5283CBA93504100000010D54A5541713D0AD7BC9350417B14AE27D54A5541AE47E12ABF9350413D0AD7D3D24A55413D0AD7E3C2935041E17A146ED14A5541C3F5282CC793504100000010D54A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003E00000000000060BC9350418FC2F598B54A5541500CF01ABA935041813018AFB24A5541305DB119B69350410D1DE939AD4A5541ED47E36FB59350416CA20409AC4A554162D85DCDB293504123795A67A84A55416303C1A1B2935041937D693DA84A55415B0590D8AE9350411A8CBDC6A44A55412AC86FE2AB935041193F31AEA34A55415AEBB676A79350417C11D375A24A5541C2BA13C0A49350416666E071A24A554189FC2D7E9F93504160A95876A34A5541F8769ACC9E935041EF1FA0D9A34A5541C71B46809E935041F47CD976A54A554148E17AB49F935041CDCCCCFCAA4A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>766891 - 306493
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000004D0000001F85EBD1D2145141F6285C7F2CAF5441000000B0DC145141295C8F0227AF5441A4703D2AE81451413D0AD70323AF5441B81E85FBEF145141CDCCCC4C21AF54417B14AE47F81451418FC2F58820AF5441D7A3706D0115514185EB51881FAF544152B81E9510155141000000D01AAF5441666666F61E1551413333332315AF54415C8FC2A5251551410AD7A38013AF5441EC51B86E2D155141C3F5286C14AF5441E17A144E351551416666664614AF5441333333F33C155141333333F314AF5441713D0AA744155141B81E850B15AF5441AE47E16A5415514185EB513813AF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005400000005B19270AF145141D603980E2DAF544176FA857BB3145141138CB72E2DAF54411F85EBF1B8145141EC51B8AE2DAF5441CDCCCC1CBC14514185EB51182FAF544148E17A84C11451415C8FC2D52FAF54413D916D32C7145141518B5C0030AF54417FFBD773C9145141A049471130AF54416ECAECD1D2145141A7295B7F2CAF5441C5C31669D5145141CE378F0E2BAF5441000000B0DC145141295C8F0227AF5441A4703D2AE81451413D0AD70323AF5441B81E85FBEF145141CDCCCC4C21AF54417B14AE47F81451418FC2F58820AF5441D12ED589FA145141D83F994920AF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985321 - 528843
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000230000008EA66D0DE1065141D86D45878F775441C3F5286CE00651418FC2F56890775441BEC36CF3DE0651417CDC935A92775441713D0A47DC065141295C8FE295775441CF9811F5DA065141C8F4EA789777544133180F6BD80651414EFA5C8C9A77544133392E22D9065141AEDC6A549B7754411CEF02F7DA0651413D12ED0D9C7754413D65FA81DD0651418912C6009D775441BC65B916DF065141633D2E959D7754418A3DFABBE206514192BA4BC9977754415128796DE706514184DE634B90775441173E0B12E8065141FF3AF13E8F7754417B14AEC7ED065141EC51B8EE85775441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000295C8F4201075141D7A3703D6877544152B81E05000751413333338367775441295C8F42FC0651419A9999A965775441D7A370CDF8065141C3F5283C6C77544148E17AC4EF06514152B81EB5797754417B14AE77ED06514114AE47F17C775441F6285CDFEB065141EC51B84E7F7754419A999959E90651418FC2F5E8827754419A999929E5065141F6285C9F8977544152B81E35E3065141333333838C775441C3F5286CE00651418FC2F56890775441713D0A47DC065141295C8FE2957754419A999939D80651411F85EBC19A775441D7A370BDD7065141713D0A579B775441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985321 - 529243
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000230000008EA66D0DE1065141D86D45878F775441C3F5286CE00651418FC2F56890775441BEC36CF3DE0651417CDC935A92775441713D0A47DC065141295C8FE295775441CF9811F5DA065141C8F4EA789777544133180F6BD80651414EFA5C8C9A77544133392E22D9065141AEDC6A549B7754411CEF02F7DA0651413D12ED0D9C7754413D65FA81DD0651418912C6009D775441BC65B916DF065141633D2E959D7754418A3DFABBE206514192BA4BC9977754415128796DE706514184DE634B90775441173E0B12E8065141FF3AF13E8F7754417B14AEC7ED065141EC51B8EE85775441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000295C8FE2FD065141666666D678775441295C8F42010751415C8FC21573775441000000A005075141AE47E1DA6B7754419A99991906075141666666666B775441295C8F4201075141D7A3703D6877544114AE474100075141CDCCCCBC6977544152B81E95F3065141EC51B83E7D7754417B14AEC7ED065141EC51B8EE85775441EC51B81EE6065141D7A3706D9277544114AE4711DF065141713D0A979D7754417B14AE27E7065141D7A370FDA07754417B14AEE7F306514100000090A67754411F85EB81FF0651415C8FC2458F77544152B81EC5FB065141666666E686775441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985321 - 1015427
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000230000008EA66D0DE1065141D86D45878F775441C3F5286CE00651418FC2F56890775441BEC36CF3DE0651417CDC935A92775441713D0A47DC065141295C8FE295775441CF9811F5DA065141C8F4EA789777544133180F6BD80651414EFA5C8C9A77544133392E22D9065141AEDC6A549B7754411CEF02F7DA0651413D12ED0D9C7754413D65FA81DD0651418912C6009D775441BC65B916DF065141633D2E959D7754418A3DFABBE206514192BA4BC9977754415128796DE706514184DE634B90775441173E0B12E8065141FF3AF13E8F7754417B14AEC7ED065141EC51B8EE85775441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000295C8FE2FD065141666666D678775441295C8F42010751415C8FC21573775441000000A005075141AE47E1DA6B7754419A99991906075141666666666B775441295C8F4201075141D7A3703D6877544114AE474100075141CDCCCCBC6977544152B81E95F3065141EC51B83E7D7754417B14AEC7ED065141EC51B8EE85775441EC51B81EE6065141D7A3706D9277544114AE4711DF065141713D0A979D7754417B14AE27E7065141D7A370FDA07754417B14AEE7F306514100000090A67754411F85EB81FF0651415C8FC2458F77544152B81EC5FB065141666666E686775441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985321 - 3833269
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000230000008EA66D0DE1065141D86D45878F775441C3F5286CE00651418FC2F56890775441BEC36CF3DE0651417CDC935A92775441713D0A47DC065141295C8FE295775441CF9811F5DA065141C8F4EA789777544133180F6BD80651414EFA5C8C9A77544133392E22D9065141AEDC6A549B7754411CEF02F7DA0651413D12ED0D9C7754413D65FA81DD0651418912C6009D775441BC65B916DF065141633D2E959D7754418A3DFABBE206514192BA4BC9977754415128796DE706514184DE634B90775441173E0B12E8065141FF3AF13E8F7754417B14AEC7ED065141EC51B8EE85775441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000295C8FE2FD065141666666D678775441295C8F42010751415C8FC21573775441000000A005075141AE47E1DA6B7754419A99991906075141666666666B775441295C8F4201075141D7A3703D6877544114AE474100075141CDCCCCBC6977544152B81E95F3065141EC51B83E7D7754417B14AEC7ED065141EC51B8EE85775441EC51B81EE6065141D7A3706D9277544114AE4711DF065141713D0A979D7754417B14AE27E7065141D7A370FDA07754417B14AEE7F306514100000090A67754411F85EB81FF0651415C8FC2458F77544152B81EC5FB065141666666E686775441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>821736 - 3311374
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000500000001030000000100000010000000E17A149E31DE50418FC2F5F8CC29544185EB511846DE5041C3F528BCD12954410AD7A3004CDE504148E17A24F7295441AE47E1DA5BDE5041B81E85EBF32954419A9999B95BDE5041F6285C9FE42954411F85EB015DDE5041EC51B82ED8295441000000F05CDE504185EB51B8D129544152B81E555CDE504114AE4751CB295441AE47E1DA5BDE5041000000F0C7295441333333F35BDE5041F6285C0FC329544152B81E6549DE5041C3F5289CBB295441713D0AD74CDE5041E17A146EB529544148E17A9430DE5041666666B6AB295441000000802EDE5041AE47E17AC5295441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000044000000BFAFCFA6B2DE5041F666755AB129544148E17AB4B1DE50415C8FC2C5AF29544152B81E35B1DE5041295C8F82AA29544185EB51F8B0DE504100000070A9295441E17A14AEB0DE5041D7A3707DA8295441AE47E12AB0DE5041000000D0A6295441B81E856BAEDE5041713D0A77A32954418FC2F548ADDE5041295C8FE2A1295441A4703DEAABDE504148E17A74A0295441713D0AF7AADE504185EB51E89F295441D3476CC89DDE50411B342389A0295441EC8EDC1898DE5041A1B14D25A4295441A7E429C496DE5041E381FBA0A6295441029B65EC93DE50413D34A6B0AA295441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985412 - 2506896
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000021000000D074C32448EF504190C8DEF9A9785441F4B01E4B50EF5041B6128054A6785441CAC7333157EF50416ED81626A3785441DBDEDC7557EF5041909D50D8A278544109B283B75EEF50418A5BD7F89B7854417250B3ED65EF50419DF3088897785441FE5C0A3F75EF50419EDD8EA790785441CE2DAE107CEF50419553BFF78D7854411BC197878BEF5041D0595686897854411F1C9D1E92EF50412F27219486785441968C54A0A1EF504135DF11A58178544123C1E93DA4EF5041D58943877F785441B64BBF7A91EF5041F389F09F7C7854418CE0F44B91EF50411A6A97867C785441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000713D0A775CEF50413D0AD793657854413333335342EF5041EC51B86E60785441295C8FE23FEF5041CDCCCC4C607854415C8FC2653EEF5041295C8FA261785441000000C03AEF5041EC51B8FE65785441E17A146E36EF5041295C8F226D785441C3F528EC30EF5041C3F528CC777854415C8FC23530EF504185EB51C87A78544152B81EB531EF5041F6285C3F847854410000002039EF50418FC2F5C886785441A4703D5A3FEF5041F6285C5F87785441F6285C3F44EF50410000003088785441C3F5282C46EF50418FC2F5E888785441B81E855B4BEF50419A9999D989785441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985412 - 5239180
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000021000000D074C32448EF504190C8DEF9A9785441F4B01E4B50EF5041B6128054A6785441CAC7333157EF50416ED81626A3785441DBDEDC7557EF5041909D50D8A278544109B283B75EEF50418A5BD7F89B7854417250B3ED65EF50419DF3088897785441FE5C0A3F75EF50419EDD8EA790785441CE2DAE107CEF50419553BFF78D7854411BC197878BEF5041D0595686897854411F1C9D1E92EF50412F27219486785441968C54A0A1EF504135DF11A58178544123C1E93DA4EF5041D58943877F785441B64BBF7A91EF5041F389F09F7C7854418CE0F44B91EF50411A6A97867C785441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000713D0A775CEF50413D0AD793657854413333335342EF5041EC51B86E60785441295C8FE23FEF5041CDCCCC4C607854415C8FC2653EEF5041295C8FA261785441000000C03AEF5041EC51B8FE65785441E17A146E36EF5041295C8F226D785441C3F528EC30EF5041C3F528CC777854415C8FC23530EF504185EB51C87A78544152B81EB531EF5041F6285C3F847854410000002039EF50418FC2F5C886785441A4703D5A3FEF5041F6285C5F87785441F6285C3F44EF50410000003088785441C3F5282C46EF50418FC2F5E888785441B81E855B4BEF50419A9999D989785441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985468 - 26757
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000390000003610C2ADD0AB50416081A5CD63D4544151898580D1AB5041BAC7454265D454410822F989D8AB50416AC2AD4A6FD45441316F077ADCAB5041D0E54CA974D45441FA813F31DEAB5041562E79F876D4544195ED3B16DFAB5041F19975DD77D454415DB967D8E1AB50415CA3EF727AD45441BA2BD5EDE3AB50415E359A667CD454419C0C938BE4AB50415D40DCEA7CD4544196381947EAAB504131A7CE7981D45441BC630189ECAB5041A9A709FD82D454411004D668EEAB50411BE5F2DA83D45441AEA887B7F0AB5041163F99AF84D45441577B0A16F1AB5041386FADD084D45441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000033000000C3F5284C0AAC5041E17A14AE8AD4544152B81E150AAC504148E17AA489D45441F6285C4F07AC50415C8FC22589D454418FC2F568FBAB5041D7A3703D86D45441D7A3700DF1AB5041B81E85CB84D45441F6285C6FEEAB504148E17AE483D45441B81E855BECAB5041B81E85DB82D4544148E17A54E5AB50410AD7A3A07DD45441A4703D4ADFAB50419A99992978D454419A9999F9DAAB5041AE47E1CA72D45441E17A142ED6AB5041B81E85FB6BD4544148E17AC4D1AB5041000000C065D454419A9999D9CFAB50413D0AD73362D454417B14AE57CBAB5041A4703D5A55D45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985550 - 546758
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002000000091D41257D00251417588A6BE5B3B55414C2E6DF4C9025141C61F1ECC623B5541AD31FEABCD025141BE745D4C6C3B5541B6DA906CCE025141E284B3A46D3B55416D1DC9C1CF0251412502A37C703B554124600117D1025141BE8F94F9723B55411B2F843CD302514153B4916F763B55412C73633ED60251412D0633C0783B55412C73633ED6025141EB797104793B5541EBE6A182D60251415A0EB492783B5541006BE26BD6025141D6F5301B793B5541BCD61645D80251415E7770107A3B554110FFB151DC025141737049CF7A3B554140CF0341E3025141544964B97B3B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D7A3700DFF025141B81E859B743B5541C3F528BCFB02514114AE4701723B5541713D0A37F70251417B14AE47743B554100000030F402514148E17AD4743B5541AE47E1BAF2025141B81E85DB743B55418FC2F568E302514185EB5198823B5541C3F5281CEB02514114AE47118B3B5541D7A370EDED0251415C8FC2658E3B5541D7A370ADF30251419A9999D98F3B5541A4703D9AF80251417B14AEA78C3B5541713D0AF7FC025141A4703DEA883B55419A999969FE025141333333F3873B5541713D0A27FF0251419A9999F9873B5541713D0AA705035141A4703DDA823B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985550 - 1462170
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002000000091D41257D00251417588A6BE5B3B55414C2E6DF4C9025141C61F1ECC623B5541AD31FEABCD025141BE745D4C6C3B5541B6DA906CCE025141E284B3A46D3B55416D1DC9C1CF0251412502A37C703B554124600117D1025141BE8F94F9723B55411B2F843CD302514153B4916F763B55412C73633ED60251412D0633C0783B55412C73633ED6025141EB797104793B5541EBE6A182D60251415A0EB492783B5541006BE26BD6025141D6F5301B793B5541BCD61645D80251415E7770107A3B554110FFB151DC025141737049CF7A3B554140CF0341E3025141544964B97B3B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D7A3700DFF025141B81E859B743B5541C3F528BCFB02514114AE4701723B5541713D0A37F70251417B14AE47743B554100000030F402514148E17AD4743B5541AE47E1BAF2025141B81E85DB743B55418FC2F568E302514185EB5198823B5541C3F5281CEB02514114AE47118B3B5541D7A370EDED0251415C8FC2658E3B554166666666EF02514133333323903B554185EB5168F30251419A9999F9933B5541666666F6F7025141AE47E19A8E3B55411F85EB61FB0251411F85EBF18A3B5541713D0A27FF0251419A9999F9873B5541713D0AA705035141A4703DDA823B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985550 - 3499292
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002000000091D41257D00251417588A6BE5B3B55414C2E6DF4C9025141C61F1ECC623B5541AD31FEABCD025141BE745D4C6C3B5541B6DA906CCE025141E284B3A46D3B55416D1DC9C1CF0251412502A37C703B554124600117D1025141BE8F94F9723B55411B2F843CD302514153B4916F763B55412C73633ED60251412D0633C0783B55412C73633ED6025141EB797104793B5541EBE6A182D60251415A0EB492783B5541006BE26BD6025141D6F5301B793B5541BCD61645D80251415E7770107A3B554110FFB151DC025141737049CF7A3B554140CF0341E3025141544964B97B3B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D7A3700DFF025141B81E859B743B5541C3F528BCFB02514114AE4701723B5541713D0A37F70251417B14AE47743B554100000030F402514148E17AD4743B5541AE47E1BAF2025141B81E85DB743B55418FC2F568E302514185EB5198823B5541C3F5281CEB02514114AE47118B3B5541D7A370EDED0251415C8FC2658E3B554166666666EF02514133333323903B554185EB5168F30251419A9999F9933B5541666666F6F7025141AE47E19A8E3B55411F85EB61FB0251411F85EBF18A3B5541713D0A27FF0251419A9999F9873B5541713D0AA705035141A4703DDA823B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>243506 - 243419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000019000000B8444971C00A5141DB0EF99A5118554123A855E7C00A5141700DE41D55185541F4063EE9C20A5141C3A450C358185541D5F2F9CFC30A5141F339A2605918554199B8488CC90A5141F23F051158185541452A8C69CB0A51417C5B8B6A57185541F3793BD1CB0A51411FBC2C9B56185541ACB8F86FCD0A51417A928059541855410A7ACCC7D30A5141A1CBB7F34B18554169043C66D60A5141E4C8983E4C185541E8C8D5FED60A514181A681F24B1855419A58FDFFD70A5141D07D6B9F4A1855413D603200DA0A514147B504FC47185541F17D7A41DB0A5141FF04654B46185541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000001C44E604D50A5141EEF24EEC4C18554130B92D28D90A51415D1BCE5250185541C36C5C9FDD0A514100D99E5654185541A4D5E62DDF0A5141115AACDA551855418BCA3CDCE00A51412A76DD1154185541E3AF92D1E10A5141C03114045318554103A51543E30A5141E6B2BD6D51185541E17A146EE60A51411F85EBF14D1855410018162ADB0A51418AE0377346185541BB968BFDD60A5141D80C35F44B1855411C44E604D50A5141EEF24EEC4C185541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>243506 - 3346869
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000019000000B8444971C00A5141DB0EF99A5118554123A855E7C00A5141700DE41D55185541F4063EE9C20A5141C3A450C358185541D5F2F9CFC30A5141F339A2605918554199B8488CC90A5141F23F051158185541452A8C69CB0A51417C5B8B6A57185541F3793BD1CB0A51411FBC2C9B56185541ACB8F86FCD0A51417A928059541855410A7ACCC7D30A5141A1CBB7F34B18554169043C66D60A5141E4C8983E4C185541E8C8D5FED60A514181A681F24B1855419A58FDFFD70A5141D07D6B9F4A1855413D603200DA0A514147B504FC47185541F17D7A41DB0A5141FF04654B46185541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000000B8A76E1C90A5141183A7CC44E185541C3F528ACCE0A5141EC51B84E4D1855418FC2F5B8D30A514152B81EC54B18554168043C66D60A5141E4C8983E4C185541EAC8D5FED60A51417EA681F24B1855419B58FDFFD70A5141D27D6B9F4A1855413A603200DA0A514146B504FC47185541F57D7A41DB0A5141FD04654B4618554155044F92DA0A5141BDB476D345185541E5663639DA0A5141EEAB7696451855419A999919D90A514114AE47D144185541EC51B81ED10A5141AE47E15A3F185541A4703D9AC60A51417B14AE2738185541AE47E1BAC40A51410000006038185541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985981 - 1411252
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000002000000010300000003000000B40000009BD06964E60B51414079C2FBE52155419A999959E60B5141666666C6E521554114AE47E1E50B514148E17A64E3215541B81E857BE40B514133333313DD21554152B81E25EA0B51419A9999B9DC21554185EB51B8EB0B5141A4703DAADC2155415C8FC215F30B5141713D0A17DD215541A205CA4AFC0B5141157C4515DE215541C3D1D110000C5141071D45E7DD2155410092AE6B080C51410A59BFC7DC215541283EB07C0A0C51413121BF82DC215541C618B43F0F0C514159DBBF68DD2155419A9999A9140C5141D7A370EDDC2155417B14AE871B0C514166666686DC215541 [...]
+</a>
+
+<b>
+010600000001000000010300000005000000B90000005C9A0DDABE0B514101CAE2E0B821554126DFF00BBE0B514129FB177ABB21554100000050BD0B5141E17A147EBD21554148E17AE4BC0B5141A4703DDABE215541B81E852BBC0B5141AE47E1BAC021554185EB5178BB0B5141713D0A27C2215541E17A148EBA0B514152B81EA5C32155418FC2F5C8B90B51411F85EBA1C42155416FE962D0B70B5141FA52AC37C7215541992B242EB00B5141AE3E07EACF21554133E0ECF8AE0B51412317B93BD22155410294CC52AE0B514142DE7CD9D3215541245372DCAD0B51418658BDE7D5215541245372DCAD0B51419972B220D8215541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>985981 - 3198370
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000002000000010300000003000000B40000009BD06964E60B51414079C2FBE52155419A999959E60B5141666666C6E521554114AE47E1E50B514148E17A64E3215541B81E857BE40B514133333313DD21554152B81E25EA0B51419A9999B9DC21554185EB51B8EB0B5141A4703DAADC2155415C8FC215F30B5141713D0A17DD215541A205CA4AFC0B5141157C4515DE215541C3D1D110000C5141071D45E7DD2155410092AE6B080C51410A59BFC7DC215541283EB07C0A0C51413121BF82DC215541C618B43F0F0C514159DBBF68DD2155419A9999A9140C5141D7A370EDDC2155417B14AE871B0C514166666686DC215541 [...]
+</a>
+
+<b>
+010600000001000000010300000005000000B90000005C9A0DDABE0B514101CAE2E0B821554126DFF00BBE0B514129FB177ABB21554100000050BD0B5141E17A147EBD21554148E17AE4BC0B5141A4703DDABE215541B81E852BBC0B5141AE47E1BAC021554185EB5178BB0B5141713D0A27C2215541E17A148EBA0B514152B81EA5C32155418FC2F5C8B90B51411F85EBA1C42155416FE962D0B70B5141FA52AC37C7215541992B242EB00B5141AE3E07EACF21554133E0ECF8AE0B51412317B93BD22155410294CC52AE0B514142DE7CD9D3215541245372DCAD0B51418658BDE7D5215541245372DCAD0B51419972B220D8215541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>518429 - 1189913
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000170000007B14AEB7C923514148E17A54C58A544185EB51C8C5235141713D0AC7C48A5441295C8FF2C1235141C3F5287CC48A54419A9999B9BD235141713D0AC7C48A54418FC2F548B4235141F6285C7FC68A54415C8FC2F5AC235141295C8FE2C88A54413D0AD7A3A82351417B14AE27CA8A54410AD7A3A0A9235141295C8FF2CD8A54413D0AD793AB23514152B81E45D68A544114AE47F1AC2351411F85EB61DC8A544148E17A04AE2351410AD7A350E08A5441C3F5286CB0235141EC51B82EEC8A54417B14AEC7B0235141CDCCCC5CEE8A5441295C8FE2B023514185EB5148EF8A5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000290000000579A12F86235141611B30BFE58A5441BE05E1BA82235141F99F6AF6D68A5441402AA03F9A23514113E2615CD08A5441F43F1E5E9E235141B46B6234CF8A544177B7193CA1235141F2B55A66CE8A54413EAEE008A92351416500DB35CC8A54413D0AD7A3A82351417B14AE27CA8A5441AE47E1FAA623514148E17AA4CA8A54419A9999D9A0235141713D0AC7CC8A5441CDCCCC0C98235141C3F5285CCF8A5441B81E85DB8B235141AE47E10AD28A5441333333D382235141E17A149ED38A5441AE47E19A7C235141A4703D0AD58A5441666666167123514133333373D28A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>939375 - 3178216
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000010000003F0000001E111CE9E0B15041FD10D6EF9D35544185EB51E8E0B15041A4703DFA9D35544114AE4761D6B15041C3F5282C9D355441F6285CBFD5B1504185EB5148A03554419A9999E9D4B15041B81E850BA33554417B14AE37CFB150415C8FC2B5B03554417B14AEF7CBB1504148E17AA4B7355441713D0A27C4B15041CDCCCCCCC9355441C3F528BCB1B15041295C8FB2C635544152B81E85A0B15041CDCCCCCCC33554415C8FC2659EB15041D7A3705DC335544185EB51289BB15041C3F5283CD93554418FC2F59897B15041E17A142EEF35544152B81E8598B1504100000040EF355441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000D5630099C6B1504154386A932036544156B4FFF6C4B15041C1E4FC393236544136A47C0AD5B15041093C4B4C32365441000000C0DBB1504185EB51483236544173BA8BBEDBB150414A53ED53323654416466B6C8DBB15041C31DDA1C32365441C93827EEDBB150413429075231365441E4A38155DEB15041076A884C24365441A208EB28DFB1504137ED561C1F3654415ADCB934DFB1504108F06BE01E365441AB3DCDD2DFB150418B5E5D0D1F365441C1B8E7FFDFB15041229363091F365441A622DB63E2B15041229D2CC81F3654412E1D35D7E2B150416064F8E81F365441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>939375 - 3574156
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000010000003F0000001E111CE9E0B15041FD10D6EF9D35544185EB51E8E0B15041A4703DFA9D35544114AE4761D6B15041C3F5282C9D355441F6285CBFD5B1504185EB5148A03554419A9999E9D4B15041B81E850BA33554417B14AE37CFB150415C8FC2B5B03554417B14AEF7CBB1504148E17AA4B7355441713D0A27C4B15041CDCCCCCCC9355441C3F528BCB1B15041295C8FB2C635544152B81E85A0B15041CDCCCCCCC33554415C8FC2659EB15041D7A3705DC335544185EB51289BB15041C3F5283CD93554418FC2F59897B15041E17A142EEF35544152B81E8598B1504100000040EF355441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000D5630099C6B1504154386A932036544156B4FFF6C4B15041C1E4FC393236544136A47C0AD5B15041093C4B4C32365441000000C0DBB1504185EB51483236544173BA8BBEDBB150414A53ED53323654416466B6C8DBB15041C31DDA1C32365441C93827EEDBB150413429075231365441E4A38155DEB15041076A884C24365441A208EB28DFB1504137ED561C1F3654415ADCB934DFB1504108F06BE01E365441AB3DCDD2DFB150418B5E5D0D1F365441C1B8E7FFDFB15041229363091F365441A622DB63E2B15041229D2CC81F3654412E1D35D7E2B150416064F8E81F365441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>647479 - 991791
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000CDCCCCEC6F3251415C8FC215D834544185EB51586C325141C3F5284CDA345441713D0AA78732514100000010FB345441E17A144E89325141EC51B8FEF9345441E5449FB6A13251418B5ACB6BEB345441AC002E2687325141523EC027CA345441CDCCCCEC6F3251415C8FC215D8345441
+</a>
+
+<b>
+0106000000010000000103000000010000004C000000CDCCCCEC6F3251415C8FC215D834544185EB51586C325141C3F5284CDA345441E7E3284F6D3251413CDE5474DB345441DEA944946F325141EB9A932DDE345441E08F841271325141715938F8DF3454415C4EAF5173325141FD1256AAE23454418F70040075325141F618ACAEE434544131FFC7337632514113A0F11FE63454417388798077325141D49720AFE7345441C5E6D2367932514163FF14BDE93454411562D29E7A3251414AE0066DEB34544114CA0D3B7C325141F91AA55BED345441190CBF877D32514140BDD3EAEE345441C099E4EB7E325141EEA52696F0345441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>647479 - 3570376
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000CDCCCCEC6F3251415C8FC215D834544185EB51586C325141C3F5284CDA345441713D0AA78732514100000010FB345441E17A144E89325141EC51B8FEF9345441E5449FB6A13251418B5ACB6BEB345441AC002E2687325141523EC027CA345441CDCCCCEC6F3251415C8FC215D8345441
+</a>
+
+<b>
+0106000000010000000103000000010000004C000000CDCCCCEC6F3251415C8FC215D834544185EB51586C325141C3F5284CDA345441E7E3284F6D3251413CDE5474DB345441DEA944946F325141EB9A932DDE345441E08F841271325141715938F8DF3454415C4EAF5173325141FD1256AAE23454418F70040075325141F618ACAEE434544131FFC7337632514113A0F11FE63454417388798077325141D49720AFE7345441C5E6D2367932514163FF14BDE93454411562D29E7A3251414AE0066DEB34544114CA0D3B7C325141F91AA55BED345441190CBF877D32514140BDD3EAEE345441C099E4EB7E325141EEA52696F0345441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>964241 - 262849
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000014000000D73749AD186B5141440904A0A3405441736D81F1346B514173DBFED6794054410515D73E276B51411A2E34FE6D405441BD57F8C0236B5141B3F17CEF7240544107333BAB1F6B5141E092BEB77840544170BC2D97186B5141A57B22C9824054416395FB9E156B514188AC8D02874054417F9362FA106B51417D8C99988D405441D0B52D500E6B5141735CB05391405441DA9D94350A6B5141F6108B30974054412C78DD2B076B51410EDA12749B4054419296E868036B5141187899EAA0405441F225E0A0016B5141B2A76757A3405441B33B6EF3FD6A5141EDB1E282A8405441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000001A000000713D0A87E56A51418FC2F5E8AA405441E17A14BEE56A51411F85EB91AF4054419A9999F9E66A51413D0AD7E3B5405441A4703DBAE76A5141713D0AE7B6405441C3F5287CF16A51415C8FC245AA40544114AE4711F26A514148E17A84A9405441B81E85DBFA6A514152B81E15AD405441E17A143E276B514114AE47F16D405441F6285C0F1B6B5141AE47E16A6340544166666606176B514152B81EE56940544185EB51D80D6B514152B81EE5744054415C8FC2050A6B514148E17A347640544148E17AD4056B5141B81E858B794054411F85EB41056B5141F6285C3F7E405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>964241 - 1000876
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000014000000D73749AD186B5141440904A0A3405441736D81F1346B514173DBFED6794054410515D73E276B51411A2E34FE6D405441BD57F8C0236B5141B3F17CEF7240544107333BAB1F6B5141E092BEB77840544170BC2D97186B5141A57B22C9824054416395FB9E156B514188AC8D02874054417F9362FA106B51417D8C99988D405441D0B52D500E6B5141735CB05391405441DA9D94350A6B5141F6108B30974054412C78DD2B076B51410EDA12749B4054419296E868036B5141187899EAA0405441F225E0A0016B5141B2A76757A3405441B33B6EF3FD6A5141EDB1E282A8405441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000001A000000713D0A87E56A51418FC2F5E8AA405441E17A14BEE56A51411F85EB91AF4054419A9999F9E66A51413D0AD7E3B5405441A4703DBAE76A5141713D0AE7B6405441C3F5287CF16A51415C8FC245AA40544114AE4711F26A514148E17A84A9405441B81E85DBFA6A514152B81E15AD405441E17A143E276B514114AE47F16D405441F6285C0F1B6B5141AE47E16A6340544166666606176B514152B81EE56940544185EB51D80D6B514152B81EE5744054415C8FC2050A6B514148E17A347640544148E17AD4056B5141B81E858B794054411F85EB41056B5141F6285C3F7E405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>964241 - 3660562
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000014000000D73749AD186B5141440904A0A3405441736D81F1346B514173DBFED6794054410515D73E276B51411A2E34FE6D405441BD57F8C0236B5141B3F17CEF7240544107333BAB1F6B5141E092BEB77840544170BC2D97186B5141A57B22C9824054416395FB9E156B514188AC8D02874054417F9362FA106B51417D8C99988D405441D0B52D500E6B5141735CB05391405441DA9D94350A6B5141F6108B30974054412C78DD2B076B51410EDA12749B4054419296E868036B5141187899EAA0405441F225E0A0016B5141B2A76757A3405441B33B6EF3FD6A5141EDB1E282A8405441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000001A000000713D0A87E56A51418FC2F5E8AA405441E17A14BEE56A51411F85EB91AF4054419A9999F9E66A51413D0AD7E3B5405441A4703DBAE76A5141713D0AE7B6405441C3F5287CF16A51415C8FC245AA40544114AE4711F26A514148E17A84A9405441B81E85DBFA6A514152B81E15AD405441E17A143E276B514114AE47F16D405441F6285C0F1B6B5141AE47E16A6340544166666606176B514152B81EE56940544185EB51D80D6B514152B81EE5744054415C8FC2050A6B514148E17A347640544148E17AD4056B5141B81E858B794054411F85EB41056B5141F6285C3F7E405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532034 - 1053047
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002000000052B81E75FA16514185EB51B8B0855441713D0AF703175141EC51B8DEA98554411F85EBA10F17514133333353A0855441000000000517514185EB51989B8554419A9999B90217514185EB51C89A855441B81E85DBF7165141EC51B84EA485544114AE4751F716514166666696A385544166666656EE16514185EB5148AA855441E17A144EE616514166666646B0855441713D0A87E516514100000090AF85544146C9AF18DE16514136BF4CEAB58554411F85EBD1DB1651411F85EB01B18554411F85EB21E01651417B14AE37AE855441EC51B85EDE16514166666676AB855441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000295C8F42BA165141713D0A37C4855441F6285C4FBD165141B81E85BBCD8554412EA0E394BD1651416AA74154CF855441E17A14CECD165141E17A14CEC9855441295C8FD2D416514133333383C78554411F2A105FE316514137657291C08554413D0AD753E31651418FC2F578C08554410BD8DE6BE3165141584AE969C0855441DF1F5AA5DE165141FD83E652B585544146C9AF18DE16514136BF4CEAB58554411F85EBD1DB1651411F85EB01B18554411F85EB21E01651417B14AE37AE855441EC51B85EDE16514166666676AB855441EC51B81EDC165141295C8FB2A7855441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532034 - 3340751
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002000000052B81E75FA16514185EB51B8B0855441713D0AF703175141EC51B8DEA98554411F85EBA10F17514133333353A0855441000000000517514185EB51989B8554419A9999B90217514185EB51C89A855441B81E85DBF7165141EC51B84EA485544114AE4751F716514166666696A385544166666656EE16514185EB5148AA855441E17A144EE616514166666646B0855441713D0A87E516514100000090AF85544146C9AF18DE16514136BF4CEAB58554411F85EBD1DB1651411F85EB01B18554411F85EB21E01651417B14AE37AE855441EC51B85EDE16514166666676AB855441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000295C8F42BA165141713D0A37C4855441F6285C4FBD165141B81E85BBCD8554412EA0E394BD1651416AA74154CF855441E17A14CECD165141E17A14CEC9855441295C8FD2D416514133333383C78554411F2A105FE316514137657291C08554413D0AD753E31651418FC2F578C08554410BD8DE6BE3165141584AE969C0855441DF1F5AA5DE165141FD83E652B585544146C9AF18DE16514136BF4CEAB58554411F85EBD1DB1651411F85EB01B18554411F85EB21E01651417B14AE37AE855441EC51B85EDE16514166666676AB855441EC51B81EDC165141295C8FB2A7855441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>912429 - 912681
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000020000000B64B10F7EBE350413E079B0F39A45441CDCCCCCCEDE35041B81E854B3BA45441E5AA5EFFEFE35041032D91B43DA4544182AEFC6CF8E350411D440E3445A454415C3F1C20FCE35041260EEAB147A454410B51D53EFFE350415296A58C49A454418C22B77F02E45041541C2C6D4BA45441AE87A9480DE450415DCA14A651A45441F8C19C7614E45041FBFD68C056A4544155BC931A15E4504164BECF3357A45441458ADC0919E45041D088E9C159A45441CBD67C7124E450411E1DB09960A454415BC26BC72CE45041DB89947264A45441A81A3FF638E4504185ED65F967A45441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000210000009AAF789642E45041884BFBCE68A45441EB197D4F42E450419D8C37CA68A45441A51A3FF638E4504184ED65F967A454415DC26BC72CE45041DB89947264A45441CED67C7124E45041231DB09960A45441408ADC0919E45041CD88E9C159A45441D4B996F916E450418CD8F28458A45441FDC19C7614E45041FEFD68C056A45441AE87A9480DE450415FCA14A651A454415D7344B0FCE350410BE8FF1248A454410A9FAFFCF4E35041402F33E342A454418BF6136CF1E3504125A497443FA45441CDCCCCCCEDE35041B81E854B3BA4544195F40FBCEBE35041AA28C5C738A45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986009 - 3104470
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001100000066666656D71051413D0AD793014A55411F85EBF1D3105141A4703DBA004A5541E17A141ECB105141CDCCCC6CFF495541666666B6BB105141AE47E16AFE49554148E17A54B71051413D0AD7C3FD4955410AD7A340B1105141295C8FD2FB495541EC51B8AEB11051415C8FC2F5FC4955411F85EBF1B2105141E17A144E004A55419A9999E9B3105141F6285C7F034A55417B14AE17BA105141000000A00E4A55418FC2F568BD10514114AE4731144A554148E17A24E51051413D0AD7030A4A5541B81E858BE210514114AE4781064A5541CDCCCC6CE1105141C3F5284C044A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000AF594277D01051412CA0D236004A5541BE1C952CCB1051419399F06EFF495541D51A54CCC6105141B7A07B24FF495541C29C6F8DC1105141ED17A8CCFE495541D0D74601BE105141BB214391FE495541666666B6BB105141AE47E16AFE495541F712328DB8105141754466F2FD49554148E17A54B71051413D0AD7C3FD4955410AD7A340B1105141295C8FD2FB495541EC51B8AEB11051415C8FC2F5FC4955411F85EBF1B2105141E17A144E004A55419A9999E9B3105141F6285C7F034A5541DB6BAE06B6105141EAE29C4D074A5541F5309F6FB8105141C68474A40B4A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986009 - 3391341
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001100000066666656D71051413D0AD793014A55411F85EBF1D3105141A4703DBA004A5541E17A141ECB105141CDCCCC6CFF495541666666B6BB105141AE47E16AFE49554148E17A54B71051413D0AD7C3FD4955410AD7A340B1105141295C8FD2FB495541EC51B8AEB11051415C8FC2F5FC4955411F85EBF1B2105141E17A144E004A55419A9999E9B3105141F6285C7F034A55417B14AE17BA105141000000A00E4A55418FC2F568BD10514114AE4731144A554148E17A24E51051413D0AD7030A4A5541B81E858BE210514114AE4781064A5541CDCCCC6CE1105141C3F5284C044A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000AF594277D01051412CA0D236004A5541BE1C952CCB1051419399F06EFF495541D51A54CCC6105141B7A07B24FF495541C29C6F8DC1105141ED17A8CCFE495541D0D74601BE105141BB214391FE495541666666B6BB105141AE47E16AFE495541F712328DB8105141754466F2FD49554148E17A54B71051413D0AD7C3FD4955410AD7A340B1105141295C8FD2FB495541EC51B8AEB11051415C8FC2F5FC4955411F85EBF1B2105141E17A144E004A55419A9999E9B3105141F6285C7F034A5541DB6BAE06B6105141EAE29C4D074A5541F5309F6FB8105141C68474A40B4A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986079 - 57260
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000B4B4433708D15041EF3E15BE03BC5441A21ADA0F03D15041E169C9D4BCBB5441813280DFF3D050411C3E87A7BDBB5441EC51B89EF8D0504152B81E15F7BB5441B4B4433708D15041EF3E15BE03BC5441
+</a>
+
+<b>
+0106000000020000000103000000010000000B0000008E1247FC04D150413776E24BD7BB5441E32E14BE08D150411593812B04BC54411F85EB810DD150419A99990908BC5441B81E85EB04D15041F6285C1FA0BB54417B14AEA7F1D05041C3F528CCA2BB5441E94130A5F3D05041FFA276E5BABB5441D51329AB02D150411E92B131BABB5441E0CB99E102D15041F8224BD7BCBB54419E1ADA0F03D15041E169C9D4BCBB5441BACA8CC804D1504178F22E84D4BB54418E1247FC04D150413776E24BD7BB5441010300000001000000040000009BD82E6C05D15041FA4F8C4FDDBB5441B6B4433708D15041EC3E15BE03BC54410FFA2C [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>865868 - 197196
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000004010000295C8F92DE325141AE47E19A9639554133333313E03251410AD7A3A0A0395541295C8FC2DD325141C3F5282CA8395541F6285CFFDB325141A4703D8AAD3955418FC2F5A8DA325141295C8F12B1395541D7A370CDD832514100000010B53955410AD7A360DA3251411F85EB61B539554185EB5158D93251418FC2F5D8BC3955413D0AD713D93251415C8FC2F5C2395541666666C6D83251410AD7A360C53955410AD7A320D9325141713D0A47C83955413D0AD7D3D8325141AE47E10ACD395541C3F5281CD83251411F85EBF1D039554152B81E85D7325141D7A370FDD3395541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000700100000496B98EF432514118831EC58B39554165B46184F432514163236DC58B3955410F5D5238F4325141E851AFC78B3955412F384502F43251411792A5BA8B395541E17A14DEF33251411F85EBB18B395541295C8F82F3325141C3F5287C8B395541C3F528FCF232514148E17A348B395541972681B8F2325141A10AC70D8B3955416EA29869F2325141AF32A4E08A3955418B779033F2325141BBF47AB68A395541F6285C2FF2325141333333B38A395541382C2C17F2325141D8ED17878A395541EC51B80EF23251417B14AE778A39554152B81EF5F1325141F6285C3F8A395541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>865868 - 363766
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000004010000295C8F92DE325141AE47E19A9639554133333313E03251410AD7A3A0A0395541295C8FC2DD325141C3F5282CA8395541F6285CFFDB325141A4703D8AAD3955418FC2F5A8DA325141295C8F12B1395541D7A370CDD832514100000010B53955410AD7A360DA3251411F85EB61B539554185EB5158D93251418FC2F5D8BC3955413D0AD713D93251415C8FC2F5C2395541666666C6D83251410AD7A360C53955410AD7A320D9325141713D0A47C83955413D0AD7D3D8325141AE47E10ACD395541C3F5281CD83251411F85EBF1D039554152B81E85D7325141D7A370FDD3395541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000700100000496B98EF432514118831EC58B39554165B46184F432514163236DC58B3955410F5D5238F4325141E851AFC78B3955412F384502F43251411792A5BA8B395541E17A14DEF33251411F85EBB18B395541295C8F82F3325141C3F5287C8B395541C3F528FCF232514148E17A348B395541972681B8F2325141A10AC70D8B3955416EA29869F2325141AF32A4E08A3955418B779033F2325141BBF47AB68A395541F6285C2FF2325141333333B38A395541382C2C17F2325141D8ED17878A395541EC51B80EF23251417B14AE778A39554152B81EF5F1325141F6285C3F8A395541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261945 - 2942672
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000000D000000AE47E1DAD06B5141F6285CDFDB3E5441B81E856BD06B5141F6285C6FDA3E54419A9999D9C16B514166666636D53E544114AE4741C16B51410AD7A380E13E5441EC51B82EC76B5141F6285C9FE53E54415C8FC2C5C76B5141A4703D0AE63E5441713D0A770C6C5141B81E85AB163F5441000000E00D6C5141295C8FC2133F5441C3F5289C106C5141F6285C3F113F5441295C8FB2146C51410AD7A3500E3F544152B81E95166C51413D0AD7030D3F5441B81E857BDE6B514148E17A84E53E5441AE47E1DAD06B5141F6285CDFDB3E5441050000008FC2F5E8066C51415C8FC275 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000020000000B81E857BDE6B514148E17A84E53E5441C2DDBADAD06B5141DF37DDDEDB3E54419EB20967CA6B51419BF25E4CD83E5441A889ADD7C96B514168BF2B19D83E54419977476EC76B514106D3B439D93E54419C8CE61DC36B5141494D3993DC3E544114AB2D30C16B5141AA77DF02DF3E54413C3360D1BF6B51411F52A788E03E5441C55F89B3BE6B5141E464C3C5DF3E5441F890EC02BC6B51415C830AD8DD3E5441403CA023B76B5141C06B80A5DA3E54414C3041C6B26B5141C2B6F099D73E54413D8A08FBB06B5141776D0A93D73E544149E87A54AE6B5141BCCFEF81D83E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261945 - 3350772
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000000D000000AE47E1DAD06B5141F6285CDFDB3E5441B81E856BD06B5141F6285C6FDA3E54419A9999D9C16B514166666636D53E544114AE4741C16B51410AD7A380E13E5441EC51B82EC76B5141F6285C9FE53E54415C8FC2C5C76B5141A4703D0AE63E5441713D0A770C6C5141B81E85AB163F5441000000E00D6C5141295C8FC2133F5441C3F5289C106C5141F6285C3F113F5441295C8FB2146C51410AD7A3500E3F544152B81E95166C51413D0AD7030D3F5441B81E857BDE6B514148E17A84E53E5441AE47E1DAD06B5141F6285CDFDB3E5441050000008FC2F5E8066C51415C8FC275 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000020000000B81E857BDE6B514148E17A84E53E5441C2DDBADAD06B5141DF37DDDEDB3E54419EB20967CA6B51419BF25E4CD83E5441A889ADD7C96B514168BF2B19D83E54419977476EC76B514106D3B439D93E54419C8CE61DC36B5141494D3993DC3E544114AB2D30C16B5141AA77DF02DF3E54413C3360D1BF6B51411F52A788E03E5441C55F89B3BE6B5141E464C3C5DF3E5441F890EC02BC6B51415C830AD8DD3E5441403CA023B76B5141C06B80A5DA3E54414C3041C6B26B5141C2B6F099D73E54413D8A08FBB06B5141776D0A93D73E544149E87A54AE6B5141BCCFEF81D83E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>77068 - 3132553
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000B81E85FBD8085141713D0A27679F5441713D0A57CE085141E17A14CE659F54411F85EBC1B8085141E17A146E7C9F5441EC51B8DEBA085141666666E6809F544100000010BE085141666666F67D9F5441713D0A37C5085141B81E85FB789F5441D7A3707DD2085141295C8F026E9F5441000000F0D9085141D7A3708D679F5441B81E85FBD8085141713D0A27679F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000C5C3AF8AC70851414AA62F0F779F5441713D0A37C5085141B81E85FB789F544100000010BE085141666666F67D9F5441ED9E9BA3BB085141500C3D31809F5441EC51B8DEBA085141666666E6809F54412A1D4BF6BA085141A5368A56819F5441162F5A0EBE0851417D5AA886879F544116B8619ABF085141A6645820869F5441C3F528ECC5085141AE47E1EA829F5441713D0A57CA085141713D0AC77F9F5441666666E6D6085141F6285CFF739F5441D7A3707DD2085141295C8F026E9F544136CE071ACB0851417F56E91D749F5441C5C3AF8AC70851414AA62F0F779F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>77068 - 3490705
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000B81E85FBD8085141713D0A27679F5441713D0A57CE085141E17A14CE659F54411F85EBC1B8085141E17A146E7C9F5441EC51B8DEBA085141666666E6809F544100000010BE085141666666F67D9F5441713D0A37C5085141B81E85FB789F5441D7A3707DD2085141295C8F026E9F5441000000F0D9085141D7A3708D679F5441B81E85FBD8085141713D0A27679F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000C5C3AF8AC70851414AA62F0F779F5441713D0A37C5085141B81E85FB789F544100000010BE085141666666F67D9F5441ED9E9BA3BB085141500C3D31809F5441EC51B8DEBA085141666666E6809F54412A1D4BF6BA085141A5368A56819F5441162F5A0EBE0851417D5AA886879F544116B8619ABF085141A6645820869F5441C3F528ECC5085141AE47E1EA829F5441713D0A57CA085141713D0AC77F9F5441666666E6D6085141F6285CFF739F5441D7A3707DD2085141295C8F026E9F544136CE071ACB0851417F56E91D749F5441C5C3AF8AC70851414AA62F0F779F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>552671 - 58234
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000200000001030000000100000049000000666666761EE8504148E17AF4D5F25441EC51B83E23E8504148E17AE4D6F25441713D0A2729E8504152B81EA5DAF254410000000030E85041AE47E10ACAF25441666666361FE85041333333C3C9F254415C8FC2C516E85041AE47E13ACAF25441869563A7ECE75041D2EE843ED1F25441ACF95844D3E75041BA8EAB59CBF254416544D8AFC3E75041716A2F68C4F254413607E38EBBE75041DACBB457C0F25441A8710C72B4E750418E7C774FBEF2544133333303B1E750411F85EB81C1F254419A999989A4E750419A999969BEF254411F85EB81A3E750411F85EB51BEF25441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000430000007B14AE3757E750419A9999F9E3F254412A9815CC5BE750415B406EADE8F254418FB632EE5CE75041AD2752D7E9F254415FABA63D5EE750417F3E501EEBF25441F1ED71835EE750410DC82462EBF2544121CBF9A260E75041A99E6172EDF25441E91507C562E75041C94EEA82EFF25441957EB7E562E750410BE0E5A1EFF254415267C13F63E75041D08C3CF7EFF25441CA058D1064E7504165ED21BDF0F2544128C4092965E750417D5FFAC6F1F25441AF6A10CB65E7504128C98B60F2F25441212CEA8C66E75041AC53BC13F3F25441000000E068E750413D0AD703F5F25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986168 - 986181
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000295C8F12CBF45041B81E857BC36F5441C3F5281CD9F45041CDCCCC6CCB6F5441AE47E13ADCF450418FC2F558CF6F54419A9999C9DCF4504100000070D46F5441CDCCCC3CECF45041A4703D9AD36F5441E17A141E01F55041CDCCCC4CD16F544152B81E4501F55041D7A3705DC86F54415C8FC26501F5504114AE47E1C06F54411F85EB5101F550418FC2F5F8BF6F544114AE474105F55041B81E850BC06F5441AE47E1DA07F55041B81E85BBB56F5441713D0A471AF5504133333393BA6F54411F85EBD11AF5504185EB5158B86F5441333333A315F550417B14AE97AD6F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000045000000846B8DDE23F550411F9A3456C76F54410A10E64D23F55041A2ECB189C66F5441239269D822F55041C42363AEC56F54419C1C99C721F550416A4822B1C36F5441B9B9B6E520F550415B6AA4C6C16F5441D806C08420F55041B8B217F4C06F5441F7553F0020F5504133575FD4BF6F5441B8A2861F1FF55041040BAD85BD6F5441518FE5381EF55041AD5B7327BB6F5441A1ADA7141EF55041F1D47B96BA6F54415D42B2341DF55041F227A616B76F544194A165E21CF550410D087C59B56F544122D479161CF55041EEEA740AB16F5441E1B2F5121CF550412CC61149B06F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986375 - 58537
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000100000006666661652AC504148E17A64EEFB544185EB51D850AC5041EC51B8AEE6FB5441295C8FC252AC5041CDCCCC8CD9FB544185EB511856AC504148E17A74CFFB54417B14AEA756AC50418FC2F538BDFB5441AE47E18A57AC50411F85EB01B7FB54410000004059AC504133333383B0FB5441AE47E1BA50AC50417B14AE47B6FB54415C8FC2654FAC50415C8FC2B5BAFB5441D7A3701D4FAC504152B81EA5BBFB5441D7A3704D4DAC504166666646C6FB54411F85EB414BAC504148E17AE4CBFB5441EC51B83E4DAC504114AE4771D5FB5441AE47E13A4DAC5041EC51B84EE5FB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000EC51B83E4DAC504114AE4771D5FB5441F7C78A3C4DAC50416BFBC170DEFB5441AE47E13A4DAC5041EC51B84EE5FB54419A9999094DAC5041AE47E12AEEFB5441DF1293E14EAC5041DB97E83FEEFB5441D9BAFE1052AC504101E3F042EEFB5441D393CE0952AC5041A9505616EEFB5441FF9306E151AC504120B44719EDFB5441CB55D70751AC50412F8999D5E7FB544185EB51D850AC5041EC51B8AEE6FB54411B9B10DC50AC504105F00995E6FB5441FC178EC751AC504194011E46E0FB54419C0BB40752AC50415026358EDEFB544170B063A952AC504189936939DAFB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986402 - 1381924
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001D0000001FEF5E314C0D51411C78A6A24B19554192E4213B4E0D5141E98BA42F4D19554166368BC6510D51410D5FC6664F195541308C5AA1550D51410AA197B451195541F74C7343590D51413601A48553195541BE6071D05A0D51417B2B11F753195541ED2F2DB85C0D5141A3BC61E053195541DE09A44C5F0D5141C10743D64F195541E8CCB7B5600D514129C7C8974C195541FB2BA83F630D514193AD85A1491955415A673AA8690D5141E962B31D47195541C78F4779730D51417A110CED42195541C422EA337B0D5141E80323AC3F195541EEF1A51B7D0D514118F8F0BD3E195541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000230000005770CA64640D5141FB3F78EF1A195541DB94FE735E0D51410E0E7C3A2619554114AE4731590D51413D0AD7B33119554166666646530D5141D7A3707D3C1955416B7C49CB4B0D514135FDC49D4A19554124EF5E314C0D51411A78A6A24B19554197E4213B4E0D5141E68BA42F4D1955416A368BC6510D51410A5FC6664F195541338C5AA1550D514106A197B451195541F44C7343590D51413101A48553195541C06071D05A0D5141762B11F753195541EF2F2DB85C0D51419EBC61E053195541BBD3D0745E0D51411C733028511955413D0AD7A35E0D51415C8FC2C550195541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986402 - 3305095
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001D0000001FEF5E314C0D51411C78A6A24B19554192E4213B4E0D5141E98BA42F4D19554166368BC6510D51410D5FC6664F195541308C5AA1550D51410AA197B451195541F74C7343590D51413601A48553195541BE6071D05A0D51417B2B11F753195541ED2F2DB85C0D5141A3BC61E053195541DE09A44C5F0D5141C10743D64F195541E8CCB7B5600D514129C7C8974C195541FB2BA83F630D514193AD85A1491955415A673AA8690D5141E962B31D47195541C78F4779730D51417A110CED42195541C422EA337B0D5141E80323AC3F195541EEF1A51B7D0D514118F8F0BD3E195541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000230000005770CA64640D5141FB3F78EF1A195541DB94FE735E0D51410E0E7C3A2619554114AE4731590D51413D0AD7B33119554166666646530D5141D7A3707D3C1955416B7C49CB4B0D514135FDC49D4A19554124EF5E314C0D51411A78A6A24B19554197E4213B4E0D5141E68BA42F4D1955416A368BC6510D51410A5FC6664F195541338C5AA1550D514106A197B451195541F44C7343590D51413101A48553195541C06071D05A0D5141762B11F753195541EF2F2DB85C0D51419EBC61E053195541BBD3D0745E0D51411C733028511955413D0AD7A35E0D51415C8FC2C550195541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>727298 - 421421
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000300000078000000D7F8BF2DBAC35041538CFCF2943E5541713D0AE7B9C35041A4703D8A943E5541713D0A97B9C35041A4703D6A903E5541713D0A27B9C35041A4703DDA8F3E5541713D0AC7B6C35041A4703D4A8E3E5541713D0A17B3C35041A4703D1A8B3E5541713D0A47B0C35041A4703D5A8A3E5541713D0A07ACC35041A4703D9A893E5541713D0A87AAC35041A4703DEA883E5541B81E855BA8C350410AD7A3A0873E5541713D0A57A7C35041A4703DCA863E5541713D0A47A4C35041A4703D3A863E5541713D0AE7A2C35041A4703D2A853E5541713D0A97A0C35041A4703DFA813E5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000005200000082A1F723BCC35041434A7B01973E55415E482A8BB9C35041C1504BA9943E554118EC554EB9C350416ADD415D943E5541CABC7A13B7C350417FBC7CFB923E55415670CBD9ABC35041829F236B8D3E5541E182E47AA2C350418FBC9883893E5541AF3BE3FC99C35041F635FF18863E5541AA262B0E8FC35041A713DC44873E554130759DE379C35041C7E21345833E554173B5AE9876C350410159810B813E5541A197F60D74C35041965D6E49803E5541927BB60B68C350414148B764783E55414B974D0763C35041347591FB723E55416FA01D4C5CC350417DD497F06F3E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>727298 - 421731
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000300000078000000D7F8BF2DBAC35041538CFCF2943E5541713D0AE7B9C35041A4703D8A943E5541713D0A97B9C35041A4703D6A903E5541713D0A27B9C35041A4703DDA8F3E5541713D0AC7B6C35041A4703D4A8E3E5541713D0A17B3C35041A4703D1A8B3E5541713D0A47B0C35041A4703D5A8A3E5541713D0A07ACC35041A4703D9A893E5541713D0A87AAC35041A4703DEA883E5541B81E855BA8C350410AD7A3A0873E5541713D0A57A7C35041A4703DCA863E5541713D0A47A4C35041A4703D3A863E5541713D0AE7A2C35041A4703D2A853E5541713D0A97A0C35041A4703DFA813E5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003A000000DEDD71FB8FC35041683BAC91833E55415598E5A890C350410717A152833E55415DA605AA96C3504134F81A72823E55416FE303A59AC350412B55BBD9823E5541837DA2079FC3504129C93C78843E5541701625DEA7C350413B063B73883E5541C07A5C29AAC350415EB8D698893E5541214B7069AEC350417D8153F58B3E5541D37FBBF4B4C3504114D640ED8E3E554118EC554EB9C350416ADD415D943E55415E482A8BB9C35041C1504BA9943E554182A1F723BCC35041434A7B01973E55413D0AD7A3BAC350411F85EBA1953E5541D4F8BF2DBAC35041588CFCF2943E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287601 - 3104366
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000003D0000003D0AD753C1A75141D7A3709DE0A65441713D0A07C0A7514148E17A14E1A654411F85EB61BBA751417B14AEB7D5A65441F6285CCFBAA75141295C8FC2D2A65441CDCCCC9CBBA75141D7A370CDCCA654419A9999E9BAA751410AD7A390C9A65441A4703DCAB9A75141EC51B85EC6A6544114AE4741B8A7514166666696C3A6544100000030B6A7514133333323C1A65441C3F528ACB2A75141AE47E15ABEA654410AD7A3D0AFA751419A999909BDA65441D7A370FDADA75141E17A14AEBCA65441E17A14BE9DA751418FC2F5E8C0A65441D7A3704D94A751410AD7A370C3A65441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000890000007B14AED7C8A75141333333F310A75441B81E859BCAA75141D7A370CD10A75441A4703D4ACBA75141D7A3700D10A75441A4703DAACAA751419A9999090AA75441A4703D8AC8A75141F6285CAFFFA654413D0AD703C7A7514185EB51C8F7A65441A4703DDAC5A7514114AE47F1F0A65441CDCCCC4CC3A75141000000A0E6A654416A9C7295BFA75141CB7B2AE5E3A6544121CB0650C0A75141DD2BA24AE3A65441AE47E1AABFA7514133333393E1A65441B066EE15BDA7514121DF8A86DBA654411E918A3EBBA75141646B0936D7A6544185EB5148BAA7514152B81EF5D4A65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287601 - 3204490
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000003D0000003D0AD753C1A75141D7A3709DE0A65441713D0A07C0A7514148E17A14E1A654411F85EB61BBA751417B14AEB7D5A65441F6285CCFBAA75141295C8FC2D2A65441CDCCCC9CBBA75141D7A370CDCCA654419A9999E9BAA751410AD7A390C9A65441A4703DCAB9A75141EC51B85EC6A6544114AE4741B8A7514166666696C3A6544100000030B6A7514133333323C1A65441C3F528ACB2A75141AE47E15ABEA654410AD7A3D0AFA751419A999909BDA65441D7A370FDADA75141E17A14AEBCA65441E17A14BE9DA751418FC2F5E8C0A65441D7A3704D94A751410AD7A370C3A65441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000890000007B14AED7C8A75141333333F310A75441B81E859BCAA75141D7A370CD10A75441A4703D4ACBA75141D7A3700D10A75441A4703DAACAA751419A9999090AA75441A4703D8AC8A75141F6285CAFFFA654413D0AD703C7A7514185EB51C8F7A65441A4703DDAC5A7514114AE47F1F0A65441CDCCCC4CC3A75141000000A0E6A654416A9C7295BFA75141CB7B2AE5E3A6544121CB0650C0A75141DD2BA24AE3A65441AE47E1AABFA7514133333393E1A65441B066EE15BDA7514121DF8A86DBA654411E918A3EBBA75141646B0936D7A6544185EB5148BAA7514152B81EF5D4A65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>986487 - 59054
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000130000005C8FC2656DAB5041C3F5286C4B025541333333E370AB504114AE47014F02554152B81E2572AB504148E17AE44E02554185EB51A882AB5041B81E857B3602554185EB510884AB5041333333432A025541AE47E14A93AB5041E17A14EE0B02554185EB519882AB504114AE4751FD0155415C8FC2557AAB50415C8FC2F506025541F6285CAF77AB50410AD7A3E0170255410AD7A38078AB50415C8FC2F52602554173C00BCE7CAB504104A2CA6E2A025541E816E5FC7EAB5041152542A92E025541A59578217DAB5041E214D1CD33025541124FC3B37AAB50419AE8F0163B025541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000005BF97CFA72AB50412AB7569D43025541F700519771AB504171756BCF430255412B08628371AB50412B7D8BF5430255415C8FC2656DAB5041C3F5286C4B025541333333E370AB504114AE47014F02554152B81E2572AB504148E17AE44E02554185EB51A882AB5041B81E857B3602554185EB510884AB5041333333432A025541AE47E14A93AB5041E17A14EE0B02554185EB519882AB504114AE4751FD0155415C8FC2557AAB50415C8FC2F506025541F6285CAF77AB50410AD7A3E0170255410AD7A38078AB50415C8FC2F52602554173C00BCE7CAB504104A2CA6E2A025541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>720830 - 32827
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000900000085EB512855C550419A9999A9703955410000004055C550419A9999196A395541B81E853B43C55041AE47E1AA6D395541000000403DC55041B81E85BB6E395541295C8F022AC55041F6285CAF75395541295C8F722DC55041333333A3843955417B14AEB738C550418FC2F55882395541C3F5284C4DC55041333333137239554185EB512855C550419A9999A970395541
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000009B74AFA82AC550419DA4F981783955411FF4C0C12AC5504165E17AE178395541DCDE5F772DC55041C7C238A2843955410E087AE22EC55041D3007158843955416AD06EF02DC55041C01F2D6E803955416D85C44F2EC55041C16D7D6B7B39554121826EA22DC55041206F787176395541656754762DC550412108017074395541E0698F022AC55041A0645CAF753955419B74AFA82AC550419DA4F98178395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>720830 - 88372
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000900000085EB512855C550419A9999A9703955410000004055C550419A9999196A395541B81E853B43C55041AE47E1AA6D395541000000403DC55041B81E85BB6E395541295C8F022AC55041F6285CAF75395541295C8F722DC55041333333A3843955417B14AEB738C550418FC2F55882395541C3F5284C4DC55041333333137239554185EB512855C550419A9999A970395541
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000009B74AFA82AC550419DA4F981783955411FF4C0C12AC5504165E17AE178395541DCDE5F772DC55041C7C238A2843955410E087AE22EC55041D3007158843955416AD06EF02DC55041C01F2D6E803955416D85C44F2EC55041C16D7D6B7B39554121826EA22DC55041206F787176395541656754762DC550412108017074395541E0698F022AC55041A0645CAF753955419B74AFA82AC550419DA4F98178395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660762 - 660763
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001F0000005C8FC2C5DEDA5041EC51B88E19D854417B14AEF7EEDA504152B81E751BD85441E17A14CEF2DA50416666665613D85441E17A14CEFBDA5041A4703D3A03D85441E17A14BEFFDA5041A4703D7AFCD75441E17A14BE03DB5041A4703D8AF4D75441E17A149E08DB5041A4703D7AE7D75441E17A143E06DB5041A4703D9AE6D75441E17A146EFCDA5041A4703D8AE3D75441E17A142EF6DA5041A4703D6AE1D75441E17A14BEE4DA5041A4703D9ADDD75441E17A140EE4DA5041A4703DEAE0D75441E17A14EEE3DA5041A4703DCAE4D75441E17A140EE4DA5041A4703D6AE7D75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000A88B90F506DB50418E36B9EBEBD75441E17A14BE03DB5041A4703D8AF4D75441474AE9D502DB50411525F356F6D7544169A71F8A02DB5041BF8C6F16F7D75441D614438201DB504122F7F0F8F8D75441E17A14BEFFDA5041A4703D7AFCD75441DAF6B02AFDDA504143E59EE400D85441E7212F5BFBDA50410855E70704D85441EBDC86E2F3DA50411D6A8F6711D85441CF1D1415EFDA5041CCEBE9361BD854417B14AEF7EEDA504152B81E751BD854415C8FC2C5DEDA5041EC51B88E19D85441F0FF93ECDCDA5041936B3F3023D854416DF505E4E2DA50413F104D7C24D85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>125010 - 226978
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000440000009A5372CCB1BC5041D7E0DAF7C305554185EB5108B4BC5041C3F5281CC5055541295C8F52B5BC50411F85EB21C7055541F6285CCFB1BC50417B14AEF7CD05554166666606B3BC50417B14AE07D4055541EC51B85EB1BC50411F85EB51D805554166666686B1BC5041000000D0DC055541EC51B82EB6BC50419A9999E9E1055541EC51B84EBABC5041AE47E1FAE4055541EC51B8AEBFBC50410AD7A3E0EE0555413D0AD783CBBC5041F6285CBFFC05554152B81E65D0BC5041B81E85AB05065541A4703D9AD1BC504114AE476105065541AE47E19AE1BC50413333330323065541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000032000000D460BD709CBC504189E02C3FAC055541F20AE2C39CBC5041326951DAAC05554136202339A1BC50415311DD2BB5055541918FC678A2BC50417A6CEE5FB7055541918FC678A2BC50416BC71E9BB70555417EAB3D98A2BC5041C315E603BA0555418CBC8DC2A3BC504184020160BE055541B93933A4A5BC5041BA6E9D47C305554194C16EEDA6BC5041192452EFC50555415A97CDFBA6BC5041360BD50BC6055541683B4805A7BC50410A16B0EFC5055541384FD9A8A7BC5041AA3DD236C7055541A50905D5AABC5041D65EAB54C60555419C62DD99B1BC50414DD9C830C4055541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>125010 - 354589
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000440000009A5372CCB1BC5041D7E0DAF7C305554185EB5108B4BC5041C3F5281CC5055541295C8F52B5BC50411F85EB21C7055541F6285CCFB1BC50417B14AEF7CD05554166666606B3BC50417B14AE07D4055541EC51B85EB1BC50411F85EB51D805554166666686B1BC5041000000D0DC055541EC51B82EB6BC50419A9999E9E1055541EC51B84EBABC5041AE47E1FAE4055541EC51B8AEBFBC50410AD7A3E0EE0555413D0AD783CBBC5041F6285CBFFC05554152B81E65D0BC5041B81E85AB05065541A4703D9AD1BC504114AE476105065541AE47E19AE1BC50413333330323065541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000032000000D460BD709CBC504189E02C3FAC055541F20AE2C39CBC5041326951DAAC05554136202339A1BC50415311DD2BB5055541918FC678A2BC50417A6CEE5FB7055541918FC678A2BC50416BC71E9BB70555417EAB3D98A2BC5041C315E603BA0555418CBC8DC2A3BC504184020160BE055541B93933A4A5BC5041BA6E9D47C305554194C16EEDA6BC5041192452EFC50555415A97CDFBA6BC5041360BD50BC6055541683B4805A7BC50410A16B0EFC5055541384FD9A8A7BC5041AA3DD236C7055541A50905D5AABC5041D65EAB54C60555419C62DD99B1BC50414DD9C830C4055541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>628819 - 628857
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000A70000008379EDE435095141A6ED2FCCF50555418017B6093609514147B98C6CF5055541B101980D3609514138D9DB45F5055541AFA7C21536095141C5F8BB0EF5055541EECC3C143609514122383CEEF40555412EA4E21B36095141547271CFF4055541ABF31726360951415B2DDCB2F4055541C9374A293609514147D77F8FF40555413802D8793609514181239E08F2055541E887CC9D360951413544DD42F10555412314349A36095141871BAF92F0055541D2B86A8F36095141883AF163F0055541835DA18436095141ECC1E2F0EF055541BEE9088136095141EF1EA964EF055541 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000098000000EC51B82E47095141295C8F6217065541D7A3709D4C09514114AE47410F065541D7A3701D51095141A4703D0A0A0655411F85EBF154095141AE47E11A060655418FC2F57854095141713D0A570106554185EB519854095141E17A140E0006554152B81EE5540951413D0AD7D3FE0555419A9999795509514148E17A34FD0555417B14AE0756095141333333B3FB0555419A9999B95609514152B81E55FA0555411F85EB71570951418FC2F508F9055541EC51B85E580951419A999999F7055541F6285C6F59095141F6285C5FF6055541CDCCCC5C5A095141E17A147EF5055541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>541002 - 540538
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000180000006666662625655141295C8FA24D4B5441AE47E18A23655141333333934F4B544185EB514822655141333333C3504B5441713D0A27206551415C8FC285524B544185EB51281A6551415C8FC2D5564B54419A9999B91F6551415C8FC2455C4B5441CDCCCC8C166551417B14AE17634B544148E17AF41A655141C3F5282C674B54415C8FC285246551418FC2F518704B5441C3F5281C45655141C3F5283C564B5441AE47E1EA4A6551410AD7A3A0514B5441295C8F3275655141295C8F12304B5441C3F5285C55655141A4703D4A0E4B5441F6285C3F546551419A9999890F4B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C3F5281C45655141C3F5283C564B544103AAB4FF35655141FB60783D624B54418A2FD89E2A6551415DFB2A496B4B5441E17A146E58655141666666F68A4B5441656BC5CF6A655141C69136B47B4B544152ADD27C75655141036892DA724B5441666666566F655141666666566C4B54419F19EE4B756551410991C8A9694B54417093C7C5756551416D7BB475694B5441CDCCCC6C7E6551419A9999E9664B5441DF14303F82655141D4C800CD674B544127C3DECE82655141E75A9AF0674B5441E6EC951A84655141CC96E8E5664B5441C2846150846551417524D7B9664B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>100654 - 235141
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000004000000A20000007B14AEE758885041C3F528BC01235441F6285CAF578850413D0AD78300235441B81E85BB56885041333333F3FF225441CDCCCCFC558850411F85EB110023544133333383558850413333339300235441E17A143E55885041AE47E13A012354418FC2F508558850415C8FC24502235441C3F528CC548850418FC2F5480323544148E17A8453885041333333530423544114AE474151885041D7A3706D05235441E17A146E4F885041CDCCCCCC05235441713D0AB74D885041A4703D4A05235441666666364C8850413D0AD7030323544152B81E854A885041A4703DDA01235441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000C30000009F4C3E2A578850413E87C3150D235441713D0A6759885041D7A3703D092354419A9999E95988504149333353072354419A9999E9598850415AC2F5B804235441E45BD2A4598850417C2F582303235441F3E1FE945988504179B3440703235441ED9894525988504173FA543E01235441DB00DC09598850416FCF7691FF225441F6285CAF578850413D0AD783002354410B43809D57885041B6193F7900235441A94BE72551885041F7E733B104235441E7ED3EC950885041CD7BF9EE042354417234896550885041C06DAF2E052354410BB7592F4E88504177F102A006235441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>100654 - 353898
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000004000000A20000007B14AEE758885041C3F528BC01235441F6285CAF578850413D0AD78300235441B81E85BB56885041333333F3FF225441CDCCCCFC558850411F85EB110023544133333383558850413333339300235441E17A143E55885041AE47E13A012354418FC2F508558850415C8FC24502235441C3F528CC548850418FC2F5480323544148E17A8453885041333333530423544114AE474151885041D7A3706D05235441E17A146E4F885041CDCCCCCC05235441713D0AB74D885041A4703D4A05235441666666364C8850413D0AD7030323544152B81E854A885041A4703DDA01235441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000C30000009F4C3E2A578850413E87C3150D235441713D0A6759885041D7A3703D092354419A9999E95988504149333353072354419A9999E9598850415AC2F5B804235441E45BD2A4598850417C2F582303235441F3E1FE945988504179B3440703235441ED9894525988504173FA543E01235441DB00DC09598850416FCF7691FF225441F6285CAF578850413D0AD783002354410B43809D57885041B6193F7900235441A94BE72551885041F7E733B104235441E7ED3EC950885041CD7BF9EE042354417234896550885041C06DAF2E052354410BB7592F4E88504177F102A006235441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>751857 - 2351622
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000030000000103000000010000001B00000099FB701356BC5041FFF11B028E1E5541BF86DDCA56BC5041B56977BA8E1E5541713D0A9757BC50417B14AE878F1E5541F961F5E95ABC50410F2CFB72921E554113D3EBF15DBC5041DE31741C951E5541AE47E10A5FBC504133333313961E5541AF90D28967BC5041EF7568E59C1E5541D121185D69BC50415231F5CC9C1E5541CDCCCC4C6CBC5041C3F5285C911E5541E51D1F8D6DBC5041A29CCCC78D1E5541333333F370BC5041EC51B80E841E554152B81E5574BC50411F85EBA17D1E55418FC2F59871BC50410AD7A3F0771E55415DA4C1576DBC50414C1F1D157C1E5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000BADD85F273BC5041B365B4D47C1E55418FC2F59871BC50410AD7A3F0771E55415C8FC27569BC5041D7A370DD6D1E5541B81E85AB63BC50413D0AD7B3661E55415C8FC2155EBC504114AE47715E1E5541A4703DFA58BC504114AE4751601E554152B81EC554BC504114AE47C1571E5541D7A370AD50BC5041713D0AE74E1E5541B81E857B55BC504114AE4771401E554148E17A445ABC5041E17A14FE311E55418FC2F5C856BC5041A4703DAA261E554152B81E154BBC50410AD7A3A0111E554152B81E4545BC504114AE4731211E5541333333133DBC504148E17AB43C1E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>751857 - 3456708
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000030000000103000000010000001B00000099FB701356BC5041FFF11B028E1E5541BF86DDCA56BC5041B56977BA8E1E5541713D0A9757BC50417B14AE878F1E5541F961F5E95ABC50410F2CFB72921E554113D3EBF15DBC5041DE31741C951E5541AE47E10A5FBC504133333313961E5541AF90D28967BC5041EF7568E59C1E5541D121185D69BC50415231F5CC9C1E5541CDCCCC4C6CBC5041C3F5285C911E5541E51D1F8D6DBC5041A29CCCC78D1E5541333333F370BC5041EC51B80E841E554152B81E5574BC50411F85EBA17D1E55418FC2F59871BC50410AD7A3F0771E55415DA4C1576DBC50414C1F1D157C1E5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000BADD85F273BC5041B365B4D47C1E55418FC2F59871BC50410AD7A3F0771E55415C8FC27569BC5041D7A370DD6D1E5541B81E85AB63BC50413D0AD7B3661E55415C8FC2155EBC504114AE47715E1E5541A4703DFA58BC504114AE4751601E554152B81EC554BC504114AE47C1571E5541D7A370AD50BC5041713D0AE74E1E5541B81E857B55BC504114AE4771401E554148E17A445ABC5041E17A14FE311E55418FC2F5C856BC5041A4703DAA261E554152B81E154BBC50410AD7A3A0111E554152B81E4545BC504114AE4731211E5541333333133DBC504148E17AB43C1E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987163 - 570783
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000310000001F85EBD1A146514152B81E056599544152B81EE5AA465141C3F5280C6A995441EC51B8CEB44651419A9999896F995441831910B4BC465141A6DD8D3C889954419A568AFCBE465141002D5F618F995441952E2713C1465141EA22DEEB959954413576088EC6465141870E3084959954418F6BCF9BC7465141A82C7F6A959954416780DF31CB465141452DB5EF94995441E5F06F41CE465141CBE2B485949954414B82F8A1CF465141D175F15594995441064733C5CF465141E934A53E94995441D6BDDF6ED24651415503D87B92995441DA439E61D54651413835B88890995441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000000000C0AA465141A4703D5ABB995441E17A140EAD4651410AD7A310CA995441AE47E1AAAD46514152B81EF5CD995441CDCCCC0CAE465141AE47E14AD09954418FC2F5A8AE465141D7A3708DD299544114AE4741B0465141333333E3D3995441A4703DBAB24651415C8FC225D499544148E17AD4BB465141666666C6D3995441C3F5280CBF465141EC51B8DED3995441AE47E1BAC446514114AE47A1D59954419A999949C546514166666696D099544148E17AD4CC465141C3F5286CD1995441333333F3CD465141CDCCCC7CD1995441295C8FB2CD4651411F85EB11CD995441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987163 - 1272456
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000310000001F85EBD1A146514152B81E056599544152B81EE5AA465141C3F5280C6A995441EC51B8CEB44651419A9999896F995441831910B4BC465141A6DD8D3C889954419A568AFCBE465141002D5F618F995441952E2713C1465141EA22DEEB959954413576088EC6465141870E3084959954418F6BCF9BC7465141A82C7F6A959954416780DF31CB465141452DB5EF94995441E5F06F41CE465141CBE2B485949954414B82F8A1CF465141D175F15594995441064733C5CF465141E934A53E94995441D6BDDF6ED24651415503D87B92995441DA439E61D54651413835B88890995441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000000000C0AA465141A4703D5ABB995441E17A140EAD4651410AD7A310CA995441AE47E1AAAD46514152B81EF5CD995441CDCCCC0CAE465141AE47E14AD09954418FC2F5A8AE465141D7A3708DD299544114AE4741B0465141333333E3D3995441A4703DBAB24651415C8FC225D499544148E17AD4BB465141666666C6D3995441C3F5280CBF465141EC51B8DED3995441AE47E1BAC446514114AE47A1D59954419A999949C546514166666696D099544148E17AD4CC465141C3F5286CD1995441333333F3CD465141CDCCCC7CD1995441295C8FB2CD4651411F85EB11CD995441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987163 - 4025044
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000310000001F85EBD1A146514152B81E056599544152B81EE5AA465141C3F5280C6A995441EC51B8CEB44651419A9999896F995441831910B4BC465141A6DD8D3C889954419A568AFCBE465141002D5F618F995441952E2713C1465141EA22DEEB959954413576088EC6465141870E3084959954418F6BCF9BC7465141A82C7F6A959954416780DF31CB465141452DB5EF94995441E5F06F41CE465141CBE2B485949954414B82F8A1CF465141D175F15594995441064733C5CF465141E934A53E94995441D6BDDF6ED24651415503D87B92995441DA439E61D54651413835B88890995441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000000000C0AA465141A4703D5ABB995441E17A140EAD4651410AD7A310CA995441AE47E1AAAD46514152B81EF5CD995441CDCCCC0CAE465141AE47E14AD09954418FC2F5A8AE465141D7A3708DD299544114AE4741B0465141333333E3D3995441A4703DBAB24651415C8FC225D499544148E17AD4BB465141666666C6D3995441C3F5280CBF465141EC51B8DED3995441AE47E1BAC446514114AE47A1D59954419A999949C546514166666696D099544148E17AD4CC465141C3F5286CD1995441333333F3CD465141CDCCCC7CD1995441295C8FB2CD4651411F85EB11CD995441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987242 - 916837
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000180000008B828EE183E6504121BD9A6C60755441E2902C3089E65041CCC06DE35E755441BAF4C18790E6504120164C9C5D755441194C6C4D97E6504140CF29895C755441D53562DBA1E65041B37680105B75544119AEA12CA7E65041AE7E5F2E5A755441B5E64072ACE65041D4E1233159755441A6847CE5ACE65041FD33B5515B755441122F7B16B3E65041D91F07A85A75544189FE9C0CB6E650411F97E5505A755441A1A1973EBCE65041B6D8563859755441E726470BC4E6504104BA92D257755441345860E1C4E65041864E4EBC54755441E726470BC4E65041837BFDC551755441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000B81E852B83E65041333333F35E7554413333333389E650419A9999995C755441AE47E1DA94E65041666666265A7554413D0AD7D3A3E65041000000F057755441B81E855BABE650410000002056755441B81E850BC4E650413D0AD7D35175544114AE4701BFE65041CDCCCCEC40755441C3F528BCBDE650413D0AD723407554415C8FC2257BE650411F85EBD14B7554413D0AD7D37AE65041C3F528DC4C755441B81E852B83E65041333333F35E755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987242 - 1757847
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000180000008B828EE183E6504121BD9A6C60755441E2902C3089E65041CCC06DE35E755441BAF4C18790E6504120164C9C5D755441194C6C4D97E6504140CF29895C755441D53562DBA1E65041B37680105B75544119AEA12CA7E65041AE7E5F2E5A755441B5E64072ACE65041D4E1233159755441A6847CE5ACE65041FD33B5515B755441122F7B16B3E65041D91F07A85A75544189FE9C0CB6E650411F97E5505A755441A1A1973EBCE65041B6D8563859755441E726470BC4E6504104BA92D257755441345860E1C4E65041864E4EBC54755441E726470BC4E65041837BFDC551755441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000B81E852B83E65041333333F35E7554413333333389E650419A9999995C755441AE47E1DA94E65041666666265A7554413D0AD7D3A3E65041000000F057755441B81E855BABE650410000002056755441B81E850BC4E650413D0AD7D35175544114AE4701BFE65041CDCCCCEC40755441C3F528BCBDE650413D0AD723407554415C8FC2257BE650411F85EBD14B7554413D0AD7D37AE65041C3F528DC4C755441B81E852B83E65041333333F35E755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>987242 - 4397157
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000180000008B828EE183E6504121BD9A6C60755441E2902C3089E65041CCC06DE35E755441BAF4C18790E6504120164C9C5D755441194C6C4D97E6504140CF29895C755441D53562DBA1E65041B37680105B75544119AEA12CA7E65041AE7E5F2E5A755441B5E64072ACE65041D4E1233159755441A6847CE5ACE65041FD33B5515B755441122F7B16B3E65041D91F07A85A75544189FE9C0CB6E650411F97E5505A755441A1A1973EBCE65041B6D8563859755441E726470BC4E6504104BA92D257755441345860E1C4E65041864E4EBC54755441E726470BC4E65041837BFDC551755441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000B81E852B83E65041333333F35E7554413333333389E650419A9999995C755441AE47E1DA94E65041666666265A7554413D0AD7D3A3E65041000000F057755441B81E855BABE650410000002056755441B81E850BC4E650413D0AD7D35175544114AE4701BFE65041CDCCCCEC40755441C3F528BCBDE650413D0AD723407554415C8FC2257BE650411F85EBD14B7554413D0AD7D37AE65041C3F528DC4C755441B81E852B83E65041333333F35E755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>646202 - 307650
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000B81E852B40625141F6285C7FCF3954410AD7A360406251413D0AD7A3D0395441295C8F924262514152B81E05DE395441AE47E1EA4462514185EB5128EB395441AE47E12A4562514152B81E95EC39544152B81E5547625141A4703D2AF93954418FC2F5B84962514133333353073A544185EB51184B62514100000030073A54418FC2F5E856625141CDCCCCFC063A54410AD7A32059625141A4703DCA063A5441295C8F1256625141AE47E16AF53954419A99993954625141CDCCCCBCEA3954418FC2F55853625141C3F528BCE539544114AE47615262514114AE4771E0395441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000142290125662514128ADE56AF5395441727A0CCA556251413841B5C7F3395441272804CA55625141792685C7F33954419A99993954625141CDCCCCBCEA39544133853BB953625141C7DBFEE0E7395441F634F55853625141684B29BCE539544162DF466152625141BD444871E0395441F4A173E351625141DB38B685DD39544114AE47515162514114AE4721DA3954413333330350625141E17A14BED2395441EFDD23DC4F625141E051A229D2395441BE7E8EF24E625141DBBBEBB1CE3954411821F1E64E6251417E65E97FCE39544152B81ED54E62514133333333CE395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662143 - 119735
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C0000001ED78BB885B550412CC824E601D05441161E6F2F9BB5504152220739FACF54410AD7A3D0B0B55041EC51B81EF3CF544185EB5118C4B5504148E17A84EDCF544133333353D5B550411F85EB21ECCF54411F85EBD1E1B55041C3F5288CE8CF54413D0AD763DEB55041E17A144EDFCF5441EC51B8FEDBB55041CDCCCC0CDACF5441C8F846167DB5504174BA667AF9CF5441D3E4458383B55041AB5D8BC502D054410AD1FCC684B5504189FD073C02D054411ED78BB885B550412CC824E601D05441
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000030B71E78B4B55041E5ECE10EF2CF54413C0AA1EEB8B55041D72661BFF0CF5441D9B1F01BC4B550413C1E2980EDCF5441DF55CB57D5B550411CB87D20ECCF5441D12E76CFE1B5504189DC048CE8CF544142E49975DEB55041A975327EDFCF544131A9CC7BDDB55041BE7BF250DDCF54416C8F64F8DCB55041C2E79E30DCCF54414997C400DCB55041A7214B11DACF5441E9C98400C6B550418EE73355E1CF5441E8293A32A4B5504135290387ECCF5441BE0883227DB5504136915976F9CF5441588D082583B5504103183F3D02D05441D1E4458383B55041AC5D8BC502D05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662143 - 319931
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C0000001ED78BB885B550412CC824E601D05441161E6F2F9BB5504152220739FACF54410AD7A3D0B0B55041EC51B81EF3CF544185EB5118C4B5504148E17A84EDCF544133333353D5B550411F85EB21ECCF54411F85EBD1E1B55041C3F5288CE8CF54413D0AD763DEB55041E17A144EDFCF5441EC51B8FEDBB55041CDCCCC0CDACF5441C8F846167DB5504174BA667AF9CF5441D3E4458383B55041AB5D8BC502D054410AD1FCC684B5504189FD073C02D054411ED78BB885B550412CC824E601D05441
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000030B71E78B4B55041E5ECE10EF2CF54413C0AA1EEB8B55041D72661BFF0CF5441D9B1F01BC4B550413C1E2980EDCF5441DF55CB57D5B550411CB87D20ECCF5441D12E76CFE1B5504189DC048CE8CF544142E49975DEB55041A975327EDFCF544131A9CC7BDDB55041BE7BF250DDCF54416C8F64F8DCB55041C2E79E30DCCF54414997C400DCB55041A7214B11DACF5441E9C98400C6B550418EE73355E1CF5441E8293A32A4B5504135290387ECCF5441BE0883227DB5504136915976F9CF5441588D082583B5504103183F3D02D05441D1E4458383B55041AC5D8BC502D05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>727355 - 55675
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000713D0AD76EB850410AD7A3D0B34055417B14AE5773B85041295C8FB2BB405541F6285C9F74B85041D7A3707DBD4055418FC2F51878B85041A4703DEABF40554148E17AA480B85041713D0A17B4405541A4703D6A80B85041B81E854BB3405541333333337CB85041B81E857BB2405541F6285CFF6FB85041CDCCCC1CB040554148E17A746DB8504114AE4771AF405541713D0AD76EB850410AD7A3D0B3405541
+</a>
+
+<b>
+01060000000100000001030000000100000023000000333333337CB85041B81E857BB2405541DA278DBD79B850412A633A01B24055416CC4748C76B8504192A08762B14055411406743E71B85041B66BC65AB0405541AB7564A770B8504177886F3DB0405541F6285CFF6FB85041CDCCCC1CB0405541D82352856FB85041E2E5A3FCAF405541C89728C56EB850411E6800CAAF4055410E308D5C6EB850415F7E6FAEAF4055414D9A98876DB850414B465176AF405541ECF63FC26DB850415273CD66B0405541205457FE6DB850417C578324B14055417F1E75606EB850413034455AB24055419FBA18BC6EB85041B11F947BB3405541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>107288 - 45238
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000040000000103000000030000002C000000C3F528BCB627514114AE47F15E425541C3F5280CB72751418FC2F5285E425541B81E853BB727514152B81E655D425541B81E853BB72751419A9999695C425541666666A6B6275141F6285C5F5B425541295C8FC2B52751413D0AD7735A425541295C8F32B4275141AE47E10A59425541C3F5284CB22751410AD7A3D0574255419A9999F9B02751418FC2F558574255419A999999AF27514185EB5128574255418FC2F528AE2751419A99990957425541713D0A07AD2751413333334357425541F6285C2FAC27514152B81E6558425541F6285C2FAB2751410AD7A34058425541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000ADFBFB7000285141EC8A850F244255415B7F5872FF2751414394AD4C25425541F66A63A9FE275141931EB915274255417B05D490FB27514159F1AFC3294255412FB29DD4FA275141E17A57072B425541570366B0F8275141D97CD2F82C42554114AE4791F8275141B81E851B2D4255416AC02681F82751411958B2232D425541F9233B61FA2751415A5E092F2E425541560764970128514104BB42F525425541B25C3C3D00285141C8F343D12B42554146407756FF275141CE7ACE152F4255416158D451FD275141CA05B762314255413585F0E6FD2751414078D03031425541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>107288 - 82820
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000040000000103000000030000002C000000C3F528BCB627514114AE47F15E425541C3F5280CB72751418FC2F5285E425541B81E853BB727514152B81E655D425541B81E853BB72751419A9999695C425541666666A6B6275141F6285C5F5B425541295C8FC2B52751413D0AD7735A425541295C8F32B4275141AE47E10A59425541C3F5284CB22751410AD7A3D0574255419A9999F9B02751418FC2F558574255419A999999AF27514185EB5128574255418FC2F528AE2751419A99990957425541713D0A07AD2751413333334357425541F6285C2FAC27514152B81E6558425541F6285C2FAB2751410AD7A34058425541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000ADFBFB7000285141EC8A850F244255415B7F5872FF2751414394AD4C25425541F66A63A9FE275141931EB915274255417B05D490FB27514159F1AFC3294255412FB29DD4FA275141E17A57072B425541570366B0F8275141D97CD2F82C42554114AE4791F8275141B81E851B2D4255416AC02681F82751411958B2232D425541F9233B61FA2751415A5E092F2E425541560764970128514104BB42F525425541B25C3C3D00285141C8F343D12B42554146407756FF275141CE7ACE152F4255416158D451FD275141CA05B762314255413585F0E6FD2751414078D03031425541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>641473 - 2908680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001F0000005C8FC235330A5141B81E854BC1E2544133333303380A51417B14AE47ABE25441F6285C5F380A514185EB5118A8E254419A999989330A51410AD7A310A9E254411F85EB81300A5141A4703D7AA9E2544114AE47E12B0A514185EB5148A9E254413D0AD7A3270A51413D0AD7C3A8E25441BD853D93270A514166DC71C3A8E25441F002E2B2240A5141CF4AC4B1A8E25441B8E8B6F6220A51417EF44CADA8E25441C339FBDC220A5141F162AE68B0E254417AEE33CB220A5141786949BDB5E2544161E46EC5220A5141BEDEDBDFB9E254411E4E38C2220A5141AB1840DDBBE25441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000250000004C7601A4270A514181E393C4A8E2544134A2DE5E270A5141B8DD29C2A8E254415D27CA70250A5141E9105DB5A8E25441868359B3240A5141D56215B4A8E25441CA8D30F7220A51418B819A9FA8E25441658D14F6220A5141A61FC7F3A8E25441EF0C06ED220A5141B173F3A2ABE25441290204E8220A514181812987ADE25441DAB1EFDD220A514167D76627B0E25441F615CBD4220A514150FCE4E3B2E2544128E419CD220A51414668A338B5E254411AC8B6CB220A5141282DEA84B6E254410B26EFC7220A5141852C90CAB8E25441B53A1CC4220A51410798B17BBBE25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>641473 - 3624617
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001F0000005C8FC235330A5141B81E854BC1E2544133333303380A51417B14AE47ABE25441F6285C5F380A514185EB5118A8E254419A999989330A51410AD7A310A9E254411F85EB81300A5141A4703D7AA9E2544114AE47E12B0A514185EB5148A9E254413D0AD7A3270A51413D0AD7C3A8E25441BD853D93270A514166DC71C3A8E25441F002E2B2240A5141CF4AC4B1A8E25441B8E8B6F6220A51417EF44CADA8E25441C339FBDC220A5141F162AE68B0E254417AEE33CB220A5141786949BDB5E2544161E46EC5220A5141BEDEDBDFB9E254411E4E38C2220A5141AB1840DDBBE25441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000250000004C7601A4270A514181E393C4A8E2544134A2DE5E270A5141B8DD29C2A8E254415D27CA70250A5141E9105DB5A8E25441868359B3240A5141D56215B4A8E25441CA8D30F7220A51418B819A9FA8E25441658D14F6220A5141A61FC7F3A8E25441EF0C06ED220A5141B173F3A2ABE25441290204E8220A514181812987ADE25441DAB1EFDD220A514167D76627B0E25441F615CBD4220A514150FCE4E3B2E2544128E419CD220A51414668A338B5E254411AC8B6CB220A5141282DEA84B6E254410B26EFC7220A5141852C90CAB8E25441B53A1CC4220A51410798B17BBBE25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>971727 - 403942
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000C000000010300000001000000EB0000001508528B1EA35041EDB842CB93475541F3AE5BB21BA35041A01A4E5299475541037484C61AA35041D3386D3F9B47554181E8CBAF19A350419D4830AD9D47554153B2185B17A35041987AA719A24755412685E09B15A35041CA43D5AEA5475541E18504A013A3504153428DA6A94755418D6BD17012A350410417922CAD47554194CFDB9A10A35041BA5930C5B2475541B3EEDB1F0FA350419D76C43DB7475541046D19790EA3504192E0B4FEB9475541EBC8D1FF0DA350412E2CC93EBC4755414BB5A86B0FA3504180FD4877BE475541688BF5F90EA35041939DE79EBF475541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000007EE999B471A35041D7E4643E24475541EE64EDBA72A35041BEBD85D222475541B47AE2E669A35041007967AA1C4755418032210069A35041E173CCAA1D47554168024B6668A3504116BC8D911E475541A1AB46D967A350413778D9511F47554122A29E3267A35041065B530520475541BF8AE3CB66A35041876AAD94204755413D0AD7A367A3504114AE472121475541B0EDC68B6FA3504193CBF9A9264755417EE999B471A35041D7E4643E24475541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>971727 - 420792
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000C000000010300000001000000EB0000001508528B1EA35041EDB842CB93475541F3AE5BB21BA35041A01A4E5299475541037484C61AA35041D3386D3F9B47554181E8CBAF19A350419D4830AD9D47554153B2185B17A35041987AA719A24755412685E09B15A35041CA43D5AEA5475541E18504A013A3504153428DA6A94755418D6BD17012A350410417922CAD47554194CFDB9A10A35041BA5930C5B2475541B3EEDB1F0FA350419D76C43DB7475541046D19790EA3504192E0B4FEB9475541EBC8D1FF0DA350412E2CC93EBC4755414BB5A86B0FA3504180FD4877BE475541688BF5F90EA35041939DE79EBF475541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000007EE999B471A35041D7E4643E24475541EE64EDBA72A35041BEBD85D222475541B47AE2E669A35041007967AA1C4755418032210069A35041E173CCAA1D47554168024B6668A3504116BC8D911E475541A1AB46D967A350413778D9511F47554122A29E3267A35041065B530520475541BF8AE3CB66A35041876AAD94204755413D0AD7A367A3504114AE472121475541B0EDC68B6FA3504193CBF9A9264755417EE999B471A35041D7E4643E24475541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>162513 - 2908582
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000058000000FA4B87EEB95051411E9CD7E544565441E17A141EBD50514185EB51C844565441666666F6C3505141333333E34656544152B81EE5C9505141000000D048565441C3F5287CC950514114AE47D146565441A10713D6C85051410DFD95BD43565441D1080E1EC850514149F0C5E73B56544119EF7430C8505141BDC27A74385654417052E80ECA505141B5F99D273656544130355E49CC5051410A486438355654414E4424AFD2505141B5F99D27365654411C052404DA505141A4DD0EAA37565441767D44B0DE505141BDC27A7438565441EB733724DF50514109458E4232565441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004F000000E3F1DFE19150514169CBB77026565441A5B512E991505141F19D561A26565441E5710184915051414742174F21565441C9320A3E99505141BDBAF4842056544133F5FEB5A950514194ABAFF01E565441CC1516EEB05051410DDD4D601E5654418C5558A0B6505141C5F51C181E565441C6BA218FB9505141D8205FC51E565441F43BE896BB5051416F6142C91F56544135E8F04BBE50514121F8A92722565441B47B2A49C150514173FA363726565441E95E8CDEC6505141BEB1B5CD2F56544121E42199C3505141BEB1B5CD2F565441A409A9D5C05051414A0E96EA2F565441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>162513 - 3625064
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000058000000FA4B87EEB95051411E9CD7E544565441E17A141EBD50514185EB51C844565441666666F6C3505141333333E34656544152B81EE5C9505141000000D048565441C3F5287CC950514114AE47D146565441A10713D6C85051410DFD95BD43565441D1080E1EC850514149F0C5E73B56544119EF7430C8505141BDC27A74385654417052E80ECA505141B5F99D273656544130355E49CC5051410A486438355654414E4424AFD2505141B5F99D27365654411C052404DA505141A4DD0EAA37565441767D44B0DE505141BDC27A7438565441EB733724DF50514109458E4232565441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004F000000E3F1DFE19150514169CBB77026565441A5B512E991505141F19D561A26565441E5710184915051414742174F21565441C9320A3E99505141BDBAF4842056544133F5FEB5A950514194ABAFF01E565441CC1516EEB05051410DDD4D601E5654418C5558A0B6505141C5F51C181E565441C6BA218FB9505141D8205FC51E565441F43BE896BB5051416F6142C91F56544135E8F04BBE50514121F8A92722565441B47B2A49C150514173FA363726565441E95E8CDEC6505141BEB1B5CD2F56544121E42199C3505141BEB1B5CD2F565441A409A9D5C05051414A0E96EA2F565441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>575777 - 2930867
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000110000006A89F2B544355141B1CD5D218E705441A4703D3A5C355141000000508B70544185EB51F85D355141EC51B8BE80705441295C8F225E3551410AD7A3C07F705441AE47E11A5F35514114AE47F17C705441C3F5282C53355141AE47E14A7D705441D7A370FD42355141CDCCCC5C7F705441E17A146E2E355141B81E85BB81705441390D2E862C3551410F8A9ECB91705441666666D62B35514152B81E959770544152B81E052C3551415C8FC2A59C705441CDCCCC0C2F3551419A999939AE70544148E17A3430355141295C8F62AF7054413D0AD73345355141B81E850BB3705441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000001A818F2D453551411AB908138E705441BA937EDE4435514179192EE48D7054413879540D403551417DF2738F8E7054410774C85A373551411D79BEC38F70544166916F2F2D355141F381CC5E91705441A98C0F8B2C355141F6927BA291705441666666D62B35514152B81E959770544152B81E052C3551415C8FC2A59C705441CDCCCC0C2F3551419A999939AE70544148E17A3430355141295C8F62AF7054413D0AD73345355141B81E850BB37054415C8FC2E5443551413D0AD753A170544114AE4791443551415C8FC2258E7054411A818F2D453551411AB908138E705441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>575777 - 3759163
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000110000006A89F2B544355141B1CD5D218E705441A4703D3A5C355141000000508B70544185EB51F85D355141EC51B8BE80705441295C8F225E3551410AD7A3C07F705441AE47E11A5F35514114AE47F17C705441C3F5282C53355141AE47E14A7D705441D7A370FD42355141CDCCCC5C7F705441E17A146E2E355141B81E85BB81705441390D2E862C3551410F8A9ECB91705441666666D62B35514152B81E959770544152B81E052C3551415C8FC2A59C705441CDCCCC0C2F3551419A999939AE70544148E17A3430355141295C8F62AF7054413D0AD73345355141B81E850BB3705441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000001A818F2D453551411AB908138E705441BA937EDE4435514179192EE48D7054413879540D403551417DF2738F8E7054410774C85A373551411D79BEC38F70544166916F2F2D355141F381CC5E91705441A98C0F8B2C355141F6927BA291705441666666D62B35514152B81E959770544152B81E052C3551415C8FC2A59C705441CDCCCC0C2F3551419A999939AE70544148E17A3430355141295C8F62AF7054413D0AD73345355141B81E850BB37054415C8FC2E5443551413D0AD753A170544114AE4791443551415C8FC2258E7054411A818F2D453551411AB908138E705441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2919891 - 204779
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000075000000E17A14CEA4165141EC51B82EC0D35441AE47E1FAA9165141D7A3703DB7D35441E17A14DEC316514185EB51A8E0D35441B81E852BFF16514100000020C9D354417B14AEB7861751418FC2F588C2D354418FC2F57817185141A4703D1AACD354416666665675185141C3F5282C80D35441F6285CFFD21851411F85EBB147D3544152B81EE5341951418FC2F52828D35441000000707F195141A4703DCA17D3544152B81E95C31951411F85EBB1EBD25441713D0A17F6195141C3F5288C04D35441295C8F22AD1951413D0AD753B7D35441713D0AD7851951417B14AEF7CAD35441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000570000009A5F61AD00165141EF67D5C9DAD25441ED4E03CBF6155141E9E1D652E0D25441EA546D11D015514159AC4ACFCAD254417396CD2198155141FC64977370D25441EFD502C7AA155141F86A01BA49D25441D3648079A615514185A6F78338D25441432FF4F5901551416835753634D25441094DEF5A88155141324D065552D25441E260419E821551416F29A1A981D25441A0031194781551419F907AD588D25441A684A649531551415F2DE084A5D25441A684A64953155141D3F1E9BAB6D25441253E611357155141CF4A4A75CDD254417B14AE675A155141D7A370ADCFD25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>2979014 - 59292
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000001F85EB11E8E85041333333338DFD54415C8FC205EAE85041333333139FFD544114AE4741F0E85041D7A3707D9EFD544148E17AD4F1E85041713D0AC79DFD5441C3F5283CF2E8504114AE47019CFD544185EB5158F1E85041CDCCCC4C90FD5441CDCCCC4CF1E8504152B81E458BFD5441EC51B8CEF1E850411F85EB4186FD54417B14AE87F3E85041295C8F227FFD544133333333EAE8504185EB51C87FFD54413D0AD773EAE85041295C8F628DFD54411F85EB11E8E85041333333338DFD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000027AE1B13E3E85041A974B3688CFD544100440FE5DDE85041C89060588CFD5441320907B6DDE850417543925A8CFD54417B14AE87D6E850418FC2F5C88CFD54417DC0A0B0D9E8504126625D7DA0FD54413E804F05EAE85041F5053E139FFD54414DC3D818E8E85041221D9D728DFD5441F2516C17E8E8504164AA94658DFD54412867B213E8E85041119F77438DFD54417003A013E8E850413D44CF428DFD544127AE1B13E3E85041A974B3688CFD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>193231 - 3039273
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000032000000C3F528FC4FAF50410000005038C454410AD7A38046AF5041CDCCCCEC19C45441B81E856B40AF5041AE47E1AA1DC45441D7A3707D32AF50419A99994924C45441AE47E17A1AAF50410AD7A30029C45441713D0AC71FAF5041AE47E15A3BC45441713D0A47FCAE5041A4703D4A42C45441295C8FC2F6AE5041C3F5280C30C45441EC51B81EF3AE50413D0AD7B330C454418FC2F558FCAE50413D0AD7434EC454417B14AE27FFAE5041CDCCCC6C50C45441D7A370FD00AF50417B14AEA74EC4544185EB51E805AF5041E17A14BE4DC45441F6285C4F0BAF5041333333A34CC45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000061B5C57FF7AE50410A1666BB3EC45441147C70C9F8AE50413AE890DB42C4544183431C40FAAE50411403EA8B47C454410D3569A1FBAE5041E6E39E044CC454418FC2F558FCAE50413D0AD7434EC45441000000A01EAF50410000003046C454414CA0D0F427AF504190C5B0853AC4544114AE47C135AF50415C8FC2E53BC45441DAE72FC73EAF50410B0EEBE244C45441C3F528FC4FAF50410000005038C45441F87579B34FAF504188A4126737C45441BF758FCC4DAF50410FD2B64E31C454410AD7A38046AF5041CDCCCCEC19C4544158A1D0B940AF504196B6B47A1DC45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>193231 - 3279195
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000032000000C3F528FC4FAF50410000005038C454410AD7A38046AF5041CDCCCCEC19C45441B81E856B40AF5041AE47E1AA1DC45441D7A3707D32AF50419A99994924C45441AE47E17A1AAF50410AD7A30029C45441713D0AC71FAF5041AE47E15A3BC45441713D0A47FCAE5041A4703D4A42C45441295C8FC2F6AE5041C3F5280C30C45441EC51B81EF3AE50413D0AD7B330C454418FC2F558FCAE50413D0AD7434EC454417B14AE27FFAE5041CDCCCC6C50C45441D7A370FD00AF50417B14AEA74EC4544185EB51E805AF5041E17A14BE4DC45441F6285C4F0BAF5041333333A34CC45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000061B5C57FF7AE50410A1666BB3EC45441147C70C9F8AE50413AE890DB42C4544183431C40FAAE50411403EA8B47C454410D3569A1FBAE5041E6E39E044CC454418FC2F558FCAE50413D0AD7434EC45441000000A01EAF50410000003046C454414CA0D0F427AF504190C5B0853AC4544114AE47C135AF50415C8FC2E53BC45441DAE72FC73EAF50410B0EEBE244C45441C3F528FC4FAF50410000005038C45441F87579B34FAF504188A4126737C45441BF758FCC4DAF50410FD2B64E31C454410AD7A38046AF5041CDCCCCEC19C4544158A1D0B940AF504196B6B47A1DC45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>194230 - 194456
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000019000000A4703D0A0E16514114AE47F182F25441A4703D9A12165141000000607EF25441000000D018165141295C8F4279F2544152B81EF51A16514152B81E8577F25441B81E85FB1D165141E17A140E75F254418FC2F57820165141713D0AC772F25441CDCCCC0C22165141C3F5282C71F2544152B81E15271651411F85EB516CF2544185EB512828165141000000D06AF254411F85EB012A165141CDCCCCCC67F254413D0AD75324165141D7A3707D68F254418FC2F52822165141000000F06BF25441D7A3706D2016514152B81E256EF254415C8FC2451E1651418FC2F58870F25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000CD01BC9E0C1651412A72815B84F25441A4703D0A0E16514114AE47F182F254419E67C39D0C165141E330FF9580F254415BC4437B08165141D324236084F254413891EC61FF155141F29C0AB78CF25441946C94E9FA155141555734C290F25441666666F6F81551415C8FC28592F2544149C57BF4F31551417CC3983997F254416477E25AF6155141A5BFD55399F2544195C465E6FD155141C30DD77392F25441B69420E5FE1551417DC6098C91F25441666666E6001651418FC2F5B88FF254419CE18A4D0916514174CFF99287F25441CD01BC9E0C1651412A72815B84F25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>194230 - 384280
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000019000000A4703D0A0E16514114AE47F182F25441A4703D9A12165141000000607EF25441000000D018165141295C8F4279F2544152B81EF51A16514152B81E8577F25441B81E85FB1D165141E17A140E75F254418FC2F57820165141713D0AC772F25441CDCCCC0C22165141C3F5282C71F2544152B81E15271651411F85EB516CF2544185EB512828165141000000D06AF254411F85EB012A165141CDCCCCCC67F254413D0AD75324165141D7A3707D68F254418FC2F52822165141000000F06BF25441D7A3706D2016514152B81E256EF254415C8FC2451E1651418FC2F58870F25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000D802BC9E0C1651412071815B84F254415454FA090E165141E58D8AF182F254419B67C39D0C165141E530FF9580F2544157C4437B08165141CF24236084F254413891EC61FF155141F29C0AB78CF25441946C94E9FA155141555734C290F25441666666F6F81551415C8FC28592F2544149C57BF4F31551417CC3983997F254416477E25AF6155141A5BFD55399F2544195C465E6FD155141C30DD77392F25441B89420E5FE1551417DC6098C91F25441666666E6001651418FC2F5B88FF254410064D34C091651413ABEAB9387F2544149D8B79E0C165141781E855B84F25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>1608 - 59450
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000500000014AE47418E6C5041295C8F52292D5541C3F5286C916C5041CDCCCCAC2D2D554152B81E45BA6C5041713D0A27142D5541C3F528ECB76C504185EB51480F2D554114AE47418E6C5041295C8F52292D5541
+</a>
+
+<b>
+01060000000100000001030000000100000008000000B83BBCC5AB6C5041D89C00361D2D5541465F0738BA6C5041C9B5E10B142D554193DAFC95B96C50418542B8BB122D55413986D282B86C50411A4FE080102D5541D2B270C9B76C5041E79D045E0F2D554114AE47418E6C5041295C8F52292D5541C3F5286C916C5041CDCCCCAC2D2D5541B83BBCC5AB6C5041D89C00361D2D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537931 - 1242461
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003C000000AE77A3AD316151417580797AE26C5441F6285CFF3361514185EB5158E46C54413D0AD76336615141295C8F92E56C544114AE471139615141EC51B88EE16C54419A999929396151419A999979E06C54418FC2F5E838615141295C8FF2DF6C54410000003037615141000000C0DF6C5441CDCCCC6C356151413D0AD783DF6C5441295C8F5232615141333333C3DE6C5441E17A14EE3061514185EB51F8DD6C5441333333932F615141E17A14EEDC6C544152B81E252461514185EB5168D26C544133333323236151417B14AEB7D16C5441EC51B8BE2261514133333373D16C5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000042000000E254458DF660514156BE76C4C66C54414C86C9B5F96051418F0D317BC26C54418703AEFEF96051412AFBBD9AC26C54414F25E207FA605141B5A6BB83C26C54413D09652100615141A7929A42C56C54415B971DD3086151410FBDF905C96C54411F85EB61156151418FC2F518CE6C5441A4703D0A1E615141AE47E19AD16C5441A4703D4A256151411F85EBB1D66C54410AD7A3C030615141CDCCCCFCE06C5441B377A3AD316151417D80797AE26C5441F6285CFF3361514185EB5158E46C54413D0AD76336615141295C8F92E56C544114AE471139615141EC51B88EE16C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537931 - 3314665
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003C000000AE77A3AD316151417580797AE26C5441F6285CFF3361514185EB5158E46C54413D0AD76336615141295C8F92E56C544114AE471139615141EC51B88EE16C54419A999929396151419A999979E06C54418FC2F5E838615141295C8FF2DF6C54410000003037615141000000C0DF6C5441CDCCCC6C356151413D0AD783DF6C5441295C8F5232615141333333C3DE6C5441E17A14EE3061514185EB51F8DD6C5441333333932F615141E17A14EEDC6C544152B81E252461514185EB5168D26C544133333323236151417B14AEB7D16C5441EC51B8BE2261514133333373D16C5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000042000000E254458DF660514156BE76C4C66C54414C86C9B5F96051418F0D317BC26C54418703AEFEF96051412AFBBD9AC26C54414F25E207FA605141B5A6BB83C26C54413D09652100615141A7929A42C56C54415B971DD3086151410FBDF905C96C54411F85EB61156151418FC2F518CE6C5441A4703D0A1E615141AE47E19AD16C5441A4703D4A256151411F85EBB1D66C54410AD7A3C030615141CDCCCCFCE06C5441B377A3AD316151417D80797AE26C5441F6285CFF3361514185EB5158E46C54413D0AD76336615141295C8F92E56C544114AE471139615141EC51B88EE16C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447285 - 447447
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000040000000103000000020000005100000010AD7EE7AB465141919CF48D30335441AC8D21E9AB4651416966811A2A3354417B14AE37A2465141E17A14EE1B3354410297DB229C465141E6195F401F335441938065B190465141E10532DB1D335441D2F019B393465141B10D7E182B335441E17E42E2A64651414119916E2A3354411F85EBF1A9465141EC51B8FE2B335441634DC6B6AA4651416B80FE9D2E335441713D0AE7AA465141F6285C0F3133544100000080AB465141F6285C6F32335441C3F528FCAA4651410AD7A3B038335441C3F5283CAD46514100000050383354418FC2F508AF465141F6285CFF37335441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000078000000AE47E1EA864651415C8FC2653B33544185EB5148884651417B14AEF73C335441666666E688465141EC51B8EE3D335441E17A145E89465141295C8F123F3354415C8FC295894651413D0AD7933F335441AE47E11A8A46514114AE4751403354411F85EB018B4651410AD7A32041335441B81E857B8B46514185EB5168433354411F85EB118C465141D7A3700D453354419A9999798C4651417B14AEF7453354411F85EB318D465141CDCCCC2C463354413333334391465141A4703D5A47335441666666E69446514185EB51D84A33544152B81EE595465141E17A14FE4B335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447285 - 1123046
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000040000000103000000020000005100000010AD7EE7AB465141919CF48D30335441AC8D21E9AB4651416966811A2A3354417B14AE37A2465141E17A14EE1B3354410297DB229C465141E6195F401F335441938065B190465141E10532DB1D335441D2F019B393465141B10D7E182B335441E17E42E2A64651414119916E2A3354411F85EBF1A9465141EC51B8FE2B335441634DC6B6AA4651416B80FE9D2E335441713D0AE7AA465141F6285C0F3133544100000080AB465141F6285C6F32335441C3F528FCAA4651410AD7A3B038335441C3F5283CAD46514100000050383354418FC2F508AF465141F6285CFF37335441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000079000000B81E858B914651419A9999795E33544148E17AB4914651413D0AD7536333544114AE470192465141B81E856B6B3354417B14AE7792465141AE47E11A6C3354413D0AD76393465141F6285CEF6B3354419A9999E997465141295C8F026A335441B81E85DB9846514185EB51A869335441295C8F229C4651411F85EB9168335441B81E85FBA04651411F85EBE1663354418FC2F508A4465141295C8FB2653354410AD7A390A6465141295C8FC264335441AE47E14AA9465141E17A149E63335441713D0AE7AB46514114AE47B162335441D7A3704DAF465141333333B361335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447285 - 3280652
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000040000000103000000020000005100000010AD7EE7AB465141919CF48D30335441AC8D21E9AB4651416966811A2A3354417B14AE37A2465141E17A14EE1B3354410297DB229C465141E6195F401F335441938065B190465141E10532DB1D335441D2F019B393465141B10D7E182B335441E17E42E2A64651414119916E2A3354411F85EBF1A9465141EC51B8FE2B335441634DC6B6AA4651416B80FE9D2E335441713D0AE7AA465141F6285C0F3133544100000080AB465141F6285C6F32335441C3F528FCAA4651410AD7A3B038335441C3F5283CAD46514100000050383354418FC2F508AF465141F6285CFF37335441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000079000000B81E858B914651419A9999795E33544148E17AB4914651413D0AD7536333544114AE470192465141B81E856B6B3354417B14AE7792465141AE47E11A6C3354413D0AD76393465141F6285CEF6B3354419A9999E997465141295C8F026A335441B81E85DB9846514185EB51A869335441295C8F229C4651411F85EB9168335441B81E85FBA04651411F85EBE1663354418FC2F508A4465141295C8FB2653354410AD7A390A6465141295C8FC264335441AE47E14AA9465141E17A149E63335441713D0AE7AB46514114AE47B162335441D7A3704DAF465141333333B361335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>302886 - 302892
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000B000000C3F528EC54DF504114AE475115365541CDCCCCDC57DF50415C8FC2151236554148E17AD45ADF5041333333D30E3655410AD7A3B04FDF5041713D0AE7FE3555415C8FC23543DF50415C8FC255ED3555417B14AEA740DF50418FC2F5E8F1355541713D0A473EDF5041AE47E12AF6355541713D0A773ADF50417B14AEA7FE3555419A9999393ADF5041F6285CAFFF3555411F85EBC14EDF50417B14AE171C365541C3F528EC54DF504114AE475115365541
+</a>
+
+<b>
+01060000000300000001030000000100000011000000F4B790B560DF5041359431530836554185EB518864DF5041A4703D2A04365541B81E85BB72DF5041F6285C8FF4355541D7A370BD72DF5041295C8F12F33555415C8FC2C564DF5041E17A145EE3355541B81E857B62DF5041713D0A77E035554114AE47315FDF5041EC51B88EDD35554152B81E355BDF5041295C8FC2DA3555413D0AD7C359DF5041F6285CBFD93555413D0AD71355DF50415C8FC255D6355541EC51B8DE51DF5041F6285CAFD4355541666666264FDF50410AD7A310D8355541666666E64CDF5041713D0AF7DB355541666666A649DF504133333383E1355541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>755124 - 121134
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000000000050CCD05041D7A370DDB2D1544183E6C078CED05041C713EF27ADD1544172156C7FDAD05041E89074DDABD15441B51F51ABE6D050410E32E70CADD15441E17A14CEE9D0504185EB5108A5D15441EC51B86EECD050417B14AEF79BD15441713D0A37E2D0504152B81E259AD154419A999949DED0504152B81E559BD154418FC2F598DAD050413D0AD7F39BD15441E17A146ECFD050415C8FC2C59AD15441AE47E14ACED05041333333D39ED154418FC2F538CDD05041D7A3708DA1D1544152B81E95C9D05041AE47E17AABD15441B01BC115C8D0504197277702B0D15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000B81F51ABE6D050411332E70CADD154413A9D9A30E9D050414359F89AA6D15441E17A14CEE9D0504185EB5108A5D1544134FF5E46EAD05041195F4F69A3D154411ADEEE69EAD05041AD959EEEA2D15441EC51B86EECD050417B14AEF79BD15441713D0A37E2D0504152B81E259AD154419A999949DED0504152B81E559BD154418FC2F598DAD050413D0AD7F39BD154410D03D255DAD0504102EBBEEC9BD154419AFFFC49DAD050413C9968EF9BD15441AD0FF1C9D5D0504170EB308F9BD15441E17A146ECFD050415C8FC2C59AD15441AE47E14ACED05041333333D39ED15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>755124 - 321218
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000000000050CCD05041D7A370DDB2D1544183E6C078CED05041C713EF27ADD1544172156C7FDAD05041E89074DDABD15441B51F51ABE6D050410E32E70CADD15441E17A14CEE9D0504185EB5108A5D15441EC51B86EECD050417B14AEF79BD15441713D0A37E2D0504152B81E259AD154419A999949DED0504152B81E559BD154418FC2F598DAD050413D0AD7F39BD15441E17A146ECFD050415C8FC2C59AD15441AE47E14ACED05041333333D39ED154418FC2F538CDD05041D7A3708DA1D1544152B81E95C9D05041AE47E17AABD15441B01BC115C8D0504197277702B0D15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000B81F51ABE6D050411332E70CADD154413A9D9A30E9D050414359F89AA6D15441E17A14CEE9D0504185EB5108A5D1544134FF5E46EAD05041195F4F69A3D154411ADEEE69EAD05041AD959EEEA2D15441EC51B86EECD050417B14AEF79BD15441713D0A37E2D0504152B81E259AD154419A999949DED0504152B81E559BD154418FC2F598DAD050413D0AD7F39BD154410D03D255DAD0504102EBBEEC9BD154419AFFFC49DAD050413C9968EF9BD15441AD0FF1C9D5D0504170EB308F9BD15441E17A146ECFD050415C8FC2C59AD15441AE47E14ACED05041333333D39ED15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>4764 - 58777
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000029000000AE47E15A3C1551410AD7A3B0CEF854410AD7A3E03B155141EC51B82ED3F854418FC2F5583A155141D7A3704DD9F854411F85EB213415514152B81E15DEF85441295C8F8232155141F6285C6FDFF8544148E17AA42D155141A4703DCAE3F85441B81E855B29155141666666E6E7F854411F85EB412815514185EB5168E7F85441AE47E14A2C15514148E17AC4E9F85441295C8F8230155141D7A370CDEBF85441D7A3703D341551411F85EB11EDF854413D0AD77335155141EC51B8AEE7F854419A9999793915514152B81E45E9F85441000000F03D15514100000080EAF85441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000320000006FBDE0595A1551415A0D9D20F0F85441A15D92575A155141ECB69CAFEFF854415984FA6F5B155141DE383639E9F85441C40F9A58521551416B7CD83CE8F854418389A780521551414B09C63DE7F854410AD7A3E05215514152B81EC5E4F85441F6285C1F54155141333333A3DCF85441000000A0541551415C8FC265D6F8544198DDCA9C53155141A7CDBF4FD6F854411414F5394B1551416F54F8B9D5F8544189A7543D4B155141A361BC99D5F8544152B81E254B1551417B14AE97D5F85441333333234B155141AE47E16AD5F8544185EB51284B155141AE47E1EAD2F85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6360 - 3044105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000006666660669BA50415C8FC22535DB544152B81ED578BA50413D0AD74346DB54413333331388BA5041C3F5284C54DB54410AD7A3508CBA5041713D0A9758DB5441EC51B82EA6BA50418FC2F5C825DB54419A9999D97BBA5041F6285C0F1BDB54418FC2F58879BA50411F85EB111BDB54415C8FC2E574BA50413D0AD71323DB5441A4703D0A70BA5041333333B32ADB544114AE47916ABA50410AD7A37032DB54416666660669BA50415C8FC22535DB5441
+</a>
+
+<b>
+01060000000100000001030000000100000005000000805224608CBA5041BEF3977858DB544126EEB1DE8FBA5041225153915ADB544178AC39DD93BA50418916DA6553DB5441F741B2FB8FBA50411651B06251DB5441805224608CBA5041BEF3977858DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6360 - 3291223
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000006666660669BA50415C8FC22535DB544152B81ED578BA50413D0AD74346DB54413333331388BA5041C3F5284C54DB54410AD7A3508CBA5041713D0A9758DB5441EC51B82EA6BA50418FC2F5C825DB54419A9999D97BBA5041F6285C0F1BDB54418FC2F58879BA50411F85EB111BDB54415C8FC2E574BA50413D0AD71323DB5441A4703D0A70BA5041333333B32ADB544114AE47916ABA50410AD7A37032DB54416666660669BA50415C8FC22535DB5441
+</a>
+
+<b>
+01060000000100000001030000000100000005000000805224608CBA5041BEF3977858DB544126EEB1DE8FBA5041225153915ADB544178AC39DD93BA50418916DA6553DB5441F741B2FB8FBA50411651B06251DB5441805224608CBA5041BEF3977858DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6422 - 3269393
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000008000000B81E857B29BA50413D0AD7731EE0544148E17A8429BA504114AE474131E054415C8FC2152DBA50411F85EB5139E054413D0AD7A330BA5041B81E85BB3FE054416666662632BA50413D0AD74342E0544185EB511832BA50417B14AE2723E05441E17A14EE30BA50410000007021E05441B81E857B29BA50413D0AD7731EE05441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000048E17A0431BA504185EB513867E054417B14AE3732BA50411F85EB5166E054416666662632BA50413D0AD74342E0544124AE522C30BA5041D67BEFE33EE0544156D0CA462EBA504120EA22783BE0544130B040752CBA5041EE3010E737E05441F43FF3ED29BA5041F50EB72F32E0544106EC268429BA5041EE38189130E05441693C0D7F29BA504131101FDD25E05441B81E857B29BA50413D0AD7731EE054413D0AD72320BA504148E17AB41AE0544152B81ED51DBA5041C3F528BC1AE05441EC51B83E0EBA504148E17A7421E05441E17A14AE03BA50418FC2F57826E05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6433 - 142552
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000020000000295C8F82A0BA50413D0AD77392DB5441713D0A179EBA5041295C8F0296DB5441C3F5287CA3BA5041B81E85DB98DB544148E17AA4E0BA5041B81E856B5DDB54419A999909E1BA5041EC51B89E5BDB5441D7A3705DDABA5041295C8F125CDB5441E17A140ECEBA5041A4703D7A5CDB54410AD7A340C3BA50411F85EBA15CDB5441F6285C9FB4BA5041B81E85AB5CDB544100000000B1BA5041000000B05CDB5441D7A3704DA9BA5041E17A145E5DDB5441AE47E10AA3BA5041EC51B8CE5EDB5441EC51B8CE9CBA5041F6285CEF60DB54410AD7A33096BA5041E17A14EE63DB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003200000082227755AFBA5041F8FDCF1B9FDB5441996E2BAFB5BA5041D204F44EA2DB5441CB51168DB9BA50414200EF3CA4DB544139641FA5BCBA504191C93CBAA5DB544170A202D5C2BA50411CFADAB69FDB54417C28DA98C4BA5041F0B3B5FF9DDB54411D2F16ADC5BA50414AB93CF39CDB5441BB607FA5CABA50410668941E98DB54418D1E974DCCBA5041344E678296DB5441530A0DDECCBA5041BB8900F695DB5441FA96D312CDBA5041F89EB5C295DB54419530A68FD7BA5041AFD853918BDB54411D7CB5E6D9BA5041BFC9194B89DB5441774B2C37DFBA50411E40DD2084DB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6480 - 3044105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3508CBA5041713D0A9758DB54418FC2F5B894BA50419A99991961DB5441D7A3707D9BBA5041C3F528CC5DDB5441CDCCCC2CA2BA50411F85EB915BDB5441B81E853BA7BA50415C8FC2855ADB544166666606A9BA5041713D0A2759DB5441CDCCCC4CBFBA50417B14AE672DDB54417B14AEA7BEBA5041C3F528FC2BDB5441EC51B82EA6BA50418FC2F5C825DB54410AD7A3508CBA5041713D0A9758DB5441
+</a>
+
+<b>
+01060000000100000001030000000100000005000000805224608CBA5041BEF3977858DB544126EEB1DE8FBA5041225153915ADB544178AC39DD93BA50418916DA6553DB5441F741B2FB8FBA50411651B06251DB5441805224608CBA5041BEF3977858DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6480 - 3291223
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3508CBA5041713D0A9758DB54418FC2F5B894BA50419A99991961DB5441D7A3707D9BBA5041C3F528CC5DDB5441CDCCCC2CA2BA50411F85EB915BDB5441B81E853BA7BA50415C8FC2855ADB544166666606A9BA5041713D0A2759DB5441CDCCCC4CBFBA50417B14AE672DDB54417B14AEA7BEBA5041C3F528FC2BDB5441EC51B82EA6BA50418FC2F5C825DB54410AD7A3508CBA5041713D0A9758DB5441
+</a>
+
+<b>
+01060000000100000001030000000100000005000000805224608CBA5041BEF3977858DB544126EEB1DE8FBA5041225153915ADB544178AC39DD93BA50418916DA6553DB5441F741B2FB8FBA50411651B06251DB5441805224608CBA5041BEF3977858DB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6500 - 4175798
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001600000048E17A0447BB504114AE47F134DA544148E17A5443BB50417B14AE7730DA5441E17A14CE3EBB5041666666762ADA54417B14AE172FBB504114AE47F12FDA54415C8FC2252EBB50415C8FC24530DA54413D0AD7A319BB5041CDCCCC6C37DA54416666668612BB5041713D0A5744DA54413D0AD7530EBB5041C3F5286C4BDA5441CDCCCCBC10BB5041CDCCCC4C4FDA54417B14AE8711BB504114AE47E151DA5441B81E858B11BB5041EC51B89E54DA54415C8FC22511BB5041713D0AA758DA5441CDCCCC0C18BB5041C3F528CC55DA544152B81E8523BB5041C3F528BC51DA5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000038000000EC51B8EE09BB5041F6285CCF97DA5441A4703D2A0CBB50418FC2F5989ADA54411F85EBC10EBB5041295C8F129DDA54415C8FC2D510BB5041D7A3705D9BDA5441D7A370BD12BB5041B81E851B99DA544148E17AB415BB50410AD7A3B094DA54419A99994917BB5041AE47E1AA91DA54410AD7A34019BB5041B81E85CB8CDA5441000000D01EBB50413333331382DA54417B14AEB721BB504114AE47417DDA5441EC51B84E25BB5041A4703D8A78DA54417B14AE972ABB5041A4703DEA71DA5441A4703DFA2EBB5041000000206DDA54415C8FC23533BB50411F85EB0169DA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6520 - 244779
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001700000052B81EF59DBB50415C8FC2D549DA5441C3F528EC9DBB50419A99991945DA544152B81EE59DBB5041333333D342DA5441EC51B88E97BB50419A9999D942DA54415C8FC2B58EBB5041666666D643DA5441EC51B89E7EBB504148E17A0446DA5441EC51B83E7CBB50410AD7A33046DA54418FC2F5D879BB5041AE47E1EA45DA54410000008079BB5041AE47E1DA46DA54417B14AEF777BB50410000005047DA5441713D0A1777BB504152B81EE549DA5441A4703DDA75BB50415C8FC2654DDA5441CDCCCCCC72BB5041C3F528BC51DA5441EC51B89E6FBB5041295C8F7254DA5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000003D0AD77382BB50413D0AD78362DA54413735F90589BB5041ADF413A161DA5441AA94B7EB89BB504148491FB14BDA544164424AED85BB5041BC7B7C4A4CDA5441947376AA81BB5041338A3EAD4CDA5441D2BC0FE07DBB50415C589C224DDA544160977B3B75BB5041B41B8BC44EDA54417B20A6CF74BB504166B393E04EDA5441DBCCCCCC72BB5041FFF528BC51DA54410A52B89E6FBB50412D5C8F7254DA54410DA83FDC6EBB5041AE6280C754DA5441C3F528EC6BBB50410000001056DA5441DDD3AE8A68BB504177889A6756DA5441240AD76366BB504115295C9F56DA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6520 - 353348
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001700000052B81EF59DBB50415C8FC2D549DA5441C3F528EC9DBB50419A99991945DA544152B81EE59DBB5041333333D342DA5441EC51B88E97BB50419A9999D942DA54415C8FC2B58EBB5041666666D643DA5441EC51B89E7EBB504148E17A0446DA5441EC51B83E7CBB50410AD7A33046DA54418FC2F5D879BB5041AE47E1EA45DA54410000008079BB5041AE47E1DA46DA54417B14AEF777BB50410000005047DA5441713D0A1777BB504152B81EE549DA5441A4703DDA75BB50415C8FC2654DDA5441CDCCCCCC72BB5041C3F528BC51DA5441EC51B89E6FBB5041295C8F7254DA5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000003D0AD77382BB50413D0AD78362DA54413735F90589BB5041ADF413A161DA5441AA94B7EB89BB504148491FB14BDA544164424AED85BB5041BC7B7C4A4CDA5441947376AA81BB5041338A3EAD4CDA5441D2BC0FE07DBB50415C589C224DDA544160977B3B75BB5041B41B8BC44EDA54417B20A6CF74BB504166B393E04EDA5441DBCCCCCC72BB5041FFF528BC51DA54410A52B89E6FBB50412D5C8F7254DA54410DA83FDC6EBB5041AE6280C754DA5441C3F528EC6BBB50410000001056DA5441DDD3AE8A68BB504177889A6756DA5441240AD76366BB504115295C9F56DA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6756 - 58715
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B00000014AE478158BA50410000004072DC544152B81E455ABA5041AE47E1BA72DC5441713D0AB75FBA5041A4703DAA74DC5441713D0A5765BA50410AD7A3D076DC5441713D0A476BBA5041EC51B89E79DC54411F85EB8174BA504148E17A647EDC544114AE47217CBA50410AD7A3A082DC5441295C8FC283BA50418FC2F52859DC544185EB516882BA5041D7A3708D58DC5441B81E859B5FBA5041666666A64BDC544114AE478158BA50410000004072DC5441
+</a>
+
+<b>
+01060000000100000001030000000100000030000000713D0AB75FBA5041A4703DAA74DC5441AF5927CC5FBA5041AE644FB274DC5441244F025D61BA5041C7A3864B75DC5441713D0A5765BA50410AD7A3D076DC544177C16A8468BA5041227CE55078DC5441C09235A868BA50415B31CE6178DC5441167C6AEC68BA50415018078278DC544108F4C00869BA504136426A8F78DC5441713D0A476BBA5041EC51B89E79DC54411F85EB8174BA504148E17A647EDC5441A6FED8097ABA5041D576287781DC54418608FF297ABA5041FC01058981DC544130178D497ABA50419B1C8D9A81DC544195642F0F7BBA5041B6E65A0882DC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6756 - 119479
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B00000014AE478158BA50410000004072DC544152B81E455ABA5041AE47E1BA72DC5441713D0AB75FBA5041A4703DAA74DC5441713D0A5765BA50410AD7A3D076DC5441713D0A476BBA5041EC51B89E79DC54411F85EB8174BA504148E17A647EDC544114AE47217CBA50410AD7A3A082DC5441295C8FC283BA50418FC2F52859DC544185EB516882BA5041D7A3708D58DC5441B81E859B5FBA5041666666A64BDC544114AE478158BA50410000004072DC5441
+</a>
+
+<b>
+01060000000100000001030000000100000030000000713D0AB75FBA5041A4703DAA74DC5441AB5927CC5FBA5041AD644FB274DC5441254F025D61BA5041C9A3864B75DC5441713D0A5765BA50410AD7A3D076DC544175C16A8468BA5041267CE55078DC5441BF9235A868BA50415C31CE6178DC5441157C6AEC68BA50414D18078278DC544106F4C00869BA504133426A8F78DC5441713D0A476BBA5041EC51B89E79DC54411F85EB8174BA504148E17A647EDC5441AAFED8097ABA5041D776287781DC54418908FF297ABA5041FD01058981DC544135178D497ABA50419E1C8D9A81DC544192642F0F7BBA5041B6E65A0882DC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6756 - 319686
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B00000014AE478158BA50410000004072DC544152B81E455ABA5041AE47E1BA72DC5441713D0AB75FBA5041A4703DAA74DC5441713D0A5765BA50410AD7A3D076DC5441713D0A476BBA5041EC51B89E79DC54411F85EB8174BA504148E17A647EDC544114AE47217CBA50410AD7A3A082DC5441295C8FC283BA50418FC2F52859DC544185EB516882BA5041D7A3708D58DC5441B81E859B5FBA5041666666A64BDC544114AE478158BA50410000004072DC5441
+</a>
+
+<b>
+01060000000100000001030000000100000030000000713D0AB75FBA5041A4703DAA74DC5441AB5927CC5FBA5041AD644FB274DC5441254F025D61BA5041C9A3864B75DC5441713D0A5765BA50410AD7A3D076DC544175C16A8468BA5041267CE55078DC5441BF9235A868BA50415C31CE6178DC5441157C6AEC68BA50414D18078278DC544106F4C00869BA504133426A8F78DC5441713D0A476BBA5041EC51B89E79DC54411F85EB8174BA504148E17A647EDC5441AAFED8097ABA5041D776287781DC54418908FF297ABA5041FD01058981DC544135178D497ABA50419E1C8D9A81DC544192642F0F7BBA5041B6E65A0882DC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6850 - 58839
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000F00000048E17AF434BC50417B14AE17CDDA5441AE47E12A35BC50417B14AE17D4DA54410AD7A3103CBC5041B81E850BD4DA5441C3F528AC4ABC504152B81EF5D3DA544114AE47D151BC50417B14AE47D4DA5441A4703DFA5ABC50419A999949D6DA54413D0AD72362BC50417B14AE67D7DA5441AE47E1BA69BC5041D7A3706DD6DA54410000000079BC504185EB51E8CEDA5441E17A141E78BC50410AD7A370C9DA544148E17AE477BC5041A4703D5AC8DA54410AD7A3205FBC5041B81E85EBC9DA54419A9999694BBC504114AE4761CADA5441EC51B89E34BC5041295C8FD2CBDA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000048E17AF434BC50417B14AE17CDDA54417FDDB20335BC50419A6A000DCFDA54415B30C61335BC504110058C1ED1DA5441AE47E12A35BC50417B14AE17D4DA544140F2071A38BC504123D58112D4DA54417A7DB9AC3ABC50417495F80DD4DA54410AD7A3103CBC5041B81E850BD4DA54410B8B08D843BC5041756697FFD3DA544153BCE37345BC5041EED51FFDD3DA54415486C90C48BC5041173E24F9D3DA54413948E9454CBC5041D10DDAC2D3DA54410191823B4FBC5041375FCF29D4DA544114AE47D151BC50417B14AE47D4DA5441F8EF075152BC50416A86AD63D4DA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>6997 - 359254
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000005000000052B81ED54CB750417B14AEB79AE1544114AE474144B75041713D0AC798E154415C8FC2453BB75041D7A3705D96E154419A99990939B75041B81E859B95E154419A99991937B75041333333C393E15441E17A148E35B75041E17A14CE91E1544114AE474134B7504152B81EA58FE154410AD7A30033B75041B81E854B8DE15441E17A14EE31B75041AE47E1EA8DE15441B81E852B2AB75041E17A140E8DE15441000000D024B75041E17A142E8BE15441F6285C9F23B75041666666D68BE15441E17A148E23B750417B14AE8790E15441D7A3706D24B75041E17A147E91E15441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000071000000E31E852B2AB75041EC7A140E8DE15441000000D024B75041E17A142E8BE15441F6285C9F23B75041666666D68BE15441428B779C23B75041E3ED849F8CE154414D7B148E23B75041A614AE8790E15441F5BF286424B750412883D77391E15441BAA3706D24B75041C17A147E91E15441912D4E0B25B75041ACC1BB7D91E1544148E17AB426B75041CDCCCC7C91E154414A7E9EBD27B750410E90062591E154411CB81EE528B75041DD3233C390E15441BC6666062CB7504179703DEA90E154418E68C3AD2CB750413212414791E15441EC51B85E2DB750419A9999A991E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7009 - 59001
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000007F000000A4703D0AA2B75041C3F5288C03DE5441C3F528FCA1B750415C8FC23505DE5441B81E851BA0B7504185EB513808DE5441D7A370CD9EB75041A4703DFA08DE5441F6285C2F9DB75041B81E859B08DE54411F85EB819BB750417B14AE5707DE5441F6285C4F96B75041A4703DDA00DE5441EC51B86E94B75041000000D000DE5441295C8F6295B75041AE47E17A03DE544114AE470195B75041AE47E12A09DE5441F6285C0F94B75041A4703DCA0ADE54413D0AD73392B75041E17A14BE0BDE54411F85EB318FB750410AD7A3200CDE54413D0AD7338CB75041CDCCCCFC08DE5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000067000000D22CFAF59DB75041A45823DB36DE5441B4D4BEC19DB750416F9409AA32DE54412C5D88859DB75041E6ACA00C2EDE54412DDDC9629DB750415D2555EB2BDE54416CDD013E9DB750411AE710AA29DE54417B14AE179CB75041EC51B89E17DE5441AFBE824E9BB75041781D96AC17DE54414BA401DB99B750412A9C31C617DE54411D4932B697B75041D364C43218DE54419852805695B75041CEB34DB018DE5441E87BCD9593B7504161B4812719DE54418F1C99CB91B75041A6353CA119DE54413AF230C58DB750415935FAB21ADE5441544A195B8BB7504179AB446D1BDE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7447 - 399072
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000003000000170000007B14AEB7FDBC5041E17A14CE30E254419A999969FBBC50419A99990931E25441C3F5286CF6BC5041713D0A372FE25441CDCCCCDCF3BC5041000000C036E254419A999919DABC504185EB51282DE2544185EB5198D1BC5041CDCCCC7C2AE2544148E17A54D1BC5041C3F5289C21E25441D7A3707DCEBC504114AE479120E25441F6285CDFCCBC50410000005021E25441713D0A37C5BC50411F85EBF136E254419A9999F9C3BC50411F85EBE13EE254413D0AD7030FBD5041EC51B88E51E254411F85EBC10DBD5041CDCCCCFC59E25441295C8FC215BD50411F85EB715AE25441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000015000000EC0E02CF11BD50419DCF63DD36E25441796C526809BD5041AE4CF96D37E254411A0E2239FFBC5041A2C2D2D338E25441E6750A6DFDBC5041B71EF8D630E254418531B86BFDBC504180E7E6D530E2544174999969FBBC5041B999990931E2544166F5286CF6BC5041843E0A372FE2544185B81EB5F4BC50413BAE471139E2544198C8A816F2BC504117696A1D48E254414ACDB09810BD5041C74AA8974FE25441AA883F870EBD504134C814085AE254412B5C8FC215BD50411185EB715AE25441209933E918BD5041DC43915748E25441947A14CE1BBD5041AF3D0AB737E25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7546 - 121272
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000EC51B8DE83BD5041D7A3702DDEE154410000005076BD5041D7A3701DEBE15441EC51B84E7CBD5041D7A3701DEEE154410000000083BD50415C8FC205F2E15441E17A147E92BD504185EB5188FBE15441666666C693BD5041F6285C7FFCE154417B14AE679EBD5041C3F5289CF4E154417B14AE77A5BD50418FC2F578EAE154411F85EBE192BD5041EC51B82EE4E15441EC51B8DE83BD5041D7A3702DDEE15441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000EC51B84E7CBD5041D7A3701DEEE15441D20109557CBD504123902021EEE154412C25116E7CBD5041B0BEC92DEEE1544183D4949C7DBD504133805EE0EEE154410000000083BD50415C8FC205F2E1544164611FCF8DBD5041277258A8F8E154412189268692BD50416179258BFBE15441D86E714793BD5041CA3DD51FFCE15441666666C693BD5041F6285C7FFCE154417B14AE679EBD5041C3F5289CF4E154415E881170A3BD5041D637CF62EDE1544174230F71A5BD5041B580187CEAE15441CA85712698BD504180F91EF7E5E154411F85EBE192BD5041EC51B82EE4E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7546 - 321348
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000EC51B8DE83BD5041D7A3702DDEE154410000005076BD5041D7A3701DEBE15441EC51B84E7CBD5041D7A3701DEEE154410000000083BD50415C8FC205F2E15441E17A147E92BD504185EB5188FBE15441666666C693BD5041F6285C7FFCE154417B14AE679EBD5041C3F5289CF4E154417B14AE77A5BD50418FC2F578EAE154411F85EBE192BD5041EC51B82EE4E15441EC51B8DE83BD5041D7A3702DDEE15441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000EC51B84E7CBD5041D7A3701DEEE15441D20109557CBD504123902021EEE154412C25116E7CBD5041B0BEC92DEEE1544183D4949C7DBD504133805EE0EEE154410000000083BD50415C8FC205F2E1544164611FCF8DBD5041277258A8F8E154412189268692BD50416179258BFBE15441D86E714793BD5041CA3DD51FFCE15441666666C693BD5041F6285C7FFCE154417B14AE679EBD5041C3F5289CF4E154415E881170A3BD5041D637CF62EDE1544174230F71A5BD5041B580187CEAE15441CA85712698BD504180F91EF7E5E154411F85EBE192BD5041EC51B82EE4E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7548 - 58189
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000060000009A99996953BD50418FC2F5C84AE1544185EB513850BD504148E17A143BE15441B81E858B40BD504148E17A3437E154417B14AEE73ABD5041295C8F7236E154419A99999952BD5041B81E85AB4CE154419A99996953BD50418FC2F5C84AE15441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000B81E858B40BD504148E17A3437E154419766FDA23CBD50414CAC19AE36E15441EB3326EA3ABD50414133E07436E15441353A529552BD50416FD181A74CE154413851079852BD50416DD181A74CE154411D87A02753BD5041556804624BE1544192A3086153BD5041FF6DD5DC4AE154410A1A096753BD504106D6E8CE4AE154419E1E6E3750BD504198842D183BE15441BC0C980B46BD50414786919038E15441B81E858B40BD504148E17A3437E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7548 - 121273
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000060000009A99996953BD50418FC2F5C84AE1544185EB513850BD504148E17A143BE15441B81E858B40BD504148E17A3437E154417B14AEE73ABD5041295C8F7236E154419A99999952BD5041B81E85AB4CE154419A99996953BD50418FC2F5C84AE15441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000B81E858B40BD504148E17A3437E154419366FDA23CBD50414EAC19AE36E15441E73326EA3ABD50413C33E07436E15441353A529552BD504171D181A74CE154413851079852BD504171D181A74CE154411F87A02753BD50415A6804624BE1544193A3086153BD5041FB6DD5DC4AE15441051A096753BD504102D6E8CE4AE15441A11E6E3750BD504193842D183BE15441BC0C980B46BD50414586919038E15441B81E858B40BD504148E17A3437E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7548 - 321349
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000060000009A99996953BD50418FC2F5C84AE1544185EB513850BD504148E17A143BE15441B81E858B40BD504148E17A3437E154417B14AEE73ABD5041295C8F7236E154419A99999952BD5041B81E85AB4CE154419A99996953BD50418FC2F5C84AE15441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000B81E858B40BD504148E17A3437E154419366FDA23CBD50414EAC19AE36E15441E73326EA3ABD50413C33E07436E15441353A529552BD504171D181A74CE154413851079852BD504171D181A74CE154411F87A02753BD50415A6804624BE1544193A3086153BD5041FB6DD5DC4AE15441051A096753BD504102D6E8CE4AE15441A11E6E3750BD504193842D183BE15441BC0C980B46BD50414586919038E15441B81E858B40BD504148E17A3437E15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>7695 - 399164
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000008000000270000008FC2F5382CBC50418FC2F5D8D2E354418FC2F5D82FBC5041333333E3CFE354417B14AE2730BC5041EC51B8DECAE35441C3F5285C2FBC504148E17A04C6E3544152B81E752EBC50413D0AD7C3C6E35441CDCCCC9C2DBC5041AE47E1EAC5E354417B14AE572CBC504114AE4701C7E35441D7A370BD2BBC5041713D0A97C4E35441A4703D1A2CBC5041EC51B8AEC3E354413D0AD7032DBC5041EC51B82EC3E35441666666262BBC5041CDCCCCECC0E354418FC2F5A829BC504100000010C2E3544185EB518821BC5041E17A144EB8E35441B81E856B1FBC504152B81E85B7E35441 [...]
+</a>
+
+<b>
+01060000000100000001030000000800000036000000998B5BBE0EBC5041CDBE7F0FDCE35441341176E30EBC50412CA497F5DBE35441C5B7640A14BC50414ADB0D7CDAE35441713D0A471ABC50415C8FC2B5D8E35441E3B06E6E1EBC5041BE5DA182D7E354414D4CF6931EBC5041BA3BE377D7E35441B9B7CB4628BC50419ADF59C3D4E354417290627628BC5041C7A03FACD4E3544147C2F5382CBC504143C2F5D8D2E354417AC2F5D82FBC50411E3333E3CFE354416F14AE2730BC5041C951B8DECAE35441B01EB91030BC50419EAF9852CAE35441D0F5285C2FBC504195E17A04C6E3544175B81E752EBC5041FE0AD7C3C6E35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>8059 - 406863
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000036000000295C8F7295B5504148E17A6429DE544148E17A7495B5504148E17AE429DE544152B81E4597B55041B81E852B28DE5441333333E39BB550417B14AE6726DE5441E17A140E9FB550419A99995925DE5441E17A144EA2B550411F85EBA124DE54415C8FC2A5A8B550410AD7A38022DE54415C8FC2B5AAB550419A99990921DE54410AD7A3E0ACB55041AE47E1CA20DE544114AE4721AFB550410000009021DE5441295C8F12B2B550410000008023DE5441C3F5287CB2B550410AD7A32023DE54413D0AD743B2B55041CDCCCCEC1EDE5441A4703D1AB3B55041D7A370ED1CDE5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000052000000B647EF689EB5504126F5AD67E1DD5441518FC2359DB55041678FC2D5DFDD54416347E1EA9AB550412AD7A3D0DBDD5441DA703D5A98B55041680AD7C3D9DD54418CA3706D96B55041150000A0D8DD5441928FC22594B550419D8FC2F5D7DD5441AD18AE2794B550412692C375D8DD544183DC134094B550417C5B5F56DEDD5441E7A67004B5B55041ACF37D0C00DE54417D99A2A1B3B55041FDED3AC919DE5441BC369F6D95B5504175351EDE26DE54415F5C8F7295B5504188E17A6429DE544168E17A7495B550412AE17AE429DE544162CC83EA95B550413CF1757429DE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>8074 - 387533
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000016000000295C8F5297B550416666666607E2544148E17A149FB550413333337307E2544152B81EE5A6B5504185EB512807E254417B14AE07AFB55041E17A144E06E2544166666696B7B550418FC2F5F804E25441D7A3703DC0B5504114AE472104E254419A999909CBB550411F85EBF103E25441CDCCCC7CD5B55041A4703DDA05E25441AE47E14AD0B5504166666666ECE1544185EB5138C4B55041713D0AD7EDE15441295C8F42AFB550419A999939F0E15441F6285C6F9DB5504133333373F2E1544148E17A8496B550417B14AEE7F2E154418FC2F52894B5504133333363F3E15441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000F6285C1F88B5504185EB51C8F4E1544113953DC684B550417CFF583CF5E15441747157977CB55041E213FB5EF6E15441AE47E12A7DB55041666666B6F7E154418B995C807EB550410D2E5FA2FCE15441825C61807EB55041B1BF70A2FCE154412AAE47817EB55041728FC2A5FCE154412BD16DB57EB55041FB529A2CFEE1544114AE47B17FB55041C3F5288C05E254412B7F213A85B550411F2B331C06E25441116666468BB550414E9999B906E25441F35B8F5297B55041F065666607E2544173E17A149FB550411E33337307E2544192B81EE5A6B5504165EB512807E25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>8264 - 58217
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000090000007B14AEC73CB55041F6285C6F5CDE5441A4703DCA38B55041295C8F625DDE544114AE477130B5504185EB513860DE54411F85EBE122B550418FC2F53865DE5441D7A370BD2BB55041666666A68ADE544114AE476138B5504133333313C0DE5441B81E85BB53B55041D7A3706DBDDE5441A4703D3A48B55041000000D08CDE54417B14AEC73CB55041F6285C6F5CDE5441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000D7E9D1A13DB550410DFB390960DE5441DAC7112550B55041C4744D005CDE5441129572664FB5504118A3CDD958DE5441CC8E66564FB55041B7AB8B9858DE54413C210C6943B55041C8A888E15ADE544159BE65CE3CB550415283BF8B5CDE5441D7E9D1A13DB550410DFB390960DE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>8350 - 87046
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001300000048E17A5413B45041CDCCCCCC83DD5441666666A619B450417B14AE7789DD5441F6285C3F1DB45041F6285C7F8CDD5441C3F5289C20B45041A4703D0A8FDD5441A4703D1A26B45041A4703DDA92DD54417B14AE1730B45041333333F398DD5441713D0A7736B4504152B81E559CDD5441AE47E11A3FB4504152B81E15A1DD544152B81E1546B450411F85EBC1A4DD54417B14AE374DB45041295C8F82A8DD54419A99999950B45041A4703DFAA9DD5441B81E85EB54B45041D7A3705DABDD544185EB51D857B45041333333F3ABDD5441CDCCCC3C58B4504148E17AA462DD5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000028000000C3F5289C20B45041A4703D0A8FDD5441238497A624B4504194BB44D891DD544152A4E3E727B450410834C4EF93DD54414FC43ED12BB45041DD2E805596DD54418C78483F2CB4504132F75C9A96DD54417B14AE1730B45041333333F398DD5441713D0A7736B4504152B81E559CDD54416C039ED439B450412ABDC92E9EDD5441AE47E11A3FB4504152B81E15A1DD544152B81E1546B450411F85EBC1A4DD54410738788A48B4504148B4E90CA6DD54411A0BF63C4DB4504107E9D984A8DD5441C03FA7594EB45041F6785D00A9DD54412D6FC6A34FB45041A6B5968FA9DD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>8350 - 265283
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001300000048E17A5413B45041CDCCCCCC83DD5441666666A619B450417B14AE7789DD5441F6285C3F1DB45041F6285C7F8CDD5441C3F5289C20B45041A4703D0A8FDD5441A4703D1A26B45041A4703DDA92DD54417B14AE1730B45041333333F398DD5441713D0A7736B4504152B81E559CDD5441AE47E11A3FB4504152B81E15A1DD544152B81E1546B450411F85EBC1A4DD54417B14AE374DB45041295C8F82A8DD54419A99999950B45041A4703DFAA9DD5441B81E85EB54B45041D7A3705DABDD544185EB51D857B45041333333F3ABDD5441CDCCCC3C58B4504148E17AA462DD5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000028000000C3F5289C20B45041A4703D0A8FDD5441238497A624B4504194BB44D891DD544152A4E3E727B450410834C4EF93DD54414FC43ED12BB45041DD2E805596DD54418C78483F2CB4504132F75C9A96DD54417B14AE1730B45041333333F398DD5441713D0A7736B4504152B81E559CDD54416C039ED439B450412ABDC92E9EDD5441AE47E11A3FB4504152B81E15A1DD544152B81E1546B450411F85EBC1A4DD54410738788A48B4504148B4E90CA6DD54411A0BF63C4DB4504107E9D984A8DD5441C03FA7594EB45041F6785D00A9DD54412D6FC6A34FB45041A6B5968FA9DD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>9181 - 3149958
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000019000000CDCCCCDCE22B51417B14AE07F99B544114AE4751E22B514166666616F99B54413D0AD703E32B5141CDCCCCFCF99B5441C3F528BCE42B514100000090FD9B5441A4703D6AE72B51417B14AE17049C5441000000D0EB2B51413D0AD7630A9C5441A4703D2AEC2B5141CDCCCC6C0A9C5441F6285CFFEE2B5141000000600D9C5441AE47E11AF42B51415C8FC2E50E9C5441333333C3F72B5141B81E856B109C54413D0AD773FB2B5141B81E856B129C5441E17A14BEFE2B5141295C8F52149C54413D0AD7C3012C5141D7A3704D129C5441EC51B85E022C514185EB51180F9C5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000110000009384CCFC082C514129E7AE97E69B5441D77C281C092C51416F7A3E3AE69B5441159846E10D2C51417DCF84DBDB9B5441A040AFA7062C5141DB8EA3E0DB9B5441F67BC315FD2B5141AB5D34E3DB9B5441C2A7B7EEE92B5141836AE29ADB9B54417572FBB6E32B514179828D81E79B5441FF11BFC2E32B5141A9B8C980E99B544181752609E32B5141EA172DB9EB9B54410E9D26ECE22B5141E88659AFF09B54410BD6575FE42B51416D452020F59B54416ABEC546E62B5141F9652BABF89B544131883EBA032C514122F3718DF59B5441A62BF7C8052C514130BA1F55F59B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>9181 - 3478606
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000019000000CDCCCCDCE22B51417B14AE07F99B544114AE4751E22B514166666616F99B54413D0AD703E32B5141CDCCCCFCF99B5441C3F528BCE42B514100000090FD9B5441A4703D6AE72B51417B14AE17049C5441000000D0EB2B51413D0AD7630A9C5441A4703D2AEC2B5141CDCCCC6C0A9C5441F6285CFFEE2B5141000000600D9C5441AE47E11AF42B51415C8FC2E50E9C5441333333C3F72B5141B81E856B109C54413D0AD773FB2B5141B81E856B129C5441E17A14BEFE2B5141295C8F52149C54413D0AD7C3012C5141D7A3704D129C5441EC51B85E022C514185EB51180F9C5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000110000009384CCFC082C514129E7AE97E69B5441D77C281C092C51416F7A3E3AE69B5441159846E10D2C51417DCF84DBDB9B5441A040AFA7062C5141DB8EA3E0DB9B5441F67BC315FD2B5141AB5D34E3DB9B5441C2A7B7EEE92B5141836AE29ADB9B54417572FBB6E32B514179828D81E79B5441FF11BFC2E32B5141A9B8C980E99B544181752609E32B5141EA172DB9EB9B54410E9D26ECE22B5141E88659AFF09B54410BD6575FE42B51416D452020F59B54416ABEC546E62B5141F9652BABF89B544131883EBA032C514122F3718DF59B5441A62BF7C8052C514130BA1F55F59B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>9324 - 3239700
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000F000000666666F6A9235141D7A3700D1EA25441EC51B87EAB235141713D0AB71EA25441000000D0B3235141A4703DFA20A25441C3F5283CB523514114AE47D11CA25441F6285CBFB72351419A99996915A254411F85EBF1BB23514148E17A1409A25441000000D0B9235141C3F528BC08A2544114AE4791B4235141B81E856B07A254417B14AEC7AD235141C3F5283C05A254418FC2F538A72351413D0AD76302A2544152B81EE5A32351417B14AEC708A2544152B81EB59D2351417B14AE2712A254413D0AD7339A235141B81E853B18A25441000000C0A1235141666666461BA25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000296159CFB3235141CE1D10FA20A25441F4628930B7235141FEBB890E17A25441138D5A93BA23514143D6761A0DA254411F85EBF1BB23514148E17A1409A254419A999919C223514114AE47B10AA25441D7A3707DC3235141D7A370BD0AA25441EC51B8FEC7235141295C8FA20AA2544185EB51E8CD2351417B14AE970AA2544152B81E05D4235141D7A3709D0AA25441B81E855BD8235141AE47E1AA0AA254417B14AED7DC2351411F85EB710AA2544114AE47A1DF23514152B81E350AA2544148E17A24E1235141F6285C0F0AA2544185EB51B8E7235141295C8F2209A25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>10372 - 38047
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000180000007B14AE5757225141C3F528AC3F965441C3F528CC56225141295C8F7240965441666666764F225141000000F03C965441AE47E19A47225141AE47E1BA38965441EC51B8CE44225141A4703D1A37965441AE47E11A3B2251410AD7A3C031965441C3F5285C34225141295C8FD22E965441AE47E19A33225141C3F5283C31965441E17A148E30225141A4703DEA39965441A4703DFA2D2251413D0AD7333F965441000000E025225141A4703D9A539654410000002026225141D7A370AD559654417B14AED72D225141C3F528AC59965441666666C63B225141E17A14CE62965441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000009A99995952225141713D0A675E965441B2C25E6A5222514159DB1A5E5E965441181FE301532251418988600D5E965441E17A146E5A2251418FC2F5185A965441295C8FE2662251410AD7A310559654416A11FBB766225141A2AAFDDE539654417D5475F75F2251413807AA8D56965441877420095C2251410437127358965441066136D25422514135165E1A5C9654411084050052225141A0C541DC5D965441DDE249924D225141D435CD3864965441179B44BD4A2251412D0ED3E968965441F3A34DE94A22514123E33D2D699654416DA8E5ED4A225141DC7E942869965441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>10372 - 78485
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000180000007B14AE5757225141C3F528AC3F965441C3F528CC56225141295C8F7240965441666666764F225141000000F03C965441AE47E19A47225141AE47E1BA38965441EC51B8CE44225141A4703D1A37965441AE47E11A3B2251410AD7A3C031965441C3F5285C34225141295C8FD22E965441AE47E19A33225141C3F5283C31965441E17A148E30225141A4703DEA39965441A4703DFA2D2251413D0AD7333F965441000000E025225141A4703D9A539654410000002026225141D7A370AD559654417B14AED72D225141C3F528AC59965441666666C63B225141E17A14CE62965441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000009A99995952225141713D0A675E965441B2C25E6A5222514159DB1A5E5E965441181FE301532251418988600D5E965441E17A146E5A2251418FC2F5185A965441295C8FE2662251410AD7A310559654416A11FBB766225141A2AAFDDE539654417D5475F75F2251413807AA8D56965441877420095C2251410437127358965441066136D25422514135165E1A5C9654411084050052225141A0C541DC5D965441DDE249924D225141D435CD3864965441179B44BD4A2251412D0ED3E968965441F3A34DE94A22514123E33D2D699654416DA8E5ED4A225141DC7E942869965441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>11503 - 422581
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000600000085EB511885D95041295C8F62F58B54417B14AE8733D9504152B81E85E68B54413333336334D95041D7A3706DEE8B5441CDCCCCEC87D950419A9999A9FD8B54410AD7A32088D9504148E17AF4FB8B544185EB511885D95041295C8F62F58B5441
+</a>
+
+<b>
+010600000001000000010300000001000000080000000EBCBD6683D95041B3AF66D6FC8B54410CCCE3C083D950419081D7E6FC8B5441B067BACF83D9504133458CE9FC8B54410DDFC4E287D950415DEEFE9CFD8B5441C1AC0C1888D95041315BB61AFC8B54410193290685D9504126B26A64F58B5441FBD8957381D95041F05692B8F48B54410EBCBD6683D95041B3AF66D6FC8B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>11657 - 2989276
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000900000000000000CBD95041AE47E1AAC38D54410AD7A390D0D95041295C8F02D78D5441AE47E1BAD7D950415C8FC275D38D5441B81E85FBEED95041F6285C3FCA8D5441000000F0E4D95041713D0AF79A8D54419A999939D1D950418FC2F548A58D5441A4703DAAC1D95041AE47E10AAB8D5441713D0AF7C5D950411F85EB21B58D544100000000CBD95041AE47E1AAC38D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000078EBDD3AC2D9504136825DD5AA8D544173B2DA4EC3D950410AD55311AE8D544152FA175BC5D95041A030CD12B38D544123A8D4DBC7D950410E5845FDB88D544181A35122CAD950414CE43C5CBF8D54419B860FBACBD95041868D7623C48D5441081C0D8CCDD95041B1FB2B1ACC8D5441D60AC7A4CED950415027F954D08D544187000E52CFD95041546B3DAFD28D544127E288BBD0D9504100B41E1DD68D5441873AA067D1D95041AFCE0A98D68D5441AE47E1BAD7D950415C8FC275D38D5441B81E85FBEED95041F6285C3FCA8D5441000000F0E4D95041713D0AF79A8D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>11657 - 3736759
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000900000000000000CBD95041AE47E1AAC38D54410AD7A390D0D95041295C8F02D78D5441AE47E1BAD7D950415C8FC275D38D5441B81E85FBEED95041F6285C3FCA8D5441000000F0E4D95041713D0AF79A8D54419A999939D1D950418FC2F548A58D5441A4703DAAC1D95041AE47E10AAB8D5441713D0AF7C5D950411F85EB21B58D544100000000CBD95041AE47E1AAC38D5441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000078EBDD3AC2D9504136825DD5AA8D544173B2DA4EC3D950410AD55311AE8D544152FA175BC5D95041A030CD12B38D544123A8D4DBC7D950410E5845FDB88D544181A35122CAD950414CE43C5CBF8D54419B860FBACBD95041868D7623C48D5441081C0D8CCDD95041B1FB2B1ACC8D5441D60AC7A4CED950415027F954D08D544187000E52CFD95041546B3DAFD28D544127E288BBD0D9504100B41E1DD68D5441873AA067D1D95041AFCE0A98D68D5441AE47E1BAD7D950415C8FC275D38D5441B81E85FBEED95041F6285C3FCA8D5441000000F0E4D95041713D0AF79A8D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>231581 - 101315
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000CDCCCCBCF65D51419A9999C9D9D954418FC2F568005E5141AE47E14ADCD95441D7A3702D0A5E5141A4703DFADDD9544152B81EB50D5E5141C3F528ACDED954415C8FC205135E514185EB51B8DFD95441B81E85CB1B5E5141666666D6E3D95441C3F5286C1D5E5141A4703D9AE4D95441EC51B88E285E5141A4703DAACCD95441713D0A37245E51413D0AD7E3CAD95441EC51B84E235E51410AD7A340CBD954417B14AE271D5E514148E17AB4CDD95441C3F528DC185E5141F6285C2FCDD95441C3F5288C145E514152B81E25CED9544152B81EF50C5E51411F85EB11CDD95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000DFA10F0DFA5D51419381B001BAD95441713D0AF7F75D514114AE4731B9D95441BF9320CDF65D5141A534D7DCB9D954413D9BF6A2F65D5141AA86370BBAD95441BE216050F65D5141EED6ECDEBAD95441E071E30CF65D51414D77EC8BBBD954418855930AF65D51415E4DDA91BBD95441852B3D0AF65D5141942DB792BBD9544140340E0AF65D51416A922F93BBD954418DB4F509F65D5141795F6E93BBD954416CDA585AF65D514148531AAEBCD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D954414405BDE3F75D5141DFC5F7D7C0D95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>231581 - 302834
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000CDCCCCBCF65D51419A9999C9D9D954418FC2F568005E5141AE47E14ADCD95441D7A3702D0A5E5141A4703DFADDD9544152B81EB50D5E5141C3F528ACDED954415C8FC205135E514185EB51B8DFD95441B81E85CB1B5E5141666666D6E3D95441C3F5286C1D5E5141A4703D9AE4D95441EC51B88E285E5141A4703DAACCD95441713D0A37245E51413D0AD7E3CAD95441EC51B84E235E51410AD7A340CBD954417B14AE271D5E514148E17AB4CDD95441C3F528DC185E5141F6285C2FCDD95441C3F5288C145E514152B81E25CED9544152B81EF50C5E51411F85EB11CDD95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000DFA10F0DFA5D51419381B001BAD95441713D0AF7F75D514114AE4731B9D95441BF9320CDF65D5141A534D7DCB9D954413D9BF6A2F65D5141AA86370BBAD95441BE216050F65D5141EED6ECDEBAD95441E071E30CF65D51414D77EC8BBBD954418855930AF65D51415E4DDA91BBD95441852B3D0AF65D5141942DB792BBD9544140340E0AF65D51416A922F93BBD954418DB4F509F65D5141795F6E93BBD954416CDA585AF65D514148531AAEBCD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D954414405BDE3F75D5141DFC5F7D7C0D95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13598 - 407801
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000AC000000A4703DBAF31F514152B81EB589215541A4703DEAEF1F5141295C8F428B215541A4703D1AEF1F5141333333838B2155419A999999EE1F5141333333538B2155418FC2F558EE1F51413D0AD7D38A2155418FC2F538EE1F51413D0AD7A38A2155418FC2F5E8ED1F51413D0AD7D38A2155418FC2F518ED1F514148E17A748B2155419A9999A9EC1F514148E17AD48B215541A4703DBAEC1F514148E17A648C215541AE47E1CAEC1F514148E17A348D215541AE47E19AEC1F514152B81EA58D215541AE47E12AEC1F514152B81ED58D215541AE47E1CAEB1F514152B81EC58D215541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000662FAE80FB1F5141F1E32DD796215541E17391C0FC1F5141176AF1079521554116DF9C8DFB1F5141052365D48E2155413C97ACE3FC1F514138ABB4B58A215541CF7A4501FF1F5141EC2B73248521554185EB5168FF1F514185EB514883215541A8C235ABFD1F51416D24E2B1832155413928181FFC1F514181BCC9B384215541BD3B3BDEFA1F51416836BF3B8521554160B0ABA3F81F5141991CBBBC85215541E550713FF71F5141AA91CD728621554134B1B469F61F5141F95B346887215541C21BDEB8F61F51415AE61B2E88215541969DE0E0F51F51411F6409FD89215541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>231654 - 2286356
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000008000000713D0A87A76051419A9999F943D65441B81E85BBA360514148E17A3432D654415C8FC285916051413D0AD71333D65441CDCCCCAC9160514114AE479133D65441F6285C7F9460514114AE477139D65441A4703D8A976051417B14AEE73ED65441E17A14FE98605141A4703D0A40D65441713D0A87A76051419A9999F943D65441
+</a>
+
+<b>
+0106000000010000000103000000020000001F000000F690D7D9F260514127199B1414D65441962CFE7EED605141C043A28419D65441455A2202EC60514109D538581AD6544165092D4EE66051419CF765FF1BD65441143751D1E4605141829082931CD65441A56060AFE0605141D3625E101ED65441CFF4C314D960514169299F271DD65441529C48A0D3605141404031691CD65441046E8093CF605141B55E496B1BD65441A6FE72DDCA6051415F4B284519D65441A16141A4C76051413762BA8618D65441EE96EBE7C5605141AB80D28817D6544100000040B66051413333334319D6544133333333B06051415C8FC29519D65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13901 - 3153374
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C000000713D0A47DE1B5141F6285C0FB9215541333333C3D71B5141C3F5288CBA215541C3F5287CD41B5141D7A3709DBC2155410AD7A370D21B5141EC51B8CEBE215541A4703D9AD11B51419A999989C0215541CDCCCC6CD11B514166666686C221554133333393D11B514185EB51B8C621554152B81E55D11B51417B14AED7CA215541CDCCCC6CD01B51417B14AE77CE21554133333323CF1B5141A4703DDAD121554114AE4721CC1B51417B14AED7D92155411F85EB51CF1B5141C3F528ACDA2155419A999999D21B5141AE47E14ADB215541713D0A17D41B514100000090DB215541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000006E646A5AE71B5141D0E797E0C421554111958E51EC1B5141EEC10935C6215541A6F54350EC1B5141FB052A38C621554197A56255EC1B5141A3A48C39C62155414679EC76EC1B5141D6FF25DCC52155417661CE8CEC1B5141E943359FC5215541CD20F0ECEC1B514122A77D93C4215541C7813FC1ED1B5141E1A83A44C22155418B090A67EE1B51414F958476C02155418F245483EE1B51410354482EC021554180856B52EE1B5141EB222814C0215541F6285C4FE81B51415C8FC2D5BC215541F6285CAFE21B51417B14AEA7BA215541713D0A47DE1B5141F6285C0FB9215541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13901 - 3535114
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C000000713D0A47DE1B5141F6285C0FB9215541333333C3D71B5141C3F5288CBA215541C3F5287CD41B5141D7A3709DBC2155410AD7A370D21B5141EC51B8CEBE215541A4703D9AD11B51419A999989C0215541CDCCCC6CD11B514166666686C221554133333393D11B514185EB51B8C621554152B81E55D11B51417B14AED7CA215541CDCCCC6CD01B51417B14AE77CE21554133333323CF1B5141A4703DDAD121554114AE4721CC1B51417B14AED7D92155411F85EB51CF1B5141C3F528ACDA2155419A999999D21B5141AE47E14ADB215541713D0A17D41B514100000090DB215541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000006E646A5AE71B5141D0E797E0C421554111958E51EC1B5141EEC10935C6215541A6F54350EC1B5141FB052A38C621554197A56255EC1B5141A3A48C39C62155414679EC76EC1B5141D6FF25DCC52155417661CE8CEC1B5141E943359FC5215541CD20F0ECEC1B514122A77D93C4215541C7813FC1ED1B5141E1A83A44C22155418B090A67EE1B51414F958476C02155418F245483EE1B51410354482EC021554180856B52EE1B5141EB222814C0215541F6285C4FE81B51415C8FC2D5BC215541F6285CAFE21B51417B14AEA7BA215541713D0A47DE1B5141F6285C0FB9215541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14000 - 1302973
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000E17A14AE59535141666666C6ADDD5441CDCCCCBC54535141295C8F92C8DD54415C8FC2355A535141295C8F92C8DD5441E17A143E58535141EC51B83ED7DD5441295C8F025D535141CDCCCCBCD7DD544152B81E5562535141000000B0D2DD5441295C8F0266535141000000E0CDDD544148E17A146753514185EB5188CBDD54419A99992967535141D7A3707DC8DD544185EB51F865535141000000F0AADD5441E17A14AE59535141666666C6ADDD5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000005176B76D72535141B3F3019AB2DD544152B81E1572535141AE47E1EAA9DD54415C8FC27571535141295C8FF2A9DD5441F6285C8F6C535141EC51B8AEA9DD544185EB51F865535141000000F0AADD544112DAE627675351412CA011BCC8DD5441B2AEF2F666535141BF3FDDCDCADD5441295C8F42665351410AD7A320CDDD5441E380061A645351413C12505FD0DD54410812F489615351416A57F637D3DD5441C3F5286C5D535141AE47E1AAD7DD5441A4703DDA645351411F85EB01D9DD5441E17A147E6953514152B81E05DADD5441776828276E535141F841C92BCFDD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14000 - 3277032
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000E17A14AE59535141666666C6ADDD5441CDCCCCBC54535141295C8F92C8DD54415C8FC2355A535141295C8F92C8DD5441E17A143E58535141EC51B83ED7DD5441295C8F025D535141CDCCCCBCD7DD544152B81E5562535141000000B0D2DD5441295C8F0266535141000000E0CDDD544148E17A146753514185EB5188CBDD54419A99992967535141D7A3707DC8DD544185EB51F865535141000000F0AADD5441E17A14AE59535141666666C6ADDD5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000005176B76D72535141B3F3019AB2DD544152B81E1572535141AE47E1EAA9DD54415C8FC27571535141295C8FF2A9DD5441F6285C8F6C535141EC51B8AEA9DD544185EB51F865535141000000F0AADD544112DAE627675351412CA011BCC8DD5441B2AEF2F666535141BF3FDDCDCADD5441295C8F42665351410AD7A320CDDD5441E380061A645351413C12505FD0DD54410812F489615351416A57F637D3DD5441C3F5286C5D535141AE47E1AAD7DD5441A4703DDA645351411F85EB01D9DD5441E17A147E6953514152B81E05DADD5441776828276E535141F841C92BCFDD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14118 - 44853
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000260000007B14AE47EC505141F6285CAFCEE15441F6285CBFF15051418FC2F5B8CDE15441B81E858BF3505141000000D0CFE15441F6285C3FF35051415C8FC295D3E154415C8FC265F25051418FC2F5E8D4E15441EC51B84EF450514166666616D6E15441A4703DFAF450514166666616D5E15441AE47E13AF9505141295C8FF2D7E1544152B81E65F85051411F85EB11D9E15441000000F0F85051417B14AE67D9E15441C3F5281CFB505141F6285CAFDBE15441F6285C8FFD50514185EB5108DEE15441EC51B88E0051514114AE4731DCE15441A4703DFA005151411F85EBC1D9E15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000087BF1190F2505141391A0B03D5E1544154CC8E16F35051416457F455D5E15441EF66F860F4505141A72429FBD5E15441A4703DFAF450514166666616D5E15441F0D65E7BF5505141DE013F6DD5E15441304E57FBF5505141833D3BADD5E154414858CC1AF65051419B47B0CCD5E1544117B3E935F7505141209CEAB5D3E15441CF948AD7F6505141212DE35BD2E154410BCB6562F4505141B3FA99BED1E15441E814E258F35051418D0A1C52D2E15441F6285C3FF35051415C8FC295D3E15441AD41A9EFF25051410016FF11D4E15441FE51E9E8F250514176C4BE33D4E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14118 - 79420
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000260000007B14AE47EC505141F6285CAFCEE15441F6285CBFF15051418FC2F5B8CDE15441B81E858BF3505141000000D0CFE15441F6285C3FF35051415C8FC295D3E154415C8FC265F25051418FC2F5E8D4E15441EC51B84EF450514166666616D6E15441A4703DFAF450514166666616D5E15441AE47E13AF9505141295C8FF2D7E1544152B81E65F85051411F85EB11D9E15441000000F0F85051417B14AE67D9E15441C3F5281CFB505141F6285CAFDBE15441F6285C8FFD50514185EB5108DEE15441EC51B88E0051514114AE4731DCE15441A4703DFA005151411F85EBC1D9E15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000087BF1190F2505141391A0B03D5E1544154CC8E16F35051416457F455D5E15441EF66F860F4505141A72429FBD5E15441A4703DFAF450514166666616D5E15441F0D65E7BF5505141DE013F6DD5E15441304E57FBF5505141833D3BADD5E154414858CC1AF65051419B47B0CCD5E1544117B3E935F7505141209CEAB5D3E15441CF948AD7F6505141212DE35BD2E154410BCB6562F4505141B3FA99BED1E15441E814E258F35051418D0A1C52D2E15441F6285C3FF35051415C8FC295D3E15441AD41A9EFF25051410016FF11D4E15441FE51E9E8F250514176C4BE33D4E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14196 - 29890
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B00000014AE4731924C5141713D0A874CDF544152B81EF5934C51419A9999E953DF544114AE47A1904C51411F85EBA157DF5441666666268E4C51415C8FC27559DF5441333333E38A4C514114AE47815ADF544166666636814C51415C8FC2355BDF544152B81E157A4C5141CDCCCC5C5BDF5441EC51B8CE754C5141666666F65ADF54418FC2F5F8724C51413D0AD7135BDF54419A999939704C5141666666D65DDF5441295C8FC26F4C5141E17A146E5EDF5441F6285CDF714C51418FC2F58862DF544166666606734C5141B81E854B65DF5441AE47E13A744C51415C8FC27569DF5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000350000003F96C4ED724C51419A3F151F5BDF5441A436B7E4724C5141A87CCA315BDF544113DF20957A4C5141A87CCA315BDF54410D5044D3824C5141258F8C025BDF5441E24C24608B4C51413A4DD8F659DF5441EACDEF0C904C5141339F347157DF54417669D1C1924C5141AFDECE1A55DF5441E498C3FC934C514106AA251353DF54417D444D20934C5141BC1B4F624FDF5441F27B9392924C514129A5F14E4CDF5441F27B9392924C51413F633D434BDF5441695F8156924C5141B74A0DCB4BDF544114AE4731924C5141713D0A874CDF54413D936DF9914C514189CE42904EDF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14196 - 73013
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B00000014AE4731924C5141713D0A874CDF544152B81EF5934C51419A9999E953DF544114AE47A1904C51411F85EBA157DF5441666666268E4C51415C8FC27559DF5441333333E38A4C514114AE47815ADF544166666636814C51415C8FC2355BDF544152B81E157A4C5141CDCCCC5C5BDF5441EC51B8CE754C5141666666F65ADF54418FC2F5F8724C51413D0AD7135BDF54419A999939704C5141666666D65DDF5441295C8FC26F4C5141E17A146E5EDF5441F6285CDF714C51418FC2F58862DF544166666606734C5141B81E854B65DF5441AE47E13A744C51415C8FC27569DF5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000350000003F96C4ED724C51419A3F151F5BDF5441A436B7E4724C5141A87CCA315BDF544113DF20957A4C5141A87CCA315BDF54410D5044D3824C5141258F8C025BDF5441E24C24608B4C51413A4DD8F659DF5441EACDEF0C904C5141339F347157DF54417669D1C1924C5141AFDECE1A55DF5441E498C3FC934C514106AA251353DF54417D444D20934C5141BC1B4F624FDF5441F27B9392924C514129A5F14E4CDF5441F27B9392924C51413F633D434BDF5441695F8156924C5141B74A0DCB4BDF544114AE4731924C5141713D0A874CDF54413D936DF9914C514189CE42904EDF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14667 - 2978304
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E000000295C8FA213525141A4703DAA27DC544185EB517816525141666666D62EDC544148E17A74165251410AD7A38030DC54410AD7A3E0215251419A9999F934DC5441AE47E17A22525141AE47E12A33DC5441C3F528CC225251417B14AE3732DC5441295C8F2224525141D7A3700D2FDC54416666668628525141666666A624DC5441A4703D0A28525141EC51B83E23DC5441CDCCCC4C0F5251419A99998915DC5441F6285CDF0B52514148E17A541BDC5441EC51B8AE0952514114AE473120DC5441EC51B8AE0C52514148E17AD421DC5441295C8FA213525141A4703DAA27DC5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C7BC9A5B0D525141237C936522DC5441B22DF2AD0D5251416FCB8A1121DC5441682DBEFA0D52514189C467D41FDC544136A2EB240E525141C7163B261FDC544167A53E3D0E525141545F31AF1EDC544166690ED40E52514157C3DF6A1BDC54418730028C10525141DA1E763A16DC5441CDCCCC4C0F5251419A99998915DC5441F35620350C525141BAC688C31ADC54419CB70C520B52514107ED3B8E1CDC54413557D42F0A5251412CA19D121FDC54415DECDD540A5251415B2885E61FDC5441C7BC9A5B0D525141237C936522DC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14667 - 3814126
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E000000295C8FA213525141A4703DAA27DC544185EB517816525141666666D62EDC544148E17A74165251410AD7A38030DC54410AD7A3E0215251419A9999F934DC5441AE47E17A22525141AE47E12A33DC5441C3F528CC225251417B14AE3732DC5441295C8F2224525141D7A3700D2FDC54416666668628525141666666A624DC5441A4703D0A28525141EC51B83E23DC5441CDCCCC4C0F5251419A99998915DC5441F6285CDF0B52514148E17A541BDC5441EC51B8AE0952514114AE473120DC5441EC51B8AE0C52514148E17AD421DC5441295C8FA213525141A4703DAA27DC5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C7BC9A5B0D525141237C936522DC5441B22DF2AD0D5251416FCB8A1121DC5441682DBEFA0D52514189C467D41FDC544136A2EB240E525141C7163B261FDC544167A53E3D0E525141545F31AF1EDC544166690ED40E52514157C3DF6A1BDC54418730028C10525141DA1E763A16DC5441CDCCCC4C0F5251419A99998915DC5441F35620350C525141BAC688C31ADC54419CB70C520B52514107ED3B8E1CDC54413557D42F0A5251412CA19D121FDC54415DECDD540A5251415B2885E61FDC5441C7BC9A5B0D525141237C936522DC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14834 - 1302973
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000007B14AE8772535141A4703DAAB2DD544148E17A04725351411F85EBF1A9DD5441666666666D53514148E17A84A9DD544185EB51F865535141000000F0AADD54419A99992967535141D7A3707DC8DD544148E17A146753514185EB5188CBDD5441295C8F0266535141000000E0CDDD544152B81E5562535141000000B0D2DD5441295C8F025D535141CDCCCCBCD7DD5441C3F5284C695351410AD7A340DADD54413D0AD7D36D53514114AE47E1CEDD544148E17AA473535141AE47E18AC1DD54417B14AE8772535141A4703DAAB2DD5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000005176B76D72535141B3F3019AB2DD544152B81E1572535141AE47E1EAA9DD54415C8FC27571535141295C8FF2A9DD5441F6285C8F6C535141EC51B8AEA9DD544185EB51F865535141000000F0AADD544112DAE627675351412CA011BCC8DD5441B2AEF2F666535141BF3FDDCDCADD5441295C8F42665351410AD7A320CDDD5441E380061A645351413C12505FD0DD54410812F489615351416A57F637D3DD5441C3F5286C5D535141AE47E1AAD7DD5441A4703DDA645351411F85EB01D9DD5441E17A147E6953514152B81E05DADD5441776828276E535141F841C92BCFDD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>14834 - 3277032
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000007B14AE8772535141A4703DAAB2DD544148E17A04725351411F85EBF1A9DD5441666666666D53514148E17A84A9DD544185EB51F865535141000000F0AADD54419A99992967535141D7A3707DC8DD544148E17A146753514185EB5188CBDD5441295C8F0266535141000000E0CDDD544152B81E5562535141000000B0D2DD5441295C8F025D535141CDCCCCBCD7DD5441C3F5284C695351410AD7A340DADD54413D0AD7D36D53514114AE47E1CEDD544148E17AA473535141AE47E18AC1DD54417B14AE8772535141A4703DAAB2DD5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000005176B76D72535141B3F3019AB2DD544152B81E1572535141AE47E1EAA9DD54415C8FC27571535141295C8FF2A9DD5441F6285C8F6C535141EC51B8AEA9DD544185EB51F865535141000000F0AADD544112DAE627675351412CA011BCC8DD5441B2AEF2F666535141BF3FDDCDCADD5441295C8F42665351410AD7A320CDDD5441E380061A645351413C12505FD0DD54410812F489615351416A57F637D3DD5441C3F5286C5D535141AE47E1AAD7DD5441A4703DDA645351411F85EB01D9DD5441E17A147E6953514152B81E05DADD5441776828276E535141F841C92BCFDD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>15114 - 56637
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000D7A370EDD4DF5041F6285CBF77305541B81E851BC2DF50415C8FC275713055419A999979A5DF504152B81EE567305541333333D3A3DF5041AE47E14A683055415C8FC2C591DF50410AD7A3B07A30554152B81E0589DF5041CDCCCC9C833055411F85EB2176DF5041CDCCCCDC963055418FC2F54876DF5041CDCCCCDC97305541D7A370CD87DF5041C3F528BC9D305541EC51B87E9FDF5041CDCCCCACA5305541EC51B8DEB3DF50410AD7A380AC3055418FC2F558B5DF50418FC2F5F8AB3055413D0AD733C2DF50415C8FC2759730554185EB51F8CADF50417B14AE7789305541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000B81E851BC2DF50415C8FC27571305541734ADD89C0DF50416E2295EF70305541BDC1ED8FBFDF5041FBB81C9D70305541A0D6026AA5DF50417921E0E867305541A2CF0E3FA5DF5041782C39F36730554179C0B5C9A3DF5041B663C85668305541F2747F47A2DF504183F424DE69305541F6ABC5F99EDF5041C95D083C6D3055412A3389B89BDF5041595C318D7030554155DAC22DB2DF5041E88AEB7478305541529C9356B9DF5041EC9E0C0C7B305541F4C6BD79BDDF5041B554747C7C3055415E628767C2DF5041FF2CC03F7E305541D339B41ACFDF5041154504BF82305541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>16658 - 1013969
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000003000000510000005C8FC2B5B2F750415C8FC215E36E54413D0AD753B2F7504100000090E16E5441D7A3703DB3F75041AE47E13AE16E544148E17AD4B3F75041333333C3E26E5441295C8F32B5F75041EC51B85EE26E544114AE4711B8F75041E17A148EE16E5441A4703DFAB7F7504114AE4751E16E54415C8FC245B5F7504166666626DA6E5441B81E855BB6F7504166666656D96E544100000080B8F75041EC51B85ED86E5441000000A0BAF7504152B81E25D86E5441CDCCCC9CBCF7504185EB5118D86E544166666666BEF75041AE47E18AD86E5441C3F5282CBFF75041B81E851BD96E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000300000054000000A53D48A0D6F75041966A74DFA86E54418FC2F518D5F75041E17A146EAA6E544100000000D5F750417B14AE87AA6E54418FC2F568D4F75041713D0A77AC6E54417B14AEC7D3F750410AD7A350AE6E54419A9999B9D2F75041295C8F12B06E544166666606D1F75041AE47E1EAB06E544166666606CFF750418FC2F568B06E5441A4703DBACBF750411F85EB61B46E5441A4703D5AC9F75041F6285CAFB66E5441713D0AB7C6F75041EC51B87EB86E5441A4703DAAC0F7504185EB5128BC6E5441A4703DCABAF75041666666B6BF6E5441CDCCCC2CAEF750419A999959C76E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>16658 - 3807755
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000003000000510000005C8FC2B5B2F750415C8FC215E36E54413D0AD753B2F7504100000090E16E5441D7A3703DB3F75041AE47E13AE16E544148E17AD4B3F75041333333C3E26E5441295C8F32B5F75041EC51B85EE26E544114AE4711B8F75041E17A148EE16E5441A4703DFAB7F7504114AE4751E16E54415C8FC245B5F7504166666626DA6E5441B81E855BB6F7504166666656D96E544100000080B8F75041EC51B85ED86E5441000000A0BAF7504152B81E25D86E5441CDCCCC9CBCF7504185EB5118D86E544166666666BEF75041AE47E18AD86E5441C3F5282CBFF75041B81E851BD96E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000300000054000000A53D48A0D6F75041966A74DFA86E54418FC2F518D5F75041E17A146EAA6E544100000000D5F750417B14AE87AA6E54418FC2F568D4F75041713D0A77AC6E54417B14AEC7D3F750410AD7A350AE6E54419A9999B9D2F75041295C8F12B06E544166666606D1F75041AE47E1EAB06E544166666606CFF750418FC2F568B06E5441A4703DBACBF750411F85EB61B46E5441A4703D5AC9F75041F6285CAFB66E5441713D0AB7C6F75041EC51B87EB86E5441A4703DAAC0F7504185EB5128BC6E5441A4703DCABAF75041666666B6BF6E5441CDCCCC2CAEF750419A999959C76E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>16816 - 8524
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000120000007B14AE17BCF6504152B81E25AE6D5441B81E854BBAF65041295C8F62AD6D54411F85EBB1BBF650410AD7A3E0AA6D544185EB5178BDF65041E17A14AEAB6D5441713D0A17C2F65041713D0A67A36D544133333303C0F650419A999999A16D54415C8FC285C2F650413D0AD7639E6D5441AE47E12AC4F65041E17A14AE9F6D54415C8FC225CCF65041295C8F62916D5441B81E859BC2F6504152B81EA5906D54411F85EB71AAF65041E17A14EE8D6D54410AD7A3B094F65041A4703D3AB56D5441CDCCCC3C9CF6504152B81E45B46D5441E17A146EA4F6504185EB51A8B36D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000070000004DF6659BBCF65041DAE06939AD6D5441FA66654FBDF65041DDE9939BAB6D54419390CBB6BBF65041CB18D8E2AA6D5441EC7EEE66BAF65041735F266EAD6D5441544DAD12BCF65041D66B152EAE6D54417B14AE17BCF6504152B81E25AE6D54414DF6659BBCF65041DAE06939AD6D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>16816 - 60274
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000120000007B14AE17BCF6504152B81E25AE6D5441B81E854BBAF65041295C8F62AD6D54411F85EBB1BBF650410AD7A3E0AA6D544185EB5178BDF65041E17A14AEAB6D5441713D0A17C2F65041713D0A67A36D544133333303C0F650419A999999A16D54415C8FC285C2F650413D0AD7639E6D5441AE47E12AC4F65041E17A14AE9F6D54415C8FC225CCF65041295C8F62916D5441B81E859BC2F6504152B81EA5906D54411F85EB71AAF65041E17A14EE8D6D54410AD7A3B094F65041A4703D3AB56D5441CDCCCC3C9CF6504152B81E45B46D5441E17A146EA4F6504185EB51A8B36D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000070000004DF6659BBCF65041DAE06939AD6D5441FA66654FBDF65041DDE9939BAB6D54419390CBB6BBF65041CB18D8E2AA6D5441EC7EEE66BAF65041735F266EAD6D5441544DAD12BCF65041D66B152EAE6D54417B14AE17BCF6504152B81E25AE6D54414DF6659BBCF65041DAE06939AD6D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>17076 - 2991254
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000600000033333303DCF65041D7A370FDC47554413D0AD7C3E3F65041666666A6F7755441D7A3700DE8F65041E17A14AE13765441666666D6FBF650417B14AE970A765441B81E85CBF0F65041295C8FD2C475544133333303DCF65041D7A370FDC4755441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000F39C16D1FBF6504161841E760A765441A2CFB0870DF750414C95D17202765441F2E3FB6315F750410BEEBA3BFE755441814FAAD610F750414B9B3383F4755441A1A1978E0EF75041DE0CDFE9ED755441A97472870DF75041F7717B5FEA7554410EEE0E600DF750414C9322BFE975544131E7E9F50CF75041D3584A50E77554412B4002340CF750413A847ADEE27554412E5DD6C10BF75041A83580BEDA755441BF1A11650BF750418CFBC5F3D37554410A71FD820BF75041D2C7D18CC6755441EB68D00008F750411AB6B845C67554411F367B1900F750416DDAE140C5755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>17076 - 3397097
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000600000033333303DCF65041D7A370FDC47554413D0AD7C3E3F65041666666A6F7755441D7A3700DE8F65041E17A14AE13765441666666D6FBF650417B14AE970A765441B81E85CBF0F65041295C8FD2C475544133333303DCF65041D7A370FDC4755441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000F39C16D1FBF6504161841E760A765441A2CFB0870DF750414C95D17202765441F2E3FB6315F750410BEEBA3BFE755441814FAAD610F750414B9B3383F4755441A1A1978E0EF75041DE0CDFE9ED755441A97472870DF75041F7717B5FEA7554410EEE0E600DF750414C9322BFE975544131E7E9F50CF75041D3584A50E77554412B4002340CF750413A847ADEE27554412E5DD6C10BF75041A83580BEDA755441BF1A11650BF750418CFBC5F3D37554410A71FD820BF75041D2C7D18CC6755441EB68D00008F750411AB6B845C67554411F367B1900F750416DDAE140C5755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>17162 - 5217873
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000250000000000001014F650411F85EB81D57254419A9999F909F6504185EB5168DA725441A4703D4A05F650419A9999D9DB7254410AD7A3C0FBF550413D0AD713DE725441B81E852BFDF55041000000E0DF7254419A99997900F65041E17A14BEE672544152B81E4503F6504100000000ED72544114AE477105F650418FC2F568F2725441EC51B84E06F65041C3F5282CF47254419A9999E909F650417B14AE67F5725441C3F528DC0BF650411F85EB91F6725441333333B30DF6504100000090F87254417B14AEC711F6504114AE4741FF72544185EB51D815F65041F6285CEF04735441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000003F20AF8746F65041B4982FC1FC7254411F85EB4147F65041C3F5280C04735441838AC74C4DF650418BC7245005735441CF68692D50F6504158AD6DEA05735441EF3AFC6551F650418E52AE2A0673544171C13E5653F650413A9D5C4606735441D1817A5456F6504117F719710673544163FA549257F65041D3FB2343067354411DCD6CAD59F65041F3CA33F2057354415D4E4BCE5CF650412C1C94A504735441191580195DF65041C8823C8404735441A63648215FF650413B7688FE027354417D4427A060F6504178407ADF017354415C8FC2F561F65041F6285CDF00735441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>231779 - 57934
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F528BC065E5141D7A3705DCBD9544152B81EF50C5E51411F85EB11CDD95441C3F5288C145E514152B81E25CED95441C3F528DC185E5141F6285C2FCDD954417B14AE271D5E514148E17AB4CDD95441EC51B84E235E51410AD7A340CBD95441713D0A37245E51413D0AD7E3CAD954419A9999A90C5E514152B81E45C1D95441713D0AF7F75D514114AE4731B9D95441E17A14AEF65D5141EC51B8EEB9D95441295C8F02F65D5141666666A6BBD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D9544133333373F85D514166666646C2D95441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000360000004F98CD3CF85D51417F8D814CB9D95441713D0AF7F75D514114AE4731B9D954410DF73EB7F65D51416B0971E9B9D95441E17A14AEF65D5141EC51B8EEB9D95441295C8F02F65D5141666666A6BBD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D9544133333373F85D514166666646C2D95441A4703D6AF95D5141295C8F72C4D95441CDCCCCECF95D514152B81E85C5D954411DE38C52FA5D5141BD8EB46BC6D95441422D0DC7FA5D514154F98826C7D954410D6198C8FA5D5141E5431427C7D9544187B2A4C9FA5D5141E0D57227C7D95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>231779 - 58414
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F528BC065E5141D7A3705DCBD9544152B81EF50C5E51411F85EB11CDD95441C3F5288C145E514152B81E25CED95441C3F528DC185E5141F6285C2FCDD954417B14AE271D5E514148E17AB4CDD95441EC51B84E235E51410AD7A340CBD95441713D0A37245E51413D0AD7E3CAD954419A9999A90C5E514152B81E45C1D95441713D0AF7F75D514114AE4731B9D95441E17A14AEF65D5141EC51B8EEB9D95441295C8F02F65D5141666666A6BBD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D9544133333373F85D514166666646C2D95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000E3A10F0DFA5D51419181B001BAD95441713D0AF7F75D514114AE4731B9D95441BF9320CDF65D5141A934D7DCB9D954413A9BF6A2F65D5141A586370BBAD95441BA216050F65D5141F1D6ECDEBAD95441E471E30CF65D51414C77EC8BBBD954418855930AF65D51415D4DDA91BBD95441862B3D0AF65D5141962DB792BBD9544143340E0AF65D514167922F93BBD9544192B4F509F65D5141775F6E93BBD954416FDA585AF65D514145531AAEBCD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D954414205BDE3F75D5141DEC5F7D7C0D95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>231779 - 101315
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F528BC065E5141D7A3705DCBD9544152B81EF50C5E51411F85EB11CDD95441C3F5288C145E514152B81E25CED95441C3F528DC185E5141F6285C2FCDD954417B14AE271D5E514148E17AB4CDD95441EC51B84E235E51410AD7A340CBD95441713D0A37245E51413D0AD7E3CAD954419A9999A90C5E514152B81E45C1D95441713D0AF7F75D514114AE4731B9D95441E17A14AEF65D5141EC51B8EEB9D95441295C8F02F65D5141666666A6BBD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D9544133333373F85D514166666646C2D95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000DFA10F0DFA5D51419381B001BAD95441713D0AF7F75D514114AE4731B9D95441BF9320CDF65D5141A534D7DCB9D954413D9BF6A2F65D5141AA86370BBAD95441BE216050F65D5141EED6ECDEBAD95441E071E30CF65D51414D77EC8BBBD954418855930AF65D51415E4DDA91BBD95441852B3D0AF65D5141942DB792BBD9544140340E0AF65D51416A922F93BBD954418DB4F509F65D5141795F6E93BBD954416CDA585AF65D514148531AAEBCD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D954414405BDE3F75D5141DFC5F7D7C0D95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>231779 - 302834
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F528BC065E5141D7A3705DCBD9544152B81EF50C5E51411F85EB11CDD95441C3F5288C145E514152B81E25CED95441C3F528DC185E5141F6285C2FCDD954417B14AE271D5E514148E17AB4CDD95441EC51B84E235E51410AD7A340CBD95441713D0A37245E51413D0AD7E3CAD954419A9999A90C5E514152B81E45C1D95441713D0AF7F75D514114AE4731B9D95441E17A14AEF65D5141EC51B8EEB9D95441295C8F02F65D5141666666A6BBD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D9544133333373F85D514166666646C2D95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000DFA10F0DFA5D51419381B001BAD95441713D0AF7F75D514114AE4731B9D95441BF9320CDF65D5141A534D7DCB9D954413D9BF6A2F65D5141AA86370BBAD95441BE216050F65D5141EED6ECDEBAD95441E071E30CF65D51414D77EC8BBBD954418855930AF65D51415E4DDA91BBD95441852B3D0AF65D5141942DB792BBD9544140340E0AF65D51416A922F93BBD954418DB4F509F65D5141795F6E93BBD954416CDA585AF65D514148531AAEBCD95441713D0AA7F65D514148E17A94BDD95441EC51B89EF75D51417B14AE27C0D954414405BDE3F75D5141DFC5F7D7C0D95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>17944 - 1011666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000210000001F85EB1105F45041EC51B84E8B715441A4703D4A01F4504148E17A948A71544152B81EC5F5F350418FC2F56889715441AE47E19AF0F35041D7A3703D897154413D0AD753EDF350413D0AD7B389715441AE47E18AE8F35041000000108C715441713D0A97E5F35041EC51B8FE8C715441AE47E15AE2F35041EC51B83E8D71544133333333DFF35041EC51B8EE8C715441EC51B80EDCF35041713D0A078C715441E17A149ED8F35041C3F528AC8A71544185EB51B8D4F3504114AE47A18871544152B81EF5CBF350413D0AD773827154419A999939C1F35041C3F528DC7A715441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000066666656C5F35041EC51B89E9571544100000050C6F350419A999949967154410AD7A3B0CFF35041CDCCCC3C9D715441282DC2A0D0F35041A47643D89C7154411F85EB41D2F350419A9999299C71544152B81E95D0F350410AD7A33098715441AE47E18ACEF35041EC51B80E967154410AEDD609CCF3504114B6BA70937154416054AD3FC9F350419D79508690715441A03C8E00C7F35041753C382D8E7154413C2BC892C5F350412E5AEDAE8C71544114AE47B1C3F350417B14AEB78A715441C1F408E3C1F3504125062C38897154410AD7A360BFF350413333332387715441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>17944 - 3380416
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000210000001F85EB1105F45041EC51B84E8B715441A4703D4A01F4504148E17A948A71544152B81EC5F5F350418FC2F56889715441AE47E19AF0F35041D7A3703D897154413D0AD753EDF350413D0AD7B389715441AE47E18AE8F35041000000108C715441713D0A97E5F35041EC51B8FE8C715441AE47E15AE2F35041EC51B83E8D71544133333333DFF35041EC51B8EE8C715441EC51B80EDCF35041713D0A078C715441E17A149ED8F35041C3F528AC8A71544185EB51B8D4F3504114AE47A18871544152B81EF5CBF350413D0AD773827154419A999939C1F35041C3F528DC7A715441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000066666656C5F35041EC51B89E9571544100000050C6F350419A999949967154410AD7A3B0CFF35041CDCCCC3C9D715441282DC2A0D0F35041A47643D89C7154411F85EB41D2F350419A9999299C71544152B81E95D0F350410AD7A33098715441AE47E18ACEF35041EC51B80E967154410AEDD609CCF3504114B6BA70937154416054AD3FC9F350419D79508690715441A03C8E00C7F35041753C382D8E7154413C2BC892C5F350412E5AEDAE8C71544114AE47B1C3F350417B14AEB78A715441C1F408E3C1F3504125062C38897154410AD7A360BFF350413333332387715441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>231802 - 57936
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000B30000005C8FC295415E5141666666F62CD854417B14AE17425E514114AE47A12BD85441A4703DCA425E51416666669629D8544100000050435E514148E17A1428D85441AE47E1DA475E514185EB518827D85441F6285CEF495E5141AE47E12A29D854419A9999C9495E51419A9999D92AD85441333333134B5E51419A9999092CD8544148E17AF44C5E5141666666162CD85441666666A64D5E5141000000602DD8544114AE47014D5E5141000000902ED85441000000204B5E5141713D0AA72FD85441295C8FE2495E5141CDCCCC3C31D8544133333373485E5141EC51B81E33D85441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000001010000D939894E775E5141ED6BCE0144D85441D8C22317785E5141F291629842D854414780DA4B785E5141A9C9DB9C41D854413D0AD773785E514185EB510840D85441D7A370BD785E514148E17AC43DD85441E17A14DE785E5141713D0A373BD85441EC51B80E795E5141D7A370ED37D85441EC51B80E795E514141086EA035D85441B2D60407795E51411A52B60835D85441CDCCCCAC785E5141713D0A2732D85441C3F5287C785E51413D0AD70330D85441243BF134775E514186EF294E2DD85441F2493D18775E5141B02E2E1C2DD8544140A5697D755E5141A054C9982AD85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>965418 - 218346
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C0000001F85EBF1E0C95041666666E663B654410F901AC2E0C950419407759F64B654410670CA98E0C950418862132B65B654416B1C5CF6E2C95041E386440964B654411401D2BEECC950410A7C6E5F5FB65441C8179FC2ECC95041FFF5025F5FB654410EABCDC2EFC95041752C210A5FB65441B80DBCCDEFC95041BDF5EB085FB65441DE2889B2F6C9504104B8B0D05EB65441C0ECDAC800CA5041D8746FA55EB654411155D54E07CA5041C4B490F95EB654412C71137E07CA504130FBF1FB5EB65441442A968807CA5041C93990D45EB6544187FDBD8B07CA50418D2BCBD45EB65441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000C2A00D50F0C9504184CFC2925CB65441C37E7BC1EFC95041A6BA599E5CB65441CEA2DC0EEDC95041914113175DB65441C4464955EDC95041F271D2065DB654416018AE47EBC950414E285C5F5DB65441E2FCB2AAEAC9504105095BA45DB654410AD7A3F0E6C950417B14AE475FB65441EC51B81EE2C950410AD7A33062B65441295C8F52E1C95041E17A148E62B65441D2FD27E4E0C950412911AB1B64B654410F901AC2E0C950419407759F64B654410670CA98E0C950418862132B65B654416B1C5CF6E2C95041E386440964B654411401D2BEECC950410A7C6E5F5FB65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>965418 - 392309
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C0000001F85EBF1E0C95041666666E663B654410F901AC2E0C950419407759F64B654410670CA98E0C950418862132B65B654416B1C5CF6E2C95041E386440964B654411401D2BEECC950410A7C6E5F5FB65441C8179FC2ECC95041FFF5025F5FB654410EABCDC2EFC95041752C210A5FB65441B80DBCCDEFC95041BDF5EB085FB65441DE2889B2F6C9504104B8B0D05EB65441C0ECDAC800CA5041D8746FA55EB654411155D54E07CA5041C4B490F95EB654412C71137E07CA504130FBF1FB5EB65441442A968807CA5041C93990D45EB6544187FDBD8B07CA50418D2BCBD45EB65441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000C2A00D50F0C9504184CFC2925CB65441C37E7BC1EFC95041A6BA599E5CB65441CEA2DC0EEDC95041914113175DB65441C4464955EDC95041F271D2065DB654416018AE47EBC950414E285C5F5DB65441E2FCB2AAEAC9504105095BA45DB654410AD7A3F0E6C950417B14AE475FB65441EC51B81EE2C950410AD7A33062B65441295C8F52E1C95041E17A148E62B65441D2FD27E4E0C950412911AB1B64B654410F901AC2E0C950419407759F64B654410670CA98E0C950418862132B65B654416B1C5CF6E2C95041E386440964B654411401D2BEECC950410A7C6E5F5FB65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>20047 - 3182037
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000080000005C8FC2A5BC65514166666616979C5441713D0AE7C5655141713D0AE7739C544185EB51D8CE65514152B81EE5519C5441E17A14BEC96551415C8FC285509C544185EB51B8C0655141333333D3729C544152B81E65B76551417B14AE47969C5441AE47E11ABB655141F6285CFF969C54415C8FC2A5BC65514166666616979C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000900000066558DA9BC655141B09C9E16979C54414675641EC2655141D3A98167979C5441D179A0FFC365514146B8BB21909C544171FCEC3DD2655141DB58D1F1599C54411089C5FED365514158992549539C5441856A01DFCE655141D3E1ECE6519C544189DC9A27CE65514161AC2685549C544163B10696BE655141C60FBBB78F9C544166558DA9BC655141B09C9E16979C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>20047 - 3272984
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000080000005C8FC2A5BC65514166666616979C5441713D0AE7C5655141713D0AE7739C544185EB51D8CE65514152B81EE5519C5441E17A14BEC96551415C8FC285509C544185EB51B8C0655141333333D3729C544152B81E65B76551417B14AE47969C5441AE47E11ABB655141F6285CFF969C54415C8FC2A5BC65514166666616979C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000900000066558DA9BC655141B09C9E16979C54414675641EC2655141D3A98167979C5441D179A0FFC365514146B8BB21909C544171FCEC3DD2655141DB58D1F1599C54411089C5FED365514158992549539C5441856A01DFCE655141D3E1ECE6519C544189DC9A27CE65514161AC2685549C544163B10696BE655141C60FBBB78F9C544166558DA9BC655141B09C9E16979C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>21462 - 2971639
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002500000052B81E95D51D51413D0AD7E3575954419A999919D61D5141000000C05B595441AE47E14AD51D5141713D0A575E5954411F85EBA1D81D51411F85EB515F5954419A999959D61D514114AE47F16859544148E17A34CE1D5141D7A3703D67595441000000B0CD1D514114AE47F168595441000000E0CA1D51417B14AEE7675954415C8FC2F5C51D5141E17A14DE78595441E17A146EC41D514152B81E757C5954413D0AD7D3CD1D5141E17A140E7E59544148E17AB4DE1D51418FC2F5A87F595441295C8F92F31D514148E17AD483595441B81E85CBFB1D5141CDCCCCFC82595441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000110000009572BBCBD41D51414D2D7FF74259544151F8FD0DD41D5141B141C09145595441035D459AE21D5141DBA12CE848595441DFF8272DF81D5141488F75734D59544104434D4A141E5141D47E3BD253595441AA2FDAA7271E5141334E491C5859544109914372421E5141AB5CBBDF5D59544105BFC647431E5141B765B0005C595441D7A370BD561E51417B14AE57305954417B14AED7531E514148E17A642F5954417B14AE67561E51411F85EB812959544166666606F11D51417B14AE171259544185EB5118EF1D514185EB51D8125954418FC2F5A8E91D5141F6285CBF1A595441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>21462 - 3511995
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002500000052B81E95D51D51413D0AD7E3575954419A999919D61D5141000000C05B595441AE47E14AD51D5141713D0A575E5954411F85EBA1D81D51411F85EB515F5954419A999959D61D514114AE47F16859544148E17A34CE1D5141D7A3703D67595441000000B0CD1D514114AE47F168595441000000E0CA1D51417B14AEE7675954415C8FC2F5C51D5141E17A14DE78595441E17A146EC41D514152B81E757C5954413D0AD7D3CD1D5141E17A140E7E59544148E17AB4DE1D51418FC2F5A87F595441295C8F92F31D514148E17AD483595441B81E85CBFB1D5141CDCCCCFC82595441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000110000009572BBCBD41D51414D2D7FF74259544151F8FD0DD41D5141B141C09145595441035D459AE21D5141DBA12CE848595441DFF8272DF81D5141488F75734D59544104434D4A141E5141D47E3BD253595441AA2FDAA7271E5141334E491C5859544109914372421E5141AB5CBBDF5D59544105BFC647431E5141B765B0005C595441D7A370BD561E51417B14AE57305954417B14AED7531E514148E17A642F5954417B14AE67561E51411F85EB812959544166666606F11D51417B14AE171259544185EB5118EF1D514185EB51D8125954418FC2F5A8E91D5141F6285CBF1A595441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>21574 - 16860
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000000000A098195141D7A370BD3A5554419A9999199219514148E17A8435555441B81E85BB911951418FC2F538355554418FC2F5388F1951413D0AD7533755544185EB51887C19514114AE47F157555441C3F5287C7B195141AE47E1EA59555441A4703DCA7619514185EB51A8635554419A99996977195141AE47E1AA645554411F85EB61D7195141333333C394555441B81E85FBD8195141B81E85FB9455544185EB5138DB195141AE47E10A95555441AE47E19ADD195141713D0A47945554413D0AD783DE1951410AD7A3D09355544185EB5108E01951413333335391555441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000002E2D92CDB1951415C8C920A955554416E43C2F8DC195141C784FF7A945554418D463FB3DC195141258E76AA9355544178A8FA75D8195141258E76AA93555441BCAAB109C1195141DB002D08885554416B689459C0195141291FCA3589555441EC5E0E39C51951414A8870A98B5554412BA04E73CA1951410E5619488E55544166774879CF19514114988FCC905554413105266AD3195141B96526C6925554411F85EB61D7195141333333C3945554417B9F0CD7D9195141512568019555544102E2D92CDB1951415C8C920A95555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>21574 - 59228
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000000000A098195141D7A370BD3A5554419A9999199219514148E17A8435555441B81E85BB911951418FC2F538355554418FC2F5388F1951413D0AD7533755544185EB51887C19514114AE47F157555441C3F5287C7B195141AE47E1EA59555441A4703DCA7619514185EB51A8635554419A99996977195141AE47E1AA645554411F85EB61D7195141333333C394555441B81E85FBD8195141B81E85FB9455544185EB5138DB195141AE47E10A95555441AE47E19ADD195141713D0A47945554413D0AD783DE1951410AD7A3D09355544185EB5108E01951413333335391555441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000002E2D92CDB1951415C8C920A955554416E43C2F8DC195141C784FF7A945554418D463FB3DC195141258E76AA9355544178A8FA75D8195141258E76AA93555441BCAAB109C1195141DB002D08885554416B689459C0195141291FCA3589555441EC5E0E39C51951414A8870A98B5554412BA04E73CA1951410E5619488E55544166774879CF19514114988FCC905554413105266AD3195141B96526C6925554411F85EB61D7195141333333C3945554417B9F0CD7D9195141512568019555544102E2D92CDB1951415C8C920A95555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>21577 - 3127051
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000713D0AC70A1A51418FC2F588E9555441713D0A870A1A514185EB51F8E955544114AE47B1061A5141295C8FA2F055544185EB5178011A514114AE4751FA555441AE47E14AFC195141AE47E1BA055654415C8FC2E5F41951411F85EBF114565441B81E858BE9195141000000302A565441E17A144EE7195141000000602E5654418FC2F5A8DE195141713D0A873E565441B81E851BD71951413D0AD7734C56544152B81EE5CF19514152B81EF55A565441000000B0CF1951419A9999695B565441AE47E15ACB195141666666E664565441A4703D7AC819514185EB51C86B565441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005F000000B8CEEA50101A514175A7EE3B0056544153BB7E120D1A514185CA9EBD05565441226B9EBA0C1A5141436E665306565441EFEDD70E0B1A5141C2B6F72809565441717BA0E6FB1951416423DAE322565441207FFEC0FB195141FC5DBC2323565441C1F089ACFB1951413BA199462356544188B2945FFB195141B6AC19C9235654411AE57AFBF7195141BDF8BF8A29565441A2713650F71951418A607CAD2A565441B0257B1FF4195141AAF4EE1730565441934922C2F3195141E33565B630565441BCA6A2C3F219514199116666325654413BFB60B0F0195141A9638FEF35565441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>21577 - 3506337
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000713D0AC70A1A51418FC2F588E9555441713D0A870A1A514185EB51F8E955544114AE47B1061A5141295C8FA2F055544185EB5178011A514114AE4751FA555441AE47E14AFC195141AE47E1BA055654415C8FC2E5F41951411F85EBF114565441B81E858BE9195141000000302A565441E17A144EE7195141000000602E5654418FC2F5A8DE195141713D0A873E565441B81E851BD71951413D0AD7734C56544152B81EE5CF19514152B81EF55A565441000000B0CF1951419A9999695B565441AE47E15ACB195141666666E664565441A4703D7AC819514185EB51C86B565441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005F000000B8CEEA50101A514175A7EE3B0056544153BB7E120D1A514185CA9EBD05565441226B9EBA0C1A5141436E665306565441EFEDD70E0B1A5141C2B6F72809565441717BA0E6FB1951416423DAE322565441207FFEC0FB195141FC5DBC2323565441C1F089ACFB1951413BA199462356544188B2945FFB195141B6AC19C9235654411AE57AFBF7195141BDF8BF8A29565441A2713650F71951418A607CAD2A565441B0257B1FF4195141AAF4EE1730565441934922C2F3195141E33565B630565441BCA6A2C3F219514199116666325654413BFB60B0F0195141A9638FEF35565441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>21995 - 3023426
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002500000052B81E9570215141F6285C1FDA5054418FC2F5086621514114AE4751DE505441D7A3703D5B215141333333B3E2505441CDCCCC3C58215141F6285C5FE45054413D0AD73356215141D7A370FDE55054419A999989542151419A9999F9E8505441333333A351215141AE47E19AF850544185EB5128502151411F85EB51025154415C8FC2F54F2151410AD7A3F002515441C3F528BC4F2151413D0AD7F30451544114AE47A150215141295C8F820651544114AE473152215141EC51B85E07515441C3F5285C79215141EC51B8BE0E515441C3F5281C892151415C8FC2C50F515441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000004000000014AE47814F215141F6285CFF06515441C72EE1854F215141A39FBB98075154418AE5BF2A54215141F62B808B08515441447CE4A05C2151416EB6F3420A515441CBC815A1652151417EEB68160C515441028A81206821514173EC49970C5154411B3E07A7712151412FEAC4670E515441C6DE8A71772151412B2127820F515441F27057DA79215141C56DA3F70F515441AA8189D27D215141F3E10961105154413D646707832151415CA94DE7105154419A9999F9882151410AD7A38011515441C3F5281C892151415C8FC2C50F5154410DD2C89A8A21514114923EBA0F515441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>22088 - 1020025
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000029000000713D0A9755215141C3F5286CE350544152B81E15582151419A999989E2505441B81E85DB5A2151410AD7A370E1505441666666666921514152B81E15DC505441EC51B85E72215141F6285C8FD8505441EC51B8CE732151411F85EB91D4505441295C8F42742151418FC2F548D3505441B81E854B76215141C3F5283CCE505441333333B37621514185EB51F8CC5054410AD7A30077215141B81E858BCB5054417B14AE377721514152B81E05CA505441F6285C5F772151411F85EB11C8505441295C8F72772151410AD7A3A0C65054419A9999E977215141A4703DDABF505441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000270000005A9C793C2C215141E4D44A28A550544114AE47B12B215141A4703D3AA6505441713D0A272421514148E17A54B75054413D0AD76332215141B81E85FBBB505441333333235A215141A4703D5AC65054415C8FC2C554215141F6285CAFE3505441713D0A9755215141C3F5286CE350544152B81E15582151419A999989E2505441B81E85DB5A2151410AD7A370E1505441666666666921514152B81E15DC505441EC51B85E72215141F6285C8FD8505441EC51B8CE732151411F85EB91D4505441295C8F42742151418FC2F548D3505441B81E854B76215141C3F5283CCE505441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>22088 - 3623011
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000029000000713D0A9755215141C3F5286CE350544152B81E15582151419A999989E2505441B81E85DB5A2151410AD7A370E1505441666666666921514152B81E15DC505441EC51B85E72215141F6285C8FD8505441EC51B8CE732151411F85EB91D4505441295C8F42742151418FC2F548D3505441B81E854B76215141C3F5283CCE505441333333B37621514185EB51F8CC5054410AD7A30077215141B81E858BCB5054417B14AE377721514152B81E05CA505441F6285C5F772151411F85EB11C8505441295C8F72772151410AD7A3A0C65054419A9999E977215141A4703DDABF505441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000270000005A9C793C2C215141E4D44A28A550544114AE47B12B215141A4703D3AA6505441713D0A272421514148E17A54B75054413D0AD76332215141B81E85FBBB505441333333235A215141A4703D5AC65054415C8FC2C554215141F6285CAFE3505441713D0A9755215141C3F5286CE350544152B81E15582151419A999989E2505441B81E85DB5A2151410AD7A370E1505441666666666921514152B81E15DC505441EC51B85E72215141F6285C8FD8505441EC51B8CE732151411F85EB91D4505441295C8F42742151418FC2F548D3505441B81E854B76215141C3F5283CCE505441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>22178 - 2992784
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002D00000014AE4791062051418FC2F528F75B54413D0AD70309205141295C8F72F75B54411F85EB910820514185EB51D8FD5B5441333333E3072051411F85EB41035C544148E17A1407205141C3F528CC075C54411F85EB910C20514166666636085C54417B14AE07192051419A9999D90A5C5441A4703DDA23205141713D0A370C5C544148E17A04272051410AD7A3400C5C5441333333C327205141333333430C5C5441D7A370AD2520514148E17AB4085C5441EC51B82E23205141EC51B88E055C5441713D0A6720205141295C8F72025C54410AD7A3801F2051413D0AD723015C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003300000048E17A1407205141C3F528CC075C54418BAF9B5B092051417A643DF8075C5441286986FD0B20514151BA2E2B085C544195AD86ED0C205141BA7ACA49085C544141065F631220514117E0AE71095C54418BF9117917205141252C39850A5C5441FCBF6B05192051413D2E1FD90A5C5441D2FEF1311B205141ACE0811F0B5C544179903FC91E205141199974930B5C5441D915C1E721205141F2FC2AF80B5C5441A4703DDA23205141713D0A370C5C5441482B566324205141FA13AA380C5C54412A6DD05D262051413450AA3E0C5C5441333333C327205141333333430C5C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>22178 - 3768912
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002D00000014AE4791062051418FC2F528F75B54413D0AD70309205141295C8F72F75B54411F85EB910820514185EB51D8FD5B5441333333E3072051411F85EB41035C544148E17A1407205141C3F528CC075C54411F85EB910C20514166666636085C54417B14AE07192051419A9999D90A5C5441A4703DDA23205141713D0A370C5C544148E17A04272051410AD7A3400C5C5441333333C327205141333333430C5C5441D7A370AD2520514148E17AB4085C5441EC51B82E23205141EC51B88E055C5441713D0A6720205141295C8F72025C54410AD7A3801F2051413D0AD723015C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003300000048E17A1407205141C3F528CC075C54418BAF9B5B092051417A643DF8075C5441286986FD0B20514151BA2E2B085C544195AD86ED0C205141BA7ACA49085C544141065F631220514117E0AE71095C54418BF9117917205141252C39850A5C5441FCBF6B05192051413D2E1FD90A5C5441D2FEF1311B205141ACE0811F0B5C544179903FC91E205141199974930B5C5441D915C1E721205141F2FC2AF80B5C5441A4703DDA23205141713D0A370C5C5441482B566324205141FA13AA380C5C54412A6DD05D262051413450AA3E0C5C5441333333C327205141333333430C5C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>22180 - 2992973
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000012000000666666A626205141B81E855B665C5441F6285CCF262051419A999989655C5441EC51B81E2720514114AE4781635C5441713D0A472620514100000010625C5441F6285C7F2A205141295C8FF25D5C54415C8FC2852D205141EC51B85E5B5C5441713D0A573020514152B81E25585C5441000000C031205141B81E855B555C544148E17A14FD1F5141333333E3425C5441B81E858BFC1F5141B81E85FB445C5441D7A370FDFB1F51417B14AE87465C5441CDCCCC6CFA1F51415C8FC2E54A5C544148E17A74F91F5141AE47E19A4D5C5441333333D3F71F514133333393525C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000009A99996906205141C3F528FC4F5C5441A4703D6A15205141EC51B8CE575C54417B14AE97252051417B14AE775F5C5441D988FFD4272051412A91F18B605C5441AD373E1229205141EBA097565F5C5441F6285C7F2A205141295C8FF25D5C5441365A3D8C2B205141DCED740D5D5C5441D5F1F6C72C205141412E70005C5C544135A581C22D205141C10D30195B5C54416C55C6692E2051413622BA595A5C5441C66BF8702F205141DA08772C595C54410833473A30205141B3B00A46585C5441F6D37FB030205141E56A4374575C544133488721312051411D76CF94565C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>22180 - 3773549
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000012000000666666A626205141B81E855B665C5441F6285CCF262051419A999989655C5441EC51B81E2720514114AE4781635C5441713D0A472620514100000010625C5441F6285C7F2A205141295C8FF25D5C54415C8FC2852D205141EC51B85E5B5C5441713D0A573020514152B81E25585C5441000000C031205141B81E855B555C544148E17A14FD1F5141333333E3425C5441B81E858BFC1F5141B81E85FB445C5441D7A370FDFB1F51417B14AE87465C5441CDCCCC6CFA1F51415C8FC2E54A5C544148E17A74F91F5141AE47E19A4D5C5441333333D3F71F514133333393525C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000009A99996906205141C3F528FC4F5C5441A4703D6A15205141EC51B8CE575C54417B14AE97252051417B14AE775F5C5441D988FFD4272051412A91F18B605C5441AD373E1229205141EBA097565F5C5441F6285C7F2A205141295C8FF25D5C5441365A3D8C2B205141DCED740D5D5C5441D5F1F6C72C205141412E70005C5C544135A581C22D205141C10D30195B5C54416C55C6692E2051413622BA595A5C5441C66BF8702F205141DA08772C595C54410833473A30205141B3B00A46585C5441F6D37FB030205141E56A4374575C544133488721312051411D76CF94565C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>22187 - 3128191
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000C3F528DC1C2351411F85EBA1BA5A5441666666661C235141EC51B85EBB5A5441C3F5281C13235141666666E6CA5A5441333333430B235141A4703D0AD85A5441C3F528CC0223514185EB5128E75A544152B81EF5FF225141AE47E12AEC5A544133333313042351417B14AE07F05A54413D0AD7E324235141F6285CAFB95A5441D7A3702D20235141B81E857BBA5A5441C3F528DC1C2351411F85EBA1BA5A5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000CC9BEC6404235141D0103D54F05A54418FC2F52807235141B81E85EBF25A5441A806CDE30A2351416BBBDDBBEC5A5441BAC1D8AD0E235141EE20F8E1E65A5441A5D5670D1423514199264A29DF5A544137C53D2B17235141E2CBB5C3DA5A54414D5516C118235141EEC50DB4D85A5441685A30F91A235141E86558D7D55A54416CD9A19F1B23514151D8AC00D55A5441F7A7088C20235141F1E6BBACCD5A54414B16ED0126235141078A7F57C45A5441CDCCCC0C2D235141E17A144EB85A54413D0AD7E324235141F6285CAFB95A54417D9427691C23514197BD3CBAC75A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>22187 - 3511705
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000C3F528DC1C2351411F85EBA1BA5A5441666666661C235141EC51B85EBB5A5441C3F5281C13235141666666E6CA5A5441333333430B235141A4703D0AD85A5441C3F528CC0223514185EB5128E75A544152B81EF5FF225141AE47E12AEC5A544133333313042351417B14AE07F05A54413D0AD7E324235141F6285CAFB95A5441D7A3702D20235141B81E857BBA5A5441C3F528DC1C2351411F85EBA1BA5A5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000CC9BEC6404235141D0103D54F05A54418FC2F52807235141B81E85EBF25A5441A806CDE30A2351416BBBDDBBEC5A5441BAC1D8AD0E235141EE20F8E1E65A5441A5D5670D1423514199264A29DF5A544137C53D2B17235141E2CBB5C3DA5A54414D5516C118235141EEC50DB4D85A5441685A30F91A235141E86558D7D55A54416CD9A19F1B23514151D8AC00D55A5441F7A7088C20235141F1E6BBACCD5A54414B16ED0126235141078A7F57C45A5441CDCCCC0C2D235141E17A144EB85A54413D0AD7E324235141F6285CAFB95A54417D9427691C23514197BD3CBAC75A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>291021 - 256558
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000900000014AE47D1AABB5041F6285C9F19D1544148E17A54B9BB5041713D0AF718D154411F85EB41B7BB5041E17A144E01D154417B14AE27B5BB5041F6285C4FE9D0544185EB5188ACBB5041666666E6E7D05441295C8FE29FBB5041EC51B8DEE3D054415C8FC245A2BB50413D0AD7E3FED0544185EB51A8A4BB504152B81EE519D1544114AE47D1AABB5041F6285C9F19D15441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000BA6BC372A1BB5041A4B8EE8FF5D05441295C8FE29FBB5041EC51B8DEE3D05441906CC9569DBB5041CF6DE90EE3D054410041F3499FBB5041553DAE07FAD054413AAD80AA9FBB5041EF5F3079FED0544186FD62EE9FBB504129A2F29801D15441BA2A377BA0BB50410457161408D1544115FE6B11A1BB50412DB1B4FD0ED1544181DC93F1A1BB50410CAA74121AD15441C9BF60B6A4BB5041D8D66C871AD1544185EB51A8A4BB504152B81EE519D154415728B192A4BB50419EC83AF018D15441E6508E5EA4BB5041CA7BE6A116D1544139A43B35A4BB5041D3B901CE14D15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242552 - 3178706
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000300000012000000000000E0D01651418FC2F548DB185541295C8FC2DE165141C3F5289CD818554114AE4731EB165141000000A0D5185541F6158031E716514102F96000C4185541B197514EC8165141AAA67246CD1855417B14AE47C21651417B14AE97CD1855411F85EB21BF165141E17A148ECF185541D1EC4788BC1651411F33D1B0D31855412C6B293EBD1651412CABD536D41855418A226D9BBC1651418E65B92FD5185541E09DAEB5BB165141AB8E24E3D418554100000080BA165141713D0AA7D6185541D7A370CDB9165141EC51B85ED8185541E17A147EB9165141AE47E11ADB185541 [...]
+</a>
+
+<b>
+01060000000100000001030000000300000018000000D61D05C9B91651413551BB63D9185541E17A147EB9165141AE47E11ADB185541C3F5283CBF165141D7A3704DDC185541D7A3702DC6165141295C8F52DC18554148E17AF4C9165141B81E856BDC185541000000E0D01651418FC2F548DB185541ED304392CF165141C83B4BECD8185541C025DDEFCD165141B167747BD51855419DDB23F8CA165141EBE4AB2BCE1855411A0E5153CA165141A76984AECC185541B0755E5ECA165141CCA8E7A7CC185541AD97514EC8165141A6A67246CD1855417B14AE47C21651417B14AE97CD1855411F85EB21BF165141E17A148ECF185541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242552 - 3578665
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000300000012000000000000E0D01651418FC2F548DB185541295C8FC2DE165141C3F5289CD818554114AE4731EB165141000000A0D5185541F6158031E716514102F96000C4185541B197514EC8165141AAA67246CD1855417B14AE47C21651417B14AE97CD1855411F85EB21BF165141E17A148ECF185541D1EC4788BC1651411F33D1B0D31855412C6B293EBD1651412CABD536D41855418A226D9BBC1651418E65B92FD5185541E09DAEB5BB165141AB8E24E3D418554100000080BA165141713D0AA7D6185541D7A370CDB9165141EC51B85ED8185541E17A147EB9165141AE47E11ADB185541 [...]
+</a>
+
+<b>
+01060000000100000001030000000300000018000000D61D05C9B91651413551BB63D9185541E17A147EB9165141AE47E11ADB185541C3F5283CBF165141D7A3704DDC185541D7A3702DC6165141295C8F52DC18554148E17AF4C9165141B81E856BDC185541000000E0D01651418FC2F548DB185541ED304392CF165141C83B4BECD8185541C025DDEFCD165141B167747BD51855419DDB23F8CA165141EBE4AB2BCE1855411A0E5153CA165141A76984AECC185541B0755E5ECA165141CCA8E7A7CC185541AD97514EC8165141A6A67246CD1855417B14AE47C21651417B14AE97CD1855411F85EB21BF165141E17A148ECF185541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>24235 - 1755270
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000110000000000004061EB504148E17A5488805441713D0A7762EB50410AD7A32089805441B81E85CB6CEB50415C8FC2F585805441AE47E1BA73EB5041B81E850B848054415C8FC2E56FEB504114AE476146805441AE47E12A6DEB504185EB514846805441295C8F1268EB504114AE470145805441E17A14FE62EB5041D7A3707D43805441C3F5283C5EEB5041CDCCCCCC41805441A4703D1A5DEB504114AE4751438054415C8FC2355EEB5041713D0AD756805441333333E36BEB5041A4703D0A5680544114AE470170EB504114AE47D155805441713D0AD770EB50419A99990968805441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000065AECE735FEB50417230C86C6880544172843F565EEB5041142E2CD6568054418036FAD570EB5041030CAE4654805441911B7E0370EB50418062AB2E46805441C766595F6DEB50417DA3314A468054417FF0E66667EB5041473516CE44805441929382925EEB5041EA8D124342805441D61C451B5DEB5041F3D4366243805441C877472F5DEB5041209C31AB4480544165AECE735FEB50417230C86C68805441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>24235 - 3624264
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000110000000000004061EB504148E17A5488805441713D0A7762EB50410AD7A32089805441B81E85CB6CEB50415C8FC2F585805441AE47E1BA73EB5041B81E850B848054415C8FC2E56FEB504114AE476146805441AE47E12A6DEB504185EB514846805441295C8F1268EB504114AE470145805441E17A14FE62EB5041D7A3707D43805441C3F5283C5EEB5041CDCCCCCC41805441A4703D1A5DEB504114AE4751438054415C8FC2355EEB5041713D0AD756805441333333E36BEB5041A4703D0A5680544114AE470170EB504114AE47D155805441713D0AD770EB50419A99990968805441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000065AECE735FEB50417230C86C6880544172843F565EEB5041142E2CD6568054418036FAD570EB5041030CAE4654805441911B7E0370EB50418062AB2E46805441C766595F6DEB50417DA3314A468054417FF0E66667EB5041473516CE44805441929382925EEB5041EA8D124342805441D61C451B5DEB5041F3D4366243805441C877472F5DEB5041209C31AB4480544165AECE735FEB50417230C86C68805441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>407047 - 1639901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000007F00000014AE4781B8A450415C8FC255864C554152B81E95B6A45041C3F5288C854C5541AE47E14AB6A45041295C8FE2854C55413D0AD743B6A450410AD7A350864C554148E17A34B6A4504148E17AC4864C5541666666F6B5A4504148E17A44874C5541AE47E14AB5A4504185EB5168874C554152B81EA5B4A45041AE47E15A874C55417B14AED7B3A450417B14AE17874C5541F6285C4FB3A45041B81E85FB864C5541F6285CDFB2A45041A4703D2A874C5541C3F5284CB2A450419A999989874C554185EB51D8B1A450413D0AD793874C55413D0AD713B1A45041A4703D6A874C5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000BB000000869D5013B6A45041EA849EC6854C5541A4703D1AB6A4504185EB5198854C5541713D0AE7B2A45041B81E852B844C55418FC2F568A5A4504133333333804C554114AE4741A2A450417B14AED7804C5541A4703D0A9FA45041295C8F42804C55417B14AE279EA45041713D0AE7824C5541CDCCCCBC9EA450410AD7A320834C5541C3F5281C9FA4504152B81E25834C5541666666E69FA450419A999939834C5541EC51B89EA0A4504114AE4771834C55410AD7A360A1A45041B81E85BB834C5541F6285CFFA1A450411F85EB11844C55413D0AD753A2A45041F6285C2F844C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>407047 - 5291118
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000007F00000014AE4781B8A450415C8FC255864C554152B81E95B6A45041C3F5288C854C5541AE47E14AB6A45041295C8FE2854C55413D0AD743B6A450410AD7A350864C554148E17A34B6A4504148E17AC4864C5541666666F6B5A4504148E17A44874C5541AE47E14AB5A4504185EB5168874C554152B81EA5B4A45041AE47E15A874C55417B14AED7B3A450417B14AE17874C5541F6285C4FB3A45041B81E85FB864C5541F6285CDFB2A45041A4703D2A874C5541C3F5284CB2A450419A999989874C554185EB51D8B1A450413D0AD793874C55413D0AD713B1A45041A4703D6A874C5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000BB000000869D5013B6A45041EA849EC6854C5541A4703D1AB6A4504185EB5198854C5541713D0AE7B2A45041B81E852B844C55418FC2F568A5A4504133333333804C554114AE4741A2A450417B14AED7804C5541A4703D0A9FA45041295C8F42804C55417B14AE279EA45041713D0AE7824C5541CDCCCCBC9EA450410AD7A320834C5541C3F5281C9FA4504152B81E25834C5541666666E69FA450419A999939834C5541EC51B89EA0A4504114AE4771834C55410AD7A360A1A45041B81E85BB834C5541F6285CFFA1A450411F85EB11844C55413D0AD753A2A45041F6285C2F844C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>25147 - 2972160
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001C000000C3F5280CA6ED5041B81E85CBFD7D5441E17A149EAAED50415C8FC2A5097E544133333303AAED50411F85EB810B7E5441000000B0D9ED50419A9999B9217E54415C8FC27502EE5041295C8F121A7E544152B81E1503EE50419A9999991B7E5441295C8FA204EE504148E17A241B7E5441333333A306EE504152B81EF5197E5441C3F5288C08EE50411F85EB21187E54410AD7A31019EE5041A4703D7A017E544185EB51C818EE504133333343FF7D54415C8FC2A510EE5041295C8FE2FA7D5441666666D606EE504114AE47B1F57D5441295C8FE2FDED504152B81E85F17D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000310C00C100EE50414F8719201A7E54417EE574AAA3ED5041675D7C29F07D5441987AE0AAA3ED504177D89026F07D5441B2B83633A3ED5041BE669BF0EF7D5441BA530C2FA3ED504168B904F1EF7D544158EA51D6A1ED50414B764853EF7D5441713D0A07A3ED50418FC2F598F47D544185EB5198A5ED504133333393FA7D544166666686A4ED50411F85EB01FC7D54410AD7A340A5ED5041B81E85CBFD7D5441C3F5280CA6ED5041B81E85CBFD7D5441E17A149EAAED50415C8FC2A5097E544133333303AAED50411F85EB810B7E5441000000B0D9ED50419A9999B9217E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>25147 - 3206839
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001C000000C3F5280CA6ED5041B81E85CBFD7D5441E17A149EAAED50415C8FC2A5097E544133333303AAED50411F85EB810B7E5441000000B0D9ED50419A9999B9217E54415C8FC27502EE5041295C8F121A7E544152B81E1503EE50419A9999991B7E5441295C8FA204EE504148E17A241B7E5441333333A306EE504152B81EF5197E5441C3F5288C08EE50411F85EB21187E54410AD7A31019EE5041A4703D7A017E544185EB51C818EE504133333343FF7D54415C8FC2A510EE5041295C8FE2FA7D5441666666D606EE504114AE47B1F57D5441295C8FE2FDED504152B81E85F17D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000310C00C100EE50414F8719201A7E54417EE574AAA3ED5041675D7C29F07D5441987AE0AAA3ED504177D89026F07D5441B2B83633A3ED5041BE669BF0EF7D5441BA530C2FA3ED504168B904F1EF7D544158EA51D6A1ED50414B764853EF7D5441713D0A07A3ED50418FC2F598F47D544185EB5198A5ED504133333393FA7D544166666686A4ED50411F85EB01FC7D54410AD7A340A5ED5041B81E85CBFD7D5441C3F5280CA6ED5041B81E85CBFD7D5441E17A149EAAED50415C8FC2A5097E544133333303AAED50411F85EB810B7E5441000000B0D9ED50419A9999B9217E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>26023 - 1068534
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001700000085EB51288CF25041E17A14EE805A5441295C8FF27EF25041F6285C9F875A5441000000407AF2504152B81E758A5A5441EC51B8AE77F250419A9999498C5A5441E17A14EE77F250413D0AD7138E5A5441CDCCCC0C7EF25041D7A3708D915A5441EC51B8CE84F25041C3F528FC955A5441000000E08AF25041E17A147E9A5A5441AE47E1AA90F250418FC2F5589F5A5441D7A370DD95F25041A4703D4AA45A54418FC2F5F89AF25041000000D0A95A5441A4703DFAA1F25041F6285CCFB15A5441E17A145EA8F2504166666686B95A5441713D0AA7B4F250417B14AE07B05A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000EC51B8AE77F250419A9999498C5A5441E17A14EE77F250413D0AD7138E5A5441239D22A77CF2504155AC5AC2905A544139113EFE7FF250416D38BBD3925A544125E2C47D83F250418121241F955A5441C510F2AF86F2504125AAA861975A544160D9477489F250414A2AE06F995A54411DA5F91A8DF250418FF9A45C9C5A5441244780A890F25041BD52F7569F5A544171AB7AB893F25041AF5A3640A25A54419E76EC7896F250411E725BF2A45A5441E68E3E7F9CF2504107AEDE78AB5A5441A4703DFAA1F25041F6285CCFB15A5441452A9A26A6F25041FE36339AB65A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>26023 - 3411203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001700000085EB51288CF25041E17A14EE805A5441295C8FF27EF25041F6285C9F875A5441000000407AF2504152B81E758A5A5441EC51B8AE77F250419A9999498C5A5441E17A14EE77F250413D0AD7138E5A5441CDCCCC0C7EF25041D7A3708D915A5441EC51B8CE84F25041C3F528FC955A5441000000E08AF25041E17A147E9A5A5441AE47E1AA90F250418FC2F5589F5A5441D7A370DD95F25041A4703D4AA45A54418FC2F5F89AF25041000000D0A95A5441A4703DFAA1F25041F6285CCFB15A5441E17A145EA8F2504166666686B95A5441713D0AA7B4F250417B14AE07B05A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000EC51B8AE77F250419A9999498C5A5441E17A14EE77F250413D0AD7138E5A5441239D22A77CF2504155AC5AC2905A544139113EFE7FF250416D38BBD3925A544125E2C47D83F250418121241F955A5441C510F2AF86F2504125AAA861975A544160D9477489F250414A2AE06F995A54411DA5F91A8DF250418FF9A45C9C5A5441244780A890F25041BD52F7569F5A544171AB7AB893F25041AF5A3640A25A54419E76EC7896F250411E725BF2A45A5441E68E3E7F9CF2504107AEDE78AB5A5441A4703DFAA1F25041F6285CCFB15A5441452A9A26A6F25041FE36339AB65A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>26023 - 29689
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001700000085EB51288CF25041E17A14EE805A5441295C8FF27EF25041F6285C9F875A5441000000407AF2504152B81E758A5A5441EC51B8AE77F250419A9999498C5A5441E17A14EE77F250413D0AD7138E5A5441CDCCCC0C7EF25041D7A3708D915A5441EC51B8CE84F25041C3F528FC955A5441000000E08AF25041E17A147E9A5A5441AE47E1AA90F250418FC2F5589F5A5441D7A370DD95F25041A4703D4AA45A54418FC2F5F89AF25041000000D0A95A5441A4703DFAA1F25041F6285CCFB15A5441E17A145EA8F2504166666686B95A5441713D0AA7B4F250417B14AE07B05A5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000004A9E57D87EF25041B6D5C81D925A544139113EFE7FF250416D38BBD3925A5441F46E7A3980F25041231A96FA925A544127E2C47D83F250417D21241F955A5441C910F2AF86F2504123AAA861975A54415B9A2F0988F2504174A42262985A544160D9477489F250414A2AE06F995A54411DA5F91A8DF250418FF9A45C9C5A5441244780A890F25041BD52F7569F5A544171AB7AB893F25041AF5A3640A25A54419E76EC7896F250411E725BF2A45A54419F76EC7896F250411F725BF2A45A5441A176EC7896F2504121725BF2A45A544152A962F296F25041E713EA75A55A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>26023 - 72813
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001700000085EB51288CF25041E17A14EE805A5441295C8FF27EF25041F6285C9F875A5441000000407AF2504152B81E758A5A5441EC51B8AE77F250419A9999498C5A5441E17A14EE77F250413D0AD7138E5A5441CDCCCC0C7EF25041D7A3708D915A5441EC51B8CE84F25041C3F528FC955A5441000000E08AF25041E17A147E9A5A5441AE47E1AA90F250418FC2F5589F5A5441D7A370DD95F25041A4703D4AA45A54418FC2F5F89AF25041000000D0A95A5441A4703DFAA1F25041F6285CCFB15A5441E17A145EA8F2504166666686B95A5441713D0AA7B4F250417B14AE07B05A5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000004A9E57D87EF25041B6D5C81D925A544139113EFE7FF250416D38BBD3925A5441F46E7A3980F25041231A96FA925A544127E2C47D83F250417D21241F955A5441C910F2AF86F2504123AAA861975A54415B9A2F0988F2504174A42262985A544160D9477489F250414A2AE06F995A54411DA5F91A8DF250418FF9A45C9C5A5441244780A890F25041BD52F7569F5A544171AB7AB893F25041AF5A3640A25A54419E76EC7896F250411E725BF2A45A54419F76EC7896F250411F725BF2A45A5441A176EC7896F2504121725BF2A45A544152A962F296F25041E713EA75A55A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>27114 - 1435197
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000EC51B81E52E750411F85EB91F10755416666666653E75041C3F5287CE5075541295C8F7254E75041713D0AD7D9075541A4703D9A51E750415C8FC275D90755419A99996950E750413D0AD773D90755419A9999394AE750413D0AD793F3075541EC51B83E51E75041A4703D9AF2075541EC51B81E52E750411F85EB91F1075541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000B8F2880652E75041B53A9267F1075541DD46706D52E7504186B5B4AAEE075541550F47DE52E75041CDDA5881EA0755411DFED77553E75041701679D0E4075541295C8F7254E75041713D0AD7D90755419F48BAB251E75041EBD279A4D9075541716EF87450E750411F705593D90755419A9999394AE750413D0AD793F307554179F7B20251E750418712EF88F2075541B8F2880652E75041B53A9267F1075541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>27114 - 3427108
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000EC51B81E52E750411F85EB91F10755416666666653E75041C3F5287CE5075541295C8F7254E75041713D0AD7D9075541A4703D9A51E750415C8FC275D90755419A99996950E750413D0AD773D90755419A9999394AE750413D0AD793F3075541EC51B83E51E75041A4703D9AF2075541EC51B81E52E750411F85EB91F1075541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000B8F2880652E75041B53A9267F1075541DD46706D52E7504186B5B4AAEE075541550F47DE52E75041CDDA5881EA0755411DFED77553E75041701679D0E4075541295C8F7254E75041713D0AD7D90755419F48BAB251E75041EBD279A4D9075541716EF87450E750411F705593D90755419A9999394AE750413D0AD793F307554179F7B20251E750418712EF88F2075541B8F2880652E75041B53A9267F1075541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975080 - 3064194
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000FCC98F05F17C5141D36C449BC482544130A930B4E77C5141B8ADAC75C58254417FE30BD4E37C5141712780B4C58254415902DAB4E27C5141A0300FAECE825441383A91B5E17C51415564360AD482544112595F96E07C5141480F0645DB825441C27D1238DE7C514194C7F41DE582544171FDE422DD7C5141FE491716EB825441E66E96DBDF7C514177043744EC825441E3852694E97C514121469BC3EF825441B8B40E90EE7C5141CFE4D18FF0825441791ED5C4F57C514134A6020CEF82544120B851EBF57C5141A050997DE58254418C2774EFF57C5141D5D3AF86D8825441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000000000C0F87C5141A4703D7AC88254417B14AED7F57C514152B81E25C78254410AD7A3F0F57C5141666666C6D4825441B81E85EBF57C5141713D0AF7E48254417B14AEE7F57C514148E17A04EF8254419A9999C9F57C5141C3F5288CF3825441295C8F42FA7C51411F85EBD1F28254413D0AD723F97C514148E17A54DE825441A4703DAAF87C5141CDCCCCECCD825441000000C0F87C5141A4703D7AC8825441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975080 - 3356524
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000FCC98F05F17C5141D36C449BC482544130A930B4E77C5141B8ADAC75C58254417FE30BD4E37C5141712780B4C58254415902DAB4E27C5141A0300FAECE825441383A91B5E17C51415564360AD482544112595F96E07C5141480F0645DB825441C27D1238DE7C514194C7F41DE582544171FDE422DD7C5141FE491716EB825441E66E96DBDF7C514177043744EC825441E3852694E97C514121469BC3EF825441B8B40E90EE7C5141CFE4D18FF0825441791ED5C4F57C514134A6020CEF82544120B851EBF57C5141A050997DE58254418C2774EFF57C5141D5D3AF86D8825441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000000000C0F87C5141A4703D7AC88254417B14AED7F57C514152B81E25C78254410AD7A3F0F57C5141666666C6D4825441B81E85EBF57C5141713D0AF7E48254417B14AEE7F57C514148E17A04EF8254419A9999C9F57C5141C3F5288CF3825441295C8F42FA7C51411F85EBD1F28254413D0AD723F97C514148E17A54DE825441A4703DAAF87C5141CDCCCCECCD825441000000C0F87C5141A4703D7AC8825441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>28199 - 244638
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C000000295C8FE209005141C3F528AC3BEC54419A9999E90A005141E17A14AE3DEC544185EB51580E005141CDCCCC8C43EC54418FC2F56812005141EC51B85E43EC5441E17A144E14005141AE47E1BA43EC5441EC51B88E170051415C8FC24544EC54419A9999891A005141B81E855B45EC5441B81E856B1E0051415C8FC2B546EC5441713D0A37220051410AD7A34047EC54417B14AE17240051410AD7A34047EC5441F6285CCF2400514114AE47D145EC54413333331326005141C3F528FC44EC54418FC2F518260051411F85EBF13EEC5441E17A148E25005141666666263BEC5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000008FC2F5A823005141EF1E414033EC54416BD231FA0D005141A47B2B7330EC54416595EBDC0C0051419869BDCB34EC5441007DCF6A0C005141F06F6B9639EC54410CF75BA50E00514134334C273DEC5441A31B86500F00514146EA1E7F40EC5441407DF61811005141E34B8F4742EC5441F43A9EE91D0051411C0F70D845EC5441A118CCC7240051417D391ED145EC54418EC9381326005141C3124DF644EC544143EACF1826005141E0C69A193FEC544156C54CA725005141F9AED2D63BEC5441E17A148E25005141666666263BEC5441EA7390B0250051419C83629339EC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>28199 - 351459
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C000000295C8FE209005141C3F528AC3BEC54419A9999E90A005141E17A14AE3DEC544185EB51580E005141CDCCCC8C43EC54418FC2F56812005141EC51B85E43EC5441E17A144E14005141AE47E1BA43EC5441EC51B88E170051415C8FC24544EC54419A9999891A005141B81E855B45EC5441B81E856B1E0051415C8FC2B546EC5441713D0A37220051410AD7A34047EC54417B14AE17240051410AD7A34047EC5441F6285CCF2400514114AE47D145EC54413333331326005141C3F528FC44EC54418FC2F518260051411F85EBF13EEC5441E17A148E25005141666666263BEC5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000008FC2F5A823005141EF1E414033EC54416BD231FA0D005141A47B2B7330EC54416595EBDC0C0051419869BDCB34EC5441007DCF6A0C005141F06F6B9639EC54410CF75BA50E00514134334C273DEC5441A31B86500F00514146EA1E7F40EC5441407DF61811005141E34B8F4742EC5441F43A9EE91D0051411C0F70D845EC5441A118CCC7240051417D391ED145EC54418EC9381326005141C3124DF644EC544143EACF1826005141E0C69A193FEC544156C54CA725005141F9AED2D63BEC5441E17A148E25005141666666263BEC5441EA7390B0250051419C83629339EC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>30107 - 3562788
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000C000000B81E857BC1495141D7A3705DE5875441D7A3708DD2495141EC51B84EDF8754413D0AD743CC4951418FC2F5A8BB875441D7A3707DC14951410AD7A3D0BF875441713D0A67B74951419A9999F9C3875441E17A14DEB3495141C3F528ECC7875441666666F6AD495141CDCCCC2CCB875441713D0A37AF4951410AD7A300CE875441CDCCCC2CB149514185EB51F8D48754410AD7A3A0B2495141CDCCCC0CDE8754413D0AD793B4495141AE47E1BAE4875441B81E857BC1495141D7A3705DE5875441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000009173E07AD249514156B14E55DF87544139919D7ED2495141A9B3D46ADF875441E5076EC9EF495141477FB315D58754410BE262C5EA4951414BAB0EFFB887544174994057EA495141D4E00213B9875441E18D2E58EA495141C313C918B9875441C9B39A3EEA495141E63FE421B98754416595489DCD495141993BC8D3C2875441CFDDF079CD495141B6401A87C2875441D7A3708DD2495141EC51B84EDF8754419173E07AD249514156B14E55DF875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>32985 - 3456807
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000008000000A4703D7A64F450410AD7A3D0EF8C54411F85EB0172F45041A4703D2AD78C5441C3F5284C66F4504148E17AD4D28C54417B14AEB759F45041333333C3E98C5441F6285C0F4CF450417B14AEA7028D5441666666E64EF45041A4703DAA058D54417B14AEA755F450410AD7A3D00A8D5441A4703D7A64F450410AD7A3D0EF8C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000003C5C991048F4504167186A6CFE8C544105E6691E4CF45041FE283E8C028D5441F926EB4155F45041A1EE33E4F18C544116F4721760F4504198109824DE8C54419F6B985066F45041B7EE27EBD28C5441666666C658F45041333333D3CD8C5441114789334DF450411BE0DB74C98C54419E588E344CF450416921C076CA8C54418C56314248F45041825742FDCF8C5441633C0F5538F4504128200F01E98C5441115096D435F45041A50894C9EC8C5441CDCCCC3C36F450419A999989ED8C544152B81EC53AF450418FC2F538EF8C544148E17A743CF4504166666656F08C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>33482 - 160328
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000333333739FF2504152B81EC5588E544152B81EB59CF250418FC2F5E8578E5441713D0A579DF2504152B81E85518E54411F85EB7192F250419A9999394F8E5441C3F528DC8EF250419A9999695F8E5441F6285C9F96F250418FC2F5F8708E5441333333739FF2504152B81EC5588E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000001B08949C91F250412B31E9FC528E54411C212ADC8EF25041B23F98695F8E5441192B5C9F96F25041EB99F5F8708E5441FB91D3D699F2504196A93F27688E54417DB732739FF250417F0B20C5588E54416EC51DB59CF2504158EDF5E8578E5441B71411FE9CF25041E80BFF07558E54415B1F0A579DF2504147E81F85518E5441646AEB7192F250414D129A394F8E54411B08949C91F250412B31E9FC528E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>33482 - 271760
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000333333739FF2504152B81EC5588E544152B81EB59CF250418FC2F5E8578E5441713D0A579DF2504152B81E85518E54411F85EB7192F250419A9999394F8E5441C3F528DC8EF250419A9999695F8E5441F6285C9F96F250418FC2F5F8708E5441333333739FF2504152B81EC5588E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000001B08949C91F250412B31E9FC528E54411C212ADC8EF25041B23F98695F8E5441192B5C9F96F25041EB99F5F8708E5441FB91D3D699F2504196A93F27688E54417DB732739FF250417F0B20C5588E54416EC51DB59CF2504158EDF5E8578E5441B71411FE9CF25041E80BFF07558E54415B1F0A579DF2504147E81F85518E5441646AEB7192F250414D129A394F8E54411B08949C91F250412B31E9FC528E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>196413 - 3530818
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000F6285C6FA853514185EB51E88CCC544152B81EB59D5351413D0AD7B391CC5441B81E85ABA65351411F85EB11A9CC544100000040AF535141B81E857BBFCC5441713D0A07B95351415C8FC205D9CC544100000050BB53514148E17AA4D4CC54410AD7A3C0BF5351415C8FC2C5CBCC5441666666B6C453514114AE47F1C2CC54410AD7A3A0C6535141713D0AA7BFCC54410AD7A3E0BF53514148E17A04AECC5441AE47E1BAB8535141713D0A579BCC544114AE4791B15351413D0AD7A388CC5441F6285C6FA853514185EB51E88CCC5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000E2485557B65351417F2C6301D2CC54411969BDD0B75351414B0E38DBD5CC544131CD3691C5535141A824EAE1BCCC54413BEE5846C4535141A2A97E81B9CC54410AD7A3E0BF53514148E17A04AECC5441AE47E1BAB8535141713D0A579BCC544114AE4791B15351413D0AD7A388CC5441F6285C6FA853514185EB51E88CCC544152B81EB59D5351413D0AD7B391CC5441B81E85ABA65351411F85EB11A9CC544100000040AF535141B81E857BBFCC5441E2485557B65351417F2C6301D2CC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35047 - 20497
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000D7A3705D5C3451419A999949212A554148E17A546B34514114AE4701232A5541295C8F526C3451415C8FC225232A55413D0AD7A375345141A4703D1A252A5541EC51B8AE8C345141D7A370DD2A2A5541CDCCCC3C9334514152B81E852C2A55410000002097345141AE47E12A2D2A554185EB51389C34514152B81EA52D2A55418FC2F5F89A345141E17A14DE242A5541B81E853B9B345141E17A14CE1D2A5541333333136E345141C3F5285C1C2A5541333333136D3451413D0AD7531C2A5541000000106B345141295C8F721C2A554152B81EE55F34514114AE47511C2A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000038000000B49B507D68345141409DA6B7232A5541578B2B94683451416B7DF9B9232A554134DF64826A345141F19033EC232A554161B0FEF26A34514187E2A2F7232A55414BAA5F356B345141218E60FE232A5541726A33466B345141EAF9FB80232A5541751E34506B345141CB906026232A554198E5C3546B345141DF930EFD222A5541A6CE9F266B3451419C6904FC222A55417F602DA16A34514176AAB3EC222A5541D93A67A4683451416C9A4FB2222A55413D24138366345141E18CB973222A554127691CFB64345141CC6FBD46222A554174ABBD2A6334514174FC7111222A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35047 - 66550
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000D7A3705D5C3451419A999949212A554148E17A546B34514114AE4701232A5541295C8F526C3451415C8FC225232A55413D0AD7A375345141A4703D1A252A5541EC51B8AE8C345141D7A370DD2A2A5541CDCCCC3C9334514152B81E852C2A55410000002097345141AE47E12A2D2A554185EB51389C34514152B81EA52D2A55418FC2F5F89A345141E17A14DE242A5541B81E853B9B345141E17A14CE1D2A5541333333136E345141C3F5285C1C2A5541333333136D3451413D0AD7531C2A5541000000106B345141295C8F721C2A554152B81EE55F34514114AE47511C2A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000038000000B49B507D68345141409DA6B7232A5541578B2B94683451416B7DF9B9232A554134DF64826A345141F19033EC232A554161B0FEF26A34514187E2A2F7232A55414BAA5F356B345141218E60FE232A5541726A33466B345141EAF9FB80232A5541751E34506B345141CB906026232A554198E5C3546B345141DF930EFD222A5541A6CE9F266B3451419C6904FC222A55417F602DA16A34514176AAB3EC222A5541D93A67A4683451416C9A4FB2222A55413D24138366345141E18CB973222A554127691CFB64345141CC6FBD46222A554174ABBD2A6334514174FC7111222A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35114 - 3103112
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000022000000000000E0B933514185EB5148B62D5541B81E856BBC335141B81E856BB72D55419A999969BF3351411F85EB81B82D5541333333F3C2335141666666B6B92D55411F85EBE1C3335141713D0A87BA2D55417B14AE17C9335141000000E0C12D55418FC2F548C9335141CDCCCCECC22D554152B81E35C933514114AE4721C42D55411F85EBD1C833514152B81EA5C52D55411F85EB81C8335141B81E85BBC62D55413D0AD7B3C8335141EC51B86EC72D554133333353C9335141000000F0C72D554185EB5138CA335141B81E852BC82D5541E17A14EECB335141B81E857BC82D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001300000014E38A94DA335141318CE1A2CC2D5541F3BD4434DB335141A5B2E3A6CC2D554163657C53DB335141DA0FC03FC42D554150B47946C8335141751EF7B8C02D55417B14AE17C9335141000000E0C12D55418FC2F548C9335141CDCCCCECC22D554152B81E35C933514114AE4721C42D55411F85EBD1C833514152B81EA5C52D55411F85EB81C8335141B81E85BBC62D55413D0AD7B3C8335141EC51B86EC72D554133333353C9335141000000F0C72D554185EB5138CA335141B81E852BC82D5541E17A14EECB335141B81E857BC82D5541295C8F92CE3351418FC2F5E8C82D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35114 - 3472545
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000022000000000000E0B933514185EB5148B62D5541B81E856BBC335141B81E856BB72D55419A999969BF3351411F85EB81B82D5541333333F3C2335141666666B6B92D55411F85EBE1C3335141713D0A87BA2D55417B14AE17C9335141000000E0C12D55418FC2F548C9335141CDCCCCECC22D554152B81E35C933514114AE4721C42D55411F85EBD1C833514152B81EA5C52D55411F85EB81C8335141B81E85BBC62D55413D0AD7B3C8335141EC51B86EC72D554133333353C9335141000000F0C72D554185EB5138CA335141B81E852BC82D5541E17A14EECB335141B81E857BC82D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001300000014E38A94DA335141318CE1A2CC2D5541F3BD4434DB335141A5B2E3A6CC2D554163657C53DB335141DA0FC03FC42D554150B47946C8335141751EF7B8C02D55417B14AE17C9335141000000E0C12D55418FC2F548C9335141CDCCCCECC22D554152B81E35C933514114AE4721C42D55411F85EBD1C833514152B81EA5C52D55411F85EB81C8335141B81E85BBC62D55413D0AD7B3C8335141EC51B86EC72D554133333353C9335141000000F0C72D554185EB5138CA335141B81E852BC82D5541E17A14EECB335141B81E857BC82D5541295C8F92CE3351418FC2F5E8C82D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35309 - 21138
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002D00000048E17AC43C32514148E17AB4782C5541E17A145E42325141D7A3703D7B2C5541295C8FF2443251418FC2F5D87A2C5541A4703D7A49325141666666D67B2C55413D0AD773533251418FC2F528822C55415C8FC255613251410AD7A3C0872C5541000000A06A3251410AD7A3808D2C55413D0AD7336C3251418FC2F578902C55415C8FC2556E325141C3F528BC8F2C5541000000706E3251415C8FC235982C5541D7A370DD70325141EC51B84E9C2C55413D0AD7237732514166666686A52C5541C3F5289C6C325141F6285CDFB62C5541F6285CCF6E325141A4703D8AB62C5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000106B8EEE6832514161B65C748C2C5541778EF64C67325141CF0AFC58862C5541E8DCA88B61325141FEAB7FDF872C55415D2A447862325141068B7274882C55416A3C20E4623251411CE634B7882C5541557D4D9563325141808CDE24892C5541F02C873964325141610B848A892C554120FA216564325141AD3481A5892C5541971F8D1B65325141E76969168A2C5541D656643165325141BF11EE238A2C5541C6266B4E66325141398558D48A2C554115AEA39B66325141812724048B2C5541D0CE633867325141344329658B2C5541B7CC6354673251411FDB7D768B2C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35309 - 66999
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002D00000048E17AC43C32514148E17AB4782C5541E17A145E42325141D7A3703D7B2C5541295C8FF2443251418FC2F5D87A2C5541A4703D7A49325141666666D67B2C55413D0AD773533251418FC2F528822C55415C8FC255613251410AD7A3C0872C5541000000A06A3251410AD7A3808D2C55413D0AD7336C3251418FC2F578902C55415C8FC2556E325141C3F528BC8F2C5541000000706E3251415C8FC235982C5541D7A370DD70325141EC51B84E9C2C55413D0AD7237732514166666686A52C5541C3F5289C6C325141F6285CDFB62C5541F6285CCF6E325141A4703D8AB62C5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000106B8EEE6832514161B65C748C2C5541778EF64C67325141CF0AFC58862C5541E8DCA88B61325141FEAB7FDF872C55415D2A447862325141068B7274882C55416A3C20E4623251411CE634B7882C5541557D4D9563325141808CDE24892C5541F02C873964325141610B848A892C554120FA216564325141AD3481A5892C5541971F8D1B65325141E76969168A2C5541D656643165325141BF11EE238A2C5541C6266B4E66325141398558D48A2C554115AEA39B66325141812724048B2C5541D0CE633867325141344329658B2C5541B7CC6354673251411FDB7D768B2C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>196543 - 195292
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000C3F528DC765251413D0AD7E34ACE5441A4703D2A75525141295C8F425CCE5441D7A3707D73525141E17A146E6DCE54418FC2F5487E525141D7A3709D73CE54418FC2F5588352514152B81E8576CE54416666662690525141E17A14DE7DCE5441CDCCCC9C9552514185EB518880CE544148E17AF49752514114AE478168CE54417B14AEE799525141EC51B87E54CE5441AE47E18A98525141E17A14AE53CE5441C3F528FC965251413333336353CE5441F6285C2F9352514148E17AB452CE54418FC2F5F88F525141EC51B81E52CE54410AD7A3708D525141B81E85BB51CE5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000DEA4B7EB97525141400229DB68CE5441CDCCCC9C9552514185EB518880CE5441295C8FC2985251411F85EB1182CE544152B81E45A05251417B14AE4785CE5441666666B6A25251410AD7A3506CCE544139043771A45251417A2F6CA45ACE544119B9D9DBA452514176118D0C56CE5441C52A52AE9F525141FB7E266654CE54417B34B9E19952514128E2D7BB54CE544136B137989852514100B314F161CE54412A5F060098525141203E72A768CE5441DEA4B7EB97525141400229DB68CE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>196543 - 353915
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000C3F528DC765251413D0AD7E34ACE5441A4703D2A75525141295C8F425CCE5441D7A3707D73525141E17A146E6DCE54418FC2F5487E525141D7A3709D73CE54418FC2F5588352514152B81E8576CE54416666662690525141E17A14DE7DCE5441CDCCCC9C9552514185EB518880CE544148E17AF49752514114AE478168CE54417B14AEE799525141EC51B87E54CE5441AE47E18A98525141E17A14AE53CE5441C3F528FC965251413333336353CE5441F6285C2F9352514148E17AB452CE54418FC2F5F88F525141EC51B81E52CE54410AD7A3708D525141B81E85BB51CE5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000DEA4B7EB97525141400229DB68CE5441CDCCCC9C9552514185EB518880CE5441295C8FC2985251411F85EB1182CE544152B81E45A05251417B14AE4785CE5441666666B6A25251410AD7A3506CCE544139043771A45251417A2F6CA45ACE544119B9D9DBA452514176118D0C56CE5441C52A52AE9F525141FB7E266654CE54417B34B9E19952514128E2D7BB54CE544136B137989852514100B314F161CE54412A5F060098525141203E72A768CE5441DEA4B7EB97525141400229DB68CE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>196861 - 58740
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000008FC2F5F8914351417B14AE77B3C654413D0AD72390435141295C8F12B3C65441F6285CCF8C435141B81E850BB6C6544185EB516887435141C3F5280CBBC654413333335387435141295C8F82BDC65441A4703DAA8E435141C3F5286CC0C65441713D0A0794435141E17A143EC1C65441D7A370CD9E4351410AD7A320BEC6544152B81E85AB435141A4703DFABDC65441B81E854BAE435141713D0A67BCC65441AE47E17AAD4351418FC2F568B9C6544148E17A649A4351419A999949B5C654418FC2F5F8914351417B14AE77B3C65441
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000D7A370CD9E4351410AD7A320BEC65441ACEE16BFA5435141B74BAC0BBEC6544119D37431A643514140F8520ABEC654415247F760A64351413184C309BEC654417D9DF6B4AA43514104F6B1FCBDC65441205BCAACAB4351412F6EB9E3BDC654415CC8EB7EAC435141AC06766CBDC654418454B593AC43514135B0A960BDC654419F333C19AE435141B07D9483BCC654416DF0C82BAE435141D30A84F2BBC65441D12118AFAD43514184E3AD28BAC65441C1C7E697AD435141843E85D3B9C65441BBE3D24BAD435141FBFDCB5EB9C65441500BB7D5AB435141D047FF0DB9C65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>220784 - 5232784
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002D0000005C8FC295F0365141A4703DEAD4B45441AE47E18AEE365141295C8FE2D5B4544114AE47A1EE365141EC51B80ED6B45441F6285C7FEB3651415C8FC2B5D8B454411F85EB81E8365141A4703DBADBB454415C8FC255E8365141295C8F62DBB45441295C8F92E0365141D7A3707DE4B454410AD7A380DD365141EC51B80EE9B454415C8FC235DB365141295C8F62ECB4544114AE4701D936514114AE47B1F0B454411F85EBB1D63651417B14AEB7F6B454410AD7A320D5365141CDCCCC9CFAB45441713D0A57CF3651419A9999B907B55441E17A147ECC365141CDCCCCCC0CB55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E00000076C8C304113751416C4034471AB55441161F5F533237514126D93E5B14B55441553DAC65323751410F9B0A5814B55441666666E6423751418FC2F56811B55441B0A45A7E423751410C13AFC80EB554419DDEC62A423751418DB3A9AC0CB55441B82B57F141375141E5198C390BB55441EF52487E4137514167893DAF08B554413A775A1E403751414D5872F200B554412C2A41963E3751414CF28F53F8B4544113C74BA93C375141912FBC57EEB4544105ABF46F3C37514106E0C730EDB45441DDCB092F3C3751417F199E5CECB45441B7C98FF53937514175D78442E5B45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>197082 - 1308793
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000003000000200000009A9999E9644451418FC2F57893C254417B14AE476B4451413D0AD74388C254415C8FC2F56B4451410AD7A37084C2544114AE47D16B44514148E17A247FC254413D0AD7936944514152B81E357AC25441F6285C1F65445141F6285CEF71C25441333333C36B445141D7A3708D6DC254417B14AE576A44514148E17AE46CC254417B14AE7768445141A4703D9A6BC254417B14AE9766445141666666F669C2544100000040644451416666661668C25441C3F5289C6144514185EB510866C254415C8FC2D55A44514114AE47816AC254418FC2F59855445141B81E850B6FC25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D000000C3F5286C634451419A99998999C254419A9999E9644451418FC2F57893C254417B14AE476B4451413D0AD74388C25441389A53946B445141F6F9B39486C254410C0BE6F06B4451414C3FFC8B84C25441A536037268445141EFA6194C84C25441120326D463445141B1A3ADC483C254418B9C314A624451418230ECF583C254415825CC91604451417D80805185C2544115F4260F5E4451418FDB875185C25441A663830A5C44514163D0366283C254412F9FD71F5B445141BD96FDA681C2544116AF10EC59445141B8666F6981C254416605E9D058445141F1394DB381C25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>197082 - 3591090
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000003000000200000009A9999E9644451418FC2F57893C254417B14AE476B4451413D0AD74388C254415C8FC2F56B4451410AD7A37084C2544114AE47D16B44514148E17A247FC254413D0AD7936944514152B81E357AC25441F6285C1F65445141F6285CEF71C25441333333C36B445141D7A3708D6DC254417B14AE576A44514148E17AE46CC254417B14AE7768445141A4703D9A6BC254417B14AE9766445141666666F669C2544100000040644451416666661668C25441C3F5289C6144514185EB510866C254415C8FC2D55A44514114AE47816AC254418FC2F59855445141B81E850B6FC25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D000000C3F5286C634451419A99998999C254419A9999E9644451418FC2F57893C254417B14AE476B4451413D0AD74388C25441389A53946B445141F6F9B39486C254410C0BE6F06B4451414C3FFC8B84C25441A536037268445141EFA6194C84C25441120326D463445141B1A3ADC483C254418B9C314A624451418230ECF583C254415825CC91604451417D80805185C2544115F4260F5E4451418FDB875185C25441A663830A5C44514163D0366283C254412F9FD71F5B445141BD96FDA681C2544116AF10EC59445141B8666F6981C254416605E9D058445141F1394DB381C25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>887075 - 2130791
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000031000000AE47E18A2CAB5041A4703D8A521D54411F85EB912BAB5041EC51B83E511D5441C3F5283C2AAB5041295C8FC24F1D5441B81E85CB27AB5041713D0A874D1D544148E17AC425AB50411F85EBF14B1D5441B81E85AB23AB5041F6285C8F4A1D54417B14AE7721AB50411F85EB81491D544114AE47111FAB5041CDCCCCAC481D5441000000501CAB5041EC51B80E481D5441EC51B85E1AAB5041EC51B8CE471D5441713D0A9718AB5041AE47E12A4F1D5441CDCCCCAC15AB5041AE47E15A561D544114AE47C112AB50410AD7A3905D1D54417B14AEC70FAB50419A9999C9641D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000036000000CDCCCC4CF8AA50411F85EBB1851D5441F6285CFFF9AA5041C3F5286C861D5441713D0AC7FBAA5041295C8FA2871D5441713D0AC7FDAA5041000000A0891D54410AD7A330FFAA50419A999969891D5441B81E855B00AB5041713D0AD78D1D5441F0E9FB1E05AB50411971DFD28C1D54418D6351DC09AB504167C21E4A8C1D54411831FABF0DAB5041D154EFDD8B1D5441F4EF264110AB504121DF10108B1D5441139B65B312AB504128FBA805891D54410C3F328A14AB504101C37123851D5441BFC30A4216AB5041738021307F1D54418738A0D018AB5041A581A752761D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>887075 - 3557024
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000031000000AE47E18A2CAB5041A4703D8A521D54411F85EB912BAB5041EC51B83E511D5441C3F5283C2AAB5041295C8FC24F1D5441B81E85CB27AB5041713D0A874D1D544148E17AC425AB50411F85EBF14B1D5441B81E85AB23AB5041F6285C8F4A1D54417B14AE7721AB50411F85EB81491D544114AE47111FAB5041CDCCCCAC481D5441000000501CAB5041EC51B80E481D5441EC51B85E1AAB5041EC51B8CE471D5441713D0A9718AB5041AE47E12A4F1D5441CDCCCCAC15AB5041AE47E15A561D544114AE47C112AB50410AD7A3905D1D54417B14AEC70FAB50419A9999C9641D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000036000000CDCCCC4CF8AA50411F85EBB1851D5441F6285CFFF9AA5041C3F5286C861D5441713D0AC7FBAA5041295C8FA2871D5441713D0AC7FDAA5041000000A0891D54410AD7A330FFAA50419A999969891D5441B81E855B00AB5041713D0AD78D1D5441F0E9FB1E05AB50411971DFD28C1D54418D6351DC09AB504167C21E4A8C1D54411831FABF0DAB5041D154EFDD8B1D5441F4EF264110AB504121DF10108B1D5441139B65B312AB504128FBA805891D54410C3F328A14AB504101C37123851D5441BFC30A4216AB5041738021307F1D54418738A0D018AB5041A581A752761D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>40820 - 56922
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000024000000F6285C5F9AD6504114AE47D1132B55418FC2F558A1D65041333333C30C2B5541713D0AF7AAD650419A999909032B5541F6285C3F99D650419A999939E12A5541000000C098D650415C8FC245E02A55417B14AE9797D65041CDCCCC4CE12A55418FC2F50895D65041666666F6E12A55415C8FC2E591D6504100000010E22A55417B14AE778BD6504185EB5128E12A5541CDCCCC8C89D65041295C8FD2E12A5541B81E857B86D650415C8FC2E5E52A55417B14AEB783D650415C8FC295E82A554148E17AD482D65041B81E857BEB2A55410000001083D65041666666F6EE2A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007600000056F1BF1D98D6504118A9C9D5E02A5541ACB0A19997D65041364D114BE12A55417B14AE9797D65041CDCCCC4CE12A55418FC2F50895D65041666666F6E12A5541B3A9C31694D65041FD8F1EFEE12A55416783EDD592D650414B625808E22A5541406387E591D6504108229211E22A5541BBEBC7D68FD65041D45CD4C5E12A55412570DCE98DD650417DEA7380E12A5541A43AF4DE8DD650411DECEA7EE12A5541BE9B68268DD650414B8CF164E12A55412D2E09E58CD650415818BE5BE12A55415CDF3D918CD6504109E6F24FE12A5541202EF1588CD65041D15C0648E12A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>40820 - 133005
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000024000000F6285C5F9AD6504114AE47D1132B55418FC2F558A1D65041333333C30C2B5541713D0AF7AAD650419A999909032B5541F6285C3F99D650419A999939E12A5541000000C098D650415C8FC245E02A55417B14AE9797D65041CDCCCC4CE12A55418FC2F50895D65041666666F6E12A55415C8FC2E591D6504100000010E22A55417B14AE778BD6504185EB5128E12A5541CDCCCC8C89D65041295C8FD2E12A5541B81E857B86D650415C8FC2E5E52A55417B14AEB783D650415C8FC295E82A554148E17AD482D65041B81E857BEB2A55410000001083D65041666666F6EE2A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007600000052F1BF1D98D6504116A9C9D5E02A5541AAB0A19997D650413A4D114BE12A55417B14AE9797D65041CDCCCC4CE12A55418FC2F50895D65041666666F6E12A5541AEA9C31694D65041F98F1EFEE12A55416683EDD592D650414C625808E22A5541416387E591D650410C229211E22A5541BCEBC7D68FD65041D95CD4C5E12A55412370DCE98DD650417EEA7380E12A5541A53AF4DE8DD650411DECEA7EE12A5541C09B68268DD650414A8CF164E12A5541322E09E58CD650415418BE5BE12A55415FDF3D918CD6504106E6F24FE12A5541202EF1588CD65041D15C0648E12A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>40820 - 331914
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000024000000F6285C5F9AD6504114AE47D1132B55418FC2F558A1D65041333333C30C2B5541713D0AF7AAD650419A999909032B5541F6285C3F99D650419A999939E12A5541000000C098D650415C8FC245E02A55417B14AE9797D65041CDCCCC4CE12A55418FC2F50895D65041666666F6E12A55415C8FC2E591D6504100000010E22A55417B14AE778BD6504185EB5128E12A5541CDCCCC8C89D65041295C8FD2E12A5541B81E857B86D650415C8FC2E5E52A55417B14AEB783D650415C8FC295E82A554148E17AD482D65041B81E857BEB2A55410000001083D65041666666F6EE2A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007600000052F1BF1D98D6504116A9C9D5E02A5541AAB0A19997D650413A4D114BE12A55417B14AE9797D65041CDCCCC4CE12A55418FC2F50895D65041666666F6E12A5541AEA9C31694D65041F98F1EFEE12A55416683EDD592D650414C625808E22A5541416387E591D650410C229211E22A5541BCEBC7D68FD65041D95CD4C5E12A55412370DCE98DD650417EEA7380E12A5541A53AF4DE8DD650411DECEA7EE12A5541C09B68268DD650414A8CF164E12A5541322E09E58CD650415418BE5BE12A55415FDF3D918CD6504106E6F24FE12A5541202EF1588CD65041D15C0648E12A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>40833 - 56927
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A000000713D0A37CAD75041AE47E1AA00285541CDCCCC4CC9D75041B81E85FB022855418FC2F598C6D7504148E17AF40B2855419A9999B9E6D750417B14AED719285541D7A370BD06D85041E17A14AE27285541EC51B88E07D85041C3F528CC252855418FC2F5F80BD85041D7A370ED1B2855410AD7A350EBD75041000000D00D285541A4703D0ACAD75041E17A146EFF275541713D0A37CAD75041AE47E1AA00285541
+</a>
+
+<b>
+01060000000100000001030000000100000016000000D13DA2B3C6D75041D99202000C28554107A1E205DBD75041DA2CA7A2142855416F243B8C00D85041BC10EC0025285541BB3BC8C606D850417E8EEC8B272855418DF63E8607D850419D73ACDF25285541EC51B88E07D85041C3F528CC2528554114F3489809D85041BB802B3E21285541F0FFC3BA0AD850410066C8B41E2855418FC2F5F80BD85041D7A370ED1B2855410AD7A350EBD75041000000D00D2855411A64460CE8D750410C2C7F660C28554179824A9BD5D75041CF035078042855414323E697D4D750411265D2FD03285541F8BB5025CAD750412E67C879FF275541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968549 - 1519262
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001700000039055B6454A95041F2EE7A52DFD454418FC2F59853A950417B14AE57ECD45441000000A053A950418FC2F5A8F2D454418FC2F58854A95041F6285CBFF8D45441B81E85FB57A950411F85EBB103D55441295C8F0260A950417B14AEA7FFD45441B81E853B65A95041A4703D2AFCD4544152B81ED567A9504114AE4721F9D45441AE47E1AA69A9504133333313F4D45441EC51B8DE69A950418FC2F588E4D45441E17A14EE68A9504148E17AA4D3D45441F6285CCF68A950413D0AD743CBD45441D7A3704D6AA9504166666686C5D45441D7A3702D6EA9504133333333BED45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005100000036C6B5405BA9504113F2BF49CFD4544194ED2CA55AA95041624EEF57D1D454414C2B98A45AA95041F1D21859D1D45441C0D9DA9A62A9504184CC1D1CD7D45441D40C08DD63A950418F153E02D8D4544127B34D0564A95041EFB789E5DBD45441E364CD3466A950411E556C1CDED45441B814DF4766A95041A68F8C66E1D45441CAAE2E8165A9504139701CF9E3D454411FDF580E64A9504113FB599BE4D454419ABA23DA62A95041366A5105E5D4544137A89E6261A9504191061EBEE4D45441B3DDD4DF5EA9504183527019E4D45441838BF0DC5DA9504183095033E3D45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>199384 - 58319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002C0000001F85EB6199C750413D0AD743E4265541D7A3708D99C7504133333333E226554148E17A24A0C750410AD7A3A0E1265541B81E854BA0C75041C3F528FCDD2655411F85EB6199C75041E17A143EDE265541295C8FB292C75041295C8F22DE265541C3F528AC8AC75041C3F528FCDC2655411F85EB3187C75041F6285CFFDB2655417B14AE9782C750410AD7A3B0DA265541B81E859B76C75041B81E851BD62655418FC2F5E863C750417B14AEA7CE2655415C8FC20562C75041D7A370FDCD2655413D0AD7F35FC75041666666E6CC2655415C8FC2155DC75041A4703D7ACA265541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000002B7C59A247C7504183B3D45BEB2655416EF6A20048C75041C62D1EBAEB265541713D0A5748C750415C8FC285EC265541000000D04CC75041A4703D5AEC2655410AD7A3904FC75041CDCCCCBCE82655415C8FC28553C7504133333393E32655410000004059C75041A4703D0ADD265541713D0AD760C75041CDCCCCACDA265541A4703D1A6AC750415C8FC235D9265541C3F5287C77C75041713D0AB7E2265541EC51B86E80C7504148E17AB4E7265541713D0A2782C75041AE47E16AEE26554152B81EA58AC750410AD7A320F3265541A4703DFA9DC75041CDCCCCFCED265541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>42214 - 3057159
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000A000000EC51B87E14D35041713D0A97C83455415C8FC29513D3504148E17A54CE3455418FC2F57812D35041666666B6D53455410AD7A3D033D350410AD7A3E0E2345541D7A3704D37D3504152B81E95DC3455417B14AE473CD35041CDCCCCFCD4345541C3F5284C2ED35041F6285C3FCF3455413D0AD75316D350418FC2F568C5345541333333F314D35041295C8F22C6345541EC51B87E14D35041713D0A97C8345541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C613060B3AD350418492B711D4345541726F991635D350419E49BB95DB345541D5EA12F835D35041E5EAC836DC3455419D363B7735D35041C16F2708DD34554172C4CED232D3504172837900E2345541BE3EC68B32D35041589E5E60E2345541AB9E3EC432D350411298AA76E234554134B46FCB32D350418F66B56CE23455410AD7A3D033D350410AD7A3E0E2345541D7A3704D37D3504152B81E95DC3455419B379B423CD35041AE3591EAD434554159D70DD63AD35041754E1065D4345541C613060B3AD350418492B711D4345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>42214 - 3330478
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000A000000EC51B87E14D35041713D0A97C83455415C8FC29513D3504148E17A54CE3455418FC2F57812D35041666666B6D53455410AD7A3D033D350410AD7A3E0E2345541D7A3704D37D3504152B81E95DC3455417B14AE473CD35041CDCCCCFCD4345541C3F5284C2ED35041F6285C3FCF3455413D0AD75316D350418FC2F568C5345541333333F314D35041295C8F22C6345541EC51B87E14D35041713D0A97C8345541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C613060B3AD350418492B711D4345541726F991635D350419E49BB95DB345541D5EA12F835D35041E5EAC836DC3455419D363B7735D35041C16F2708DD34554172C4CED232D3504172837900E2345541BE3EC68B32D35041589E5E60E2345541AB9E3EC432D350411298AA76E234554134B46FCB32D350418F66B56CE23455410AD7A3D033D350410AD7A3E0E2345541D7A3704D37D3504152B81E95DC3455419B379B423CD35041AE3591EAD434554159D70DD63AD35041754E1065D4345541C613060B3AD350418492B711D4345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>42525 - 255214
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000AE47E12AEBD150413D0AD73394355541713D0AC7EED15041295C8F72913555415C8FC245F1D150417B14AE478F355541295C8FF2F1D1504114AE47118D355541000000E0F2D150410AD7A3908B3555411F85EB01F1D15041295C8F1282355541EC51B8BEE3D1504148E17A648B3555411F85EB01E0D15041B81E854B8E355541C3F528ECDCD15041E17A141E9135554152B81EB5D9D150419A9999599335554185EB51C8D4D150415C8FC2A59535554152B81E85C9D1504148E17A34993555419A999959CED150415C8FC2559F3555415C8FC2F5E1D15041295C8FE299355541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000E08CFD86E5D1504161F5D7238A355541EC51B8BEE3D1504148E17A648B35554199216170E3D15041295B038E8B3555414164AE31E0D1504154C6DE238E3555418FCC7E42DFD1504173C946FC8E3555417AB639F2DCD1504135EC981391355541C63154E0D9D1504176A3B2419335554164B33E7FD8D15041F8E8C3D593355541014873FBD4D150418AB9F79195355541ABA33645D4D1504127774ED6953555413FFCFE1BCFD15041F0E856709735554167E98E09CAD15041AE5A5F0A99355541AFE46E87C9D1504101706A37993555419A999959CED150415C8FC2559F355541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>199589 - 323556
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000110000000AD7A3F0A1C75041CDCCCCDC3A26554114AE47019DC75041A4703D3A3A2655410000006099C750410AD7A3C03926554152B81E2593C750413D0AD7633A2655411F85EB0191C750413333338341265541F6285CFF83C750419A9999E942265541C3F5288C81C75041F6285CEF482655417B14AE977BC75041A4703DCA46265541AE47E1BA85C750419A99992950265541C3F528FC86C75041295C8F92502655419A9999298FC75041A4703D3A4F2655415C8FC2C595C750411F85EB114F2655418FC2F5589BC75041666666564E265541F6285C5F9EC7504114AE47F14D265541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000885DED2992C75041A1C2EE274F2655417506C25B94C7504190AD8B1A4F2655417506C25B94C75041D2A0B0C14E265541EC6B7C8E95C75041CFC385A84D2655419E582F5A98C7504100A247424D265541022AE7C69DC75041390730054E265541F6285C5F9EC7504114AE47F14D26554130EC12F9A3C75041358E20C04C2655411E609688A4C75041787081294B2655413594AC43A7C750419196CC484A2655410AD7A3F0A1C75041CDCCCCDC3A26554114AE47019DC75041A4703D3A3A2655410000006099C750410AD7A3C039265541332AE51195C750410E636A313A265541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>43334 - 251781
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F0000003D0AD7D38CDB50410AD7A3D093025541EC51B80E95DB5041713D0A1791025541CDCCCCAC9BDB5041D7A3708D8F0255417B14AE879BDB5041EC51B82E89025541AE47E1AA83DB5041295C8F4287025541F6285CBF6ADB504114AE4741850255413D0AD7D351DB5041F6285C3F83025541000000E04FDB50413D0AD7F38B025541000000E04FDB504114AE47518D0255417B14AE9750DB5041E17A147E8E02554148E17AD451DB50410AD7A3108F025541713D0A6770DB50418FC2F5A8910255410AD7A3A079DB5041A4703DAA920255410AD7A38086DB50410000007093025541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000000AD7A38086DB50410000007093025541C17072C788DB504115BDC892930255414392D7D38CDB50411C9FA2D093025541EB41B70E95DB504168DC081791025541F795C01E95DB50413BA95013910255416460337F98DB5041CA6E784A90025541160B84A19ADB504158588ACB8F0255412BB013FE9ADB5041C34513DE8E025541D9E0ECD19ADB50410FA9132089025541D6B8AAE290DB50416D632D53880255410FB0AAB584DB504191CA0D588702554150B1E0AA83DB50415C3E90428702554198951E5D78DB5041FD40BC5986025541F6285CBF6ADB504114AE474185025541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>43334 - 351946
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F0000003D0AD7D38CDB50410AD7A3D093025541EC51B80E95DB5041713D0A1791025541CDCCCCAC9BDB5041D7A3708D8F0255417B14AE879BDB5041EC51B82E89025541AE47E1AA83DB5041295C8F4287025541F6285CBF6ADB504114AE4741850255413D0AD7D351DB5041F6285C3F83025541000000E04FDB50413D0AD7F38B025541000000E04FDB504114AE47518D0255417B14AE9750DB5041E17A147E8E02554148E17AD451DB50410AD7A3108F025541713D0A6770DB50418FC2F5A8910255410AD7A3A079DB5041A4703DAA920255410AD7A38086DB50410000007093025541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000000AD7A38086DB50410000007093025541C17072C788DB504115BDC892930255414392D7D38CDB50411C9FA2D093025541EB41B70E95DB504168DC081791025541F795C01E95DB50413BA95013910255416460337F98DB5041CA6E784A90025541160B84A19ADB504158588ACB8F0255412BB013FE9ADB5041C34513DE8E025541D9E0ECD19ADB50410FA9132089025541D6B8AAE290DB50416D632D53880255410FB0AAB584DB504191CA0D588702554150B1E0AA83DB50415C3E90428702554198951E5D78DB5041FD40BC5986025541F6285CBF6ADB504114AE474185025541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>44958 - 378800
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D0000009A999979E9DD504148E17AB480F65441EC51B89EE8DD5041666666B681F654415C8FC245E8DD5041AE47E18A82F65441295C8FB2DFDD50418FC2F50887F65441C3F5287CE0DD5041666666A689F65441B81E85CBE1DD5041EC51B89E89F6544185EB51B8E8DD50415C8FC24586F65441295C8FF2EBDD5041D7A3705D84F65441AE47E15AFFDD5041B81E850B76F6544152B81E65F9DD50410AD7A3606FF654417B14AEA7F1DD5041295C8F226CF6544114AE47B1EADD5041666666267EF654419A999979E9DD504148E17AB480F65441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000EF09C345E8DD5041EA22E08A82F6544142EC1410E1DD504164DDD75186F654417D668FB2DFDD5041DBE4F50887F6544195AC287CE0DD5041667365A689F654413251E260E1DD5041C27B29A189F65441B81E85CBE1DD5041EC51B89E89F65441179B6DD9E5DD5041877F00A987F6544163DD51B8E8DD5041835AC24586F65441F7ACC732E9DD50419D6462FD85F65441295C8FF2EBDD5041D7A3705D84F65441D9330D8EF6DD5041E236CA897CF6544128A3E05AFFDD5041AB66840B76F6544152B81E65F9DD50410AD7A3606FF6544103BD2EF0F5DD50416E4DEAED6DF65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>45360 - 58069
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000260000003D0AD76358D65041AE47E11AB8025541A4703D4A5BD650418FC2F598B8025541E17A14DE5DD6504185EB5108B6025541333333F361D650410AD7A3D0B1025541CDCCCC8C5ED65041C3F528FCAB0255415C8FC2855BD65041F6285CCFA6025541D7A370AD58D65041D7A3703DA1025541D7A370FD58D65041AE47E1EA9D025541B81E85AB5AD65041C3F528BC9B025541B81E852B5AD650418FC2F5289A02554148E17AA459D6504148E17A4498025541295C8F3259D65041E17A145E96025541295C8F5254D650419A99999999025541713D0A8752D65041D7A3704D9A025541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005600000052B81EA52DD65041000000B0AF0255415D59854330D650412C3BEFCBB002554152B81ED530D650419A999909B10255413333335332D65041AE47E15AB4025541A1D3C21933D650419A24F8F2B40255418BBFE8E934D65041A44D9F55B602554109F38C3535D65041FD694A62B6025541D3170D3D35D65041A28F8463B60255412058576035D650416D9E4A69B602554130A3529235D6504177017871B60255415F07A25C36D650417C639192B60255417B14AEE737D65041333333D3B6025541BFB69D7E39D650411484D773B70255418EBFE88939D65041C8A92E78B7025541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>46601 - 1530093
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000001A00000052B81E95D2D35041713D0AA7BF095541CDCCCCCCD1D350413D0AD7A3C109554166666666CDD35041295C8F52C90955411F85EB61D7D3504100000050CF0955419A9999A9E7D35041D7A370DDD6095541A4703DDAEED35041295C8F32CB095541333333E3DFD350415C8FC2A5C409554185EB5198D6D35041B81E85EBC00955413D0AD7D3D6D35041D7A3707DC0095541E17A143EE0D35041D7A3703DC4095541C3F5288CE2D3504114AE47E1C0095541C3F5280CE0D35041B81E85ABBF095541C3F528FCE0D3504114AE4761BE095541000000E0E3D35041B81E850BBF095541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000009795B31EF7D3504111D53B13BD095541EA8C2D6FF6D35041FEBE2EAEC0095541C856B29F24D45041ACDC3CA5CB0955410000008025D450410AD7A360CA095541AE47E11A25D4504166666636CA09554152B81E6525D450410AD7A340C9095541D7A3708D25D45041666666A6C80955418FC2F50829D450410AD7A3C0BC095541D7A370FD27D4504152B81E75BB095541D7A3709D11D450417B14AEE7B5095541333333B30BD45041A4703DFAB4095541666666A600D45041C3F528ACB5095541218C4FE8F7D35041DD62CC5BB509554157A1888DF7D35041688E7D07B9095541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>46601 - 3359349
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000001A00000052B81E95D2D35041713D0AA7BF095541CDCCCCCCD1D350413D0AD7A3C109554166666666CDD35041295C8F52C90955411F85EB61D7D3504100000050CF0955419A9999A9E7D35041D7A370DDD6095541A4703DDAEED35041295C8F32CB095541333333E3DFD350415C8FC2A5C409554185EB5198D6D35041B81E85EBC00955413D0AD7D3D6D35041D7A3707DC0095541E17A143EE0D35041D7A3703DC4095541C3F5288CE2D3504114AE47E1C0095541C3F5280CE0D35041B81E85ABBF095541C3F528FCE0D3504114AE4761BE095541000000E0E3D35041B81E850BBF095541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000009795B31EF7D3504111D53B13BD095541EA8C2D6FF6D35041FEBE2EAEC0095541C856B29F24D45041ACDC3CA5CB0955410000008025D450410AD7A360CA095541AE47E11A25D4504166666636CA09554152B81E6525D450410AD7A340C9095541D7A3708D25D45041666666A6C80955418FC2F50829D450410AD7A3C0BC095541D7A370FD27D4504152B81E75BB095541D7A3709D11D450417B14AEE7B5095541333333B30BD45041A4703DFAB4095541666666A600D45041C3F528ACB5095541218C4FE8F7D35041DD62CC5BB509554157A1888DF7D35041688E7D07B9095541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200405 - 1082385
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000130000007B14AE47791A5141AE47E10AD63C544152B81EB5771A5141AE47E17AD63C5441B81E85EB681A5141295C8FC2E83C5441A4703DEA671A51410AD7A300EA3C5441F6285C8F571A514185EB5138FE3C5441B81E857B411A5141A4703D8A193D5441E17A146E3D1A5141666666D6353D54417B14AE173B1A514152B81E55433D5441E17A14FE8B1A5141333333E3483D54411F85EBA1901A5141F6285C2F383D544185EB51B8941A51413D0AD703283D54415C8FC255981A5141A4703D0A183D5441000000709B1A514185EB5148063D5441D7A3701D9D1A5141E17A149EFB3C5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000ACF387A2921A5141A34C7D43303D544185EB51B8941A51413D0AD703283D54415C8FC255981A5141A4703D0A183D5441000000709B1A514185EB5148063D5441D7A3701D9D1A5141E17A149EFB3C5441B81E851BA01A5141295C8F92E83C544166666636A01A5141EC51B81EE53C5441D7A3704D9F1A51417B14AEC7E33C5441A4703DCA8B1A5141AE47E1BADC3C54417B14AE47791A5141AE47E10AD63C544152B81EB5771A5141AE47E17AD63C5441B81E85EB681A5141295C8FC2E83C5441A4703DEA671A51410AD7A300EA3C5441F6285C8F571A514185EB5138FE3C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200405 - 3813900
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000130000007B14AE47791A5141AE47E10AD63C544152B81EB5771A5141AE47E17AD63C5441B81E85EB681A5141295C8FC2E83C5441A4703DEA671A51410AD7A300EA3C5441F6285C8F571A514185EB5138FE3C5441B81E857B411A5141A4703D8A193D5441E17A146E3D1A5141666666D6353D54417B14AE173B1A514152B81E55433D5441E17A14FE8B1A5141333333E3483D54411F85EBA1901A5141F6285C2F383D544185EB51B8941A51413D0AD703283D54415C8FC255981A5141A4703D0A183D5441000000709B1A514185EB5148063D5441D7A3701D9D1A5141E17A149EFB3C5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000ACF387A2921A5141A34C7D43303D544185EB51B8941A51413D0AD703283D54415C8FC255981A5141A4703D0A183D5441000000709B1A514185EB5148063D5441D7A3701D9D1A5141E17A149EFB3C5441B81E851BA01A5141295C8F92E83C544166666636A01A5141EC51B81EE53C5441D7A3704D9F1A51417B14AEC7E33C5441A4703DCA8B1A5141AE47E1BADC3C54417B14AE47791A5141AE47E10AD63C544152B81EB5771A5141AE47E17AD63C5441B81E85EB681A5141295C8FC2E83C5441A4703DEA671A51410AD7A300EA3C5441F6285C8F571A514185EB5138FE3C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200682 - 1095564
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000E00000014AE47F178195141333333E3C33B5441713D0AA7791951417B14AE37B13B5441F6285C1F7A1951417B14AEB7AF3B54415C8FC29574195141000000C0B03B544114AE47815919514100000030B53B5441333333C33F195141E17A14FEB93B5441AE47E18A36195141C3F528ACBB3B5441713D0A97341951411F85EB41BC3B5441AE47E1DA2C195141C3F528FCC03B54413D0AD7132C195141D7A3701DC23B5441D7A3706D2D1951411F85EBF1C63B544148E17A9430195141295C8F32D03B54415C8FC2155619514114AE47D1C93B544114AE47F178195141333333E3C33B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000071A836D977195141E459BB9DE03B54410AD7A31078195141C3F528ECDA3B544114AE47F178195141333333E3C33B544154503B89311951414DD5EC08D03B5441423F46A73A195141E56E6359EB3B544171A836D977195141E459BB9DE03B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200682 - 3217832
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000E00000014AE47F178195141333333E3C33B5441713D0AA7791951417B14AE37B13B5441F6285C1F7A1951417B14AEB7AF3B54415C8FC29574195141000000C0B03B544114AE47815919514100000030B53B5441333333C33F195141E17A14FEB93B5441AE47E18A36195141C3F528ACBB3B5441713D0A97341951411F85EB41BC3B5441AE47E1DA2C195141C3F528FCC03B54413D0AD7132C195141D7A3701DC23B5441D7A3706D2D1951411F85EBF1C63B544148E17A9430195141295C8F32D03B54415C8FC2155619514114AE47D1C93B544114AE47F178195141333333E3C33B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000071A836D977195141E459BB9DE03B54410AD7A31078195141C3F528ECDA3B544114AE47F178195141333333E3C33B544154503B89311951414DD5EC08D03B5441423F46A73A195141E56E6359EB3B544171A836D977195141E459BB9DE03B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>50364 - 182534
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000800000014AE47514CB75041EC51B8CE160F5541AE47E1BA67B750419A9999291E0F5541EC51B8CE68B7504148E17A641D0F5541B81E853B6AB75041F6285C3F0D0F55413D0AD7B36AB750417B14AE67010F5541000000C052B75041C3F5286CFD0E5541B81E85AB4BB75041295C8FA2160F554114AE47514CB75041EC51B8CE160F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000A7E7698C6AB750415FDF1849050F55413D0AD7B36AB750417B14AE67010F5541000000C052B75041C3F5286CFD0E5541C07385AB4BB750415A2D8EA2160F5541188C3B464CB7504116E1C6CB160F554114AE47514CB75041EC51B8CE160F5541760D98B84EB750410956D073170F5541CF3EE2BA67B7504100E998291E0F554161526A9168B75041A1144A901D0F5541D953B8CE68B7504177CB7A641D0F5541719882FF68B750411240B23B1B0F5541F9B6833B6AB750414A645D3F0D0F5541A7E7698C6AB750415FDF1849050F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>50364 - 368548
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000800000014AE47514CB75041EC51B8CE160F5541AE47E1BA67B750419A9999291E0F5541EC51B8CE68B7504148E17A641D0F5541B81E853B6AB75041F6285C3F0D0F55413D0AD7B36AB750417B14AE67010F5541000000C052B75041C3F5286CFD0E5541B81E85AB4BB75041295C8FA2160F554114AE47514CB75041EC51B8CE160F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000A7E7698C6AB750415FDF1849050F55413D0AD7B36AB750417B14AE67010F5541000000C052B75041C3F5286CFD0E5541C07385AB4BB750415A2D8EA2160F5541188C3B464CB7504116E1C6CB160F554114AE47514CB75041EC51B8CE160F5541760D98B84EB750410956D073170F5541CF3EE2BA67B7504100E998291E0F554161526A9168B75041A1144A901D0F5541D953B8CE68B7504177CB7A641D0F5541719882FF68B750411240B23B1B0F5541F9B6833B6AB750414A645D3F0D0F5541A7E7698C6AB750415FDF1849050F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>903813 - 565876
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000016000000072B7CCD51635141B8F3FDB5B6A5544189C1D85E5963514104D4E9B0ADA554418C36057061635141A42DA308A4A55441D5F564EA64635141069DC714A0A55441893F5394676351419DDBC64A9BA554417DDF28926A635141C18DEC7795A554412A2643336C63514142E5F24B92A554414DEF64466D6351415B30593490A55441D692FF4E6E635141D641CDE18EA554410A994B406F6351410954DBA28DA554419A6B256668635141D4878A617EA554419031B9EF5863514162A532F55BA55441A00DBCFB4E635141411F06D545A554418EBAF0364A635141EA3026B947A55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000003D0AD773846351411F85EB817DA5544152B81E0587635141333333237CA554417B14AE37796351418FC2F5985DA55441333333D369635141AE47E18A3BA55441B81E851B676351418FC2F5483CA55441EC51B8FE4E6351413D0AD7D345A554419A9999295F63514114AE47D169A55441295C8F526F635141B81E85CB8DA55441666666F6756351411F85EBB186A554413D0AD773846351411F85EB817DA55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>903813 - 1261400
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000016000000072B7CCD51635141B8F3FDB5B6A5544189C1D85E5963514104D4E9B0ADA554418C36057061635141A42DA308A4A55441D5F564EA64635141069DC714A0A55441893F5394676351419DDBC64A9BA554417DDF28926A635141C18DEC7795A554412A2643336C63514142E5F24B92A554414DEF64466D6351415B30593490A55441D692FF4E6E635141D641CDE18EA554410A994B406F6351410954DBA28DA554419A6B256668635141D4878A617EA554419031B9EF5863514162A532F55BA55441A00DBCFB4E635141411F06D545A554418EBAF0364A635141EA3026B947A55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000003D0AD773846351411F85EB817DA5544152B81E0587635141333333237CA554417B14AE37796351418FC2F5985DA55441333333D369635141AE47E18A3BA55441B81E851B676351418FC2F5483CA55441EC51B8FE4E6351413D0AD7D345A554419A9999295F63514114AE47D169A55441295C8F526F635141B81E85CB8DA55441666666F6756351411F85EBB186A554413D0AD773846351411F85EB817DA55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>903813 - 4016419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000016000000072B7CCD51635141B8F3FDB5B6A5544189C1D85E5963514104D4E9B0ADA554418C36057061635141A42DA308A4A55441D5F564EA64635141069DC714A0A55441893F5394676351419DDBC64A9BA554417DDF28926A635141C18DEC7795A554412A2643336C63514142E5F24B92A554414DEF64466D6351415B30593490A55441D692FF4E6E635141D641CDE18EA554410A994B406F6351410954DBA28DA554419A6B256668635141D4878A617EA554419031B9EF5863514162A532F55BA55441A00DBCFB4E635141411F06D545A554418EBAF0364A635141EA3026B947A55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000003D0AD773846351411F85EB817DA5544152B81E0587635141333333237CA554417B14AE37796351418FC2F5985DA55441333333D369635141AE47E18A3BA55441B81E851B676351418FC2F5483CA55441EC51B8FE4E6351413D0AD7D345A554419A9999295F63514114AE47D169A55441295C8F526F635141B81E85CB8DA55441666666F6756351411F85EBB186A554413D0AD773846351411F85EB817DA55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>50917 - 1464045
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002200000000000080BB045141EC51B89E5A2A5541713D0A67B80451410AD7A3405C2A55418FC2F548B7045141CDCCCC6C5C2A554114AE4701B60451413D0AD7335C2A5541A4703DEAB4045141295C8F225C2A55411F85EB01B904514185EB51485D2A55418FC2F598C4045141C3F528EC5F2A5541C3F5282CCF04514152B81E55622A5541C3F528ECD8045141D7A3708D642A55415C8FC265DE045141A4703D5A652A5541C3F5281CDF045141295C8F72652A5541E17A146EDE04514152B81EB5612A55415C8FC235DD045141A4703DEA5D2A5541E17A147EDC045141666666965B2A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002400000000000080BB045141EC51B89E5A2A5541713D0A67B80451410AD7A3405C2A55418FC2F548B7045141CDCCCC6C5C2A554114AE4701B60451413D0AD7335C2A5541A4703DEAB4045141295C8F225C2A55411F85EB01B904514185EB51485D2A55418FC2F598C4045141C3F528EC5F2A5541C3F5282CCF04514152B81E55622A5541C3F528ECD8045141D7A3708D642A55415C8FC265DE045141A4703D5A652A5541C3F5281CDF045141295C8F72652A5541E17A146EDE04514152B81EB5612A55415C8FC235DD045141A4703DEA5D2A5541E17A147EDC045141666666965B2A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>50917 - 22574
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002200000000000080BB045141EC51B89E5A2A5541713D0A67B80451410AD7A3405C2A55418FC2F548B7045141CDCCCC6C5C2A554114AE4701B60451413D0AD7335C2A5541A4703DEAB4045141295C8F225C2A55411F85EB01B904514185EB51485D2A55418FC2F598C4045141C3F528EC5F2A5541C3F5282CCF04514152B81E55622A5541C3F528ECD8045141D7A3708D642A55415C8FC265DE045141A4703D5A652A5541C3F5281CDF045141295C8F72652A5541E17A146EDE04514152B81EB5612A55415C8FC235DD045141A4703DEA5D2A5541E17A147EDC045141666666965B2A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000292A867AD0045141DFBBB7E6492A5541D4032468CF045141477EC5414B2A55415AF32365CF045141A21F8B424B2A55411442EB4ECF0451415578685E4B2A5541974543B9CE04514130EBC46E4B2A554171DF7906CC04514185DA60A84F2A5541AAF8C288CA0451412B9D1126522A5541FE49EE3ACA0451414CB5B77A522A554166335638CA045141F2C5FA7B522A5541427FFC36CA0451414D10187E522A5541F847ACA3C904514196274DC4522A554136010878C80451412C201256532A554114C4D867C80451411ACED15A532A55410CC3C867C8045141B06ED95A532A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>51581 - 5231111
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000026000000F6285C5F1FFC504100000000A32A55410AD7A3A013FC50417B14AE57A02A55418FC2F5C80FFC50410AD7A300A02A554185EB51080FFC5041E17A14EE9F2A5541AE47E18A0DFC5041666666C6A22A55417B14AE970CFC504166666606A92A5541713D0A270BFC504166666676AD2A55410AD7A3A00CFC504148E17A14B22A5541333333C30DFC504152B81E25B52A5541E17A149E0FFC5041A4703DCAB82A55411F85EBC114FC5041CDCCCCFCC82A5541AE47E12A18FC50415C8FC245D12A5541333333331AFC504114AE47E1D62A5541CDCCCC9C1DFC50418FC2F558DB2A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000088F5CDBC0FFC5041167BB5D2B82A55414E0BA56315FC5041049A8480BA2A5541C041911D20FC5041CD1EFE6CBD2A55412E73B80C25FC5041B5571756BE2A554127B5DF9828FC5041D21DA54FA82A5541D7A3700D28FC504114AE47F1A52A55418D0DE2E41EFC5041B59D49E4A22A55413E02651D13FC5041771E114CA02A5541B29B15FE0EFC50412DB65AED9F2A5541AB7681CA0DFC50416FFD93E0A72A5541887EF2370DFC5041087A79B7AD2A5541C2C01DDA0FFC5041DCAF65B5B82A554188F5CDBC0FFC5041167BB5D2B82A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>52483 - 3004698
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000190000006666661691F75041E17A141EFC425541EC51B8FE91F750413D0AD71300435541AE47E1CA97F75041EC51B88EFD4255416666666695F750415C8FC285EE425541F6285CFFA0F750413D0AD783E842554185EB51A8ADF750415C8FC2F5E1425541C3F5284CB5F750410AD7A300DE425541F6285C7FAEF75041EC51B8CED442554185EB51D8AAF7504185EB5198CF425541C3F5287CA7F75041B81E853BCB42554148E17AE4A3F750411F85EB21C54255417B14AE37A1F75041CDCCCCCCBE425541C3F528BCA0F750415C8FC275BD425541000000409DF75041E17A142EBD425541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C032AD7A9FF7504107C697FCC64255418F4AAF13A0F75041BA089AFBC8425541BAD3B732A0F7504149184177C94255416B8D9E20A1F7504196722C2BCD4255418DDDD274A2F7504168B57F75D142554199FDEAE2A2F75041B1FAB6ADD24255412E66F023A4F750415FE25638D542554178C73D3DA4F750415CF7AF60D5425541FAF6C82EA5F75041B9C1DCE1D642554156B5DEABA5F75041AFDF53A9D74255413CEBE785A6F75041D72A0405D9425541B2A5B9A0A8F75041A30524DFDB4255413C4A172DACF750417677AC41E04255411631F9A7ADF7504162875CF5E1425541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>52483 - 3004718
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000190000006666661691F75041E17A141EFC425541EC51B8FE91F750413D0AD71300435541AE47E1CA97F75041EC51B88EFD4255416666666695F750415C8FC285EE425541F6285CFFA0F750413D0AD783E842554185EB51A8ADF750415C8FC2F5E1425541C3F5284CB5F750410AD7A300DE425541F6285C7FAEF75041EC51B8CED442554185EB51D8AAF7504185EB5198CF425541C3F5287CA7F75041B81E853BCB42554148E17AE4A3F750411F85EB21C54255417B14AE37A1F75041CDCCCCCCBE425541C3F528BCA0F750415C8FC275BD425541000000409DF75041E17A142EBD425541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000009BF9301991F750415E604746E94255418F34E2EE90F7504178B7B713EC425541ABF1137192F75041538FC684F14255418CBBF73F93F75041B880398FF542554133928D5B93F750413DA8C8CAF8425541D32A84A093F75041A6122684FA42554166CD32ED90F750410C3DB96AFB4255411643D00E92F750416C39D80C004355414031C98794F75041CFDFB5F9FE42554101A293A694F750412A3AB5BFFD425541E26B777595F75041961DFD27FD425541F1AC6A4A97F75041F68406E3FC4255418C07C2B897F750414970D1F0FC4255411ECF0F3697F750417C5F83E7F9425541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>52483 - 3820446
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000190000006666661691F75041E17A141EFC425541EC51B8FE91F750413D0AD71300435541AE47E1CA97F75041EC51B88EFD4255416666666695F750415C8FC285EE425541F6285CFFA0F750413D0AD783E842554185EB51A8ADF750415C8FC2F5E1425541C3F5284CB5F750410AD7A300DE425541F6285C7FAEF75041EC51B8CED442554185EB51D8AAF7504185EB5198CF425541C3F5287CA7F75041B81E853BCB42554148E17AE4A3F750411F85EB21C54255417B14AE37A1F75041CDCCCCCCBE425541C3F528BCA0F750415C8FC275BD425541000000409DF75041E17A142EBD425541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C032AD7A9FF7504107C697FCC64255418F4AAF13A0F75041BA089AFBC8425541BAD3B732A0F7504149184177C94255416B8D9E20A1F7504196722C2BCD4255418DDDD274A2F7504168B57F75D142554199FDEAE2A2F75041B1FAB6ADD24255412E66F023A4F750415FE25638D542554178C73D3DA4F750415CF7AF60D5425541FAF6C82EA5F75041B9C1DCE1D642554156B5DEABA5F75041AFDF53A9D74255413CEBE785A6F75041D72A0405D9425541B2A5B9A0A8F75041A30524DFDB4255413C4A172DACF750417677AC41E04255411631F9A7ADF7504162875CF5E1425541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>52483 - 3820577
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000190000006666661691F75041E17A141EFC425541EC51B8FE91F750413D0AD71300435541AE47E1CA97F75041EC51B88EFD4255416666666695F750415C8FC285EE425541F6285CFFA0F750413D0AD783E842554185EB51A8ADF750415C8FC2F5E1425541C3F5284CB5F750410AD7A300DE425541F6285C7FAEF75041EC51B8CED442554185EB51D8AAF7504185EB5198CF425541C3F5287CA7F75041B81E853BCB42554148E17AE4A3F750411F85EB21C54255417B14AE37A1F75041CDCCCCCCBE425541C3F528BCA0F750415C8FC275BD425541000000409DF75041E17A142EBD425541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000009BF9301991F750415E604746E94255418F34E2EE90F7504178B7B713EC425541ABF1137192F75041538FC684F14255418CBBF73F93F75041B880398FF542554133928D5B93F750413DA8C8CAF8425541D32A84A093F75041A6122684FA42554166CD32ED90F750410C3DB96AFB4255411643D00E92F750416C39D80C004355414031C98794F75041CFDFB5F9FE42554101A293A694F750412A3AB5BFFD425541E26B777595F75041961DFD27FD425541F1AC6A4A97F75041F68406E3FC4255418C07C2B897F750414970D1F0FC4255411ECF0F3697F750417C5F83E7F9425541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>55437 - 1275437
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D00000048E17A54845F51410AD7A3209F995441713D0A17845F51411F85EB11A099544185EB5108805F514185EB5138B0995441000000208A5F51413D0AD7C3B1995441F6285CFF8E5F51415C8FC2B5B2995441C3F528FC8F5F51411F85EB31AF99544185EB51F8905F51413D0AD793AC995441713D0A07855F51419A9999599C9954418FC2F5E8835F5141A4703DDA9A99544100000050825F51417B14AE479899544114AE47717A5F514148E17AD48599544148E17AB4795F514152B81EC58899544148E17A54845F51410AD7A3209F995441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000992EBBBF8A5F514108F36019A4995441499B80E7865F5141B12DE2F29E99544171346638845F5141B7A25D529B9954414D83F899825F5141CA16CCBE98995441EF03DF4F825F5141ABC0604798995441B8D893D3815F51414904DB2F97995441CCC1F276805F514172E9AEF2939954416C9DD6267F5F514160B4B9DE909954410200A32F7E5F5141190A339B8E9954410A0B5F757C5F51416F232FA38A9954414FC1BC707A5F51411EB2A4D68599544148E17AB4795F514152B81EC5889954416E1C8A12825F51416426EC5F9A995441C0D4A857825F51416EFD8FF09A995441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>55437 - 3193207
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D00000048E17A54845F51410AD7A3209F995441713D0A17845F51411F85EB11A099544185EB5108805F514185EB5138B0995441000000208A5F51413D0AD7C3B1995441F6285CFF8E5F51415C8FC2B5B2995441C3F528FC8F5F51411F85EB31AF99544185EB51F8905F51413D0AD793AC995441713D0A07855F51419A9999599C9954418FC2F5E8835F5141A4703DDA9A99544100000050825F51417B14AE479899544114AE47717A5F514148E17AD48599544148E17AB4795F514152B81EC58899544148E17A54845F51410AD7A3209F995441
+</a>
+
+<b>
+01060000000100000001030000000100000019000000992EBBBF8A5F514108F36019A4995441499B80E7865F5141B12DE2F29E99544171346638845F5141B7A25D529B9954414D83F899825F5141CA16CCBE98995441EF03DF4F825F5141ABC0604798995441B8D893D3815F51414904DB2F97995441CCC1F276805F514172E9AEF2939954416C9DD6267F5F514160B4B9DE909954410200A32F7E5F5141190A339B8E9954410A0B5F757C5F51416F232FA38A9954414FC1BC707A5F51411EB2A4D68599544148E17AB4795F514152B81EC5889954416E1C8A12825F51416426EC5F9A995441C0D4A857825F51416EFD8FF09A995441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>56017 - 2945619
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000070000008FC2F548E9135141713D0A07995D544185EB5178E713514114AE47918F5D5441713D0AE7C0135141713D0A97935D54417B14AE279B135141B81E858B975D5441713D0A679D13514152B81EF5A05D54410AD7A3E0C21351418FC2F5089D5D54418FC2F548E9135141713D0A07995D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000B7D466DAC1135141256FA87D935D544185EB5178E713514114AE47918F5D544179B79E79E6135141C24269628A5D5441EED7FCCCE5135141012F1EEC845D5441A4703D7AE513514100000030855D5441640E1CE4BE1351417F6F4530895D5441C5FFD1FCB8135141EC1A63CF895D5441F6285CAF98135141666666368D5D5441746197259A1351413BC56AB0925D54417B14AE279B135141B81E858B975D5441D042C62FC11351412437748F935D5441B7D466DAC1135141256FA87D935D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>56017 - 3536078
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000070000008FC2F548E9135141713D0A07995D544185EB5178E713514114AE47918F5D5441713D0AE7C0135141713D0A97935D54417B14AE279B135141B81E858B975D5441713D0A679D13514152B81EF5A05D54410AD7A3E0C21351418FC2F5089D5D54418FC2F548E9135141713D0A07995D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000B7D466DAC1135141256FA87D935D544185EB5178E713514114AE47918F5D544179B79E79E6135141C24269628A5D5441EED7FCCCE5135141012F1EEC845D5441A4703D7AE513514100000030855D5441640E1CE4BE1351417F6F4530895D5441C5FFD1FCB8135141EC1A63CF895D5441F6285CAF98135141666666368D5D5441746197259A1351413BC56AB0925D54417B14AE279B135141B81E858B975D5441D042C62FC11351412437748F935D5441B7D466DAC1135141256FA87D935D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>58589 - 194342
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000A4703D8AEBAD50415C8FC26580495441B81E85ABE8AD5041A4703D5A78495441A4703DFAE2AD5041F6285C5F7849544148E17A74C9AD5041AE47E1AA784954419A9999A9C9AD504152B81EB57C495441295C8F32CAAD50413D0AD7C37C495441A4703D8AEBAD50415C8FC26580495441
+</a>
+
+<b>
+010600000001000000010300000001000000090000002B4B3689C9AD5041D7FB873E7A4954419A9999A9C9AD504152B81EB57C495441295C8F32CAAD50413D0AD7C37C495441A4703D8AEBAD50415C8FC26580495441B81E85ABE8AD5041A4703D5A78495441A4703DFAE2AD5041F6285C5F78495441D83CC1B7DAAD504114D5CC777849544131397B74C9AD50416908E2AA784954412B4B3689C9AD5041D7FB873E7A495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>58589 - 372879
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000A4703D8AEBAD50415C8FC26580495441B81E85ABE8AD5041A4703D5A78495441A4703DFAE2AD5041F6285C5F7849544148E17A74C9AD5041AE47E1AA784954419A9999A9C9AD504152B81EB57C495441295C8F32CAAD50413D0AD7C37C495441A4703D8AEBAD50415C8FC26580495441
+</a>
+
+<b>
+010600000001000000010300000001000000090000002B4B3689C9AD5041D7FB873E7A4954419A9999A9C9AD504152B81EB57C495441295C8F32CAAD50413D0AD7C37C495441A4703D8AEBAD50415C8FC26580495441B81E85ABE8AD5041A4703D5A78495441A4703DFAE2AD5041F6285C5F78495441D83CC1B7DAAD504114D5CC777849544131397B74C9AD50416908E2AA784954412B4B3689C9AD5041D7FB873E7A495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>58908 - 1057799
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000015000000CDCCCCAC3D085141D7A370EDAB75544148E17AE43D085141CDCCCC9CAE7554418FC2F5883E08514114AE4731B17554410AD7A30041085141F6285C0FB47554413D0AD7F3550851413D0AD7F3B1755441295C8F32660851411F85EB51B07554415C8FC2B568085141713D0A47AF75544114AE47E169085141713D0A77AE755441000000D06B08514100000020AD755441D7A3702D6D0851417B14AE77AC755441C3F5282C6C0851410AD7A390A67554415C8FC2B56A085141F6285C6FA575544114AE47316808514100000040A475544114AE47616108514133333353A4755441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005A000000C57325A949085141120A6330B37554411AB5DF0541085141D522871FB4755441354D13923F08514152605F65B27554418FC2F5883E08514114AE4731B175544184B2AD6C3E08514159BEB6BFB075544186DDE97E3B08514166C2A0DAB07554414656B9422F085141615A4674B0755441E9F14C8223085141C150F711B075544114AE47511B085141D7A370CDAF75544148E17A7419085141E17A147EB07554415C8FC225140851411F85EB41B5755441713D0AF7100851411F85EBB1B9755441713D0AA71008514152B81E15C1755441000000C010085141CDCCCCACC4755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>58908 - 3670773
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000015000000CDCCCCAC3D085141D7A370EDAB75544148E17AE43D085141CDCCCC9CAE7554418FC2F5883E08514114AE4731B17554410AD7A30041085141F6285C0FB47554413D0AD7F3550851413D0AD7F3B1755441295C8F32660851411F85EB51B07554415C8FC2B568085141713D0A47AF75544114AE47E169085141713D0A77AE755441000000D06B08514100000020AD755441D7A3702D6D0851417B14AE77AC755441C3F5282C6C0851410AD7A390A67554415C8FC2B56A085141F6285C6FA575544114AE47316808514100000040A475544114AE47616108514133333353A4755441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005A000000C57325A949085141120A6330B37554411AB5DF0541085141D522871FB4755441354D13923F08514152605F65B27554418FC2F5883E08514114AE4731B175544184B2AD6C3E08514159BEB6BFB075544186DDE97E3B08514166C2A0DAB07554414656B9422F085141615A4674B0755441E9F14C8223085141C150F711B075544114AE47511B085141D7A370CDAF75544148E17A7419085141E17A147EB07554415C8FC225140851411F85EB41B5755441713D0AF7100851411F85EBB1B9755441713D0AA71008514152B81E15C1755441000000C010085141CDCCCCACC4755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>59167 - 1057799
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000004D0000007B14AEB78708514185EB5198A7755441000000808D085141C3F5286CA3755441B81E85AB90085141E17A149EA1755441E17A14EE920851418FC2F548A07554410AD7A3D095085141D7A3700D9F75544185EB5198980851410AD7A3E09B755441666666369A085141F6285C1F9875544185EB51289B0851417B14AE6794755441E17A140E96085141C3F5280C96755441F6285C3F900851413D0AD72397755441F6285CEF8B085141295C8FE297755441CDCCCC2C8508514148E17A249E755441D7A3704D7C085141B81E853BA47554418FC2F59878085141F6285C9FA7755441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005A000000C57325A949085141120A6330B37554411AB5DF0541085141D522871FB4755441354D13923F08514152605F65B27554418FC2F5883E08514114AE4731B175544184B2AD6C3E08514159BEB6BFB075544186DDE97E3B08514166C2A0DAB07554414656B9422F085141615A4674B0755441E9F14C8223085141C150F711B075544114AE47511B085141D7A370CDAF75544148E17A7419085141E17A147EB07554415C8FC225140851411F85EB41B5755441713D0AF7100851411F85EBB1B9755441713D0AA71008514152B81E15C1755441000000C010085141CDCCCCACC4755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>59167 - 3670773
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000004D0000007B14AEB78708514185EB5198A7755441000000808D085141C3F5286CA3755441B81E85AB90085141E17A149EA1755441E17A14EE920851418FC2F548A07554410AD7A3D095085141D7A3700D9F75544185EB5198980851410AD7A3E09B755441666666369A085141F6285C1F9875544185EB51289B0851417B14AE6794755441E17A140E96085141C3F5280C96755441F6285C3F900851413D0AD72397755441F6285CEF8B085141295C8FE297755441CDCCCC2C8508514148E17A249E755441D7A3704D7C085141B81E853BA47554418FC2F59878085141F6285C9FA7755441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005A000000C57325A949085141120A6330B37554411AB5DF0541085141D522871FB4755441354D13923F08514152605F65B27554418FC2F5883E08514114AE4731B175544184B2AD6C3E08514159BEB6BFB075544186DDE97E3B08514166C2A0DAB07554414656B9422F085141615A4674B0755441E9F14C8223085141C150F711B075544114AE47511B085141D7A370CDAF75544148E17A7419085141E17A147EB07554415C8FC225140851411F85EB41B5755441713D0AF7100851411F85EBB1B9755441713D0AA71008514152B81E15C1755441000000C010085141CDCCCCACC4755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>61065 - 224559
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001D000000B81E855BEC065141CDCCCCAC0418554114AE47F1E7065141B81E85CB001855415C8FC2F5E606514185EB51B802185541A4703D1ADF0651417B14AEE7FC1755417B14AE27DC06514114AE4781FA17554148E17A94DA0651413D0AD793F6175541713D0A07D9065141E17A14BEF017554148E17AB4D4065141713D0A77F2175541C3F5286CD00651410AD7A360F4175541B81E85DBCA06514148E17A84F7175541E17A148EC30651410AD7A390FD175541333333F3BF0651419A999989021855411F85EB91C7065141EC51B81E02185541AE47E1DACD065141295C8F4202185541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000799C7B69C006514115891E830218554184E133F3BF065141639F998902185541A090B84BBF065141ED3CDACD03185541785482DABE065141101B0AA90418554148E17AA4BD06514114AE4701071855419A053D8AC806514101FF8E620B185541FDDD5AAFCE0651415602F5F80D18554102A76F6DD5065141188C3C7A10185541EBCBAD27E1065141C6638E121418554169520C1AE7065141836F583D1518554152B81E55ED065141666666761618554187160592F1065141A817C2CF161855418D414811F206514155613DDA161855410E58073FF3065141C9C4EFBA16185541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>61464 - 1417993
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000B81E851B38075141B81E856BC0175541AE47E1DA34075141295C8F42CA175541C3F528CC31075141C3F5289CD1175541CDCCCC3C300751411F85EB71D7175541333333E333075141333333C3D8175541B81E857B36075141333333B3D917554100000090360751419A999959D9175541713D0A773A075141D7A370EDCC175541E17A143E3E07514185EB51E8C01755411F85EBA13E075141CDCCCCACBF175541CDCCCC7C380751411F85EB51BF175541B81E851B38075141B81E856BC0175541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000F0B0484E38075141835C92D8BF175541AE47E1DA34075141295C8F42CA175541C3F528CC31075141C3F5289CD1175541CDCCCC3C300751411F85EB71D7175541333333E333075141333333C3D8175541B81E857B36075141333333B3D917554100000090360751419A999959D9175541713D0A773A075141D7A370EDCC1755417D5B8F683E075141E0841262C0175541F0B0484E38075141835C92D8BF175541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>61464 - 3396818
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000B81E851B38075141B81E856BC0175541AE47E1DA34075141295C8F42CA175541C3F528CC31075141C3F5289CD1175541CDCCCC3C300751411F85EB71D7175541333333E333075141333333C3D8175541B81E857B36075141333333B3D917554100000090360751419A999959D9175541713D0A773A075141D7A370EDCC175541E17A143E3E07514185EB51E8C01755411F85EBA13E075141CDCCCCACBF175541CDCCCC7C380751411F85EB51BF175541B81E851B38075141B81E856BC0175541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000F0B0484E38075141835C92D8BF175541AE47E1DA34075141295C8F42CA175541C3F528CC31075141C3F5289CD1175541CDCCCC3C300751411F85EB71D7175541333333E333075141333333C3D8175541B81E857B36075141333333B3D917554100000090360751419A999959D9175541713D0A773A075141D7A370EDCC1755417D5B8F683E075141E0841262C0175541F0B0484E38075141835C92D8BF175541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>61617 - 224167
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001C00000014AE47113B1C5141E17A147E032955415C8FC2F5221C5141C3F5281C0E29554114AE47B12B1C51410AD7A3A01A29554114AE47D13E1C514148E17A04122955410AD7A340431C5141E17A145E1229554114AE4751461C514148E17A641329554152B81E05491C51411F85EB01162955411F85EBB1541C51417B14AED72729554133333303581C51418FC2F5182B2955410AD7A3D0581C5141295C8FE22B295541E17A147E581C51418FC2F5A82D2955417B14AE87521C5141F6285CBF32295541333333B3521C5141D7A370ED3229554148E17A14511C51417B14AED734295541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006600000014AE4751541C514152B81E7537295541D2E3D868571C5141AED85FD23429554161B75B3F581C5141AA1C851B342955410B5946D15C1C5141C949D7132F2955417E0FC7CE5C1C51410E60D9112F295541581B274F5D1C5141BE4F55612E2955411F60F5735D1C51415519232D2E2955411F85EB71611C51413D0AD78328295541B81E858B5D1C51411F85EB81232955411F85EB01621C51415C8FC2F51F29554152B81ED55F1C51419A9999B91B295541F6285C6F611C51417B14AE771A29554116EDDA81571C51417437FAB60E295541DD109D2D571C51418BDE69920E295541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>61681 - 224203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001800000085EB5118B61851419A999979362955417B14AE07B5185141CDCCCCAC37295541A4703DCAB31851413333336338295541295C8F62B2185141D7A3703D382955417B14AE37B018514185EB51B837295541F6285C1FAD1851411F85EBF136295541EC51B84EAA1851415C8FC2353529554100000020A918514100000030362955413D0AD753A71851411F85EBB137295541EC51B8AEA4185141D7A370ED39295541AE47E16AA218514185EB51583C295541F6285CFFA018514114AE47B13E295541CDCCCC5CA01851413333336340295541AE47E17AAB185141A4703D1A46295541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000B8410AAEAD185141E53C041547295541EC51B84EB1185141295C8FB248295541CDCCCCFCB518514152B81E154B29554102B672DCB7185141752ED5D84A295541BD63849BB9185141F13CA3A04A295541FA410A60BD185141FF02166C4C295541000000C0C2185141B81E85FB4E295541713D0A97C7185141C3F5285C4A295541F7D8CEBEC51851418B88BD5E482955412B1832A3C0185141A73A2ADC4229554142E8E5BBBE185141A0E231EB40295541B81E851BBD185141295C8F423F295541E17A142EB9185141713D0AA73A295541CDD4CA24B918514112FC659B3A295541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>62744 - 962291
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000009000000A4703DDA71D95041CDCCCCCC674B55418FC2F5B86AD950410AD7A3B0614B554148E17AE465D95041D7A3708D5D4B5541666666C646D950413D0AD7838A4B5541E17A140E49D950413D0AD7B3964B5541EC51B8DE49D95041713D0AF7974B5541F6285CFF4DD950415C8FC2759B4B55419A9999095FD950415C8FC2A5824B5541A4703DDA71D95041CDCCCCCC674B5541
+</a>
+
+<b>
+010600000001000000010300000001000000200000008AAFF1AA65D95041353E93E05D4B55410EE20AE565D950418410948D5D4B554160625C6364D95041B85932435C4B5541AE0B8FB862D9504144C65DD55A4B55415A2DE19561D950413721EA7B5C4B55416ACE3BF460D95041AA364B675D4B55419B3CA28560D95041029785075E4B554161918E3060D95041AC1A4D845E4B5541AD1EC3A25FD95041CB4DE7515F4B5541DCB50A0B5FD9504160711A2F604B55415F2F19915ED95041C2C058E0604B5541E5A827175ED9504123109791614B5541ACFD13C25DD95041CD935E0E624B55411E70394F5DD9504115EDAFB5624B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>63615 - 3996899
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000002000000240000000AD7A3A0845451419A99990961805441B81E85DB81545141AE47E16A618054410AD7A3B081545141CDCCCCBC63805441666666067C545141CDCCCCCC65805441D7A3701D7B545141000000D06280544185EB51587A5451410000001063805441E17A14EE7754514148E17AB463805441295C8F4276545141000000D05D8054410AD7A3B074545141CDCCCC1C5E805441295C8F8274545141713D0AE75980544185EB51F8775451419A99992959805441713D0AD777545141D7A3702D5880544148E17AD47654514114AE47E1578054411F85EBD1755451411F85EBA156805441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000002C00000097FAD14170545141AF3227766F8054416BA98F167354514183AC65F06E805441251FC53676545141AD54B6A66D805441E14E31177A545141A212D3A26B805441B81E85FB7954514148E17A346B80544169B0E42B785451412A1B9DFB6A805441EFC5BE7B775451415E84529C6A805441DBFA49B17654514174B40BCD698054410AD7A33077545141CDCCCC9C69805441B2FE4BCF77545141E9B01BFE698054410AD7A3F078545141CDCCCC9C6A8054410AD7A3307A545141CDCCCC3C6A8054410AD7A3707B545141CDCCCC6C698054410AD7A3D07C545141CDCCCC7C68805441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>63615 - 3996901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000002000000240000000AD7A3A0845451419A99990961805441B81E85DB81545141AE47E16A618054410AD7A3B081545141CDCCCCBC63805441666666067C545141CDCCCCCC65805441D7A3701D7B545141000000D06280544185EB51587A5451410000001063805441E17A14EE7754514148E17AB463805441295C8F4276545141000000D05D8054410AD7A3B074545141CDCCCC1C5E805441295C8F8274545141713D0AE75980544185EB51F8775451419A99992959805441713D0AD777545141D7A3702D5880544148E17AD47654514114AE47E1578054411F85EBD1755451411F85EBA156805441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004000000054AEF4AE6D54514116DC40D46980544184E05E226C54514194E5AC0360805441113EBF226C5451417931330360805441C148A21E6C545141FBF898D95F805441EC49BF116C545141A673F8225F8054412001E0066C545141644E4AAF5E8054411D5ED5086C545141A114ABAE5E805441BCD9B0086C545141A09FCEAC5E8054416080ED357054514136ABBE475D805441A4BBF8E3705451412760EA155C805441E09867737254514145D6DA3159805441C9FAF126745451414176304F568054410705C9EA745451416AD2BFF154805441F40F24F374545141FE1AE4F354805441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>63951 - 3997533
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001A000000F6285C6FEE555141D7A3702DFD7A54415C8FC215F4555141EC51B89E057B5441E17A149EF55551418FC2F5E8077B544133333333F955514148E17AF4057B5441666666C6FB555141E17A14AE047B5441713D0A27FF5551413D0AD7D3027B544152B81ED502565141D7A370AD007B5441A4703DEA05565141E17A14DEFE7A5441B81E85AB08565141713D0A07FD7A54417B14AE1703565141EC51B8EEF37A544114AE4721FB5551410AD7A300E87A544100000050F655514148E17A24E17A5441F6285CDFEE55514152B81ED5D57A544133333343EB5551417B14AE17D87A5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000005E0E94E407565141114FA2C2FB7A54411F85EBA102565141EC51B88EF37A54410682D503EE555141C0AAB796DC7A5441AE47E13AE75551417B14AE07D57A5441713D0A67E755514114AE4751D87A54415B480B0DE7555141D634F44CDB7A54416D89BA46E655514131F139EFDD7A5441FDB2A4A4E15551419E248DF2E87A5441183C66E8DF5551411D354F2BED7A5441000000A0DE55514148E17A54F07A54418FC2F518DE5551417B14AED7F17A54419A999939DD55514100000010F57A5441CB802F3DDD5551410064C18AF67A5441E4734558E455514143E6FA27FA7A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>64591 - 5229815
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001E00000033333313D3545141AE47E17AA47B54415C8FC2A5D95451410AD7A390A57B5441AE47E12AD65451418FC2F578A27B544114AE47E1D15451419A9999C99E7B54410AD7A390CB5451418FC2F5E8987B544133333333BE545141F6285C7F8C7B5441F6285CEFB554514166666686857B544148E17AE4AA5451417B14AE977B7B54410AD7A360A9545141666666C6787B5441D7A370EDA75451418FC2F5F8767B5441B81E85BBA754514166666696757B5441F6285CCFA6545141713D0A47717B54411F85EB11A4545141295C8FF26D7B5441AE47E1DAA0545141333333636A7B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000086C75C158E545141946054D4967B5441978DF45C9C5451417697780E997B54414C19DC75A5545141062A6CEF9A7B54414890E5C3B1545141CD8189C69D7B544111CFF312BD54514124FDF752A07B54418A44A91ACB545141CF16F639A37B54415C8FC2A5D95451410AD7A390A57B5441AE47E18ADB545141713D0A17A47B544114AE4731E154514152B81ED5997B5441E4E2FA27A5545141A1F73D6D8D7B5441CDCCCC8C8C5451417B14AE57887B54413D0AD74389545141E17A14DE8E7B54417851D1E789545141BE663CF2907B54415C70FC4A8C545141A2624CDE947B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>65156 - 2947484
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000D0000009A9999E96DE850419A9999995B6D54411F85EBD16BE850419A9999796E6D54417B14AE8769E85041A4703D1A836D544148E17AC468E85041C3F528FC896D5441A4703DFA68E85041EC51B8FE896D54410000005071E85041C3F528AC896D54418FC2F5A885E8504114AE47A1876D5441B81E851B87E85041D7A3703D866D54419A9999C989E850411F85EBB16E6D54410AD7A3D08DE8504152B81E654A6D5441295C8FE28CE8504148E17AC4496D5441295C8F0280E850413D0AD733516D54419A9999E96DE850419A9999995B6D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000420608E568E85041F91558D6886D544126B34DF063E8504137C67656866D5441878ACAB25BE850410F409240826D5441D3661BF750E8504148A1523A7C6D5441B1C8605952E85041BEA5D9396B6D54410AD7A39042E850413D0AD7536D6D54419A99991941E85041C3F528BC6E6D54413D0AD7533FE850417B14AE47776D5441A4703DCA41E85041E17A14DE7A6D544114AE478145E85041333333337C6D54418FC2F5485AE85041AE47E10A886D544148E17A945DE850417B14AE77896D54414A7AA5A167E8504161F8B4EE896D54419C86ADF66BE85041586524E1896D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>65156 - 3589972
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000D0000009A9999E96DE850419A9999995B6D54411F85EBD16BE850419A9999796E6D54417B14AE8769E85041A4703D1A836D544148E17AC468E85041C3F528FC896D5441A4703DFA68E85041EC51B8FE896D54410000005071E85041C3F528AC896D54418FC2F5A885E8504114AE47A1876D5441B81E851B87E85041D7A3703D866D54419A9999C989E850411F85EBB16E6D54410AD7A3D08DE8504152B81E654A6D5441295C8FE28CE8504148E17AC4496D5441295C8F0280E850413D0AD733516D54419A9999E96DE850419A9999995B6D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000420608E568E85041F91558D6886D544126B34DF063E8504137C67656866D5441878ACAB25BE850410F409240826D5441D3661BF750E8504148A1523A7C6D5441B1C8605952E85041BEA5D9396B6D54410AD7A39042E850413D0AD7536D6D54419A99991941E85041C3F528BC6E6D54413D0AD7533FE850417B14AE47776D5441A4703DCA41E85041E17A14DE7A6D544114AE478145E85041333333337C6D54418FC2F5485AE85041AE47E10A886D544148E17A945DE850417B14AE77896D54414A7AA5A167E8504161F8B4EE896D54419C86ADF66BE85041586524E1896D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>65417 - 1751857
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000017000000D7A3708DB1E4504114AE4781BA715441B81E851BB1E45041B81E858BBB715441AE47E1EAB2E45041E17A144ECA715441D7A370ADB1E450415C8FC275D7715441AE47E1AAAEE45041C3F5287CEA71544100000030BBE450415C8FC245E6715441D7A3705DD3E45041EC51B86EDF715441AE47E1DAD5E45041D7A3704DDD715441AE47E1BAD8E450415C8FC255DC715441E17A145ED8E45041C3F528BCDA715441F6285CDFE2E45041EC51B80ED9715441D7A3701DE9E45041713D0A17D9715441C3F5285CE9E4504148E17A74DA715441F6285C7FFCE45041D7A3704DD8715441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000409EAE2DD9E45041E545029BDA71544155C0B4C0D5E45041E4516CECCD7154415B6E1CA4D5E45041E2529082CD7154418FFBE0B1B1E45041543FAB46D7715441C9FF9BBBB1E45041E95F70DFD6715441AE47E1AAAEE45041C3F5287CEA71544100000030BBE450415C8FC245E6715441D7A3705DD3E45041EC51B86EDF715441AE47E1DAD5E45041D7A3704DDD715441AE47E1BAD8E450415C8FC255DC715441E17A145ED8E45041C3F528BCDA715441409EAE2DD9E45041E545029BDA715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>65417 - 3811705
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000017000000D7A3708DB1E4504114AE4781BA715441B81E851BB1E45041B81E858BBB715441AE47E1EAB2E45041E17A144ECA715441D7A370ADB1E450415C8FC275D7715441AE47E1AAAEE45041C3F5287CEA71544100000030BBE450415C8FC245E6715441D7A3705DD3E45041EC51B86EDF715441AE47E1DAD5E45041D7A3704DDD715441AE47E1BAD8E450415C8FC255DC715441E17A145ED8E45041C3F528BCDA715441F6285CDFE2E45041EC51B80ED9715441D7A3701DE9E45041713D0A17D9715441C3F5285CE9E4504148E17A74DA715441F6285C7FFCE45041D7A3704DD8715441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000409EAE2DD9E45041E545029BDA71544155C0B4C0D5E45041E4516CECCD7154415B6E1CA4D5E45041E2529082CD7154418FFBE0B1B1E45041543FAB46D7715441C9FF9BBBB1E45041E95F70DFD6715441AE47E1AAAEE45041C3F5287CEA71544100000030BBE450415C8FC245E6715441D7A3705DD3E45041EC51B86EDF715441AE47E1DAD5E45041D7A3704DDD715441AE47E1BAD8E450415C8FC255DC715441E17A145ED8E45041C3F528BCDA715441409EAE2DD9E45041E545029BDA715441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>67412 - 1434959
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F000000AE47E1EA72E050415C8FC255220A554152B81E3571E05041713D0A57260A554148E17A046FE05041F6285C3F2B0A55418FC2F58867E0504114AE47613B0A5541295C8FC26FE05041F6285C8F3F0A5541A4703D5A71E05041C3F528EC3C0A5541C3F5280C78E0504148E17AE42B0A55413D0AD77375E05041CDCCCC0C290A55415C8FC22576E050413D0AD713270A5541EC51B83E77E05041CDCCCC4C270A5541EC51B81E78E05041EC51B87E260A5541B81E853B78E05041E17A142E260A5541295C8FC277E05041000000D0240A5541295C8F7277E05041F6285C2F240A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000611E624B77E05041A12A51112B0A55413D0AD77375E05041CDCCCC0C290A55415C8FC22576E050413D0AD713270A5541EC51B83E77E05041CDCCCC4C270A5541EC51B81E78E05041EC51B87E260A5541B81E853B78E05041E17A142E260A5541295C8FC277E05041000000D0240A5541295C8F7277E05041F6285C2F240A5541D6BA9D5A73E05041F9496483220A5541F53D15A471E050410BA7F5A1260A5541339851BC72E0504101762A97270A5541F53D15A471E050410D41B20D2A0A5541FBB39C0071E0504110FCF5BB290A554138A5E99968E050417C12FFEB3B0A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>68594 - 1431927
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000E17A141E8BEB50418FC2F5C86FFD54411F85EB7171EB50411F85EB716BFD5441EC51B82E71EB5041AE47E1CA6BFD54410AD7A30070EB5041666666566DFD5441F6285CBF72EB5041713D0A776FFD54415C8FC2A571EB50418FC2F5E870FD5441D7A3709D74EB5041F6285C2F73FD544152B81E257BEB504114AE475177FD54418FC2F5987DEB504114AE47A172FD5441D7A370CD83EB5041295C8F1275FD5441E17A149E88EB5041B81E856B76FD5441E17A141E8BEB50418FC2F5C86FFD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000001DD384937DEB5041A704AEAB72FD5441DDEE9D4A7FEB5041EFEA28C96DFD5441F1804CBE7DEB50416E4929866DFD54411F85EB7171EB50411F85EB716BFD5441EC51B82E71EB5041AE47E1CA6BFD54410AD7A30070EB5041666666566DFD5441F6285CBF72EB5041713D0A776FFD54415C8FC2A571EB50418FC2F5E870FD5441D7A3709D74EB5041F6285C2F73FD544152B81E257BEB504114AE475177FD54411DD384937DEB5041A704AEAB72FD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>68594 - 3354764
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000E17A141E8BEB50418FC2F5C86FFD54411F85EB7171EB50411F85EB716BFD5441EC51B82E71EB5041AE47E1CA6BFD54410AD7A30070EB5041666666566DFD5441F6285CBF72EB5041713D0A776FFD54415C8FC2A571EB50418FC2F5E870FD5441D7A3709D74EB5041F6285C2F73FD544152B81E257BEB504114AE475177FD54418FC2F5987DEB504114AE47A172FD5441D7A370CD83EB5041295C8F1275FD5441E17A149E88EB5041B81E856B76FD5441E17A141E8BEB50418FC2F5C86FFD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000001DD384937DEB5041A704AEAB72FD5441DDEE9D4A7FEB5041EFEA28C96DFD5441F1804CBE7DEB50416E4929866DFD54411F85EB7171EB50411F85EB716BFD5441EC51B82E71EB5041AE47E1CA6BFD54410AD7A30070EB5041666666566DFD5441F6285CBF72EB5041713D0A776FFD54415C8FC2A571EB50418FC2F5E870FD5441D7A3709D74EB5041F6285C2F73FD544152B81E257BEB504114AE475177FD54411DD384937DEB5041A704AEAB72FD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>69644 - 1533897
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000015000000E17A147EF9DF5041AE47E18A81DF5441D7A370FDFCDF504148E17AD486DF54417B14AE4719E05041E17A14FE88DF5441A4703D3A18E050419A9999D991DF5441C3F5280C14E05041713D0A479DDF544148E17AE417E05041000000509EDF5441C3F5286C1DE05041CDCCCCAC9FDF54418FC2F54824E05041713D0A07A1DF5441AE47E1AA28E05041713D0AA7A1DF544114AE47A12CE0504133333303A2DF5441333333C32FE050418FC2F508A2DF5441713D0A6737E0504185EB5128A2DF5441A4703DCA37E050411F85EB219EDF54419A99994937E050411F85EB3196DF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000E17A148E36E05041713D0AD7B4DF5441666666A644E05041713D0AB7B1DF544114AE47314FE0504148E17AC4B4DF5441AE47E15A50E050419A9999F9A2DF5441EC51B85E50E05041B81E859BA2DF5441CDCCCC0C51E050413D0AD7E392DF5441295C8FA237E050417B14AE9792DF5441FCF0413D18E050417C54AED991DF5441C3F5280C14E05041713D0A479DDF544148E17AE417E05041000000509EDF5441BB79E67C1BE0504132B8C6329FDF54417C26F3B21EE0504120A034ED9FDF544144F19D3121E050417CE2136BA0DF5441AA10C02923E0504131626FCEA0DF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>69644 - 3282696
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000015000000E17A147EF9DF5041AE47E18A81DF5441D7A370FDFCDF504148E17AD486DF54417B14AE4719E05041E17A14FE88DF5441A4703D3A18E050419A9999D991DF5441C3F5280C14E05041713D0A479DDF544148E17AE417E05041000000509EDF5441C3F5286C1DE05041CDCCCCAC9FDF54418FC2F54824E05041713D0A07A1DF5441AE47E1AA28E05041713D0AA7A1DF544114AE47A12CE0504133333303A2DF5441333333C32FE050418FC2F508A2DF5441713D0A6737E0504185EB5128A2DF5441A4703DCA37E050411F85EB219EDF54419A99994937E050411F85EB3196DF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000E17A148E36E05041713D0AD7B4DF5441666666A644E05041713D0AB7B1DF544114AE47314FE0504148E17AC4B4DF5441AE47E15A50E050419A9999F9A2DF5441EC51B85E50E05041B81E859BA2DF5441CDCCCC0C51E050413D0AD7E392DF5441295C8FA237E050417B14AE9792DF5441FCF0413D18E050417C54AED991DF5441C3F5280C14E05041713D0A479DDF544148E17AE417E05041000000509EDF5441BB79E67C1BE0504132B8C6329FDF54417C26F3B21EE0504120A034ED9FDF544144F19D3121E050417CE2136BA0DF5441AA10C02923E0504131626FCEA0DF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>70607 - 5185494
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C000000666666968BCA504152B81E95A53A5541D7A3708D89CA504152B81E75A03A55419A9999B97DCA5041F6285C9F873A5541333333137CCA5041E17A145E843A55417B14AE6774CA50410AD7A340863A5541F6285C9F70CA504114AE47C1A33A5541295C8FB26FCA504133333323AA3A55419A9999996ECA5041A4703D5AAE3A55418FC2F5D86DCA5041713D0A27B03A554152B81EB56CCA50415C8FC2D5B23A55419A9999698DCA5041F6285CCFAA3A5541666666968BCA504152B81E95A53A5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000799543F56DCA504182649D67B23A554130B3F35772CA50410F82B973B13A55419C652B647DCA50414CF5BFBDAE3A55412309AC6082CA504140128784AD3A5541DC46106A8DCA5041D2B0C4D0AA3A5541D7A3708D89CA504152B81E75A03A55419E20889B82CA50419A11EDDF913A55419C4E29637CCA5041226BD2FB843A554111FFB32F75CA5041FDEAFA08873A5541DFDBE3C672CA50413438D5579B3A55419E96228A70CA50411EF2F892AA3A55411938A4136FCA50412B6CF26CB03A5541799543F56DCA504182649D67B23A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>939285 - 2964540
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000004A00000014AE4791C4B150411F85EBE1AB3654410AD7A370C6B1504114AE4791AC36544148E17A14C8B150411F85EB11AD365441E17A148EC9B15041333333F3AC3654417B14AE57CCB1504185EB5168AD365441F6285CCFCFB1504166666696AE365441EC51B8DED2B15041C3F528FCAF3654418FC2F5D8D5B15041666666B6B1365441E17A146ED7B15041C3F5286CB23654410AD7A3A0D8B1504166666626B3365441F6285C6FDCB15041B81E857BB03654415C8FC275DFB15041295C8F12AE365441EC51B80EE1B1504166666606AC365441C3F5288CE2B1504152B81EA5AA365441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000470000003DAF613B9CB150411543C703A3365441E7FBA9119BB15041250681ADA6365441DD98FD519DB15041315C8070A73654414A0C0203ACB15041DD240669AC36544117D9CE4FACB15041C3F528CCAB3654416ABC74D3ADB150410C022B27AC365441B30094A9B2B150412A142FDFA736544121854097B3B150416E97CB0CA736544119045656B4B1504154E3A563A636544133333303B7B15041295C8F7AA6365441355EBA31BEB1504152B81EF5A836544191ED7C27C2B150412B8716C9A93654415A643BAFC4B15041BC749320AB36544117D9CED7C9B1504146B6F32DAC365441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>939285 - 3624663
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000004A00000014AE4791C4B150411F85EBE1AB3654410AD7A370C6B1504114AE4791AC36544148E17A14C8B150411F85EB11AD365441E17A148EC9B15041333333F3AC3654417B14AE57CCB1504185EB5168AD365441F6285CCFCFB1504166666696AE365441EC51B8DED2B15041C3F528FCAF3654418FC2F5D8D5B15041666666B6B1365441E17A146ED7B15041C3F5286CB23654410AD7A3A0D8B1504166666626B3365441F6285C6FDCB15041B81E857BB03654415C8FC275DFB15041295C8F12AE365441EC51B80EE1B1504166666606AC365441C3F5288CE2B1504152B81EA5AA365441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000470000003DAF613B9CB150411543C703A3365441E7FBA9119BB15041250681ADA6365441DD98FD519DB15041315C8070A73654414A0C0203ACB15041DD240669AC36544117D9CE4FACB15041C3F528CCAB3654416ABC74D3ADB150410C022B27AC365441B30094A9B2B150412A142FDFA736544121854097B3B150416E97CB0CA736544119045656B4B1504154E3A563A636544133333303B7B15041295C8F7AA6365441355EBA31BEB1504152B81EF5A836544191ED7C27C2B150412B8716C9A93654415A643BAFC4B15041BC749320AB36544117D9CED7C9B1504146B6F32DAC365441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>939423 - 957808
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000081000000A4703D5AEFAF5041B81E85EB3235544166666696ECAF5041A4703DCA35355441C3F528DCE9AF5041B81E854B38355441E17A14EEE5AF5041F6285C6F3B3554415C8FC2E5E1AF5041B81E856B3E355441CDCCCC7CDDAF5041D7A370BD4135544114AE4731D8AF504185EB51D8453554419A999969D6AF5041AE47E16A47355441000000D0D4AF504152B81ED548355441CDCCCC0CD2AF504152B81EB54B3554417B14AEA7CDAF504114AE471151355441295C8FF2C5AF50410AD7A3205B355441AE47E19ABEAF50411F85EB81643554411F85EB61BCAF5041AE47E1CA67355441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001800000094F35337D5AF50410FA25A58A33554416F573344D8AF5041624DBAF3A53554410D8D815BDAAF50419ADDB59BA83554414C8910E6DCAF5041B68A4139AC355441347791F4DCAF5041B0ACAA2BAC3554413248EC7EDFAF5041AB644FCAA9355441AB4665C4DFAF5041066B5B91A9355441EB647025E0AF50417C503A4EA9355441271C6CFEE1AF504148410B07A83554417AA72487E7AF5041F7F1BC35A5355441ECCCD392E8AF5041FDA01AA6A435544132603C7DE8AF5041E1FB95B1A33554417CD32EDCE5AF5041C56A35B3A235544154F1BB51E3AF5041FCC49151A0355441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>201720 - 3127153
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000011000000EC51B80EA8025141A4703D1AC0AF544148E17AB4C002514114AE47E1C2AF544133333323C002514148E17A84BEAF54417B14AE47BE02514114AE4761B4AF544152B81EA5BE0251415C8FC2F5ABAF54418FC2F568C10251415C8FC205A1AF54417B14AEF7C10251418FC2F5F899AF544100000000C2025141B81E85BB95AF5441B81E851BA50251411F85EB7192AF544152B81EE5A30251410AD7A3A09AAF5441C3F5280CA20251415C8FC215A0AF5441A4703DCA9E0251417B14AEF7A5AF5441A4703D3A9B02514152B81EC5AAAF5441CDCCCCBC95025141F6285C9FB1AF5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000ACA38113A80251411CE964C892AF544118E7F4FFC102514198E32CC195AF54415C8FC215C2025141333333438AAF5441CDCCCC6CA302514185EB513887AF5441F6285C7FA402514185EB51E88BAF5441E1EAC20EA502514188EE2EE991AF54416CE04291A5025141ABFFFFC691AF5441061F0AE9A5025141968338D190AF5441C91C7C75A6025141EF4DA9478EAF54412659B559A702514135D5367F8CAF5441FFD2EEDBA8025141D798FD9A8BAF54418707B7ABAB025141851AA8318BAF5441237F62BAAD0251416719E1778BAF5441AA7A46D3AE02514171D7C4F28BAF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>201720 - 3503687
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000011000000EC51B80EA8025141A4703D1AC0AF544148E17AB4C002514114AE47E1C2AF544133333323C002514148E17A84BEAF54417B14AE47BE02514114AE4761B4AF544152B81EA5BE0251415C8FC2F5ABAF54418FC2F568C10251415C8FC205A1AF54417B14AEF7C10251418FC2F5F899AF544100000000C2025141B81E85BB95AF5441B81E851BA50251411F85EB7192AF544152B81EE5A30251410AD7A3A09AAF5441C3F5280CA20251415C8FC215A0AF5441A4703DCA9E0251417B14AEF7A5AF5441A4703D3A9B02514152B81EC5AAAF5441CDCCCCBC95025141F6285C9FB1AF5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000ACA38113A80251411CE964C892AF544118E7F4FFC102514198E32CC195AF54415C8FC215C2025141333333438AAF5441CDCCCC6CA302514185EB513887AF5441F6285C7FA402514185EB51E88BAF5441E1EAC20EA502514188EE2EE991AF54416CE04291A5025141ABFFFFC691AF5441061F0AE9A5025141968338D190AF5441C91C7C75A6025141EF4DA9478EAF54412659B559A702514135D5367F8CAF5441FFD2EEDBA8025141D798FD9A8BAF54418707B7ABAB025141851AA8318BAF5441237F62BAAD0251416719E1778BAF5441AA7A46D3AE02514171D7C4F28BAF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>310678 - 34276
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000180000009A999929F9FA50415C8FC2A5F5C7544148E17AA4F7FA50411F85EB91F4C7544152B81EA5F6FA5041A4703DFAF2C75441EC51B8EEEFFA50415C8FC235E6C75441333333C3EDFA50419A9999D9E1C75441E17A14FEE1FA5041295C8FA2E2C75441000000A0E1FA5041B81E858BE4C7544100000060E2FA5041E17A145EE6C754413D0AD773E3FA50411F85EB11E8C75441D7A3700DEBFA5041E17A14EEF2C75441D7A370EDECFA5041EC51B8BEF5C75441C3F5286CEEFA50418FC2F508F9C7544166666636EFFA50415C8FC2B5FCC75441C3F5283CEFFA50415C8FC28500C85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000052B81EA5F6FA5041A4703DFAF2C75441BA334303F6FA5041251461C6F1C75441643AC6E4F4FA5041C8FE76A5EFC75441D64E3281F4FA5041002110E8EEC75441661D2212F4FA504192B8D014EEC75441396EDCB3F3FA5041F4488161EDC75441A56D4EECEEFA5041EEE9B57CEFC75441230CDB0DEFFA50415833F373F1C75441258E1FE1EEFA50412ECAF608F5C75441A83035A9EEFA50419BD61ABDF6C75441254D7DF7EEFA50418C07990CF8C754419BE3F7CBEFFA5041837D42ECF8C754410BB3023DF1FA5041FE174667F9C7544180C7383EF2FA50417C75309FF9C75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>310678 - 75433
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000180000009A999929F9FA50415C8FC2A5F5C7544148E17AA4F7FA50411F85EB91F4C7544152B81EA5F6FA5041A4703DFAF2C75441EC51B8EEEFFA50415C8FC235E6C75441333333C3EDFA50419A9999D9E1C75441E17A14FEE1FA5041295C8FA2E2C75441000000A0E1FA5041B81E858BE4C7544100000060E2FA5041E17A145EE6C754413D0AD773E3FA50411F85EB11E8C75441D7A3700DEBFA5041E17A14EEF2C75441D7A370EDECFA5041EC51B8BEF5C75441C3F5286CEEFA50418FC2F508F9C7544166666636EFFA50415C8FC2B5FCC75441C3F5283CEFFA50415C8FC28500C85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000052B81EA5F6FA5041A4703DFAF2C75441BA334303F6FA5041251461C6F1C75441643AC6E4F4FA5041C8FE76A5EFC75441D64E3281F4FA5041002110E8EEC75441661D2212F4FA504192B8D014EEC75441396EDCB3F3FA5041F4488161EDC75441A56D4EECEEFA5041EEE9B57CEFC75441230CDB0DEFFA50415833F373F1C75441258E1FE1EEFA50412ECAF608F5C75441A83035A9EEFA50419BD61ABDF6C75441254D7DF7EEFA50418C07990CF8C754419BE3F7CBEFFA5041837D42ECF8C754410BB3023DF1FA5041FE174667F9C7544180C7383EF2FA50417C75309FF9C75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>203412 - 58759
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000012000000295C8F1256015141EC51B8EE573C5541EC51B89E5601514185EB5148583C554148E17AD4560151413D0AD763583C5541C3F5285C57015141D7A370CD573C5541CDCCCC6C5A015141CDCCCC2C533C55413D0AD7A35C015141CDCCCC9C4F3C5541B81E85BB600151419A999979473C5541295C8F626101514148E17AC4463C554114AE478164015141333333E3423C5541295C8FF26401514185EB5188413C5541B81E856B64015141B81E850B413C5541C3F528BC5D015141AE47E1DA3A3C554185EB51C85C0151418FC2F5F8393C554114AE47415C015141C3F5287C393C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000C00B15DB59015141AC76C68E533C5541E817E82B5A015141C376C68E533C5541CDCCCC6C5A015141CDCCCC2C533C55417A8F11495B015141F2D087CA513C55410D2FED525C015141E443EDE14F3C5541785870185D01514141A3F4B44E3C554123A9820D5E015141942FA8CD4C3C55411AF1DFA55E015141D9D15F734B3C55417BA7ED2360015141E21B06A7483C5541B81E85BB600151419A999979473C554174B64F0E610151416A7DD41F473C55417149CD7161015141D77B86B1463C5541CE6E3D0063015141FD2508C2443C5541BBF5A45E640151411EC3450E433C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>203525 - 243124
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F0000005C8FC235B1FD5041666666F6AE4C5541D7A370FDB0FD5041B81E854BAD4C55418FC2F5F8ABFD504166666666AE4C5541AE47E13AA8FD504185EB5138AF4C55410AD7A3F0A4FD504133333323AE4C5541C3F528ACA2FD504100000060AD4C554185EB51D8A0FD504185EB5158AD4C55413D0AD7E39CFD50410AD7A3C0AD4C5541E17A140E97FD50417B14AED7AE4C5541D7A370ED94FD50415C8FC285AF4C55413D0AD74392FD504166666646B04C55418FC2F57891FD5041D7A370EDB04C5541E17A144E90FD50411F85EB51B24C5541295C8FD290FD5041F6285CCFB44C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000005C8FC235B1FD5041666666F6AE4C5541D7A370FDB0FD5041B81E854BAD4C554131BCDEABABFD50416133B976AE4C5541AE47E13AA8FD504185EB5138AF4C5541F96B50E7A2FD50410458E473AD4C554126746803A1FD5041ECFE0659AD4C5541EBA42C3A9FFD5041F7BAFD82AD4C554131B538129CFD50417E2ACCE7AD4C5541782CC2FA98FD50412B53A57BAE4C55410A51773D95FD5041EE862E6CAF4C55413D0AD74392FD504166666646B04C5541E17A144E90FD50411F85EB51B24C5541295C8FD290FD5041F6285CCFB44C55415C8FC235B1FD5041666666F6AE4C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>203525 - 318880
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F0000005C8FC235B1FD5041666666F6AE4C5541D7A370FDB0FD5041B81E854BAD4C55418FC2F5F8ABFD504166666666AE4C5541AE47E13AA8FD504185EB5138AF4C55410AD7A3F0A4FD504133333323AE4C5541C3F528ACA2FD504100000060AD4C554185EB51D8A0FD504185EB5158AD4C55413D0AD7E39CFD50410AD7A3C0AD4C5541E17A140E97FD50417B14AED7AE4C5541D7A370ED94FD50415C8FC285AF4C55413D0AD74392FD504166666646B04C55418FC2F57891FD5041D7A370EDB04C5541E17A144E90FD50411F85EB51B24C5541295C8FD290FD5041F6285CCFB44C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000005C8FC235B1FD5041666666F6AE4C5541D7A370FDB0FD5041B81E854BAD4C554131BCDEABABFD50416133B976AE4C5541AE47E13AA8FD504185EB5138AF4C5541F96B50E7A2FD50410458E473AD4C554126746803A1FD5041ECFE0659AD4C5541EBA42C3A9FFD5041F7BAFD82AD4C554131B538129CFD50417E2ACCE7AD4C5541782CC2FA98FD50412B53A57BAE4C55410A51773D95FD5041EE862E6CAF4C55413D0AD74392FD504166666646B04C5541E17A144E90FD50411F85EB51B24C5541295C8FD290FD5041F6285CCFB44C55415C8FC235B1FD5041666666F6AE4C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>203617 - 243124
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000360000003D0AD7236AFD504133333313B24C5541D7A370DD64FD5041A4703D6AB44C55413D0AD79364FD50415C8FC225B64C5541D7A3700D69FD504148E17A94B64C554114AE47B16DFD5041D7A370BDB64C5541C3F5282C71FD504148E17A94B64C5541EC51B8AE75FD5041CDCCCC8CB54C55415C8FC2D579FD504148E17A94B44C5541CDCCCC6C7DFD504185EB5178B34C5541E17A14DE7DFD5041B81E859BB44C5541D7A370BD82FD50419A9999E9B34C5541EC51B80E83FD50410AD7A390B44C5541E17A144E90FD50411F85EB51B24C55418FC2F57891FD5041D7A370EDB04C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000005C8FC235B1FD5041666666F6AE4C5541D7A370FDB0FD5041B81E854BAD4C554131BCDEABABFD50416133B976AE4C5541AE47E13AA8FD504185EB5138AF4C5541F96B50E7A2FD50410458E473AD4C554126746803A1FD5041ECFE0659AD4C5541EBA42C3A9FFD5041F7BAFD82AD4C554131B538129CFD50417E2ACCE7AD4C5541782CC2FA98FD50412B53A57BAE4C55410A51773D95FD5041EE862E6CAF4C55413D0AD74392FD504166666646B04C5541E17A144E90FD50411F85EB51B24C5541295C8FD290FD5041F6285CCFB44C55415C8FC235B1FD5041666666F6AE4C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>203617 - 318880
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000360000003D0AD7236AFD504133333313B24C5541D7A370DD64FD5041A4703D6AB44C55413D0AD79364FD50415C8FC225B64C5541D7A3700D69FD504148E17A94B64C554114AE47B16DFD5041D7A370BDB64C5541C3F5282C71FD504148E17A94B64C5541EC51B8AE75FD5041CDCCCC8CB54C55415C8FC2D579FD504148E17A94B44C5541CDCCCC6C7DFD504185EB5178B34C5541E17A14DE7DFD5041B81E859BB44C5541D7A370BD82FD50419A9999E9B34C5541EC51B80E83FD50410AD7A390B44C5541E17A144E90FD50411F85EB51B24C55418FC2F57891FD5041D7A370EDB04C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000005C8FC235B1FD5041666666F6AE4C5541D7A370FDB0FD5041B81E854BAD4C554131BCDEABABFD50416133B976AE4C5541AE47E13AA8FD504185EB5138AF4C5541F96B50E7A2FD50410458E473AD4C554126746803A1FD5041ECFE0659AD4C5541EBA42C3A9FFD5041F7BAFD82AD4C554131B538129CFD50417E2ACCE7AD4C5541782CC2FA98FD50412B53A57BAE4C55410A51773D95FD5041EE862E6CAF4C55413D0AD74392FD504166666646B04C5541E17A144E90FD50411F85EB51B24C5541295C8FD290FD5041F6285CCFB44C55415C8FC235B1FD5041666666F6AE4C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>203729 - 1458593
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003300000048E17A44C8F85041C3F5282C55395541666666B6C7F85041EC51B89E54395541EC51B8AEC6F85041EC51B85E53395541E17A149EC3F850419A9999D94E395541CDCCCC3CC0F850419A9999D949395541EC51B81EB9F8504114AE47114E3955411F85EBD1B5F8504185EB51E848395541D7A3707DB2F850415C8FC2A54339554148E17A84AFF85041A4703D9A3D39554166666636ACF8504148E17A04383955413D0AD733A8F850413D0AD7D33139554185EB5158A4F850410AD7A3E02B395541EC51B8FE9EF85041F6285CAF253955415C8FC2B59DF850417B14AE8727395541 [...]
+</a>
+
+<b>
+0106000000010000000103000000040000007A000000E08226F67CF850413BC316D790395541A9B0285A7BF85041FE457A549139554185EB51187CF8504114AE477196395541666666667BF850419A9999D996395541EC51B82E7AF85041713D0A6797395541E17A14FE77F8504152B81ED597395541CDCCCCDC72F8504152B81E1598395541AE47E1CA6BF85041A4703D3A98395541B81E859B62F850410AD7A3F09739554185EB51B85BF850413D0AD7D396395541EC51B89E55F850419A9999C99539554152B81E7551F850413D0AD723953955410AD7A3804BF850413D0AD72395395541333333833EF85041B81E855B95395541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>203729 - 3498340
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003300000048E17A44C8F85041C3F5282C55395541666666B6C7F85041EC51B89E54395541EC51B8AEC6F85041EC51B85E53395541E17A149EC3F850419A9999D94E395541CDCCCC3CC0F850419A9999D949395541EC51B81EB9F8504114AE47114E3955411F85EBD1B5F8504185EB51E848395541D7A3707DB2F850415C8FC2A54339554148E17A84AFF85041A4703D9A3D39554166666636ACF8504148E17A04383955413D0AD733A8F850413D0AD7D33139554185EB5158A4F850410AD7A3E02B395541EC51B8FE9EF85041F6285CAF253955415C8FC2B59DF850417B14AE8727395541 [...]
+</a>
+
+<b>
+0106000000010000000103000000040000007A000000E08226F67CF850413BC316D790395541A9B0285A7BF85041FE457A549139554185EB51187CF8504114AE477196395541666666667BF850419A9999D996395541EC51B82E7AF85041713D0A6797395541E17A14FE77F8504152B81ED597395541CDCCCCDC72F8504152B81E1598395541AE47E1CA6BF85041A4703D3A98395541B81E859B62F850410AD7A3F09739554185EB51B85BF850413D0AD7D396395541EC51B89E55F850419A9999C99539554152B81E7551F850413D0AD723953955410AD7A3804BF850413D0AD72395395541333333833EF85041B81E855B95395541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>76487 - 160018
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F528CC721C514185EB5188F23A54411F85EBB15B1C5141C3F5284CEE3A54411F85EBF15A1C5141E17A141EF23A5441713D0A375A1C5141713D0A47F53A54413D0AD723591C5141B81E858BF63A5441713D0AD7561C5141333333A31A3B544185EB51D8571C5141F6285C4F1B3B54417B14AE37591C5141B81E85BB1B3B5441D7A370CD6B1C5141666666960C3B5441CDCCCCAC6C1C5141EC51B85E0B3B544114AE47516D1C51410AD7A3E0093B5441A4703DBA6D1C5141C3F528AC093B5441F6285CEF6E1C514114AE4771093B54411F85EB31701C5141B81E858B093B5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000003D0AD723591C5141B81E858BF63A544123B022E5561C5141C90502C6193B54412DFEDDD8561C51412B0A87861A3B5441EFC9BFE5571C514185BE0B0A1B3B54417B14AE37591C5141B81E85BB1B3B5441D7A370CD6B1C5141666666960C3B5441CDCCCCAC6C1C5141EC51B85E0B3B544114AE47516D1C51410AD7A3E0093B5441A4703DBA6D1C5141C3F528AC093B5441F6285CEF6E1C514114AE4771093B54411F85EB31701C5141B81E858B093B54417B14AEF7701C51410AD7A3500A3B544141031C00721C5141EEB75EE20A3B5441D4192B2A721C51410BFE4CC0093B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>76487 - 298241
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F528CC721C514185EB5188F23A54411F85EBB15B1C5141C3F5284CEE3A54411F85EBF15A1C5141E17A141EF23A5441713D0A375A1C5141713D0A47F53A54413D0AD723591C5141B81E858BF63A5441713D0AD7561C5141333333A31A3B544185EB51D8571C5141F6285C4F1B3B54417B14AE37591C5141B81E85BB1B3B5441D7A370CD6B1C5141666666960C3B5441CDCCCCAC6C1C5141EC51B85E0B3B544114AE47516D1C51410AD7A3E0093B5441A4703DBA6D1C5141C3F528AC093B5441F6285CEF6E1C514114AE4771093B54411F85EB31701C5141B81E858B093B5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000003D0AD723591C5141B81E858BF63A54411EB022E5561C5141CA0502C6193B5441087F2CD8561C5141C76268911A3B54415F27DCED571C5141A91B92171B3B54417B14AE37591C5141B81E85BB1B3B5441D7A370CD6B1C5141666666960C3B5441CDCCCCAC6C1C5141EC51B85E0B3B544114AE47516D1C51410AD7A3E0093B5441A4703DBA6D1C5141C3F528AC093B5441F6285CEF6E1C514114AE4771093B54411F85EB31701C5141B81E858B093B54417B14AEF7701C51410AD7A3500A3B544141031C00721C5141EEB75EE20A3B5441D4192B2A721C51410BFE4CC0093B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>76757 - 254251
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000027000000F6285CCF121E5141A4703D3A443D5441666666A6131E514185EB51E8423D544148E17A04121E5141713D0A57423D544185EB5198101E51417B14AEF73C3D54419A9999C90F1E514114AE47113A3D5441333333B30E1E5141B81E855B373D54413D0AD7530D1E514185EB51B8373D54418FC2F5E80B1E514148E17A94383D5441C3F5288C0A1E5141F6285C7F383D5441000000F0081E514152B81E453F3D5441F6285CFF041E5141713D0A173E3D5441D7A3700D011E51413D0AD7F33C3D5441B81E85BBFF1D5141E17A143E3E3D54410AD7A300FD1D514185EB51E8403D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000D7A370DD131E51415C8FC2D55A3D54414D3CA0E6131E5141F2B4B0D35A3D54410F803CD7151E51414D71B6625A3D54417523A327161E514175A00B95583D54416BF66941161E514191C20801583D54411FA315B9161E514172C5E051553D5441248BD4AA151E51417AE56E89553D54418FC2F5A8151E5141295C8F92553D5441E96B1B60141E5141A9316BCD553D544133333323141E514185EB51D8553D5441898196E60F1E5141BCCF11DF533D5441713D0A870F1E5141295C8FB2533D5441D7A370CD0F1E5141EC51B80E523D54418FC2F5D80D1E51410AD7A3A0513D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>76757 - 368817
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000027000000F6285CCF121E5141A4703D3A443D5441666666A6131E514185EB51E8423D544148E17A04121E5141713D0A57423D544185EB5198101E51417B14AEF73C3D54419A9999C90F1E514114AE47113A3D5441333333B30E1E5141B81E855B373D54413D0AD7530D1E514185EB51B8373D54418FC2F5E80B1E514148E17A94383D5441C3F5288C0A1E5141F6285C7F383D5441000000F0081E514152B81E453F3D5441F6285CFF041E5141713D0A173E3D5441D7A3700D011E51413D0AD7F33C3D5441B81E85BBFF1D5141E17A143E3E3D54410AD7A300FD1D514185EB51E8403D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000D7A370DD131E51415C8FC2D55A3D54414D3CA0E6131E5141F2B4B0D35A3D54410F803CD7151E51414D71B6625A3D54417523A327161E514175A00B95583D54416BF66941161E514191C20801583D54411FA315B9161E514172C5E051553D5441248BD4AA151E51417AE56E89553D54418FC2F5A8151E5141295C8F92553D5441E96B1B60141E5141A9316BCD553D544133333323141E514185EB51D8553D5441898196E60F1E5141BCCF11DF533D5441713D0A870F1E5141295C8FB2533D5441D7A370CD0F1E5141EC51B80E523D54418FC2F5D80D1E51410AD7A3A0513D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>972667 - 403965
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000020000000C9D0022916A15041CB14CA3FC8495541F970C33516A15041E7489945C8495541643BDF5F16A15041DBF97EBAC7495541BA490CDA18A15041560E2D72C5495541B81E85A317A15041A4703DF2C1495541E926312818A150410E2DB225BF4955416891ED3C1BA150414260E560B84955412EE5FEE61EA150419C4CA089B9495541B07268B120A150412731085CB649554154E3A5F321A1504162105869B049554185EB513824A15041D7A370E5AE495541B07268B124A1504121B072E8A949554198ACC28E24A150410AFC3C6CA949554116AD75B61EA15041D6D5D10AA5495541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000007D46E09D1BA15041C0DC5F36A34955412152B80E1BA15041080AD793A3495541C2CCCC3C1AA15041D77A142EA44955414ADF3E3A1AA15041AF8D1230A44955411320F1A811A15041DD2F761BAB495541953E5B1D10A15041E3AB3AB1AC49554112B48D8F0EA1504172F4CF92AE495541D89BBC7A0EA1504152E4FCBDAE495541BBD6308119A15041949B47A3B3495541426CF36320A1504137469EDCB64955418EF9CC7020A15041D097B2CEB6495541B07268B120A150412731085CB649554154E3A5F321A1504162105869B0495541100D7B7522A1504149C69C12B0495541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>972667 - 420725
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000020000000C9D0022916A15041CB14CA3FC8495541F970C33516A15041E7489945C8495541643BDF5F16A15041DBF97EBAC7495541BA490CDA18A15041560E2D72C5495541B81E85A317A15041A4703DF2C1495541E926312818A150410E2DB225BF4955416891ED3C1BA150414260E560B84955412EE5FEE61EA150419C4CA089B9495541B07268B120A150412731085CB649554154E3A5F321A1504162105869B049554185EB513824A15041D7A370E5AE495541B07268B124A1504121B072E8A949554198ACC28E24A150410AFC3C6CA949554116AD75B61EA15041D6D5D10AA5495541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000007D46E09D1BA15041C0DC5F36A34955412152B80E1BA15041080AD793A3495541C2CCCC3C1AA15041D77A142EA44955414ADF3E3A1AA15041AF8D1230A44955411320F1A811A15041DD2F761BAB495541953E5B1D10A15041E3AB3AB1AC49554112B48D8F0EA1504172F4CF92AE495541D89BBC7A0EA1504152E4FCBDAE495541BBD6308119A15041949B47A3B3495541426CF36320A1504137469EDCB64955418EF9CC7020A15041D097B2CEB6495541B07268B120A150412731085CB649554154E3A5F321A1504162105869B0495541100D7B7522A1504149C69C12B0495541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>221922 - 5296539
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000006000000D7A3702D2C3F51411F85EB7129AA5441F6285CAF0A3F5141A4703D1A29AA54415C8FC235E93E5141333333C328AA544133333313E53E51419A99994941AA5441295C8F02293F5141B81E851B42AA5441D7A3702D2C3F51411F85EB7129AA5441
+</a>
+
+<b>
+0106000000010000000103000000010000003500000098FE484B283F5141919716BD2CAA5441B61E02A6253F5141D93F91B92CAA54418FE2FC8C1F3F514191CA73B12CAA5441607CAD04123F5141275F719F2CAA5441D997286DE83E51413D4C17682CAA54413DF96AC6E33E5141887DE53449AA5441121D3825E13E5141FC785E9658AA54412EDF8058DE3E5141F0BCF97267AA54416B65DFF5033F5141F0BCF97267AA54414ADF755A0F3F5141EE4445A167AA5441CB93B77A2A3F5141EE4445A167AA5441EEC735B8733F5141D3AC621667AA5441C613C57B753F5141A2CCCEDB4FAA54412F04F1D1753F51417EA2FA204BAA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235004 - 1175972
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000021000000AE47E15AC29D514185EB51E84AA15441E17A143EC79D51419A99996952A1544114AE47C1CB9D5141666666464FA15441D7A370CDD09D51418FC2F5084DA15441AE47E10AD19D514152B81EC54BA1544185EB5128D39D5141C3F528CC4BA1544152B81E55D39D5141295C8FF24AA1544185EB5128CC9D51417B14AEC73EA15441A4703D9AC69D51415C8FC28534A15441C3F528DCC59D5141713D0AA731A15441AE47E19ABF9D5141CDCCCC3C26A15441E17A143EBF9D51411F85EB7125A15441F6285C4FB89D514152B81EE527A1544100000030B59D5141666666E629A15441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000AE47E15AC29D514185EB51E84AA15441E17A143EC79D51419A99996952A1544114AE47C1CB9D5141666666464FA15441D7A370CDD09D51418FC2F5084DA15441AE47E10AD19D514152B81EC54BA1544185EB5128D39D5141C3F528CC4BA1544152B81E55D39D5141295C8FF24AA1544185EB5128CC9D51417B14AEC73EA15441A4703D9AC69D51415C8FC28534A15441C3F528DCC59D5141713D0AA731A15441AE47E19ABF9D5141CDCCCC3C26A15441E17A143EBF9D51411F85EB7125A154412EF27E74BA9D514169264CF91AA154418CC24B61B99D51410D5B6D611BA15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235004 - 3408600
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000021000000AE47E15AC29D514185EB51E84AA15441E17A143EC79D51419A99996952A1544114AE47C1CB9D5141666666464FA15441D7A370CDD09D51418FC2F5084DA15441AE47E10AD19D514152B81EC54BA1544185EB5128D39D5141C3F528CC4BA1544152B81E55D39D5141295C8FF24AA1544185EB5128CC9D51417B14AEC73EA15441A4703D9AC69D51415C8FC28534A15441C3F528DCC59D5141713D0AA731A15441AE47E19ABF9D5141CDCCCC3C26A15441E17A143EBF9D51411F85EB7125A15441F6285C4FB89D514152B81EE527A1544100000030B59D5141666666E629A15441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000AE47E15AC29D514185EB51E84AA15441E17A143EC79D51419A99996952A1544114AE47C1CB9D5141666666464FA15441D7A370CDD09D51418FC2F5084DA15441AE47E10AD19D514152B81EC54BA1544185EB5128D39D5141C3F528CC4BA1544152B81E55D39D5141295C8FF24AA1544185EB5128CC9D51417B14AEC73EA15441A4703D9AC69D51415C8FC28534A15441C3F528DCC59D5141713D0AA731A15441AE47E19ABF9D5141CDCCCC3C26A15441E17A143EBF9D51411F85EB7125A154412EF27E74BA9D514169264CF91AA154418CC24B61B99D51410D5B6D611BA15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235004 - 254507
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000021000000AE47E15AC29D514185EB51E84AA15441E17A143EC79D51419A99996952A1544114AE47C1CB9D5141666666464FA15441D7A370CDD09D51418FC2F5084DA15441AE47E10AD19D514152B81EC54BA1544185EB5128D39D5141C3F528CC4BA1544152B81E55D39D5141295C8FF24AA1544185EB5128CC9D51417B14AEC73EA15441A4703D9AC69D51415C8FC28534A15441C3F528DCC59D5141713D0AA731A15441AE47E19ABF9D5141CDCCCC3C26A15441E17A143EBF9D51411F85EB7125A15441F6285C4FB89D514152B81EE527A1544100000030B59D5141666666E629A15441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000AE47E15AC29D514185EB51E84AA15441E17A143EC79D51419A99996952A1544114AE47C1CB9D5141666666464FA15441D7A370CDD09D51418FC2F5084DA15441AE47E10AD19D514152B81EC54BA1544185EB5128D39D5141C3F528CC4BA1544152B81E55D39D5141295C8FF24AA1544185EB5128CC9D51417B14AEC73EA15441A4703D9AC69D51415C8FC28534A15441C3F528DCC59D5141713D0AA731A15441AE47E19ABF9D5141CDCCCC3C26A15441E17A143EBF9D51411F85EB7125A154412EF27E74BA9D514169264CF91AA154418CC24B61B99D51410D5B6D611BA15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235004 - 343796
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000021000000AE47E15AC29D514185EB51E84AA15441E17A143EC79D51419A99996952A1544114AE47C1CB9D5141666666464FA15441D7A370CDD09D51418FC2F5084DA15441AE47E10AD19D514152B81EC54BA1544185EB5128D39D5141C3F528CC4BA1544152B81E55D39D5141295C8FF24AA1544185EB5128CC9D51417B14AEC73EA15441A4703D9AC69D51415C8FC28534A15441C3F528DCC59D5141713D0AA731A15441AE47E19ABF9D5141CDCCCC3C26A15441E17A143EBF9D51411F85EB7125A15441F6285C4FB89D514152B81EE527A1544100000030B59D5141666666E629A15441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000AE47E15AC29D514185EB51E84AA15441E17A143EC79D51419A99996952A1544114AE47C1CB9D5141666666464FA15441D7A370CDD09D51418FC2F5084DA15441AE47E10AD19D514152B81EC54BA1544185EB5128D39D5141C3F528CC4BA1544152B81E55D39D5141295C8FF24AA1544185EB5128CC9D51417B14AEC73EA15441A4703D9AC69D51415C8FC28534A15441C3F528DCC59D5141713D0AA731A15441AE47E19ABF9D5141CDCCCC3C26A15441E17A143EBF9D51411F85EB7125A154412EF27E74BA9D514169264CF91AA154418CC24B61B99D51410D5B6D611BA15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>207991 - 71334
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003F00000048E17A947B8F5041B81E850BDE435541A4703D2A7B8F5041E17A140EDF435541295C8FA27A8F504148E17AC4DF435541F6285CBF798F5041A4703D9AE04355410AD7A390788F5041D7A3702DE243554185EB5178778F5041EC51B8DEE3435541CDCCCC9C768F504100000080E54355417B14AED7758F5041D7A3706DE7435541D7A3706D758F504114AE47F1E843554185EB5138758F5041713D0A37EA43554152B81E15728F5041A4703D2AEE43554148E17AC46A8F504152B81E15F943554185EB51F8698F5041A4703D8AFA4355410AD7A370668F50419A99994902445541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000340000007BCEEB58978F50419DA0D1CAC3435541DD30A1EC998F50416176024EC343554181CD0F429A8F50412B0E442CC3435541029A2A209C8F504155CD5CEDC143554114DA8BCF9E8F50411A4B9A0FC0435541EC51B81EA08F504152B81E25BF435541704EED1FA08F50410D9B8231BF435541F3161434A08F504158DC5F00C0435541F4FFDFECA08F5041EB0F6569C743554174F47271A18F5041E6DC53BACC43554135AC0491A18F5041C25955E6CF435541976C73A5A18F5041106AEED8D2435541E83572B1A18F50411F08D079D743554155B35AA6A18F5041AA18475DDC435541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978753 - 670277
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000021000000C51755515FD2504127640A4D6A1B55416265EA3D5FD250416861354E6A1B5541CDCCCC4C5FD250410AD7A390691B5541E31755515FD2504107640A4D6A1B5541393434146DD250419D772379691B5541B793B04A7AD250419D772379691B5541A6D6A1947CD25041643A815E691B554142F698DF7DD2504197B836C1691B55417078C18282D25041DBDB79836A1B5541AC9425A688D25041E0022E736B1B5541DF6221EA8CD25041A7C58B586B1B5541FAA982B08ED25041E872EE056B1B5541C3F5286C8FD250418FC2F5C8691B5541AE47E1EA8FD25041713D0A27631B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000713D0A975FD25041E17A145E661B5541D7A3705D63D2504133333353591B5541D7A3704D60D25041A4703D4A581B55418FC2F5E858D2504100000020561B55413D0AD76352D25041C3F5283C541B5541295C8F424AD25041D7A370ED531B55418FC2F53843D250417B14AE47541B55417B14AE073CD250413D0AD7A3541B5541A4703D7A3BD2504185EB51B8541B55419A9999A93ED250419A999999671B55416666661641D25041333333836F1B554148E17A645FD250418FC2F5686D1B5541CDCCCC4C5FD250410AD7A390691B5541713D0A975FD25041E17A145E661B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978753 - 1404942
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000021000000C51755515FD2504127640A4D6A1B55416265EA3D5FD250416861354E6A1B5541CDCCCC4C5FD250410AD7A390691B5541E31755515FD2504107640A4D6A1B5541393434146DD250419D772379691B5541B793B04A7AD250419D772379691B5541A6D6A1947CD25041643A815E691B554142F698DF7DD2504197B836C1691B55417078C18282D25041DBDB79836A1B5541AC9425A688D25041E0022E736B1B5541DF6221EA8CD25041A7C58B586B1B5541FAA982B08ED25041E872EE056B1B5541C3F5286C8FD250418FC2F5C8691B5541AE47E1EA8FD25041713D0A27631B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000713D0A975FD25041E17A145E661B5541D7A3705D63D2504133333353591B5541D7A3704D60D25041A4703D4A581B55418FC2F5E858D2504100000020561B55413D0AD76352D25041C3F5283C541B5541295C8F424AD25041D7A370ED531B55418FC2F53843D250417B14AE47541B55417B14AE073CD250413D0AD7A3541B5541A4703D7A3BD2504185EB51B8541B55419A9999A93ED250419A999999671B55416666661641D25041333333836F1B554148E17A645FD250418FC2F5686D1B5541CDCCCC4C5FD250410AD7A390691B5541713D0A975FD25041E17A145E661B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978753 - 3653621
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000021000000C51755515FD2504127640A4D6A1B55416265EA3D5FD250416861354E6A1B5541CDCCCC4C5FD250410AD7A390691B5541E31755515FD2504107640A4D6A1B5541393434146DD250419D772379691B5541B793B04A7AD250419D772379691B5541A6D6A1947CD25041643A815E691B554142F698DF7DD2504197B836C1691B55417078C18282D25041DBDB79836A1B5541AC9425A688D25041E0022E736B1B5541DF6221EA8CD25041A7C58B586B1B5541FAA982B08ED25041E872EE056B1B5541C3F5286C8FD250418FC2F5C8691B5541AE47E1EA8FD25041713D0A27631B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000713D0A975FD25041E17A145E661B5541D7A3705D63D2504133333353591B5541D7A3704D60D25041A4703D4A581B55418FC2F5E858D2504100000020561B55413D0AD76352D25041C3F5283C541B5541295C8F424AD25041D7A370ED531B55418FC2F53843D250417B14AE47541B55417B14AE073CD250413D0AD7A3541B5541A4703D7A3BD2504185EB51B8541B55419A9999A93ED250419A999999671B55416666661641D25041333333836F1B554148E17A645FD250418FC2F5686D1B5541CDCCCC4C5FD250410AD7A390691B5541713D0A975FD25041E17A145E661B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235046 - 222400
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000190000009A999949CF9F5141E17A144EA8A2544148E17A64D49F514100000090A8A25441E17A14BED99F5141333333E3A9A254413D0AD7E3DA9F51418FC2F5E8AAA25441D7A3702DDD9F5141D7A370FDADA254413D0AD733E09F514133333303B1A2544100000070E09F51418FC2F5C8AFA2544114AE47F1E09F51417B14AE97ADA2544166666666E29F51417B14AE47A7A254411F85EB71E29F51415C8FC215A7A25441713D0A77D79F51415C8FC255A2A25441D7A3702DD99F51411F85EB519BA25441333333B3CD9F5141E17A14EE96A25441713D0A47CC9F5141C3F5286C9BA25441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000280000009A999949CF9F5141E17A144EA8A2544148E17A64D49F514100000090A8A25441654C898DD49F5141280C2B9AA8A254412986DAECD49F51417D57C6B1A8A25441E17A14BED99F5141333333E3A9A254413D0AD7E3DA9F51418FC2F5E8AAA25441508A5A05DC9F5141FA6EC66EACA2544167BCCA94DD9F514184DEB464AEA25441AD7730F3DE9F5141B277D0C2AFA25441ACA2E827DF9F51414B7B7DF7AFA2544150267E35DF9F51413A1F1005B0A254416A452E41DF9F514148C5BD10B0A254415E001B34E09F5141C035D001B1A2544100000070E09F51418FC2F5C8AFA25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235046 - 365568
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000190000009A999949CF9F5141E17A144EA8A2544148E17A64D49F514100000090A8A25441E17A14BED99F5141333333E3A9A254413D0AD7E3DA9F51418FC2F5E8AAA25441D7A3702DDD9F5141D7A370FDADA254413D0AD733E09F514133333303B1A2544100000070E09F51418FC2F5C8AFA2544114AE47F1E09F51417B14AE97ADA2544166666666E29F51417B14AE47A7A254411F85EB71E29F51415C8FC215A7A25441713D0A77D79F51415C8FC255A2A25441D7A3702DD99F51411F85EB519BA25441333333B3CD9F5141E17A14EE96A25441713D0A47CC9F5141C3F5286C9BA25441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000280000009A999949CF9F5141E17A144EA8A2544148E17A64D49F514100000090A8A25441654C898DD49F5141280C2B9AA8A254412986DAECD49F51417D57C6B1A8A25441E17A14BED99F5141333333E3A9A254413D0AD7E3DA9F51418FC2F5E8AAA25441508A5A05DC9F5141FA6EC66EACA2544167BCCA94DD9F514184DEB464AEA25441AD7730F3DE9F5141B277D0C2AFA25441ACA2E827DF9F51414B7B7DF7AFA2544150267E35DF9F51413A1F1005B0A254416A452E41DF9F514148C5BD10B0A254415E001B34E09F5141C035D001B1A2544100000070E09F51418FC2F5C8AFA25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>208373 - 56162
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000300000001030000000200000015000000C3F5284C389550418FC2F5A842475541D7A370CD3995504152B81E7543475541713D0AF73A955041EC51B8FE43475541B81E856B3B955041666666264447554114AE472141955041CDCCCC6C324755415C8FC24543955041C3F528AC2E475541295C8F0243955041B81E85DB2D475541C3F5285C3E95504114AE476129475541333333A33395504185EB51E823475541333333B332955041713D0A17264755419A9999792F955041E17A14CE2C475541713D0A472C955041AE47E19A33475541EC51B8DE2B9550418FC2F57834475541AE47E18A2F9550415C8FC2253A475541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000AE00000097256E8672955041FDF9073C67475541B2ACD663749550417E4DDB5E67475541AA52AF5976955041CFCAA37C674755419B4A4483779550415230735367475541E4EED9F97795504177E2353767475541FF76E925799550419532C1EF6647554121B5593579955041D90414EC66475541554C48387A955041EC464C7F6647554167299A4E7A955041148C0174664755410C0A21927A955041D4DAD75166475541E7CCA4D97A95504195AEA92D6647554163E0FE457B9550410592D8F6654755416140C5867C955041FAA48F5465475541000000207D955041713D0A0765475541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>208394 - 2966293
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000014000000CDCCCC6CDA9250413D0AD7A39B4355418FC2F5E8DD92504148E17A149743554114AE4711E292504185EB519891435541AE47E1FAE09250418FC2F5388B4355419A999949E19250413D0AD7F385435541295C8F12E2925041A4703D6A834355413D0AD7B3DE9250413D0AD743844355411F85EBF1DC9250410AD7A3A08443554152B81EB5DB925041AE47E1BA8443554185EB51B8DA92504114AE47B18443554100000090D892504148E17A5484435541A4703DEAD2925041F6285CCF82435541713D0AC7CF9250410AD7A3608143554148E17A44CA9250413D0AD7037F435541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000713D0A87D09250410AD7A3C09B4355411F85EB31D59250415C8FC2A5A1435541CDCCCC6CDA9250413D0AD7A39B4355418FC2F5E8DD92504148E17A149743554114AE4711E292504185EB5198914355410BD481C1E19250414D90DEC48F43554138867E20E1925041FCEA5E158C435541A7510FEBE09250411435EEB78A4355414578E81BE192504110EEEA028943554181F2C53BE1925041515BCEE086435541785002A1E19250411C0BBA2C854355419251470EE292504154601478834355418AA3ADDCDD92504103269564844355414D5C8485DA9250416BA58EBF84435541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>208394 - 3502911
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000014000000CDCCCC6CDA9250413D0AD7A39B4355418FC2F5E8DD92504148E17A149743554114AE4711E292504185EB519891435541AE47E1FAE09250418FC2F5388B4355419A999949E19250413D0AD7F385435541295C8F12E2925041A4703D6A834355413D0AD7B3DE9250413D0AD743844355411F85EBF1DC9250410AD7A3A08443554152B81EB5DB925041AE47E1BA8443554185EB51B8DA92504114AE47B18443554100000090D892504148E17A5484435541A4703DEAD2925041F6285CCF82435541713D0AC7CF9250410AD7A3608143554148E17A44CA9250413D0AD7037F435541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000713D0A87D09250410AD7A3C09B4355411F85EB31D59250415C8FC2A5A1435541CDCCCC6CDA9250413D0AD7A39B4355418FC2F5E8DD92504148E17A149743554114AE4711E292504185EB5198914355410BD481C1E19250414D90DEC48F43554138867E20E1925041FCEA5E158C435541A7510FEBE09250411435EEB78A4355414578E81BE192504110EEEA028943554181F2C53BE1925041515BCEE086435541785002A1E19250411C0BBA2C854355419251470EE292504154601478834355418AA3ADDCDD92504103269564844355414D5C8485DA9250416BA58EBF84435541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>208914 - 3690270
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000004400000085EB51887EA350419A999989523855418FC2F5887BA35041CDCCCC4C52385541333333937AA35041B81E853B5238554185EB51E877A3504166666606523855416666660675A35041CDCCCCCC51385541B81E853B72A35041AE47E1EA5138554148E17AF46FA350418FC2F50852385541AE47E10A6FA3504133333323473855410AD7A3606DA35041713D0A77473855417B14AEC769A35041B81E852B483855413D0AD7E367A350419A99998948385541A4703D1A67A3504114AE47B1483855411F85EB4166A35041F6285CEF483855410AD7A33064A35041713D0A8749385541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002300000085EB518853A350413D0AD79384385541C3F5283C59A35041F6285CEF83385541333333735BA350413D0AD7538538554148E17A145FA35041C3F5289C873855410AD7A37063A35041A4703D5A8A385541E17A14CE64A3504114AE47B1873855419A99995966A35041713D0A4783385541295C8F6269A35041E17A140E7B3855415C8FC2A56AA35041B81E852B783855415C8FC2156DA35041EC51B86E74385541CC20F1B27CA35041E78070CC58385541716915EC6FA3504108539D2656385541AF6F4F836EA35041EC8B02FA553855418089009A68A35041A782831456385541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>84734 - 21538
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000140000009A9999E9BCD05041713D0A67D452544148E17AF4BCD05041666666F6D1525441B81E85DBC0D05041000000A0D15254415C8FC2C5C5D050413D0AD753D2525441CDCCCCFCCAD050417B14AE87D3525441D7A370CDCCD050410AD7A340D45254417B14AE07CED05041E17A14BED35254410AD7A350D1D0504100000090CF525441E17A14DED6D05041F6285C7FC85254413D0AD713DCD05041D7A370DDC152544133333383D0D05041295C8FF2BF5254418FC2F5F8C8D05041713D0A17BE525441F6285C7FBDD05041F6285C3FBB525441333333A3AED0504185EB5168B8525441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000074B626ADCDD05041E54BE12DD4525441B8884B3AC7D0504143AEBDA9D25254416987037BC3D0504164FAF9FFD1525441553C8ED8C0D0504170A141A0D1525441E2167364BED050415AAE93D6D1525441E86466F3BCD05041A6F06734D252544156DBAEEABCD050415F70DC28D452544167840D27C8D05041605DFA1ED552544100000080CBD050415C8FC255D55254413260613DCCD05041BED28178D55254418B73F29ACCD05041EB5E8380D552544174B626ADCDD05041E54BE12DD4525441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>85787 - 3133583
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002100000085EB51788AB85041B81E85ABAD0655413333334390B850410AD7A310AC065541F6285C7F94B850413D0AD7B3AA065541CDCCCC5C98B85041333333B3A8065541000000E0A1B8504185EB5188A3065541A4703D4AA7B85041E17A14FEA00655413D0AD793A8B850418FC2F5A89F065541C3F528DCABB850413D0AD7D3960655411F85EB21ABB8504133333333950655418FC2F5389BB85041CDCCCCEC8E06554152B81E9597B85041E17A148E900655417B14AEE791B85041EC51B8BE9306554185EB51488AB850416666666690065541713D0A3784B85041A4703D4A8D065541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000000366DE0885B850415B91CAB58D06554185EB51488AB8504166666666900655417B14AEE791B85041EC51B8BE9306554152B81E9597B85041E17A148E900655418FC2F5389BB85041CDCCCCEC8E0655410AD7A3408BB85041B81E85BB8806554196ABC3BC86B850411A365C158706554196B5613A86B850411599BDE586065541A2A88AE783B85041CEAFD0148D065541FD0CEA3C84B85041623E404D8D0655410366DE0885B850415B91CAB58D065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>85787 - 3515170
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002100000085EB51788AB85041B81E85ABAD0655413333334390B850410AD7A310AC065541F6285C7F94B850413D0AD7B3AA065541CDCCCC5C98B85041333333B3A8065541000000E0A1B8504185EB5188A3065541A4703D4AA7B85041E17A14FEA00655413D0AD793A8B850418FC2F5A89F065541C3F528DCABB850413D0AD7D3960655411F85EB21ABB8504133333333950655418FC2F5389BB85041CDCCCCEC8E06554152B81E9597B85041E17A148E900655417B14AEE791B85041EC51B8BE9306554185EB51488AB850416666666690065541713D0A3784B85041A4703D4A8D065541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000000366DE0885B850415B91CAB58D06554185EB51488AB8504166666666900655417B14AEE791B85041EC51B8BE9306554152B81E9597B85041E17A148E900655418FC2F5389BB85041CDCCCCEC8E0655410AD7A3408BB85041B81E85BB8806554196ABC3BC86B850411A365C158706554196B5613A86B850411599BDE586065541A2A88AE783B85041CEAFD0148D065541FD0CEA3C84B85041623E404D8D0655410366DE0885B850415B91CAB58D065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>86232 - 425867
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000100000007B14AE17ADB65041B81E85AB5B075541C3F5281CB0B6504185EB51B858075541EC51B86EB3B650410AD7A34058075541CDCCCC4CB8B65041C3F5280C59075541E17A14BEBDB650415C8FC2055B07554185EB5178C5B6504148E17A145D0755411F85EBF1CAB65041C3F5285C5D075541E17A144ECDB65041A4703DDA5C075541F6285CDFCBB6504152B81EA5530755417B14AE27BCB65041AE47E16A5207554166666686B3B65041333333D35107554166666666AEB650411F85EB315207554148E17A04A9B6504114AE475153075541E17A14DEA5B65041C3F5287C54075541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000050000000C054B98C6B6504121D69A3B530755410BD799BEC3B65041E1199E025307554185AE003EC1B6504160038F515B0755417B6FCFC4C3B650418E7E89205C0755410C054B98C6B6504121D69A3B53075541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>86751 - 1672564
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001A00000048E17AA42FB250415C8FC2D5FB0C55413D0AD74333B250418FC2F5B8FF0C55411F85EBC13FB2504114AE47E1FC0C5541E17A149E50B2504133333383F80C5541295C8F524FB25041AE47E1EAF40C55415C8FC2055EB25041AE47E11AF80C5541D7A370AD69B250419A999949FB0C5541000000C079B2504133333313F60C55413D0AD72386B2504152B81EB5F10C55411F85EBE195B250418FC2F508ED0C5541EC51B8FE9FB25041713D0A77E90C554166666656A0B250411F85EB81E70C5541D7A370BDA5B2504152B81E95E50C5541EC51B8AEBCB250415C8FC235E90C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000EC51B8FE9FB25041713D0A77E90C554166666656A0B250411F85EB81E70C5541D7A370BDA5B2504152B81E95E50C55412539B1A2B4B2504181230BF0E70C554151E212AABCB25041B716CB20E90C55413D0AD7A3B6B2504114AE47F1CD0C5541000000509CB250417B14AE67D10C55415C8FC2B58DB250413D0AD7D3D40C55414B2A5E718BB2504136A2C5A4D50C554101FD2BBA83B2504179B4CF6BD80C554179C8EC8779B250414D764B14DC0C55412AA2F29174B250416E0760D0DD0C5541D77457766AB25041DAD03259E10C5541729C6E6F61B250418399BA79E40C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>86751 - 3591101
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001A00000048E17AA42FB250415C8FC2D5FB0C55413D0AD74333B250418FC2F5B8FF0C55411F85EBC13FB2504114AE47E1FC0C5541E17A149E50B2504133333383F80C5541295C8F524FB25041AE47E1EAF40C55415C8FC2055EB25041AE47E11AF80C5541D7A370AD69B250419A999949FB0C5541000000C079B2504133333313F60C55413D0AD72386B2504152B81EB5F10C55411F85EBE195B250418FC2F508ED0C5541EC51B8FE9FB25041713D0A77E90C554166666656A0B250411F85EB81E70C5541D7A370BDA5B2504152B81E95E50C5541EC51B8AEBCB250415C8FC235E90C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000EC51B8FE9FB25041713D0A77E90C554166666656A0B250411F85EB81E70C5541D7A370BDA5B2504152B81E95E50C55412539B1A2B4B2504181230BF0E70C554151E212AABCB25041B716CB20E90C55413D0AD7A3B6B2504114AE47F1CD0C5541000000509CB250417B14AE67D10C55415C8FC2B58DB250413D0AD7D3D40C55414B2A5E718BB2504136A2C5A4D50C554101FD2BBA83B2504179B4CF6BD80C554179C8EC8779B250414D764B14DC0C55412AA2F29174B250416E0760D0DD0C5541D77457766AB25041DAD03259E10C5541729C6E6F61B250418399BA79E40C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>88798 - 290262
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000200000013000000713D0A670FB55041000000709913554152B81E350DB55041713D0AA7A013554114AE47D108B55041295C8F229F13554114AE47C101B55041C3F528CCB1135541C3F5280C03B55041C3F528ECB2135541C3F5283C17B5504152B81E45BE135541AE47E15A19B5504100000040BA135541000000901FB550415C8FC225BD135541B81E850B26B550410AD7A360AA1355410000003031B55041AE47E11A8A13554148E17A4429B550418FC2F5A888135541F6285CBF1EB55041713D0A078F135541000000600EB550413D0AD78396135541C3F5287C0CB550413D0AD79397135541 [...]
+</a>
+
+<b>
+01060000000100000001030000000300000017000000F6285CBF1EB55041713D0A078F135541AD44AC661CB55041F04BBF1990135541861C3CE41BB55041F6F69F5C901355410BB4FFBB1BB55041DF4E8776901355418FD1683F19B550414227ED8A9113554149882CFD18B55041A8A137A991135541D949F37A18B550413D7AC5E4911355419DFB93F717B55041E6CDD92092135541F9D55ED717B550413B7D942F92135541121BB6171BB55041661BF852961355418F09A97811B550412AD4E6329B1355413668BD9B0EB550412624E911A21355410977DDDD09B55041E8B80132A0135541C297B48D09B5504193084512A0135541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>88936 - 3025821
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000500000085EB51B82CB55041666666B670115541295C8FE246B55041333333F3891155418FC2F5A84AB5504152B81EA585115541C3F5286C30B55041666666566C11554185EB51B82CB55041666666B670115541
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000040BAF3D746B55041BB4147FF89115541389841D646B550418A6441F48911554110C46FF72EB55041973921E1721155418758C1BF2CB550415A5A92BD7011554148B79C142AB5504117BEB2F77311554189D121BD37B550412F41790081115541FE78EAF733B5504163DAC6DF841155412FCBB19A40B550410955992B91115541CDCCCC9C44B550419A9999898C11554140BAF3D746B55041BB4147FF89115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>88936 - 3404808
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000500000085EB51B82CB55041666666B670115541295C8FE246B55041333333F3891155418FC2F5A84AB5504152B81EA585115541C3F5286C30B55041666666566C11554185EB51B82CB55041666666B670115541
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000040BAF3D746B55041BB4147FF89115541389841D646B550418A6441F48911554110C46FF72EB55041973921E1721155418758C1BF2CB550415A5A92BD7011554148B79C142AB5504117BEB2F77311554189D121BD37B550412F41790081115541FE78EAF733B5504163DAC6DF841155412FCBB19A40B550410955992B91115541CDCCCC9C44B550419A9999898C11554140BAF3D746B55041BB4147FF89115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>291911 - 55774
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000025000000295C8F6212055141A4703D5A301C5541295C8F42150551413D0AD7432F1C55419A9999E914055141E17A142E2E1C554114AE47710E0551411F85EBC12A1C5541AE47E15A09055141295C8F42271C554152B81E5508055141D7A3701D251C55418FC2F5280205514133333353211C5541B81E85FBFF04514152B81E45201C55411F85EB21FE045141713D0AA71F1C5541000000F0FC045141CDCCCC5C1F1C554166666626FB04514185EB51381F1C554114AE47E1F8045141EC51B83E1F1C5541D7A370DDF50451411F85EB711F1C55419A999939F4045141000000A01F1C5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000FBBDD546F5045141B72773821F1C5541151B4328F7045141E6CECB97221C5541CD7FAFC0FA0451412E67FC6A251C5541C99C00A8FE045141EF98EB7F281C554194ECCE12030551418D96CFA22D1C554133335C55050551412F9FC913311C55411FC1BD91080551413269E9FB361C554153FD7B3D0B055141F1512FF13C1C5541E4ECE67D18055141B448EEC83A1C55418576A1A516055141ACDE852B341C5541EC51B82E1405514185EB5118351C554169DA642D1405514166F96615351C55410DA82E61120551415DF1B35B301C554119C5DE62120551413DF40E5B301C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>91645 - 186012
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000006000000CDCCCCDCD7BA5041EC51B85E99755441F6285CCFE0BA504114AE4791A7755441C3F5288CE4BA50410AD7A310A475544100000030E7BA50419A999929A27554411F85EBB1DDBA5041000000D093755441CDCCCCDCD7BA5041EC51B85E99755441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000683D0AE7EEBA50418BEB514884755441A4703D6AECBA50417B14AE1786755441EC51B88EE6BA5041CDCCCC5C8B7554413085EBB1DDBA5041EFFFFFCF93755441A7EFE527E3BA50414DED59119C755441F8FFFF2FE7BA50418E999929A27554418FC2F548EDBA504148E17AC49D755441A78715B1F2BA50417C210D99967554413FDAC98DF1BA5041338999F29575544176B9F368F0BA5041E5AC789C957554411F7F2D7AF0BA50410DDD4FAB9475544100E7C1F2F0BA504144BC798693755441D4079817F2BA5041683DFEC892755441559DFA19F3BA5041F1A79BC691755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>209381 - 1195660
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A0000006666663639385141D7A3709D908754410AD7A34034385141D7A3700D968754417B14AE0735385141000000B096875441CDCCCC7C4C38514185EB5188A1875441E17A142E633851415C8FC205AC875441F6285C4F63385141AE47E1AAAD875441AE47E1EA6438514148E17A24AF8754415C8FC2A5663851411F85EB61B2875441D7A3704D68385141CDCCCC6CB487544114AE47316B3851418FC2F5B8B6875441A4703D1A72385141C3F5281CBB875441EC51B89E7A3851410AD7A340C0875441EC51B86E7D385141F6285C0FC1875441F6285CFF833851419A9999A9C1875441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000F90E86CD923851413196CCC3BD875441C1634A19903851418CA7C22BBF87544154936CA88C385141DF320534C0875441AFAB830B8938514199324226C18754416E389558853851410A61587EC1875441DC370F3D87385141181B74ECC1875441BC659F79893851416CA6B6F4C287544144AAB4C68D3851411E775773C587544175D45D509C385141562ED557CF8754415DFE43CCAB3851410B90F4F1BF8754419E71327FAF3851419105FB12BC8754410C71AC63B1385141887A7B18BA875441DDB584BEB43851415F7BC441B7875441AE47E1AAB538514166666616B6875441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>209381 - 3339695
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A0000006666663639385141D7A3709D908754410AD7A34034385141D7A3700D968754417B14AE0735385141000000B096875441CDCCCC7C4C38514185EB5188A1875441E17A142E633851415C8FC205AC875441F6285C4F63385141AE47E1AAAD875441AE47E1EA6438514148E17A24AF8754415C8FC2A5663851411F85EB61B2875441D7A3704D68385141CDCCCC6CB487544114AE47316B3851418FC2F5B8B6875441A4703D1A72385141C3F5281CBB875441EC51B89E7A3851410AD7A340C0875441EC51B86E7D385141F6285C0FC1875441F6285CFF833851419A9999A9C1875441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000F90E86CD923851413196CCC3BD875441C1634A19903851418CA7C22BBF87544154936CA88C385141DF320534C0875441AFAB830B8938514199324226C18754416E389558853851410A61587EC1875441DC370F3D87385141181B74ECC1875441BC659F79893851416CA6B6F4C287544144AAB4C68D3851411E775773C587544175D45D509C385141562ED557CF8754415DFE43CCAB3851410B90F4F1BF8754419E71327FAF3851419105FB12BC8754410C71AC63B1385141887A7B18BA875441DDB584BEB43851415F7BC441B7875441AE47E1AAB538514166666616B6875441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>834308 - 90043
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000250000001F85EBD112CC5041CDCCCC5CCA225441CDCCCC9C13CC5041D7A3703DC7225441F6285C5F13CC504148E17AC4C1225441D7A3703D12CC5041EC51B89EB5225441B81E850B12CC50415C8FC285B322544114AE477111CC5041EC51B88EAE225441000000F010CC5041F6285C6FA8225441C3F528FC0ECC5041CDCCCC5CA622544185EB51B80ECC504185EB51D8A4225441F6285CFF0DCC5041F6285C1FA4225441D7A370BD0CCC5041AE47E15AA4225441B81E857B08CC504133333303A4225441AE47E19A08CC504148E17A84A22254410AD7A3E00CCC504185EB51D8A2225441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000008000000C495F8AD00CC5041FA590FF0C32254418140975C01CC5041EA7F3758C4225441ACDA7BB501CC5041BE8B548BC422544117CB5B1003CC5041EBF0426CC3225441920F344003CC5041151083B6C0225441BB2E748A00CC5041FADB35DFBF225441AF5E6604FECB50419C958459C2225441C495F8AD00CC5041FA590FF0C3225441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>211614 - 4132577
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001900000014AE4791AE2951417B14AEA7664055419A999959B7295141E17A145E76405541713D0A37C0295141AE47E13A8640554114AE47F1C12951411F85EBC1864055413D0AD773C8295141A4703D7A8340554148E17AD4CA295141CDCCCC6C88405541AE47E16ACC295141F6285CDF8840554114AE47B1D329514166666626844055411F85EB71D8295141A4703D7A80405541295C8FE2D3295141295C8F025A40554166666616F2295141AE47E16A5C4055415C8FC215F3295141D7A3707D5C405541D7A3702DF32951411F85EB815A405541AE47E1BAF2295141000000C04D405541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000029A56D82F2295141734FBB725C4055412FBF2778F229514107FD0C805A4055417D189926F22951415FCEB7984D405541C5A59CFFF12951412963CA523E405541A5D22295F12951414BBE7EE23640554117D9CE57EB29514117D9CEC736405541759318A4EA295141819543D32E405541C1630D29DD2951410449C34636405541EDB4A63BCF2951419819C6503E405541D3DA4522CD295141F6D543B83F40554154E3A583CE295141BE9F1AC759405541AC39C9B4CB295141823CBBC95A40554181C54858BF295141F51F3C3C5F405541456A3168B62951416DDD6D7362405541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>211614 - 4132585
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001900000014AE4791AE2951417B14AEA7664055419A999959B7295141E17A145E76405541713D0A37C0295141AE47E13A8640554114AE47F1C12951411F85EBC1864055413D0AD773C8295141A4703D7A8340554148E17AD4CA295141CDCCCC6C88405541AE47E16ACC295141F6285CDF8840554114AE47B1D329514166666626844055411F85EB71D8295141A4703D7A80405541295C8FE2D3295141295C8F025A40554166666616F2295141AE47E16A5C4055415C8FC215F3295141D7A3707D5C405541D7A3702DF32951411F85EB815A405541AE47E1BAF2295141000000C04D405541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000D34D6200D82951418716D91E81405541333333E3D8295141295C8F2280405541AE47E1EADC295141AE47E10A7D40554114AE4771E62951411F85EBD175405541CDCCCC2CEE295141AE47E1FA6F405541333333F3EF2951418FC2F5986E405541E17A14DEF3295141B81E858B6B4055415C8FC215F3295141D7A3707D5C40554129A56D82F2295141734FBB725C40554133333383F2295141E92631985C405541E923EDADE7295141EE577D965B4055413B9EE4ECDC2951418F05AB965A40554109EA47ECD829514124B433475A405541295C8FE2D3295141295C8F025A405541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>211723 - 31591
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000140000001F85EBD12E205141B81E85DB3F335541E17A144E39205141A4703DEA32335541295C8F42412051413D0AD753293355410000003042205141EC51B8DE27335541E17A14FE37205141E17A148E24335541A4703D1A2D2051417B14AE371F335541CDCCCCAC1F205141F6285C4F17335541D7A3707D162051411F85EB9111335541C3F5280C122051415C8FC2350E335541AE47E1BA012051418FC2F538003355415C8FC285002051415C8FC2550133554148E17A64F21F5141EC51B86E0D3355413D0AD7A3F71F5141D7A3705D123355413D0AD753052051417B14AE4720335541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000EAA470D93520514132062D81233355419C5AD51F32205141583AC9AD21335541A32674AD30205141E09B40F820335541A4703D1A2D2051417B14AE371F335541A9F2802B25205141E8C5C58B1A3355418ECFC47C22205141D01F5AF7183355417828509821205141A87036B11833554178285098212051410ED917381933554130AF370422205141C65FFFA3193355411B6FC30424205141F898A3381B33554119792AA726205141D8B341E81C3355413F17488D2A205141C373CDE81E3355410AF2713D2E20514165BA405521335541A293F75830205141DF6CFD7D22335541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>211723 - 76220
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000140000001F85EBD12E205141B81E85DB3F335541E17A144E39205141A4703DEA32335541295C8F42412051413D0AD753293355410000003042205141EC51B8DE27335541E17A14FE37205141E17A148E24335541A4703D1A2D2051417B14AE371F335541CDCCCCAC1F205141F6285C4F17335541D7A3707D162051411F85EB9111335541C3F5280C122051415C8FC2350E335541AE47E1BA012051418FC2F538003355415C8FC285002051415C8FC2550133554148E17A64F21F5141EC51B86E0D3355413D0AD7A3F71F5141D7A3705D123355413D0AD753052051417B14AE4720335541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000EAA470D93520514132062D81233355419C5AD51F32205141583AC9AD21335541A32674AD30205141E09B40F820335541A4703D1A2D2051417B14AE371F335541A9F2802B25205141E8C5C58B1A3355418ECFC47C22205141D01F5AF7183355417828509821205141A87036B11833554178285098212051410ED917381933554130AF370422205141C65FFFA3193355411B6FC30424205141F898A3381B33554119792AA726205141D8B341E81C3355413F17488D2A205141C373CDE81E3355410AF2713D2E20514165BA405521335541A293F75830205141DF6CFD7D22335541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>871953 - 206312
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B0000000AD7A3B0047251413D0AD7F33DAF5441CDCCCCEC197251413D0AD7E338AF5441666666F619725141EC51B8EE36AF54419A9999791A7251415C8FC20531AF54419A999949147251419A99990932AF5441CDCCCC2C027251419A99996938AF5441B81E851BFE7151419A99993937AF5441A4703D6AF671514148E17A843AAF5441AE47E10AF571514152B81E953AAF544185EB5178F6715141B81E850B35AF54413D0AD703EA7151418FC2F57837AF54419A9999B9DD7151416666663639AF5441EC51B89EDC7151419A9999D93AAF54413D0AD763DB715141CDCCCC9C3CAF5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000B81E851BFE7151419A99993937AF54417F413D6AF671514109F27B843AAF54417600E10AF571514164281F953AAF54419F6EA480F1715141E42D7A943BAF544196EDFF2FEF71514118B047E140AF54410FA00369EF715141906F62D640AF5441BEA5E1F1F2715141578F762940AF54417EEA5078F9715141E44D3CEA3EAF54411DA471ED00725141E2808E823CAF54410AD7A3B0047251413D0AD7F33DAF5441CDCCCCEC197251413D0AD7E338AF5441666666F619725141EC51B8EE36AF54419A9999791A7251415C8FC20531AF54419A999949147251419A99990932AF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>871953 - 394329
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B0000000AD7A3B0047251413D0AD7F33DAF5441CDCCCCEC197251413D0AD7E338AF5441666666F619725141EC51B8EE36AF54419A9999791A7251415C8FC20531AF54419A999949147251419A99990932AF5441CDCCCC2C027251419A99996938AF5441B81E851BFE7151419A99993937AF5441A4703D6AF671514148E17A843AAF5441AE47E10AF571514152B81E953AAF544185EB5178F6715141B81E850B35AF54413D0AD703EA7151418FC2F57837AF54419A9999B9DD7151416666663639AF5441EC51B89EDC7151419A9999D93AAF54413D0AD763DB715141CDCCCC9C3CAF5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000B81E851BFE7151419A99993937AF54417F413D6AF671514109F27B843AAF54417600E10AF571514164281F953AAF54419F6EA480F1715141E42D7A943BAF544196EDFF2FEF71514118B047E140AF54410FA00369EF715141906F62D640AF5441BEA5E1F1F2715141578F762940AF54417EEA5078F9715141E44D3CEA3EAF54411DA471ED00725141E2808E823CAF54410AD7A3B0047251413D0AD7F33DAF5441CDCCCCEC197251413D0AD7E338AF5441666666F619725141EC51B8EE36AF54419A9999791A7251415C8FC20531AF54419A999949147251419A99990932AF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>965531 - 2749854
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000290000006EA896A3653D51419247095251E35441D0DA7B5F6A3D514184D10BCE4EE35441E0643E016E3D5141BA576C9B4DE35441A9DEDD336F3D5141675567424DE35441BF3B995C703D5141675567424DE35441DBB73DE8713D51411B724B4C4DE35441BA3650B4723D5141D39D0A264DE354411AA099E6763D5141C487C62E4DE3544102E4F8C6783D5141EB59AB454BE35441C5EC00857D3D5141D13710C247E354417D6FDD7C803D514131F7FFAF44E35441D0F85711813D5141588CFAA943E3544153FA13E57D3D51410E6CF22042E35441CE5573907C3D5141358718E142E35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002500000048E17A14463D51410000007032E354418FC2F5B8413D51413D0AD71330E35441D7A370CD413D5141E17A14CE30E354411F85EB71423D5141000000D036E354415C8FC215443D514114AE477145E3544152B81EC5523D51419A9999894AE354410AD7A3F05B3D51417B14AEB74DE3544100000010603D514148E17A344FE354410AD7A3A0653D51413D0AD75351E35441CDCCCCEC6B3D51419A9999794DE35441F6285CEF703D5141F6285C6F4BE35441C3F5287C713D5141000000A04CE354418FC2F5D8743D51411F85EB514DE35441000000F0763D514152B81E554DE35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>965531 - 5090462
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000290000006EA896A3653D51419247095251E35441D0DA7B5F6A3D514184D10BCE4EE35441E0643E016E3D5141BA576C9B4DE35441A9DEDD336F3D5141675567424DE35441BF3B995C703D5141675567424DE35441DBB73DE8713D51411B724B4C4DE35441BA3650B4723D5141D39D0A264DE354411AA099E6763D5141C487C62E4DE3544102E4F8C6783D5141EB59AB454BE35441C5EC00857D3D5141D13710C247E354417D6FDD7C803D514131F7FFAF44E35441D0F85711813D5141588CFAA943E3544153FA13E57D3D51410E6CF22042E35441CE5573907C3D5141358718E142E35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002500000048E17A14463D51410000007032E354418FC2F5B8413D51413D0AD71330E35441D7A370CD413D5141E17A14CE30E354411F85EB71423D5141000000D036E354415C8FC215443D514114AE477145E3544152B81EC5523D51419A9999894AE354410AD7A3F05B3D51417B14AEB74DE3544100000010603D514148E17A344FE354410AD7A3A0653D51413D0AD75351E35441CDCCCCEC6B3D51419A9999794DE35441F6285CEF703D5141F6285C6F4BE35441C3F5287C713D5141000000A04CE354418FC2F5D8743D51411F85EB514DE35441000000F0763D514152B81E554DE35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>99482 - 3368419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000007B14AEE75B8450415C8FC205BE1B5441713D0AD74784504100000040CB1B5441E17A143E4C845041295C8FD2D61B5441D7A3709D4E845041EC51B8AED61B5441D7A370FD52845041713D0A77D61B54415C8FC2555984504152B81E85D61B5441F6285CDF5D845041CDCCCC2CD71B5441E17A148E5F8450417B14AE47D71B544185EB51285E845041C3F5289CCD1B54417B14AEE75B8450415C8FC205BE1B5441
+</a>
+
+<b>
+010600000001000000010300000001000000340000005D33B6164B8450416F27BC1BC91B5441318AA1E6498450418E5B64E0C71B5441758EDFFC4A8450410577C2B8C61B5441CA00CBAC4F845041CC06F693C21B54410ECC2D8752845041FA0C85BABE1B544143BB6A665684504153CD7E62B91B5441BB1E7D4857845041084A69D4B51B544188F6CBEA57845041D96D755EB11B5441DE7B9946598450418D7ED1C1AA1B5441C7E7C0975984504181ECB0E0A81B54417286CD405984504186DB1F45A71B544188F6CBEA5784504185B74540A61B544192B0CFAE53845041CA97A951A61B5441491C904251845041AB82415DA61B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235630 - 968954
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000295C8F6276A35141F6285C9FFA9E5441EC51B84E73A351418FC2F598FB9E54419A99994972A351415C8FC2F5FB9E5441000000C074A3514114AE47C10A9F544152B81E4577A35141295C8FE2199F5441713D0A577AA3514148E17A441B9F54411F85EB917BA3514152B81E851C9F54413D0AD7137CA35141F6285CCF1C9F54417B14AEC780A3514133333373209F54413D0AD7C37DA35141A4703D5A0E9F5441666666467AA351413D0AD763F99E5441295C8F6276A35141F6285C9FFA9E5441
+</a>
+
+<b>
+0106000000010000000103000000010000001600000084953D4F6AA3514192A9B564FF9E544170C3D78572A35141F5CBB45FFD9E54412385B64972A35141B15070F6FB9E5441ADCB1F146EA3514164B26076FD9E54419CE74D076AA35141CE6795A9FE9E5441B81E85CB62A351410AD7A3D0009F544148E17A8459A35141B81E859B039F54413D0AD7935AA351410AD7A3100D9F5441666666F65AA35141295C8F52189F5441AE47E14A64A3514166666656179F5441B81E85AB65A351417B14AEE7169F5441C3F5288C66A3514114AE47A1169F5441922C568D6BA351414F78666B169F5441FBB3DFAE6BA351418422226E169F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235738 - 222990
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000300000074000000295C8F6293A2514114AE47816DA154416666660691A2514185EB51186EA154417B14AE478DA251413D0AD73370A15441D7A3707D8AA251416666660671A154419A9999698AA251415C8FC2B572A15441E17A146E8DA25141CDCCCC8C74A15441EC51B8FE8EA251419A99991976A15441EC51B8EE93A2514148E17A8476A15441AE47E11A9AA251415C8FC2A578A1544152B81E75A0A251410AD7A30078A15441EC51B8CEA1A251415C8FC21579A1544185EB5188A4A25141AE47E13A7CA15441B81E858BA5A251419A9999C97EA15441A4703D8AA4A25141C3F528DC7FA15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005400000014AE4741B0A2514114AE47D190A154413E70FE97AFA25141F8C0F65B8DA15441A4703D1AADA251415C8FC2C587A154416826D261AFA251412FE9547285A154416826D261AFA25141F9F4F9F684A1544125689FBAAFA2514180715F4584A154414E2BA04EB0A2514145EDC49383A154411AF5B36BB0A2514126683AC882A154418BFD256BB0A251415AF302C782A1544184D6E36AB0A251415BD271C682A15441F56D216AB0A251416E51C7C482A1544157653844AFA251419EE7F6A682A15441B05F6A57AEA25141D81E282681A15441919C69C3ADA251419D9A8D7480A15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235738 - 360674
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000300000074000000295C8F6293A2514114AE47816DA154416666660691A2514185EB51186EA154417B14AE478DA251413D0AD73370A15441D7A3707D8AA251416666660671A154419A9999698AA251415C8FC2B572A15441E17A146E8DA25141CDCCCC8C74A15441EC51B8FE8EA251419A99991976A15441EC51B8EE93A2514148E17A8476A15441AE47E11A9AA251415C8FC2A578A1544152B81E75A0A251410AD7A30078A15441EC51B8CEA1A251415C8FC21579A1544185EB5188A4A25141AE47E13A7CA15441B81E858BA5A251419A9999C97EA15441A4703D8AA4A25141C3F528DC7FA15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005400000014AE4741B0A2514114AE47D190A154413E70FE97AFA25141F8C0F65B8DA15441A4703D1AADA251415C8FC2C587A154416826D261AFA251412FE9547285A154416826D261AFA25141F9F4F9F684A1544125689FBAAFA2514180715F4584A154414E2BA04EB0A2514145EDC49383A154411AF5B36BB0A2514126683AC882A154418BFD256BB0A251415AF302C782A1544184D6E36AB0A251415BD271C682A15441F56D216AB0A251416E51C7C482A1544157653844AFA251419EE7F6A682A15441B05F6A57AEA25141D81E282681A15441919C69C3ADA251419D9A8D7480A15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235745 - 223003
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000E0000000000009096A25141666666F6C9A154410AD7A3E090A25141D7A3708DCAA15441EC51B87E8BA251410AD7A3F0CBA154419A99992986A25141D7A370ADCEA154410000004082A2514166666636D1A154418FC2F57881A25141AE47E1EAD1A15441AE47E17A85A25141AE47E1DAD4A15441AE47E15A8AA25141AE47E15AD7A15441AE47E19A91A25141AE47E1BAD8A15441AE47E14A95A25141AE47E1EADAA1544152B81ED597A251413D0AD753DEA1544185EB514898A25141333333D3DDA15441713D0AE79CA25141713D0AA7D8A154410000009096A25141666666F6C9A15441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000C2390AE79CA2514191410AA7D8A15441E1FFFF8F96A25141696666F6C9A154410AD7A3E090A25141D7A3708DCAA15441EC51B87E8BA251410AD7A3F0CBA15441D744AE5D87A251413981480FCEA15441A499992986A25141E2A370ADCEA154412C56E22283A25141D6ACAFB7D0A1544138BA155382A25141C1D2082AD1A154418FC2F57881A25141AE47E1EAD1A15441AE47E17A85A25141AE47E1DAD4A15441D5AE89F887A251419F4EE221D6A1544141D4AE638AA2514160AD8C5CD7A1544107F41E6A8AA25141A440C55DD7A15441F62686DF8BA25141279E96A4D7A15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235745 - 353651
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000E0000000000009096A25141666666F6C9A154410AD7A3E090A25141D7A3708DCAA15441EC51B87E8BA251410AD7A3F0CBA154419A99992986A25141D7A370ADCEA154410000004082A2514166666636D1A154418FC2F57881A25141AE47E1EAD1A15441AE47E17A85A25141AE47E1DAD4A15441AE47E15A8AA25141AE47E15AD7A15441AE47E19A91A25141AE47E1BAD8A15441AE47E14A95A25141AE47E1EADAA1544152B81ED597A251413D0AD753DEA1544185EB514898A25141333333D3DDA15441713D0AE79CA25141713D0AA7D8A154410000009096A25141666666F6C9A15441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000C2390AE79CA2514191410AA7D8A15441E1FFFF8F96A25141696666F6C9A154410AD7A3E090A25141D7A3708DCAA15441EC51B87E8BA251410AD7A3F0CBA15441D744AE5D87A251413981480FCEA15441A499992986A25141E2A370ADCEA154412C56E22283A25141D6ACAFB7D0A1544138BA155382A25141C1D2082AD1A154418FC2F57881A25141AE47E1EAD1A15441AE47E17A85A25141AE47E1DAD4A15441D5AE89F887A251419F4EE221D6A1544141D4AE638AA2514160AD8C5CD7A1544107F41E6A8AA25141A440C55DD7A15441F62686DF8BA25141279E96A4D7A15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>100197 - 3368419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000012000000A4703DCA69845041B81E85ABBA1B5441000000106A8450411F85EB01B51B5441E17A141E678450415C8FC2A5A11B54411F85EBE1628450419A9999A9A21B5441E17A14EE5A8450413D0AD783A41B54411F85EB6158845041F6285CCFA11B5441F6285C3F558450415C8FC225A31B5441B81E855B508450417B14AEE7A41B54413D0AD7D34F8450411F85EB41A71B5441000000004F8450413D0AD7D3AB1B544148E17AC44D8450417B14AEC7B01B5441666666964C84504148E17AC4B31B54417B14AEE749845041AE47E1FAB51B544148E17A84468450418FC2F508BA1B5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000340000005D33B6164B8450416F27BC1BC91B5441318AA1E6498450418E5B64E0C71B5441758EDFFC4A8450410577C2B8C61B5441CA00CBAC4F845041CC06F693C21B54410ECC2D8752845041FA0C85BABE1B544143BB6A665684504153CD7E62B91B5441BB1E7D4857845041084A69D4B51B544188F6CBEA57845041D96D755EB11B5441DE7B9946598450418D7ED1C1AA1B5441C7E7C0975984504181ECB0E0A81B54417286CD405984504186DB1F45A71B544188F6CBEA5784504185B74540A61B544192B0CFAE53845041CA97A951A61B5441491C904251845041AB82415DA61B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>100814 - 5323389
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000280000001F85EBC1BD91504114AE47119E235441A4703D0ABD915041E17A145E9C235441666666F6BC91504114AE47D19A2354411F85EB21BC915041E17A14EE982354418FC2F578BC915041000000709823544148E17A64BC9150419A9999B997235441CDCCCC7CBB915041EC51B8FE9623544185EB51D8BA91504185EB514896235441295C8F72BA9150416666662695235441D7A3702DBA9150413D0AD7C3932354415C8FC205BA915041000000D092235441F6285CEFB9915041C3F5281C92235441E17A140EBA915041D7A3708D912354415C8FC2A5BA91504152B81ED58E235441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000004B14C9C6B8915041CD469A4AAA2354417D0E2BD4B891504153F9294CAA235441906DE4A6B8915041A600F95BAB235441D77DAFE1BA915041CB6D5F67AB235441422EEF6CBD9150416F681BC3AA235441517EB162BB91504191EA0A22A6235441D715A099BB91504150014435A423544114EEEE22BA9150413A4797E4A1235441C5EE1130B9915041DF120CF5A32354414F596328B9915041391FDA54A42354415821E114B9915041753B9AD2A523544115B87FDBB8915041307DC413A823544103BFBECBB8915041EE4B3DD8A823544103BFBECBB8915041EB6A1720AA235441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>100996 - 371908
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000710000000AD7A3103D9350415C8FC2A5292254410AD7A3503F935041C3F5281C2A225441A4703D3A3F935041C3F5283C2B225441CDCCCC7C3C935041D7A370CD2A225441666666063C935041000000102B2254417B14AE973E9350411F85EBF12D225441A4703D1A3E93504185EB51282F22544152B81E553E93504114AE47812F225441333333D33B935041AE47E10A32225441F6285C3F3893504185EB51C82E22544148E17A2436935041C3F5281C30225441A4703D1A3593504100000010312254415C8FC2D533935041D7A3704D322254418FC2F5C831935041333333C335225441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001000000037C4A4A814935041EF8DA1C026225441132041A31493504104E242B526225441BEA900A014935041979C66AE26225441D26C839614935041CD92619A262254417EE59C8F149350416BACD28B26225441086319771493504186091B58262254419934686E14935041DD80C4452622544169DDAC491493504155FC45F8252254411F3FE71B119350415B272C68202254412075C151089350413098E20821225441844F0E5703935041C6C5B0922122544189DD8AFE0193504178075DDC23225441638C5DAE0C935041D3972FA224225441638C5DAE0C93504171CB245826225441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>101064 - 3091518
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002100000066666606D1925041295C8F721C225441D7A3705DD6925041333333831C22544114AE4771DB9250411F85EB911C225441F6285C2FE2925041D7A3707D1C2254417B14AED7E79250418FC2F5481C22544148E17A44F692504114AE47111C2254415C8FC295F8925041F6285CBF0C225441E17A14CE0293504148E17AB410225441A4703D7A03935041666666060D225441CDCCCC0C05935041AE47E16A04225441F6285C3FFE9250411F85EB1103225441000000C0FB9250418FC2F5C80222544185EB51C8F992504114AE47D102225441C3F528FCE6925041CDCCCC6C03225441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000F5135F77159350412A07934E0E2254414E41185D15935041D086613D0E225441ED8131AE10935041C6A19ADA0C2254412573DA9910935041B46566CE0C225441A64F43C1099350410FD91A1C0D225441610DBE9F0993504155875D650822544101327DCE099350418D114D5D04225441CB2D902B05935041E3AD4AD2032254418739FBA30393504113E5EA210C225441C626031303935041C831463B0F22544102C4F22D0B93504190E6BC9112225441D6AC50D111935041334CF11114225441BA6BC53B1493504142A731F113225441F5135F77159350412A07934E0E225441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>101576 - 186535
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B0000000AD7A320578850419A9999092F215441D7A370AD598850411F85EBD12E215441F6285C3F5D885041C3F528FC2F2154419A9999695E885041E17A14AE3221544185EB5118598850418FC2F5F83221544185EB51A858885041D7A3704D3521544152B81E555A8850410000004036215441F6285C0F5B885041CDCCCC5C38215441C3F528BC5A88504114AE479139215441E17A14BE5D885041666666263A2154418FC2F5586288504148E17A043921544152B81EC565885041F6285CFF37215441CDCCCC9C68885041295C8F523621544148E17AD4688850418FC2F58832215441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003200000052B81E555A88504100000040362154412BB6EA785A8850415437F2A736215441F6285C0F5B885041CDCCCC5C3821544165DF610B5B885041D84B8C6B38215441F03B5F645B885041C8D3EE7D39215441C74A2B1A6088504133A620F438215441D942108B64885041731DB656372154415B9BA31967885041DA3EC1AF31215441C77F031D668850415E9E0EDC2E215441193822E265885041BA2DD1B12E2154414294B1046588504187FA9D1E2E2154414CEA7CFC618850410677B34D2C215441A5A43F046288504178017F132C2154411F85EB01628850411F85EB112C215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>101576 - 316352
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B0000000AD7A320578850419A9999092F215441D7A370AD598850411F85EBD12E215441F6285C3F5D885041C3F528FC2F2154419A9999695E885041E17A14AE3221544185EB5118598850418FC2F5F83221544185EB51A858885041D7A3704D3521544152B81E555A8850410000004036215441F6285C0F5B885041CDCCCC5C38215441C3F528BC5A88504114AE479139215441E17A14BE5D885041666666263A2154418FC2F5586288504148E17A043921544152B81EC565885041F6285CFF37215441CDCCCC9C68885041295C8F523621544148E17AD4688850418FC2F58832215441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003200000052B81E555A88504100000040362154412BB6EA785A8850415437F2A736215441F6285C0F5B885041CDCCCC5C3821544165DF610B5B885041D84B8C6B38215441F03B5F645B885041C8D3EE7D39215441C74A2B1A6088504133A620F438215441D942108B64885041731DB656372154415B9BA31967885041DA3EC1AF31215441C77F031D668850415E9E0EDC2E215441193822E265885041BA2DD1B12E2154414294B1046588504187FA9D1E2E2154414CEA7CFC618850410677B34D2C215441A5A43F046288504178017F132C2154411F85EB01628850411F85EB112C215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>101765 - 3346265
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002D000000713D0A6707925041C3F5284CCB1F544185EB5138079250410AD7A3E0CC1F54415C8FC28506925041666666F6CF1F54419A9999C9059250410AD7A360D31F544185EB51E804925041EC51B85ED81F54415C8FC23504925041295C8FD2DB1F54413333338303925041B81E856BDF1F5441CDCCCCEC0292504152B81E65E21F54417B14AE970292504185EB5128E41F5441EC51B88E0292504100000040E61F544166666656029250413D0AD713E91F5441E17A147E01925041D7A3706DEB1F5441C3F5289C00925041CDCCCCACEC1F544114AE4711FF915041EC51B82EEE1F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000033000000713D0A6707925041C3F5284CCB1F544185EB5138079250410AD7A3E0CC1F54415C8FC28506925041666666F6CF1F54419A9999C9059250410AD7A360D31F544185EB51E804925041EC51B85ED81F54415C8FC23504925041295C8FD2DB1F54413333338303925041B81E856BDF1F5441CDCCCCEC0292504152B81E65E21F54417B14AE970292504185EB5128E41F5441EC51B88E0292504100000040E61F544166666656029250413D0AD713E91F5441E17A147E01925041D7A3706DEB1F5441C3F5289C00925041CDCCCCACEC1F544114AE4711FF915041EC51B82EEE1F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>102338 - 258953
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000D7A370FDD35351411F85EB312091544133333343DE535141713D0AD70E9154418FC2F598D75351410AD7A32008915441E17A140ED35351413D0AD7B30F915441295C8F82CA53514152B81EF51D915441CDCCCC6CC05351417B14AEC72E915441E17A14CEC153514148E17AE42F9154413D0AD7C3C853514185EB512833915441D7A370FDD35351411F85EB3120915441
+</a>
+
+<b>
+010600000001000000010300000001000000130000008ADF3C0FD35351418AC7E8B10F9154416CE829EDD05351413F54E24013915441295C8F82CA53514152B81EF51D9154411CDEBF5CCA535141F3CD30341E915441ACF4E48CC05351411DF224922E915441B3B2C3B7C15351418E777DD22F915441207736C8C85351412DDDEE2033915441D7A370FDD35351411F85EB3120915441A11DC50ADC5351418335CC96129154415FB18C4BD5535141090688F70B9154419DFC90E8D4535141361C989C0C9154414792C1E2D45351410C8048A60C91544180E368B6D4535141290D3CF00C91544156C4E862D45351414A877A7B0D915441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>236175 - 5255601
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000C3F528DCDAF9504185EB51C8422E54411F85EB81E5F95041713D0A27452E544100000010E7F95041D7A370ED432E544100000070E6F95041CDCCCCAC412E5441F6285C4FE3F95041CDCCCC6C402E5441E17A148EDBF95041C3F528AC3C2E5441CDCCCCACD6F95041B81E850B3A2E5441C3F528ECD1F95041AE47E14A362E5441B81E850BCEF95041A4703D2A312E5441B81E85ABCCF950419A9999A92D2E5441B81E854BCCF9504185EB51E8272E544100000070CDF950417B14AEC7242E5441E17A14AED0F95041666666E6102E5441D7A370ADD1F95041666666260F2E5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000290000004A2C65D0F5F950416F6BA66C7A2E544133333353F9F9504100000060742E5441000000A0F4F9504148E17AC4712E5441713D0A37F7F9504133333333702E5441B81E859BFCF95041333333A36A2E5441B81E853BFEF9504185EB5128682E5441295C8FA2FDF950417B14AE97622E544133333393FEF95041295C8F52612E54415C8FC2B5F7F9504100000030522E5441A4703D9AF6F9504185EB5198512E544152B81E75F5F9504185EB51C8502E544100000080F3F95041C3F5280C4F2E5441EC51B83EF2F95041295C8F924D2E54417B14AE57F1F95041B81E852B4C2E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103616 - 2977638
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000333333F3E15D5141F6285C5F2B9954419A9999C9D35D51419A9999192D995441295C8F42C95D5141295C8F622E9954415C8FC225CF5D5141EC51B8FE49995441AE47E1CAD25D5141666666365B995441B81E858BD85D51418FC2F51859995441C3F528DCE05D51418FC2F5085699544133333353E55D5141E17A146E54995441CDCCCC8CE65D5141000000E05399544100000000E95D51419A9999795299544148E17A14EA5D514114AE47815199544114AE4771EE5D5141F6285C7F4E995441000000B0F25D51419A9999794B995441B81E854BF15D5141CDCCCCEC44995441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000C7718AD9E65D5141DFEA25B453995441CDCCCC8CE65D5141000000E05399544133333353E55D5141E17A146E54995441C3F528DCE05D51418FC2F50856995441A0E1D25CDC5D51415C4C02B15799544172B4CAD0D25D5141117E59525B9954417CB6E4C7D35D5141E962D3E25F995441CAB730E8E05D514170C9C7E75C99544168480CABE05D5141F40E756F5B995441A731A8B2EB5D514199B196395999544121916217EA5D5141F03F009E519954412743C40BE95D51416624086F5299544100000000E95D51419A9999795299544145564F30E75D514104D6908253995441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103616 - 3672661
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000333333F3E15D5141F6285C5F2B9954419A9999C9D35D51419A9999192D995441295C8F42C95D5141295C8F622E9954415C8FC225CF5D5141EC51B8FE49995441AE47E1CAD25D5141666666365B995441B81E858BD85D51418FC2F51859995441C3F528DCE05D51418FC2F5085699544133333353E55D5141E17A146E54995441CDCCCC8CE65D5141000000E05399544100000000E95D51419A9999795299544148E17A14EA5D514114AE47815199544114AE4771EE5D5141F6285C7F4E995441000000B0F25D51419A9999794B995441B81E854BF15D5141CDCCCCEC44995441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000C7718AD9E65D5141DFEA25B453995441CDCCCC8CE65D5141000000E05399544133333353E55D5141E17A146E54995441C3F528DCE05D51418FC2F50856995441A0E1D25CDC5D51415C4C02B15799544172B4CAD0D25D5141117E59525B9954417CB6E4C7D35D5141E962D3E25F995441CAB730E8E05D514170C9C7E75C99544168480CABE05D5141F40E756F5B995441A731A8B2EB5D514199B196395999544121916217EA5D5141F03F009E519954412743C40BE95D51416624086F5299544100000000E95D51419A9999795299544145564F30E75D514104D6908253995441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103869 - 233685
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000713D0A274F615141C3F5282C15975441D7A3708D5061514114AE47C1169754411F85EB2158615141AE47E15A1E975441666666265D6151413333339322975441295C8F6262615141713D0A9726975441B81E85AB6861514114AE47B12A975441333333F36D615141333333D32D97544185EB51886F6151419A9999992D975441F6285C0F716151417B14AEB72B9754411F85EB21746151413D0AD74324975441666666E65761514166666656109754417B14AE07506151417B14AED7079754410AD7A3004C615141C3F5289C11975441713D0A274F615141C3F5282C15975441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000F6285C0F716151417B14AEB72B975441DE948BEF71615141A65CE8972997544162E41B1974615141BABDA6492497544184F30A516D615141AFCE52741F9754416CFA6033686151414477FDDA1B97544170172F5A66615141BFB8D6891A975441B19504EC606151415C399CB4169754410E3C29E05A615141F700DD7412975441346826F2576151413A4BDC5F10975441B97CFBEE57615141A02E755C10975441666666E65761514166666656109754418DD60F8555615141F5C4ABC40D9754412517ADBB506151418F2A54A008975441BDC8C045506151419DC0AE1A08975441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103869 - 298298
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000713D0A274F615141C3F5282C15975441D7A3708D5061514114AE47C1169754411F85EB2158615141AE47E15A1E975441666666265D6151413333339322975441295C8F6262615141713D0A9726975441B81E85AB6861514114AE47B12A975441333333F36D615141333333D32D97544185EB51886F6151419A9999992D975441F6285C0F716151417B14AEB72B9754411F85EB21746151413D0AD74324975441666666E65761514166666656109754417B14AE07506151417B14AED7079754410AD7A3004C615141C3F5289C11975441713D0A274F615141C3F5282C15975441
+</a>
+
+<b>
+01060000000100000001030000000100000021000000F6285C0F716151417B14AEB72B975441DE948BEF71615141A65CE8972997544162E41B1974615141BABDA6492497544184F30A516D615141AFCE52741F9754416CFA6033686151414477FDDA1B97544170172F5A66615141BFB8D6891A975441B19504EC606151415C399CB4169754410E3C29E05A615141F700DD7412975441346826F2576151413A4BDC5F10975441B97CFBEE57615141A02E755C10975441666666E65761514166666656109754418DD60F8555615141F5C4ABC40D9754412517ADBB506151418F2A54A008975441BDC8C045506151419DC0AE1A08975441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103876 - 399669
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000700000052B81E951B645141A4703DCAA298544152B81E154F6451415C8FC2F5BB9854413D0AD7F34F6451410AD7A390BB9854413D0AD7F356645141713D0AB7A19854418FC2F5A8196451410000007086985441AE47E11A136451415C8FC2A59E98544152B81E951B645141A4703DCAA2985441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000003F87AB7214645141E3B004B099985441AE47E11A136451415C8FC2A59E98544152B81E154F6451415C8FC2F5BB9854413D0AD7F34F6451410AD7A390BB98544100B76FFD54645141E5EFCBF2A89854414BCEC73618645141D2DC1CE38C985441DDFCB0921664514169ED471C9398544129935DE65264514119504418B0985441DB9F8539516451412281EC06B69854416F8623B0146451418AB289DB989854413F87AB7214645141E3B004B099985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103880 - 1277036
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000003A000000D7A3705D4B615141EC51B86EFC965441000000804C615141295C8FC200975441F6285C7F4E615141CDCCCC9C02975441713D0A07526151413D0AD7C3F5965441C3F5281C546151415C8FC2A5ED96544152B81EB5546151411F85EBD1ED965441295C8FE252615141EC51B80EF69654410AD7A3404F615141C3F5285C0397544185EB51584F6151419A9999E903975441C3F5286C56615141C3F5289C0B97544185EB51385D615141666666961197544114AE47E174615141A4703D8A229754410AD7A300766151413333333320975441CDCCCCAC796151418FC2F5181A975441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D000000816A3E9C5A615141A97E6568C9965441836B4A785C615141BE836BCECA965441713D0A97606151419A999919CD96544133333303706151410AD7A3A0D1965441CDCCCC1C6B6151411F85EB31E39654415C8FC2056661514133333393E2965441AE47E12A636151418FC2F5A8E8965441C3F5284C626151415C8FC285EA965441333333936161514114AE4721ED96544152B81EB56161514100000000F2965441295C8FC2626151410AD7A300F79654418FC2F528646151417B14AE27FC965441666666A665615141000000A00097544152B81E85666151419A99991904975441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103880 - 3011675
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003A000000D7A3705D4B615141EC51B86EFC965441000000804C615141295C8FC200975441F6285C7F4E615141CDCCCC9C02975441713D0A07526151413D0AD7C3F5965441C3F5281C546151415C8FC2A5ED96544152B81EB5546151411F85EBD1ED965441295C8FE252615141EC51B80EF69654410AD7A3404F615141C3F5285C0397544185EB51584F6151419A9999E903975441C3F5286C56615141C3F5289C0B97544185EB51385D615141666666961197544114AE47E174615141A4703D8A229754410AD7A300766151413333333320975441CDCCCCAC796151418FC2F5181A975441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000B7DD600056615141F5A3CF93E996544114AE470156615141713D0A87E9965441AE47E19A596151419A999989D5965441B81E852B5961514152B81E95D3965441000000C057615141D7A3705DD39654410AD7A3F053615141D7A3700DD296544114AE47D14F6151415C8FC2B5CF9654415C8FC2F54C6151419A9999B9DF965441295C8FB24B615141B81E854BEA965441D7A3705D4B615141EC51B86EFC965441000000804C615141295C8FC200975441F6285C7F4E615141CDCCCC9C02975441713D0A07526151413D0AD7C3F5965441C3F5281C546151415C8FC2A5ED965441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103880 - 3295548
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003A000000D7A3705D4B615141EC51B86EFC965441000000804C615141295C8FC200975441F6285C7F4E615141CDCCCC9C02975441713D0A07526151413D0AD7C3F5965441C3F5281C546151415C8FC2A5ED96544152B81EB5546151411F85EBD1ED965441295C8FE252615141EC51B80EF69654410AD7A3404F615141C3F5285C0397544185EB51584F6151419A9999E903975441C3F5286C56615141C3F5289C0B97544185EB51385D615141666666961197544114AE47E174615141A4703D8A229754410AD7A300766151413333333320975441CDCCCCAC796151418FC2F5181A975441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000B7DD600056615141F5A3CF93E996544114AE470156615141713D0A87E9965441AE47E19A596151419A999989D5965441B81E852B5961514152B81E95D3965441000000C057615141D7A3705DD39654410AD7A3F053615141D7A3700DD296544114AE47D14F6151415C8FC2B5CF9654415C8FC2F54C6151419A9999B9DF965441295C8FB24B615141B81E854BEA965441D7A3705D4B615141EC51B86EFC965441000000804C615141295C8FC200975441F6285C7F4E615141CDCCCC9C02975441713D0A07526151413D0AD7C3F5965441C3F5281C546151415C8FC2A5ED965441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103880 - 3325908
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000003A000000D7A3705D4B615141EC51B86EFC965441000000804C615141295C8FC200975441F6285C7F4E615141CDCCCC9C02975441713D0A07526151413D0AD7C3F5965441C3F5281C546151415C8FC2A5ED96544152B81EB5546151411F85EBD1ED965441295C8FE252615141EC51B80EF69654410AD7A3404F615141C3F5285C0397544185EB51584F6151419A9999E903975441C3F5286C56615141C3F5289C0B97544185EB51385D615141666666961197544114AE47E174615141A4703D8A229754410AD7A300766151413333333320975441CDCCCCAC796151418FC2F5181A975441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D000000816A3E9C5A615141A97E6568C9965441836B4A785C615141BE836BCECA965441713D0A97606151419A999919CD96544133333303706151410AD7A3A0D1965441CDCCCC1C6B6151411F85EB31E39654415C8FC2056661514133333393E2965441AE47E12A636151418FC2F5A8E8965441C3F5284C626151415C8FC285EA965441333333936161514114AE4721ED96544152B81EB56161514100000000F2965441295C8FC2626151410AD7A300F79654418FC2F528646151417B14AE27FC965441666666A665615141000000A00097544152B81E85666151419A99991904975441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>103978 - 3114130
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000070000001F85EB919A6151415C8FC2B5739A544185EB5108976151413D0AD793709A5441EC51B87E78615141CDCCCCBCD09A5441333333837F615141666666F6D39A5441E17A144E8B6151411F85EB31D99A5441000000F0A76151417B14AE077F9A54411F85EB919A6151415C8FC2B5739A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000001394D9779F615141AE1EA0DB779A5441EFA5E91794615141D9D91AFA9A9A54412F49DB1C88615141D49EAAABC09A54415B2B4B6D81615141468CDCCFD49A544120FEC5488B61514167BD902FD99A54415E20B3D88B6151410783667DD79A5441B35741B690615141A463172BC89A5441A3D219C09C6151411A613942A29A544199134829A5615141567CC3C5879A54415A8B3CF1A76151416266BA087F9A54411394D9779F615141AE1EA0DB779A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>105530 - 2960104
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000034000000333333933BA250419A9999F9F3395441295C8FF237A2504166666606F33954411F85EB9132A2504152B81E95F13954415C8FC20530A25041AE47E10AF1395441000000402EA250417B14AEB7F0395441B81E851B2DA25041EC51B88EF0395441713D0AF72BA25041CDCCCC7CF039544114AE47A12AA25041AE47E17AF0395441E17A14BE29A250410AD7A390F0395441713D0AF728A25041D7A370ADF0395441D7A3708D27A250410AD7A300F1395441E17A144E25A25041295C8FB2F139544152B81E1523A25041D7A3708DF2395441333333C321A2504148E17A04F3395441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003A000000CD16A9CD18A250412179E18DF3395441018759A016A2504127873748F3395441E07A15820BA25041A89B56C1F039544146527EBF08A25041B5B70236F0395441CB669D3806A250419D88A2B4EF3954419E23C56D00A25041B7C0FA9DEE39544165D296E8FAA150417B54E4E0ED3954411F85EBB1F5A15041EC51B89EED3954414CCBB01CF1A15041F351B537ED395441A4703D2AE9A15041CDCCCC7CEC395441EE489A9CE2A150415720260DEC395441FF80F285E1A150417A6B3203EC395441B8AC5301DAA1504157CE6EE1EB395441003FE30BD7A15041EFDBCE24EC395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>105530 - 3526131
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000034000000333333933BA250419A9999F9F3395441295C8FF237A2504166666606F33954411F85EB9132A2504152B81E95F13954415C8FC20530A25041AE47E10AF1395441000000402EA250417B14AEB7F0395441B81E851B2DA25041EC51B88EF0395441713D0AF72BA25041CDCCCC7CF039544114AE47A12AA25041AE47E17AF0395441E17A14BE29A250410AD7A390F0395441713D0AF728A25041D7A370ADF0395441D7A3708D27A250410AD7A300F1395441E17A144E25A25041295C8FB2F139544152B81E1523A25041D7A3708DF2395441333333C321A2504148E17A04F3395441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003A000000CD16A9CD18A250412179E18DF3395441018759A016A2504127873748F3395441E07A15820BA25041A89B56C1F039544146527EBF08A25041B5B70236F0395441CB669D3806A250419D88A2B4EF3954419E23C56D00A25041B7C0FA9DEE39544165D296E8FAA150417B54E4E0ED3954411F85EBB1F5A15041EC51B89EED3954414CCBB01CF1A15041F351B537ED395441A4703D2AE9A15041CDCCCC7CEC395441EE489A9CE2A150415720260DEC395441FF80F285E1A150417A6B3203EC395441B8AC5301DAA1504157CE6EE1EB395441003FE30BD7A15041EFDBCE24EC395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>105699 - 3179179
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002F000000B81E853B23AF50417B14AE67483C54415C8FC25529AF50413D0AD723463C54415C8FC2C52BAF504133333313453C54415C8FC2352EAF5041E17A14CE433C544114AE47B123AF504152B81E053D3C54418FC2F5881EAF5041E17A14DE393C5441F6285CEF16AF50413D0AD7D3363C5441713D0AF711AF5041713D0A17393C544185EB51C80CAF504152B81EC5383C54418FC2F50809AF504148E17A643A3C5441A4703DAA05AF504185EB5128393C5441CDCCCC4CFDAE504114AE4741363C54417B14AEE7F1AE5041A4703D6A343C5441295C8F92EBAE504185EB5168323C5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000770B6F2FE2AE5041E4D20E98663C5441C3F528FCE5AE5041713D0A975F3C54419A999939E5AE504114AE47A1593C5441C3F5287CE2AE5041E17A149E563C54418FC2F518E3AE50419A9999A9543C5441CDCCCC5CE0AE5041B81E856B4E3C5441295C8FC2E0AE50411F85EB614B3C54419ADB3755EBAE5041E5F687FB423C5441000000C0EFAE50410AD7A3A03E3C5441208D6007F4AE5041413AD6E13B3C5441666666E6F6AE5041A4703D0A3A3C5441B81E858B01AF50413D0AD763383C54411F85EB4108AF5041295C8FF23A3C5441B627FCE30BAF5041F36250D0393C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>105699 - 3580735
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002F000000B81E853B23AF50417B14AE67483C54415C8FC25529AF50413D0AD723463C54415C8FC2C52BAF504133333313453C54415C8FC2352EAF5041E17A14CE433C544114AE47B123AF504152B81E053D3C54418FC2F5881EAF5041E17A14DE393C5441F6285CEF16AF50413D0AD7D3363C5441713D0AF711AF5041713D0A17393C544185EB51C80CAF504152B81EC5383C54418FC2F50809AF504148E17A643A3C5441A4703DAA05AF504185EB5128393C5441CDCCCC4CFDAE504114AE4741363C54417B14AEE7F1AE5041A4703D6A343C5441295C8F92EBAE504185EB5168323C5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000770B6F2FE2AE5041E4D20E98663C5441C3F528FCE5AE5041713D0A975F3C54419A999939E5AE504114AE47A1593C5441C3F5287CE2AE5041E17A149E563C54418FC2F518E3AE50419A9999A9543C5441CDCCCC5CE0AE5041B81E856B4E3C5441295C8FC2E0AE50411F85EB614B3C54419ADB3755EBAE5041E5F687FB423C5441000000C0EFAE50410AD7A3A03E3C5441208D6007F4AE5041413AD6E13B3C5441666666E6F6AE5041A4703D0A3A3C5441B81E858B01AF50413D0AD763383C54411F85EB4108AF5041295C8FF23A3C5441B627FCE30BAF5041F36250D0393C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>105732 - 1837761
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000017000000A4703D6A5AAE5041333333A3D73D544114AE471153AE5041B81E85ABD53D544114AE474151AE5041D7A370BDD63D5441B81E851B50AE5041F6285C6FD63D5441E17A142E4EAE5041EC51B8AEDD3D54415C8FC2E547AE50410AD7A300DC3D54410AD7A36047AE50411F85EB51DE3D5441E17A14EE45AE50411F85EB71E23D54410AD7A3D043AE5041000000C0E73D5441295C8F824BAE5041333333A3EA3D5441B81E85DB4AAE50410AD7A300EC3D5441D7A3703D43AE504114AE4731E93D54418FC2F58842AE50415C8FC2F5EA3D5441CDCCCCAC42AE50413D0AD703EB3D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000006BA63B2F54AE504168501FBBF13D5441E222D6B05AAE5041071335B8E03D54416323D6F55BAE5041085D80BBDD3D544118E5C87066AE5041BE70D6FAE13D5441B018595068AE504114843EA0DD3D54413D0AD7736AAE5041CDCCCC8CDE3D544185EB51586CAE5041EC51B8DEDA3D5441EC51B84E6DAE5041C3F5281CDB3D5441000000A06DAE50410AD7A320DA3D5441EAE7A9EE69AE5041FACD26AED83D5441DAF1FE0E64AE50417D9871FDDD3D5441AF02F6135BAE5041558273A4DB3D5441057336C95BAE5041D3156E53D83D5441A4703D6A5AAE5041333333A3D73D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>105732 - 3362202
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000017000000A4703D6A5AAE5041333333A3D73D544114AE471153AE5041B81E85ABD53D544114AE474151AE5041D7A370BDD63D5441B81E851B50AE5041F6285C6FD63D5441E17A142E4EAE5041EC51B8AEDD3D54415C8FC2E547AE50410AD7A300DC3D54410AD7A36047AE50411F85EB51DE3D5441E17A14EE45AE50411F85EB71E23D54410AD7A3D043AE5041000000C0E73D5441295C8F824BAE5041333333A3EA3D5441B81E85DB4AAE50410AD7A300EC3D5441D7A3703D43AE504114AE4731E93D54418FC2F58842AE50415C8FC2F5EA3D5441CDCCCCAC42AE50413D0AD703EB3D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000006BA63B2F54AE504168501FBBF13D5441E222D6B05AAE5041071335B8E03D54416323D6F55BAE5041085D80BBDD3D544118E5C87066AE5041BE70D6FAE13D5441B018595068AE504114843EA0DD3D54413D0AD7736AAE5041CDCCCC8CDE3D544185EB51586CAE5041EC51B8DEDA3D5441EC51B84E6DAE5041C3F5281CDB3D5441000000A06DAE50410AD7A320DA3D5441EAE7A9EE69AE5041FACD26AED83D5441DAF1FE0E64AE50417D9871FDDD3D5441AF02F6135BAE5041558273A4DB3D5441057336C95BAE5041D3156E53D83D5441A4703D6A5AAE5041333333A3D73D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>106459 - 106936
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000011000000B81E85AB801B51410AD7A3E0BD885441C3F528EC7F1B51410AD7A330BE885441EC51B81E791B5141F6285C0FC1885441A4703DDA721B51419A9999E9C288544114AE47D16E1B5141D7A3700DC48854419A9999D9621B5141EC51B8AEC88854415C8FC245651B514152B81E55CE88544152B81E55621B5141295C8F02D0885441EC51B8CE631B5141EC51B8CED48854411F85EB71671B5141D7A3703DD38854417B14AE176C1B51418FC2F5E8D0885441E17A148E751B514152B81EF5CC885441AE47E11A7C1B5141E17A14CEC9885441713D0A07841B5141666666B6C4885441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000002CCAEEF1761B5141E94FD949CC885441730226406E1B514100703102D08854417B14AE176C1B51418FC2F5E8D088544191BF4032671B5141023CE058D3885441EC51B8CE631B5141EC51B8CED4885441295C8F225F1B514100000010D888544172E1D7205C1B51410001081FDA885441884F70925D1B51412DE85926DC8854411B664557611B51416B4077A6D988544152B81EB5641B5141AE47E16AD7885441B39A6A37671B5141FED8AB30D6885441983959056A1B5141E73E76D1D4885441D96569B96D1B51417B61AC01D38854410AD7A3D0711B5141E17A141ED1885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>106865 - 5234534
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002D000000295C8FE22F1E5141AE47E1EA3A8954411F85EB01311E51419A9999B945895441AE47E1AA2D1E514185EB51B84C895441295C8F022C1E51410AD7A310518954413D0AD7D32A1E5141E17A14DE538954417B14AE27241E5141C3F528CC598954415C8FC2453D1E5141E17A14AE5F895441C3F5282C4B1E514185EB513863895441F6285C5F4E1E514152B81E856389544148E17A34501E5141F6285C9F62895441AE47E11A531E5141A4703D1A5E8954410AD7A3F0531E514152B81EE55C895441F6285CDF3A1E514166666646548954413D0AD7133A1E5141A4703D1A54895441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000005C8FC2D5561E514100000060108954419A999999601E5141E17A14BE10895441176298A4601E5141D808CABE10895441412F96BD5F1E5141B610A66810895441F6285CEF301E5141E17A140E0389544100000050331E5141EC51B85E09895441F6285C6F351E514185EB51680F8954415C8FC2553D1E5141D7A3707D0F89544152B81EA5421E514148E17A541089544185EB5108441E514114AE47A1108954417B14AEE7451E51419A99990911895441295C8F92471E514166666666118954418FC2F578471E51411F85EB310D89544114AE4791481E5141C3F5286C0D895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>106865 - 5234539
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002D000000295C8FE22F1E5141AE47E1EA3A8954411F85EB01311E51419A9999B945895441AE47E1AA2D1E514185EB51B84C895441295C8F022C1E51410AD7A310518954413D0AD7D32A1E5141E17A14DE538954417B14AE27241E5141C3F528CC598954415C8FC2453D1E5141E17A14AE5F895441C3F5282C4B1E514185EB513863895441F6285C5F4E1E514152B81E856389544148E17A34501E5141F6285C9F62895441AE47E11A531E5141A4703D1A5E8954410AD7A3F0531E514152B81EE55C895441F6285CDF3A1E514166666646548954413D0AD7133A1E5141A4703D1A54895441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000005C8FC2D5561E514100000060108954419A999999601E5141E17A14BE10895441176298A4601E5141D808CABE10895441412F96BD5F1E5141B610A66810895441F6285CEF301E5141E17A140E0389544100000050331E5141EC51B85E09895441F6285C6F351E514185EB51680F8954415C8FC2553D1E5141D7A3707D0F89544152B81EA5421E514148E17A541089544185EB5108441E514114AE47A1108954417B14AEE7451E51419A99990911895441295C8F92471E514166666666118954418FC2F578471E51411F85EB310D89544114AE4791481E5141C3F5286C0D895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>106908 - 5234534
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000022000000F6285CEF301E5141E17A140E0389544100000050331E5141EC51B85E09895441F6285C6F351E514185EB51680F8954415C8FC2553D1E5141D7A3707D0F89544152B81EA5421E514148E17A541089544185EB5108441E514114AE47A1108954417B14AEE7451E51419A99990911895441295C8F92471E514166666666118954418FC2F578471E51411F85EB310D89544114AE4791481E5141C3F5286C0D89544185EB51F84E1E5141EC51B8BE0E8954415C8FC2D5561E514100000060108954419A999999601E5141E17A14BE1089544152B81ED56A1E5141713D0A6711895441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000005C8FC2D5561E514100000060108954419A999999601E5141E17A14BE10895441176298A4601E5141D808CABE10895441412F96BD5F1E5141B610A66810895441F6285CEF301E5141E17A140E0389544100000050331E5141EC51B85E09895441F6285C6F351E514185EB51680F8954415C8FC2553D1E5141D7A3707D0F89544152B81EA5421E514148E17A541089544185EB5108441E514114AE47A1108954417B14AEE7451E51419A99990911895441295C8F92471E514166666666118954418FC2F578471E51411F85EB310D89544114AE4791481E5141C3F5286C0D895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>106908 - 5234539
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000022000000F6285CEF301E5141E17A140E0389544100000050331E5141EC51B85E09895441F6285C6F351E514185EB51680F8954415C8FC2553D1E5141D7A3707D0F89544152B81EA5421E514148E17A541089544185EB5108441E514114AE47A1108954417B14AEE7451E51419A99990911895441295C8F92471E514166666666118954418FC2F578471E51411F85EB310D89544114AE4791481E5141C3F5286C0D89544185EB51F84E1E5141EC51B8BE0E8954415C8FC2D5561E514100000060108954419A999999601E5141E17A14BE1089544152B81ED56A1E5141713D0A6711895441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000005C8FC2D5561E514100000060108954419A999999601E5141E17A14BE10895441176298A4601E5141D808CABE10895441412F96BD5F1E5141B610A66810895441F6285CEF301E5141E17A140E0389544100000050331E5141EC51B85E09895441F6285C6F351E514185EB51680F8954415C8FC2553D1E5141D7A3707D0F89544152B81EA5421E514148E17A541089544185EB5108441E514114AE47A1108954417B14AEE7451E51419A99990911895441295C8F92471E514166666666118954418FC2F578471E51411F85EB310D89544114AE4791481E5141C3F5286C0D895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>107243 - 408455
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000A4703DDA5B275141B81E85DB3640554152B81EE5562751411F85EBA13F405541666666564B2751417B14AE073A405541713D0AC74827514148E17AE43D4055417B14AEF745275141B81E851B43405541E17A14CE3E27514148E17A144F40554152B81ED545275141CDCCCCAC4F4055413D0AD7D35027514114AE47514F4055410000007051275141D7A3702D49405541C3F5289C5B275141EC51B83E4A40554185EB51B85F2751415C8FC25548405541D7A370AD6827514152B81EE54740554152B81E256A2751418FC2F5184A405541E17A143E6B27514148E17A144C405541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000B60651596A27514143233F774A405541EED8FE416B27514108E754E84B405541F6285C9F7B275141F6285C9F4D4055410B82943F7C2751411F2A6ABA5840554187F4F0C77C275141446B192E62405541A9FF15CC7C275141184CA577624055417A990825852751415F6C5F5D67405541EC51B8FE8927514152B81E356A4055410AD7A3C0882751410000004065405541B5FF189D8627514100E023B36640554166666696862751417B14AEB766405541C7BB90BC852751416292AEA166405541295C8F9285275141D7A3709D66405541A055910E84275141FFD2AA7063405541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>107289 - 66133
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000100000008FC2F5A8F4295141C3F5287CDB405541AE47E1DAEE29514148E17AF4E340554152B81E25E1295141D7A370DDF84055417B14AEF7D5295141295C8F120A415541295C8F02C7295141D7A370DD214155411F85EBF1E02951419A99999931415541F6285C5F062A514185EB51D8F740554148E17AB4092A514100000020F340554100000020042A5141713D0AB7EF405541D7A3702D062A51410AD7A3D0D640554185EB5108052A5141295C8FA2D54055419A999959FB295141713D0A27D64055413D0AD793F62951419A999999D6405541666666C6F5295141CDCCCCACD6405541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001600000078912403C729514170B5E9DD21415541F490AE84D3295141EFE648E50D415541F28980FBD5295141A40BAD0C0A4155417ABD4C19D8295141473BF3C706415541643BEE56DB295141925C1AD3014155415E21DD53DD2951413EA154B8FE40554161E38750E92951414E283B6CEC4055414FC92CD0EC295141AEE4B011E74055418D9DBFA0F0295141A0123F5EE14055417A01ED09F429514102693464DC4055418FC2F5A8F4295141C3F5287CDB4055415B6D57BFF4295141AB6D57C3D9405541666666C6F429514185EB5138D94055418256606BF5295141E0AC8839D7405541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>107999 - 226498
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000340000007B14AE17C20F514148E17A04504A5541EC51B8AEC30F5141EC51B8BE4E4A5541D7A3701DC90F5141AE47E1DA4C4A55418FC2F558D60F514152B81E05494A5541000000E0E20F5141EC51B8CE444A5541666666C6EE0F514185EB5188414A5541E17A144EF30F51413D0AD713414A5541AE47E17AF60F5141CDCCCC7C404A5541CDCCCC6CF80F5141D7A370AD3F4A55411F85EB21FA0F5141C3F5286C3E4A554152B81E05FC0F5141295C8FA23C4A5541713D0AF7FE0F51413D0AD793394A55411F85EBA1F90F51415C8FC235344A5541B81E857BF80F514152B81E45334A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000EC51B8AEC30F5141EC51B8BE4E4A554138007084C70F51412DAA2C694D4A5541D7A3701DC90F5141AE47E1DA4C4A55417218FDB2CE0F5141A7A7923C4B4A5541087D23DCD10F51416E5211524A4A55419346E388D70F5141D1D1EB9E484A55414E152B73D90F5141CE300FFA474A554158E32CA4D90F51410F8994E9474A55417F6D1F71DB0F514181F9944E474A5541557A708FDF0F51411CA40EEC454A5541B3279E6BE00F5141071B05A2454A5541000000E0E20F5141EC51B8CE444A5541666666C6EE0F514185EB5188414A5541CF4CA75FEF0F5141024FED78414A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>107999 - 341578
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000340000007B14AE17C20F514148E17A04504A5541EC51B8AEC30F5141EC51B8BE4E4A5541D7A3701DC90F5141AE47E1DA4C4A55418FC2F558D60F514152B81E05494A5541000000E0E20F5141EC51B8CE444A5541666666C6EE0F514185EB5188414A5541E17A144EF30F51413D0AD713414A5541AE47E17AF60F5141CDCCCC7C404A5541CDCCCC6CF80F5141D7A370AD3F4A55411F85EB21FA0F5141C3F5286C3E4A554152B81E05FC0F5141295C8FA23C4A5541713D0AF7FE0F51413D0AD793394A55411F85EBA1F90F51415C8FC235344A5541B81E857BF80F514152B81E45334A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000EC51B8AEC30F5141EC51B8BE4E4A554138007084C70F51412DAA2C694D4A5541D7A3701DC90F5141AE47E1DA4C4A55417218FDB2CE0F5141A7A7923C4B4A5541087D23DCD10F51416E5211524A4A55419346E388D70F5141D1D1EB9E484A55414E152B73D90F5141CE300FFA474A554158E32CA4D90F51410F8994E9474A55417F6D1F71DB0F514181F9944E474A5541557A708FDF0F51411CA40EEC454A5541B3279E6BE00F5141071B05A2454A5541000000E0E20F5141EC51B8CE444A5541666666C6EE0F514185EB5188414A5541CF4CA75FEF0F5141024FED78414A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>110493 - 171476
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000030000000A4703D2A54305141D7A3706D91D05441B81E856B54305141F6285C3F8ED054410AD7A370543051417B14AE0789D054410AD7A37054305141000000C088D0544148E17AF4523051416666664683D054413333333350305141295C8FD27FD05441AE47E1CA4C305141A4703D0A7ED05441E17A14FE4A305141B81E855B7CD05441AE47E1FA463051417B14AE477AD05441C3F5281C41305141C3F528FC79D05441F6285C2F39305141295C8F3277D0544114AE4721373051417B14AE9770D05441D7A3705D333051419A9999F969D05441000000E02D3051415C8FC20565D05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004C0000000AD7A37054305141000000C088D054414FDDDDC053305141845FF23786D054416794F40F53305141DE7F01FD83D054415EFC39DB503051417DDACEE980D05441FEE6B42E4E305141CA2F31C67ED0544199A071244E3051411D1802BF7ED05441AE47E1CA4C305141A4703D0A7ED05441569675C64B30514185AAD1167DD05441458C0ED74A30514111BD3C6F7CD054413C2CFD6E483051410C0D343B7BD05441E0FE29C34630514109EDD86D7AD05441B23E07F341305141898F69C37AD0544106D41F6A4130514133A24CB27AD054410444720341305141DEB42FA17AD05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>110493 - 352992
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000030000000A4703D2A54305141D7A3706D91D05441B81E856B54305141F6285C3F8ED054410AD7A370543051417B14AE0789D054410AD7A37054305141000000C088D0544148E17AF4523051416666664683D054413333333350305141295C8FD27FD05441AE47E1CA4C305141A4703D0A7ED05441E17A14FE4A305141B81E855B7CD05441AE47E1FA463051417B14AE477AD05441C3F5281C41305141C3F528FC79D05441F6285C2F39305141295C8F3277D0544114AE4721373051417B14AE9770D05441D7A3705D333051419A9999F969D05441000000E02D3051415C8FC20565D05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004C0000000AD7A37054305141000000C088D054414FDDDDC053305141845FF23786D054416794F40F53305141DE7F01FD83D054415EFC39DB503051417DDACEE980D05441FEE6B42E4E305141CA2F31C67ED0544199A071244E3051411D1802BF7ED05441AE47E1CA4C305141A4703D0A7ED05441569675C64B30514185AAD1167DD05441458C0ED74A30514111BD3C6F7CD054413C2CFD6E483051410C0D343B7BD05441E0FE29C34630514109EDD86D7AD05441B23E07F341305141898F69C37AD0544106D41F6A4130514133A24CB27AD054410444720341305141DEB42FA17AD05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>367674 - 3114867
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+010600000001000000010300000001000000170000000AD7A300FDCB5041C3F5287C05385441E17A143EFCCB5041333333B3FC3754415C8FC2F50CCC5041B81E852BF8375441E17A14DE24CC5041B81E853BF23754413D0AD7433DCC5041713D0A47ED375441AE47E15A3CCC504185EB51D8E1375441333333D339CC504166666606DD375441C3F528FC2FCC5041A4703DEADD375441E17A146E06CC5041F6285CEFE3375441C3F5285C02CC5041B81E858BE73754415C8FC225FECB5041295C8F62EB3754411F85EB21F9CB504185EB5188EC375441CDCCCCCCF2CB504148E17A44EA37544152B81E55E4CB5041CDCCCCCCE6375441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000009000000B8B2F1ABDFCB5041316BA96AC337544179BA2540D7CB50412147CEE0E537544116C6AC47D8CB5041743D60F3E5375441527C57DCDFCB5041A852217CE63754410D04EA8DE3CB5041A22EC3BEE63754417530F85AE4CB504161E96FB8E63754411EC2880FE9CB504104A3892DD33754419A999909ECCB5041C3F5281CC7375441B8B2F1ABDFCB5041316BA96AC3375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>367674 - 3503049
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+010600000001000000010300000001000000170000000AD7A300FDCB5041C3F5287C05385441E17A143EFCCB5041333333B3FC3754415C8FC2F50CCC5041B81E852BF8375441E17A14DE24CC5041B81E853BF23754413D0AD7433DCC5041713D0A47ED375441AE47E15A3CCC504185EB51D8E1375441333333D339CC504166666606DD375441C3F528FC2FCC5041A4703DEADD375441E17A146E06CC5041F6285CEFE3375441C3F5285C02CC5041B81E858BE73754415C8FC225FECB5041295C8F62EB3754411F85EB21F9CB504185EB5188EC375441CDCCCCCCF2CB504148E17A44EA37544152B81E55E4CB5041CDCCCCCCE6375441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000009000000B8B2F1ABDFCB5041316BA96AC337544179BA2540D7CB50412147CEE0E537544116C6AC47D8CB5041743D60F3E5375441527C57DCDFCB5041A852217CE63754410D04EA8DE3CB5041A22EC3BEE63754417530F85AE4CB504161E96FB8E63754411EC2880FE9CB504104A3892DD33754419A999909ECCB5041C3F5281CC7375441B8B2F1ABDFCB5041316BA96AC3375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>535981 - 87189
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002500000051320C71525551411D68A0C020635441333333E34E555141AE47E13A2363544148E17AF44B5551416666664625635441A4703DBA495551419A9999092763544152B81E2548555141713D0A67286354410000009046555141B81E85BB29635441B81E85CB4355514114AE47912B635441666666F6415551417B14AEB72C635441CDCCCC0C3F55514185EB51682E6354419A9999093D555141E17A144E2F6354411F85EB613B55514185EB51D82F6354417B14AE6739555141A4703DDA3063544185EB51083755514152B81E2532635441C3F5280C34555141CDCCCC0C34635441 [...]
+</a>
+
+<b>
+01060000000200000001030000000100000022000000ED0EEB14575551412AA6D8085C635441B36FD70F5755514140CA5DC65B635441DE6FD9FF565551412AE5F1F45A635441B2CCAEA15655514117BDCF2356635441F75ACE9256555141C840FF6055635441E25E36685655514172FA3833536354417C8F6758565551412C093764526354417C3D0855565551415CA60D38526354412B6A912256555141E68D36A34F6354415B3AAAE255555141D91B635E4C635441F48DE4BC55555141C66EC06F4A6354411BAF297B5B555141E735D56848635441123D5DEF5A555141929947DD3C6354419613808B5A555141D84CD7CB36635441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>535981 - 266812
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002500000051320C71525551411D68A0C020635441333333E34E555141AE47E13A2363544148E17AF44B5551416666664625635441A4703DBA495551419A9999092763544152B81E2548555141713D0A67286354410000009046555141B81E85BB29635441B81E85CB4355514114AE47912B635441666666F6415551417B14AEB72C635441CDCCCC0C3F55514185EB51682E6354419A9999093D555141E17A144E2F6354411F85EB613B55514185EB51D82F6354417B14AE6739555141A4703DDA3063544185EB51083755514152B81E2532635441C3F5280C34555141CDCCCC0C34635441 [...]
+</a>
+
+<b>
+01060000000200000001030000000100000022000000ED0EEB14575551412AA6D8085C635441B36FD70F5755514140CA5DC65B635441DE6FD9FF565551412AE5F1F45A635441B2CCAEA15655514117BDCF2356635441F75ACE9256555141C840FF6055635441E25E36685655514172FA3833536354417C8F6758565551412C093764526354417C3D0855565551415CA60D38526354412B6A912256555141E68D36A34F6354415B3AAAE255555141D91B635E4C635441F48DE4BC55555141C66EC06F4A6354411BAF297B5B555141E735D56848635441123D5DEF5A555141929947DD3C6354419613808B5A555141D84CD7CB36635441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>111997 - 3138552
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000270000001F85EB810B4551415C8FC205B9DE5441666666C605455141B81E853BB9DE54413333336302455141D7A370FDB8DE54418FC2F5A800455141B81E859BB0DE544148E17AA4EF445141E17A14DEACDE5441F6285C1FEC445141AE47E1FAABDE544100000010D944514185EB5148B0DE54411F85EB01D14451411F85EBD1B1DE54419A9999A9BE445141F6285CCFB0DE5441E17A141EAB44514152B81EF5B2DE544100000090A84451418FC2F588C7DE54413D0AD7B3A644514185EB5168DBDE54411F85EB11A4445141C3F5285CF3DE5441F6285C6FA544514185EB5148F4DE5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000A9CD12E8EC445141C06B7C2DACDE5441C182CBF6EC445141AFA03231ACDE5441CE7C3C76ED4451414609C397B1DE544186871DECED445141015FCB46B5DE54411ABD8239F0445141DF894F1EB7DE544135E3A25CF74451414D9F110AB8DE544188B9379200455141A9240245B8DE5441AED9DAF3014551412E15BD1ABDDE544190689397F74451410046BEB3C4DE544189D24425F144514185367989C9DE5441BF3792FEEF445141D276BF4CCCDE5441F662C32CF2445141459D8CC6D3DE5441BC057810F54451410B4041AAD6DE54414BBE9B46FB4451415AB2A15BD4DE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>111997 - 3382312
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000270000001F85EB810B4551415C8FC205B9DE5441666666C605455141B81E853BB9DE54413333336302455141D7A370FDB8DE54418FC2F5A800455141B81E859BB0DE544148E17AA4EF445141E17A14DEACDE5441F6285C1FEC445141AE47E1FAABDE544100000010D944514185EB5148B0DE54411F85EB01D14451411F85EBD1B1DE54419A9999A9BE445141F6285CCFB0DE5441E17A141EAB44514152B81EF5B2DE544100000090A84451418FC2F588C7DE54413D0AD7B3A644514185EB5168DBDE54411F85EB11A4445141C3F5285CF3DE5441F6285C6FA544514185EB5148F4DE5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000A9CD12E8EC445141C06B7C2DACDE5441C182CBF6EC445141AFA03231ACDE5441CE7C3C76ED4451414609C397B1DE544186871DECED445141015FCB46B5DE54411ABD8239F0445141DF894F1EB7DE544135E3A25CF74451414D9F110AB8DE544188B9379200455141A9240245B8DE5441AED9DAF3014551412E15BD1ABDDE544190689397F74451410046BEB3C4DE544189D24425F144514185367989C9DE5441BF3792FEEF445141D276BF4CCCDE5441F662C32CF2445141459D8CC6D3DE5441BC057810F54451410B4041AAD6DE54414BBE9B46FB4451415AB2A15BD4DE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>114502 - 307399
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000100000008FC2F5989CD950419A9999C985975441E17A14BE96D9504152B81EC58C9754413D0AD77390D95041333333839597544152B81EE589D9504100000080A0975441A4703DBA85D9504152B81E15A8975441B81E85BB82D950410AD7A3B0AE975441F6285C5F7DD950410AD7A360BD975441295C8F127AD95041295C8F52C69754411F85EBF188D950413D0AD723C89754410AD7A37089D9504133333333C897544185EB51D88AD950419A999999C2975441333333A38DD950413D0AD753B99754410AD7A3309CD95041A4703D0AA09754410AD7A310A7D9504114AE47A190975441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000395AA2FB85D9504109B3239EA7975441A4703DBA85D9504152B81E15A897544145AAFB9F83D95041F02B9CB8AC975441B81E85BB82D950410AD7A3B0AE975441F6285C5F7DD950410AD7A360BD975441295C8F127AD95041295C8F52C6975441D780B3EA7CD950418BF48AABC6975441CE2AFF0B7DD95041131E4024C6975441202FDE157DD950418D67C811C69754414494821E7DD95041D18AB5FEC59754415D639F247DD950411EDCC2EEC5975441B6F97D3D85D95041E33425FEAE9754418EB9449F8ED950419C06DA989D9754412F33CBB092D95041427B52E396975441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>115120 - 190957
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001200000052B81E7554DE50411F85EB412F9754410AD7A35058DE504148E17A542B975441E17A144E57DE50410AD7A3102A975441A4703DCA4EDE5041000000501F97544152B81E9548DE50418FC2F578179754417B14AE272BDE5041A4703D0A1E975441333333E332DE50413D0AD7F34297544148E17A2433DE5041CDCCCC2C44975441C3F5281C40DE5041C3F528BC4197544148E17A144CDE5041C3F5286C3E97544185EB51A84FDE5041295C8FF24F9754413D0AD75357DE504185EB5168749754415C8FC2D55ADE5041D7A370FD73975441B81E85EB5CDE5041EC51B80E73975441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001700000042FBB57454DE50413F9B9C422F97544150F91D7554DE504147B3EC412F9754410D5B4B8455DE50411F25D32D2E975441C804A35058DE5041F19A7A542B975441942DF79B57DE5041D79030722A975441E17A144E57DE50410AD7A3102A975441A4703DCA4EDE5041000000501F9754411C68BCC94BDE5041B86C63851B97544183241E9548DE50413483F678179754411D48AE272BDE5041448A3D0A1E9754417B651E2E33DE50416381FC2A44975441C3F5281C40DE5041C3F528BC4197544148E17A144CDE5041C3F5286C3E9754413D0AD75357DE504185EB516874975441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>115120 - 375692
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001200000052B81E7554DE50411F85EB412F9754410AD7A35058DE504148E17A542B975441E17A144E57DE50410AD7A3102A975441A4703DCA4EDE5041000000501F97544152B81E9548DE50418FC2F578179754417B14AE272BDE5041A4703D0A1E975441333333E332DE50413D0AD7F34297544148E17A2433DE5041CDCCCC2C44975441C3F5281C40DE5041C3F528BC4197544148E17A144CDE5041C3F5286C3E97544185EB51A84FDE5041295C8FF24F9754413D0AD75357DE504185EB5168749754415C8FC2D55ADE5041D7A370FD73975441B81E85EB5CDE5041EC51B80E73975441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001700000042FBB57454DE50413F9B9C422F97544150F91D7554DE504147B3EC412F9754410D5B4B8455DE50411F25D32D2E975441C804A35058DE5041F19A7A542B975441942DF79B57DE5041D79030722A975441E17A144E57DE50410AD7A3102A975441A4703DCA4EDE5041000000501F9754411C68BCC94BDE5041B86C63851B97544183241E9548DE50413483F678179754411D48AE272BDE5041448A3D0A1E9754417B651E2E33DE50416381FC2A44975441C3F5281C40DE5041C3F528BC4197544148E17A144CDE5041C3F5286C3E9754413D0AD75357DE504185EB516874975441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>115473 - 189825
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000060000009A99991916D150411F85EB8119925441AE47E1CA12D15041295C8FF2239254410000008030D150411F85EB3130925441F6285C9F2FD15041E17A148E2D925441A4703DFA2BD15041713D0A87229254419A99991916D150411F85EB8119925441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000737D991916D15041FBDDEB8119925441A8D5B7D312D15041CC3A50EF239254419148FF7F30D15041415DE93130925441CD99CB5730D15041675AF6B82F92544139DA69DF2FD150415FB5C94E2E92544179C55B9F2FD150410541158E2D925441E8316BE42DD1504150FC03522892544129AB3DFA2BD150417DEE0A8722925441737D991916D15041FBDDEB8119925441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>115473 - 374757
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000060000009A99991916D150411F85EB8119925441AE47E1CA12D15041295C8FF2239254410000008030D150411F85EB3130925441F6285C9F2FD15041E17A148E2D925441A4703DFA2BD15041713D0A87229254419A99991916D150411F85EB8119925441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000737D991916D15041FBDDEB8119925441A8D5B7D312D15041CC3A50EF239254419148FF7F30D15041415DE93130925441CD99CB5730D15041675AF6B82F92544139DA69DF2FD150415FB5C94E2E92544179C55B9F2FD150410541158E2D925441E8316BE42DD1504150FC03522892544129AB3DFA2BD150417DEE0A8722925441737D991916D15041FBDDEB8119925441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976291 - 379399
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001900000048E17A3470AD5041713D0A6773DD5441AE47E1EA6DAD504148E17A5475DD5441E17A145E6DAD504114AE47217CDD5441C3F528FC6AAD5041E17A14CE87DD5441E17A147E6CAD5041F6285C9F89DD544185EB51D87CAD504185EB51388EDD5441D7A3704D80AD50410AD7A3F08DDD5441EC51B8BE7EAD5041A4703D7A83DD544152B81E0583AD5041CDCCCCFC7CDD5441D7A3705D7EAD5041F6285C9F7ADD54410AD7A3308BAD5041A4703DCA6EDD5441EC51B80E91AD504148E17A646BDD5441AE47E12A98AD5041713D0AA762DD54413D0AD7F39FAD50418FC2F5F860DD5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000035000000EBE51426AEAD50411D2065AF59DD5441548806D299AD5041BDA15A4D5BDD5441DB2447D292AD5041091CB4B35CDD54412BACE85281AD5041CDF9CC1965DD5441BE9072AC77AD50416276AE396DDD544101C27ADD78AD50412B74E7EA70DD5441069F0AE978AD50417F4B84BA71DD54411F85EBF178AD50417B14AED771DD544114308CC578AD504186690D0472DD544143E49AE374AD504157B5FEE575DD5441295C8FD274AD5041713D0AF775DD54417D660F5D73AD50416D3D7B6775DD5441387BE31C71AD50412AD7622774DD544148E17A3470AD5041713D0A6773DD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>117456 - 356904
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000005000000AE47E11AA5C6504133333383A9AB5441AE47E1CAA8C65041C3F5284C98AB5441B81E854B73C650413D0AD7D38EAB5441D7A370AD6FC65041A4703DFA9FAB5441AE47E11AA5C6504133333383A9AB5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000A71E5DCF72C65041C3FF712091AB544194FBB24372C65041EEC092B693AB544157E3FF0672C65041F22957D694AB5441AAFDABD571C65041200B32C095AB544117A4157071C650418611CEA197AB54417E062F6F71C65041876113A697AB54411CEE637770C650416037D33C9CAB544170BECEA773C6504164B6665A9EAB54417E29E084A5C6504160B15C94A7AB54414DF759DBA5C65041B7F28EE7A5AB54412BA1F97EA7C650419F46A6599EAB544140B9687AA8C650413522D6C399AB544159A4E7F472C650415205786E90AB5441A71E5DCF72C65041C3FF712091AB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>117457 - 356832
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000007000000A4703DBA3EC65041E17A141ED4AB5441F6285CAF3AC65041CDCCCC9CCDAB54418FC2F568E8C5504185EB51B8D1AB54418FC2F568EBC550415C8FC245D8AB544114AE4711ECC5504152B81EB5D9AB5441295C8F623FC65041E17A142ED5AB5441A4703DBA3EC65041E17A141ED4AB5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000DF21D2603FC650417FAC2C2ED5AB5441CB7F55B83EC65041074F031BD4AB544153F416C235C65041DB7A9690D4AB5441AB5D126BEBC5504100705E4AD8AB5441F6068914ECC55041866FF1B4D9AB5441DBE99E7BECC550416A1859ADD9AB5441D454A779ECC55041F6C372AFD9AB5441EBFD0C8CECC550414BD772AED9AB5441A4B445A0ECC55041648959ADD9AB54419228906AEDC55041AB715BA2D9AB54413E5B50BAF7C55041C88BE912D9AB5441DF21D2603FC650417FAC2C2ED5AB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>119051 - 3179431
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000D7A3708DFCCA50413333334398AA5441295C8FB22BCB5041A4703DFA91AA54415C8FC2852DCB5041000000B090AA5441F6285C4F29CB50416666665685AA5441AE47E1AA26CB50411F85EBA179AA5441C3F5285CFACA5041C3F528BC89AA5441A4703DEAF7CA5041333333738AAA54410AD7A320F8CA50413D0AD7838EAA544166666626F8CA50415C8FC2D58EAA544166666666F8CA50415C8FC26592AA5441666666F6F8CA50410AD7A36092AA5441C3F5288CFBCA50419A99994992AA5441D7A3708DFCCA50413333334398AA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000014FF252E0ACB50416F2824C29BAA5441AAF35A8F16CB5041FE3CACA99AAA5441AC29A09A1ECB50415C324E9898AA54418D185CE324CB50417A0782CC96AA5441FFE611002BCB50418BEE081292AA5441943019D714CB50413C8E4F0695AA544191DB99F904CB50411AF2C12397AA54411714F396FCCA50411DCB007A98AA54416A73CEFFFCCA5041498EB9E89AAA54419EE2DD11FDCA5041DCAFD8ED9BAA54413D0AD723FDCA5041EC51B8BE9BAA5441E619DF4300CB5041473CA2D79BAA54411870A54901CB5041F71FC9DF9BAA544114FF252E0ACB50416F2824C29BAA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>119051 - 3584076
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000D7A3708DFCCA50413333334398AA5441295C8FB22BCB5041A4703DFA91AA54415C8FC2852DCB5041000000B090AA5441F6285C4F29CB50416666665685AA5441AE47E1AA26CB50411F85EBA179AA5441C3F5285CFACA5041C3F528BC89AA5441A4703DEAF7CA5041333333738AAA54410AD7A320F8CA50413D0AD7838EAA544166666626F8CA50415C8FC2D58EAA544166666666F8CA50415C8FC26592AA5441666666F6F8CA50410AD7A36092AA5441C3F5288CFBCA50419A99994992AA5441D7A3708DFCCA50413333334398AA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000014FF252E0ACB50416F2824C29BAA5441AAF35A8F16CB5041FE3CACA99AAA5441AC29A09A1ECB50415C324E9898AA54418D185CE324CB50417A0782CC96AA5441FFE611002BCB50418BEE081292AA5441943019D714CB50413C8E4F0695AA544191DB99F904CB50411AF2C12397AA54411714F396FCCA50411DCB007A98AA54416A73CEFFFCCA5041498EB9E89AAA54419EE2DD11FDCA5041DCAFD8ED9BAA54413D0AD723FDCA5041EC51B8BE9BAA5441E619DF4300CB5041473CA2D79BAA54411870A54901CB5041F71FC9DF9BAA544114FF252E0ACB50416F2824C29BAA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>119425 - 190947
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000D00000014AE47718DC95041CDCCCCACBFAD5441B81E850B8CC95041713D0A97B7AD54410AD7A3508DC95041E17A14DEAEAD5441CDCCCCBC8DC95041EC51B89EAAAD5441B81E85FB85C950418FC2F588ACAD5441C3F528EC74C95041EC51B8BEB0AD54411F85EB316DC95041AE47E13ACCAD5441F6285C1F6EC95041F6285C7FCDAD54413D0AD70382C95041EC51B86ECDAD5441713D0AF794C95041713D0A47CFAD5441D7A3703D8FC9504114AE4741C9AD544114AE47B18DC950413D0AD773C4AD544114AE47718DC95041CDCCCCACBFAD5441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000014AE47718DC95041CDCCCCACBFAD5441D2B8830B8CC95041C41F0B97B7AD5441F5C0A2508DC95041903415DEAEAD54417ECBCBBC8DC950417691B89EAAAD5441B81E85FB85C950418FC2F588ACAD54416D98AA1075C950416B0AB6B5B0AD54417BD028EC74C9504186D6B8BEB0AD544121E8C49170C950416C4A5C3AC0AD5441232CEC316DC950419BDAE13ACCAD5441479943F16DC9504159C95D40CDAD5441F6285C1F6EC95041F6285C7FCDAD5441DC06902879C950418CE32076CDAD54413CA1D70382C95041FC51B76ECDAD54414354505D8CC95041123BAD70CEAD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>119425 - 395138
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000D00000014AE47718DC95041CDCCCCACBFAD5441B81E850B8CC95041713D0A97B7AD54410AD7A3508DC95041E17A14DEAEAD5441CDCCCCBC8DC95041EC51B89EAAAD5441B81E85FB85C950418FC2F588ACAD5441C3F528EC74C95041EC51B8BEB0AD54411F85EB316DC95041AE47E13ACCAD5441F6285C1F6EC95041F6285C7FCDAD54413D0AD70382C95041EC51B86ECDAD5441713D0AF794C95041713D0A47CFAD5441D7A3703D8FC9504114AE4741C9AD544114AE47B18DC950413D0AD773C4AD544114AE47718DC95041CDCCCCACBFAD5441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000014AE47718DC95041CDCCCCACBFAD5441D2B8830B8CC95041C41F0B97B7AD5441F5C0A2508DC95041903415DEAEAD54417ECBCBBC8DC950417691B89EAAAD5441B81E85FB85C950418FC2F588ACAD54416D98AA1075C950416B0AB6B5B0AD54417BD028EC74C9504186D6B8BEB0AD544121E8C49170C950416C4A5C3AC0AD5441232CEC316DC950419BDAE13ACCAD5441479943F16DC9504159C95D40CDAD5441F6285C1F6EC95041F6285C7FCDAD5441DC06902879C950418CE32076CDAD54413CA1D70382C95041FC51B76ECDAD54414354505D8CC95041123BAD70CEAD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>120250 - 212955
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000000000003400514152B81EF52AD05441EC51B8DE38005141B81E854B2DD054413333337344005141333333831ED05441CDCCCC6C47005141D7A3701D1AD0544185EB51384A005141000000A015D0544148E17AB4530051410AD7A33003D05441000000D05D00514114AE4791EFCF5441C3F5289C640051415C8FC2C5E3CF5441295C8F62660051415C8FC215E1CF5441AE47E1BA60005141E17A145EDECF5441000000003400514152B81EF52AD05441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000AE47E1BA60005141E17A145EDECF544164FE66165E0051414F1865E4E2CF54414060EA8C5A0051412E08D6F2E8CF5441266D33EC560051415FB70C29EFCF544119C26AA54E0051412DC8FC54FDCF54411D1A38F74C005141089A9A3500D054415AB1B1AA480051412C01019207D05441B5A3DDF747005141B2FB34C408D05441BC8F67A6470051410DDFB04F09D05441D38A805C3F005141ACEEF78017D05441D2B322F23A005141862177101FD05441000000003400514152B81EF52AD054410C52B8DE38005141901E854B2DD054413333337344005141333333831ED05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>120250 - 363623
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000000000003400514152B81EF52AD05441EC51B8DE38005141B81E854B2DD054413333337344005141333333831ED05441CDCCCC6C47005141D7A3701D1AD0544185EB51384A005141000000A015D0544148E17AB4530051410AD7A33003D05441000000D05D00514114AE4791EFCF5441C3F5289C640051415C8FC2C5E3CF5441295C8F62660051415C8FC215E1CF5441AE47E1BA60005141E17A145EDECF5441000000003400514152B81EF52AD05441
+</a>
+
+<b>
+01060000000100000001030000000100000017000000AE47E1BA60005141E17A145EDECF544164FE66165E0051414F1865E4E2CF54414060EA8C5A0051412E08D6F2E8CF5441266D33EC560051415FB70C29EFCF544119C26AA54E0051412DC8FC54FDCF54411D1A38F74C005141089A9A3500D054415AB1B1AA480051412C01019207D05441B5A3DDF747005141B2FB34C408D05441BC8F67A6470051410DDFB04F09D05441D38A805C3F005141ACEEF78017D05441D2B322F23A005141862177101FD05441000000003400514152B81EF52AD054410C52B8DE38005141901E854B2DD054413333337344005141333333831ED05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>121082 - 387772
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001500000014AE47215D0D514152B81E4546C054419A9999395F0D51418FC2F51844C054419A999979640D5141E17A145E3BC05441F6285C8F6D0D514114AE47112AC0544185EB51286D0D51410AD7A33028C05441E17A146E560D51413D0AD75316C054419A9999D94E0D51413333336321C054419A9999F94B0D5141713D0A2725C05441E17A14CE450D5141EC51B8EE2AC05441333333E33E0D5141AE47E12A32C05441000000003E0D51410000003031C05441EC51B85E2D0D51418FC2F5883FC05441A4703D5A280D5141E17A144E45C0544100000070260D51411F85EBD149C05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000000AD7A3204C0D5141F6285CDF4CC05441B1EB51C8550D5141F4FFFF0F4EC05441113C9C10560D5141A2C792FB4DC054414FEB51A85A0D5141C0285CAF4CC05441166BEF175C0D5141D74E91F548C0544114AE47215D0D514152B81E4546C054419A9999395F0D51418FC2F51844C0544153183663600D5141462D132A42C0544179999979640D5141C17A145E3BC05441D9B2FF366B0D5141E4AA82882EC05441F1285C8F6D0D51411EAE47112AC0544145EB51286D0D51414BD7A33028C0544134060FDD5F0D5141FF9EDFBD1DC054415591CE9E580D51419EF5890C18C05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>121905 - 237159
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001900000014AE4721E10E5141C3F528DCA8C15441EC51B8EEE30E5141713D0AB7A6C1544114AE4701D30E514152B81E4589C15441EC51B85EC10E5141EC51B86E8CC154419A999979C20E5141295C8F2290C15441000000F0C30E5141EC51B89E90C1544133333383C60E514114AE479190C1544166666606C90E5141EC51B8CE8FC154419A9999D9C90E5141295C8F3291C1544152B81E25CA0E514148E17AA492C15441E17A146EC70E5141AE47E17A93C15441EC51B8DEC30E51410AD7A3D094C15441F6285CAFC30E514114AE473194C15441666666A6BD0E51415C8FC2D596C15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001900000052B81E25CA0E514148E17AA492C15441B22D6451BF0E5141A3AC5F1B9AC1544135508FE5A00E5141E07074E799C15441FC9B25889B0E5141D3FD37FBA8C1544174C2979E9B0E51419FB341FBA8C15441EC762DAC9B0E5141179447FBA8C154415A5328CC9B0E5141BC6955FBA8C154418F4825D49B0E51415EDE58FBA8C15441407E803C9C0E5141650386FBA8C15441A9E946BA9C0E5141786CBCFBA8C15441F415E4D19C0E5141A2A3C6FBA8C1544195DB72F79C0E5141FEE2D6FBA8C15441BB4DD3E29D0E51419EB53CFCA8C15441C3C71436A20E5141C493C22E9CC15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>121932 - 3095439
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000001F85EB718310514152B81E75C8C15441000000D053105141C3F5283CE5C15441C3F5281C571051415C8FC2D5E9C15441666666C65B105141A4703D8AF1C15441CDCCCC9C6410514152B81EE5FEC154417B14AE67641051413D0AD74301C254411F85EBD166105141295C8FB201C25441E17A14CE69105141B81E853B02C254415C8FC2857B10514114AE475101C25441000000407E105141D7A3702D01C25441D7A3705D7F105141EC51B81E01C2544166666666811051413D0AD70301C25441295C8F229A105141CDCCCCBCFFC1544148E17A549C105141C3F528DCFDC15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000CE50C7587F105141F2DBF51E01C25441D7A3705D7F105141EC51B81E01C2544166666666811051413D0AD70301C25441295C8F229A105141CDCCCCBCFFC1544148E17A549C105141C3F528DCFDC15441EC51B8AE9B105141CDCCCC3CF5C1544111C156269B1051419EF7885AF2C154413D0AD7E39A105141295C8FF2F0C1544142A19FD89A1051415238C3B5F0C15441CE50C7587F105141F2DBF51E01C25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>121932 - 3189934
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000001F85EB718310514152B81E75C8C15441000000D053105141C3F5283CE5C15441C3F5281C571051415C8FC2D5E9C15441666666C65B105141A4703D8AF1C15441CDCCCC9C6410514152B81EE5FEC154417B14AE67641051413D0AD74301C254411F85EBD166105141295C8FB201C25441E17A14CE69105141B81E853B02C254415C8FC2857B10514114AE475101C25441000000407E105141D7A3702D01C25441D7A3705D7F105141EC51B81E01C2544166666666811051413D0AD70301C25441295C8F229A105141CDCCCCBCFFC1544148E17A549C105141C3F528DCFDC15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000CE50C7587F105141F2DBF51E01C25441D7A3705D7F105141EC51B81E01C2544166666666811051413D0AD70301C25441295C8F229A105141CDCCCCBCFFC1544148E17A549C105141C3F528DCFDC15441EC51B8AE9B105141CDCCCC3CF5C1544111C156269B1051419EF7885AF2C154413D0AD7E39A105141295C8FF2F0C1544142A19FD89A1051415238C3B5F0C15441CE50C7587F105141F2DBF51E01C25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>187274 - 373704
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000005000000B81E850BB0D250417B14AE57B490544114AE47C1C6D250411F85EBB18F90544148E17A54C1D2504133333323939054418FC2F5D8ADD25041713D0AF7B2905441B81E850BB0D250417B14AE57B4905441
+</a>
+
+<b>
+0106000000010000000103000000010000000600000093AB40A8C5D25041F3226B77919054413D3B47C1C6D250416D3EECB18F90544180E97A54C1D25041BF7C3423939054418FC2F5D8ADD25041713D0AF7B2905441BC21850BB0D250419D0FAE57B490544193AB40A8C5D25041F3226B7791905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>123226 - 1554265
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000019000000EC51B8CE82D15041A4703DAA45F35441713D0A5786D150417B14AE5737F354411F85EBE18AD15041D7A370ED24F35441F6285C1F8BD1504148E17AF423F35441713D0AC76AD150411F85EB611FF35441713D0A8767D15041E17A147E1EF35441B81E85EB5BD15041B81E858B19F35441666666A641D150410AD7A3D00DF35441D7A3707D15D15041A4703D9AFFF25441295C8F4212D15041295C8F92FEF254410AD7A3C005D15041E17A148E05F35441713D0A4722D150417B14AEC70EF3544148E17A5421D15041D7A370DD17F35441AE47E15A21D15041666666161BF35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000A37B42D226D150413D7FE81209F35441649AC3673FD1504186A903CD10F354416CF4A68567D150410FE45F5C22F3544174F23D558AD150416953BD2727F35441F6285C1F8BD1504148E17AF423F35441713D0AC76AD150411F85EB611FF35441713D0A8767D15041E17A147E1EF35441B81E85EB5BD15041B81E858B19F35441666666A641D150410AD7A3D00DF35441295C8F4212D15041295C8F92FEF25441C9B66DD10DD150412377610D01F35441A37B42D226D150413D7FE81209F35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>123226 - 3544556
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000019000000EC51B8CE82D15041A4703DAA45F35441713D0A5786D150417B14AE5737F354411F85EBE18AD15041D7A370ED24F35441F6285C1F8BD1504148E17AF423F35441713D0AC76AD150411F85EB611FF35441713D0A8767D15041E17A147E1EF35441B81E85EB5BD15041B81E858B19F35441666666A641D150410AD7A3D00DF35441D7A3707D15D15041A4703D9AFFF25441295C8F4212D15041295C8F92FEF254410AD7A3C005D15041E17A148E05F35441713D0A4722D150417B14AEC70EF3544148E17A5421D15041D7A370DD17F35441AE47E15A21D15041666666161BF35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000A37B42D226D150413D7FE81209F35441649AC3673FD1504186A903CD10F354416CF4A68567D150410FE45F5C22F3544174F23D558AD150416953BD2727F35441F6285C1F8BD1504148E17AF423F35441713D0AC76AD150411F85EB611FF35441713D0A8767D15041E17A147E1EF35441B81E85EB5BD15041B81E858B19F35441666666A641D150410AD7A3D00DF35441295C8F4212D15041295C8F92FEF25441C9B66DD10DD150412377610D01F35441A37B42D226D150413D7FE81209F35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>126042 - 198898
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000700000085EB51C8CCBC5041F6285CEFFA4655413D0AD7A3C9BC5041D7A370DDFA465541B81E858BC5BC5041EC51B8FE0C47554133333313C1BC504185EB51C8204755413D0AD783C5BC50419A9999C92147554133333363C9BC504152B81E150D47554185EB51C8CCBC5041F6285CEFFA465541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000A0745C51CCBC50411CCDB5ECFA46554149EED7A3C9BC504128C471DDFA465541B266858BC5BC5041BB1EB7FE0C475541D2813413C1BC5041DA0751C820475541FBC9F959C5BC50415BBC1FC0214755415EDCD583C5BC5041465599C921475541E275D883C5BC5041510192C92147554169543263C9BC50417F5F23150D4755410EAB3263C9BC5041D06E1F150D475541FFFF50C8CCBC5041B7235CEFFA465541A0745C51CCBC50411CCDB5ECFA465541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>126042 - 416182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000700000085EB51C8CCBC5041F6285CEFFA4655413D0AD7A3C9BC5041D7A370DDFA465541B81E858BC5BC5041EC51B8FE0C47554133333313C1BC504185EB51C8204755413D0AD783C5BC50419A9999C92147554133333363C9BC504152B81E150D47554185EB51C8CCBC5041F6285CEFFA465541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000A0745C51CCBC50411CCDB5ECFA46554149EED7A3C9BC504128C471DDFA465541B266858BC5BC5041BB1EB7FE0C475541D2813413C1BC5041DA0751C820475541FBC9F959C5BC50415BBC1FC0214755415EDCD583C5BC5041465599C921475541E275D883C5BC5041510192C92147554169543263C9BC50417F5F23150D4755410EAB3263C9BC5041D06E1F150D475541FFFF50C8CCBC5041B7235CEFFA465541A0745C51CCBC50411CCDB5ECFA465541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>124671 - 59570
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000013000000713D0A1730BD5041D7A3700D990255418FC2F5A826BD50415C8FC285A302554185EB515836BD50413D0AD703AE0255418FC2F52848BD50419A9999D9B902554148E17A044DBD50415C8FC2B5BC0255413333330350BD504166666656BE025541CDCCCC7C54BD504133333363C00255411F85EBB15ABD5041F6285C8FC202554148E17A0461BD50410AD7A350C4025541B81E856B66BD5041EC51B82EC5025541AE47E1FA6ABD5041A4703D4AC5025541B81E856B6EBD5041713D0AF7C4025541AE47E1FA71BD5041EC51B8EEB502554148E17AF453BD50417B14AE77B2025541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000476FD27352BD504140298A74BF0255414D009D3755BD5041C26F2A83C00255416D35658056BD504197E2A517C10255411F85EBB15ABD5041F6285C8FC2025541E8C45EC05FBD5041816FACF6C302554193FA6FD162BD5041A487B697C4025541AB6F836263BD50415B287CE4C20255414922B2BE64BD5041C1F6A623C4025541C26B139467BD504131BFAE5DC40255412D3A3ED368BD5041542E9FE9C30255418B47137F69BD50410F494941C502554153B86ADE69BD50411AAE8843C50255410F8D8EBD6BBD504116FAD837C502554125E359C16BBD50414D357D37C5025541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>243115 - 1416815
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000A4703D5A8B1A51419A999929251A554114AE47B18B1A514100000030241A5541295C8FF28B1A51418FC2F578221A5541295C8F52801A51418FC2F508211A554114AE47D1701A5141EC51B81E1F1A5541A4703DCA601A5141F6285CFF1C1A554114AE4761521A5141CDCCCCCC1A1A55413D0AD783501A5141E17A148E1A1A55413D0AD753501A51419A9999691B1A5541666666064D1A5141000000E02D1A5541E17A144E541A51415C8FC255351A5541A4703DBA521A514166666606361A55415C8FC2954C1A51415C8FC255301A5541000000304C1A5141CDCCCC8C321A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000002FD3E15D4C1A5141959917C8321A5541D7A3707D501A5141C3F5281C381A5541713D0A07541A5141E17A14AE3C1A5541295C8FF2551A5141C3F528EC3F1A5541D7A370FD551A51411F85EB71421A5541CDCCCC5C471A5141E17A142E591A5541000000905C1A51410AD7A3C05F1A5541E17A141E661A5141295C8FB2621A5541333333E36E1A5141295C8F62651A5541C3F528EC701A5141333333D3641A554133333363771A5141AE47E1BA5D1A5541713D0AF7781A514100000070591A5541D7A370ED7E1A514185EB51C8481A55419A9999B98A1A5141713D0AF7261A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>243115 - 3820319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000A4703D5A8B1A51419A999929251A554114AE47B18B1A514100000030241A5541295C8FF28B1A51418FC2F578221A5541295C8F52801A51418FC2F508211A554114AE47D1701A5141EC51B81E1F1A5541A4703DCA601A5141F6285CFF1C1A554114AE4761521A5141CDCCCCCC1A1A55413D0AD783501A5141E17A148E1A1A55413D0AD753501A51419A9999691B1A5541666666064D1A5141000000E02D1A5541E17A144E541A51415C8FC255351A5541A4703DBA521A514166666606361A55415C8FC2954C1A51415C8FC255301A5541000000304C1A5141CDCCCC8C321A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000002FD3E15D4C1A5141959917C8321A5541D7A3707D501A5141C3F5281C381A5541713D0A07541A5141E17A14AE3C1A5541295C8FF2551A5141C3F528EC3F1A5541D7A370FD551A51411F85EB71421A5541CDCCCC5C471A5141E17A142E591A5541000000905C1A51410AD7A3C05F1A5541E17A141E661A5141295C8FB2621A5541333333E36E1A5141295C8F62651A5541C3F528EC701A5141333333D3641A554133333363771A5141AE47E1BA5D1A5541713D0AF7781A514100000070591A5541D7A370ED7E1A514185EB51C8481A55419A9999B98A1A5141713D0AF7261A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>125533 - 3103591
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D000000333333A3B1BB504114AE4731F4035541A4703D4ABBBB5041E17A14AEF6035541E17A149EBFBB50410AD7A3B0F703554100000050C1BB504152B81E75EC035541666666F6BCBB50417B14AE97EB035541AE47E10AB9BB504166666666EA0355410AD7A320B9BB504166666686E8035541295C8F32BABB5041713D0A27E30355411F85EB11A6BB5041D7A370EDD80355410AD7A330A8BB5041F6285C8FD50355419A99998999BB5041AE47E19ACC0355419A99998995BB5041713D0A97CA035541EC51B87E91BB50417B14AE27C90355413D0AD7138DBB50417B14AE27C8035541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000220000004C26BEFE8BBB5041B73EAEADE2035541C6A5D5B48BBB504141309CFFE8035541F4A2892E8FBB50411F435EABE503554164AF527690BB504162170A70E60355414C4E2D3E8DBB5041E6009BE6EA035541B38DA47C8BBB504138AA53C7EE035541A3F9D04D8BBB5041B207CC21F3035541E3491F098CBB504114455831F70355410D0A7F4A98BB504116C3E556F1035541A789CE1E97BB50415EDAB537EF0355415720FA6D9BBB5041F5A24B04ED0355418848F61F9DBB50411A62859AED035541C528A7D49DBB5041DA55A5B3EE035541014D43E09EBB50416CE8EE3AEE035541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>125533 - 3322708
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D000000333333A3B1BB504114AE4731F4035541A4703D4ABBBB5041E17A14AEF6035541E17A149EBFBB50410AD7A3B0F703554100000050C1BB504152B81E75EC035541666666F6BCBB50417B14AE97EB035541AE47E10AB9BB504166666666EA0355410AD7A320B9BB504166666686E8035541295C8F32BABB5041713D0A27E30355411F85EB11A6BB5041D7A370EDD80355410AD7A330A8BB5041F6285C8FD50355419A99998999BB5041AE47E19ACC0355419A99998995BB5041713D0A97CA035541EC51B87E91BB50417B14AE27C90355413D0AD7138DBB50417B14AE27C8035541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000220000004C26BEFE8BBB5041B73EAEADE2035541C6A5D5B48BBB504141309CFFE8035541F4A2892E8FBB50411F435EABE503554164AF527690BB504162170A70E60355414C4E2D3E8DBB5041E6009BE6EA035541B38DA47C8BBB504138AA53C7EE035541A3F9D04D8BBB5041B207CC21F3035541E3491F098CBB504114455831F70355410D0A7F4A98BB504116C3E556F1035541A789CE1E97BB50415EDAB537EF0355415720FA6D9BBB5041F5A24B04ED0355418848F61F9DBB50411A62859AED035541C528A7D49DBB5041DA55A5B3EE035541014D43E09EBB50416CE8EE3AEE035541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>872072 - 219915
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000333333E32E72514114AE4741F89F5441F6285C3F2D72514114AE47B1F99F5441D7A3703D1B725141333333E30AA0544148E17A8408725141AE47E17A1BA0544114AE4711F6715141000000702CA0544100000070F2715141000000C02FA054413D0AD7D3F3715141713D0A1733A05441AE47E1AAFF7151419A9999A928A054413D0AD7B30B7251415C8FC2651FA05441E17A14EE16725141E17A143E17A0544148E17A34247251413D0AD7630EA05441C3F5283C307251413D0AD7A306A05441333333E3337251419A99994904A05441333333E32E72514114AE4741F89F5441
+</a>
+
+<b>
+010600000001000000010300000001000000C300000041804EE0267251411AA54DAB0CA05441BD0A7C27267251419B7883220DA05441926A0CFD237251418705CE880EA054411715E9D22072514190A20CA510A05441D3B7F58020725141966F85DE10A05441D903166D1C725141A39FCF9313A05441B83F12281B72514163788C6C14A05441D5C3A3EE1872514194E946E815A05441269A17E31672514117970F4617A054410473532B1072514178D732271CA054413395D37A0D725141CA2419201EA054415D989AB30B725141C517F1651FA054410AF16B270B7251415C00DCD11FA05441CE2057C40A72514144CC221E20A05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>872072 - 261618
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000333333E32E72514114AE4741F89F5441F6285C3F2D72514114AE47B1F99F5441D7A3703D1B725141333333E30AA0544148E17A8408725141AE47E17A1BA0544114AE4711F6715141000000702CA0544100000070F2715141000000C02FA054413D0AD7D3F3715141713D0A1733A05441AE47E1AAFF7151419A9999A928A054413D0AD7B30B7251415C8FC2651FA05441E17A14EE16725141E17A143E17A0544148E17A34247251413D0AD7630EA05441C3F5283C307251413D0AD7A306A05441333333E3337251419A99994904A05441333333E32E72514114AE4741F89F5441
+</a>
+
+<b>
+010600000001000000010300000001000000C300000041804EE0267251411AA54DAB0CA05441BD0A7C27267251419B7883220DA05441926A0CFD237251418705CE880EA054411715E9D22072514190A20CA510A05441D3B7F58020725141966F85DE10A05441D903166D1C725141A39FCF9313A05441B83F12281B72514163788C6C14A05441D5C3A3EE1872514194E946E815A05441269A17E31672514117970F4617A054410473532B1072514178D732271CA054413395D37A0D725141CA2419201EA054415D989AB30B725141C517F1651FA054410AF16B270B7251415C00DCD11FA05441CE2057C40A72514144CC221E20A05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>904239 - 147949
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001C0000005C8FC24557C9504114AE47317A3855417B14AE676CC950419A9999A989385541E17A14CE74C95041EC51B84E903855415C8FC25582C950419A9999A99B385541A4703D3A94C950416666666688385541E17A140E8FC95041D7A370CD833855418FC2F50894C9504148E17A3480385541C3F5287C98C95041E17A14FE7C385541CDCCCCDC8FC950415C8FC25573385541EC51B83E8DC95041C3F528FC6F38554185EB51488CC9504148E17A846E3855410AD7A3B08CC95041D7A370CD6D38554185EB51F889C95041000000006B385541AE47E1EA85C9504185EB51E867385541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000005C8FC25582C950419A9999A99B385541A4703D3A94C950416666666688385541E17A140E8FC95041D7A370CD833855418FC2F50894C9504148E17A3480385541C3F5287C98C95041E17A14FE7C385541CDCCCCDC8FC950415C8FC25573385541EC51B83E8DC95041C3F528FC6F38554185EB51488CC9504148E17A846E3855410AD7A3B08CC95041D7A370CD6D38554185EB51F889C95041000000006B385541AE47E1EA85C9504185EB51E867385541666666E682C950417B14AE1764385541333333A37FC95041EC51B8DE60385541AE47E19A78C95041713D0A175C385541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>904239 - 335447
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001C0000005C8FC24557C9504114AE47317A3855417B14AE676CC950419A9999A989385541E17A14CE74C95041EC51B84E903855415C8FC25582C950419A9999A99B385541A4703D3A94C950416666666688385541E17A140E8FC95041D7A370CD833855418FC2F50894C9504148E17A3480385541C3F5287C98C95041E17A14FE7C385541CDCCCCDC8FC950415C8FC25573385541EC51B83E8DC95041C3F528FC6F38554185EB51488CC9504148E17A846E3855410AD7A3B08CC95041D7A370CD6D38554185EB51F889C95041000000006B385541AE47E1EA85C9504185EB51E867385541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000005C8FC25582C950419A9999A99B385541A4703D3A94C950416666666688385541E17A140E8FC95041D7A370CD833855418FC2F50894C9504148E17A3480385541C3F5287C98C95041E17A14FE7C385541CDCCCCDC8FC950415C8FC25573385541EC51B83E8DC95041C3F528FC6F38554185EB51488CC9504148E17A846E3855410AD7A3B08CC95041D7A370CD6D38554185EB51F889C95041000000006B385541AE47E1EA85C9504185EB51E867385541666666E682C950417B14AE1764385541333333A37FC95041EC51B8DE60385541AE47E19A78C95041713D0A175C385541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975929 - 457836
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001000000050E62ACB49DE504137C6DF50F064544152B81E954BDE504152B81EE5F46454417363B86F5CDE5041276B8C3FFA645441856C17BA77DE50417FBA99EA0265544189FD42E1AFDE5041B76288C014655441D7A370DDC4DE5041AE47E16A1B655441A360DD56C6DE5041745FF9EC1B65544148E17AD4C4DE5041AE47E1DA166554412B451143A3DE5041D1655A540C6554411E2445E48DDE5041E2E3F1A005655441DE3BA9E46FDE5041589EF238FC6454411B5B7AD554DE5041A511E1BCF36454410355B5354DDE5041753CE358F1645441C53FA6E84BDE5041A76074F0F0645441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000600000048E17AD4C4DE5041AE47E1DA166554413D0AD743C3DE5041666666C611655441AE47E12A48DE5041295C8F52EC6454418FC2F50849DE5041F6285C1FEE6454413333339349DE504152B81E35F064544148E17AD4C4DE5041AE47E1DA16655441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975929 - 1757085
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001000000050E62ACB49DE504137C6DF50F064544152B81E954BDE504152B81EE5F46454417363B86F5CDE5041276B8C3FFA645441856C17BA77DE50417FBA99EA0265544189FD42E1AFDE5041B76288C014655441D7A370DDC4DE5041AE47E16A1B655441A360DD56C6DE5041745FF9EC1B65544148E17AD4C4DE5041AE47E1DA166554412B451143A3DE5041D1655A540C6554411E2445E48DDE5041E2E3F1A005655441DE3BA9E46FDE5041589EF238FC6454411B5B7AD554DE5041A511E1BCF36454410355B5354DDE5041753CE358F1645441C53FA6E84BDE5041A76074F0F0645441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000080000003D0AD743C3DE5041666666C61165544152B81E75C2DE50411F85EB410F655441000000E046DE50411F85EBA1E9645441AE47E12A48DE5041295C8F52EC6454418FC2F50849DE5041F6285C1FEE6454413333339349DE504152B81E35F064544148E17AD4C4DE5041AE47E1DA166554413D0AD743C3DE5041666666C611655441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975929 - 3605029
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001000000050E62ACB49DE504137C6DF50F064544152B81E954BDE504152B81EE5F46454417363B86F5CDE5041276B8C3FFA645441856C17BA77DE50417FBA99EA0265544189FD42E1AFDE5041B76288C014655441D7A370DDC4DE5041AE47E16A1B655441A360DD56C6DE5041745FF9EC1B65544148E17AD4C4DE5041AE47E1DA166554412B451143A3DE5041D1655A540C6554411E2445E48DDE5041E2E3F1A005655441DE3BA9E46FDE5041589EF238FC6454411B5B7AD554DE5041A511E1BCF36454410355B5354DDE5041753CE358F1645441C53FA6E84BDE5041A76074F0F0645441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000080000003D0AD743C3DE5041666666C61165544152B81E75C2DE50411F85EB410F655441000000E046DE50411F85EBA1E9645441AE47E12A48DE5041295C8F52EC6454418FC2F50849DE5041F6285C1FEE6454413333339349DE504152B81E35F064544148E17AD4C4DE5041AE47E1DA166554413D0AD743C3DE5041666666C611655441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130098 - 1213564
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000043000000D7A3701D149351413D0AD75395805441A4703D7A129351411F85EB81938054416666661612935141C3F5288C9280544152B81E4512935141F6285CEF90805441F6285CFF12935141A4703D0A8F8054417B14AE4713935141B81E850B8C805441A4703DEA13935141C3F528AC8A80544148E17A44109351417B14AE07828054413D0AD7B30D9351410AD7A3307E805441D7A3708D0B9351413D0AD7637C805441D7A370FD09935141D7A3707D7D805441C3F5285C07935141A4703D4A7F8054418FC2F5F8039351411F85EB8183805441E17A14AE01935141F6285CAF82805441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000250000001FD943FDF5925141A4F7DCAA9280544189568C8BF89251415BEC183A8F8054418DC8F18BFB925141137F16208C8054412F906A2602935141A57EF9B8868054418FC2F5F8039351411F85EB818380544175A82E58049351410AD55D0B83805441CDCCCC3C03935141A4703D6A8180544100000040FF9251413333333379805441CDCCCCECFE925141CDCCCCEC71805441295C8F12FA925141AE47E1CA74805441000000E0F6925141EC51B8AE7680544114AE4791F5925141295C8FA277805441CDCCCC9CF4925141A4703D0A798054418FC2F578F3925141F6285CBF7B805441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130098 - 3290467
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000043000000D7A3701D149351413D0AD75395805441A4703D7A129351411F85EB81938054416666661612935141C3F5288C9280544152B81E4512935141F6285CEF90805441F6285CFF12935141A4703D0A8F8054417B14AE4713935141B81E850B8C805441A4703DEA13935141C3F528AC8A80544148E17A44109351417B14AE07828054413D0AD7B30D9351410AD7A3307E805441D7A3708D0B9351413D0AD7637C805441D7A370FD09935141D7A3707D7D805441C3F5285C07935141A4703D4A7F8054418FC2F5F8039351411F85EB8183805441E17A14AE01935141F6285CAF82805441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000250000001FD943FDF5925141A4F7DCAA9280544189568C8BF89251415BEC183A8F8054418DC8F18BFB925141137F16208C8054412F906A2602935141A57EF9B8868054418FC2F5F8039351411F85EB818380544175A82E58049351410AD55D0B83805441CDCCCC3C03935141A4703D6A8180544100000040FF9251413333333379805441CDCCCCECFE925141CDCCCCEC71805441295C8F12FA925141AE47E1CA74805441000000E0F6925141EC51B8AE7680544114AE4791F5925141295C8FA277805441CDCCCC9CF4925141A4703D0A798054418FC2F578F3925141F6285CBF7B805441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130623 - 55608
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000550000001F85EBC1ABA75141D7A3703D2E9354418FC2F538AFA75141A4703D4A2F9354413D0AD763B3A7514148E17AB4289354417B14AE57AEA75141AE47E15A1A935441D7A3705DA9A7514148E17A340C9354418FC2F5E8A8A75141713D0A770B9354410AD7A3E0A6A75141A4703D1A08935441EC51B8CEA2A75141713D0AF7FE9254411F85EB51A0A75141000000F0F3925441333333839EA751411F85EBE1EB92544152B81E959FA7514148E17A44E3925441B81E851B93A75141EC51B86EE1925441295C8F4292A75141713D0A27DB925441B81E857B91A751418FC2F5F8D8925441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000410000001F85EBC1ABA75141D7A3703D2E935441F88CBDCBABA75141AC776A402E935441255846D6ABA751416C362C332E935441E73BC19F92A75141420A6F8B2A935441273260E485A75141380EFD7B0B9354415594424484A75141D68CF02F0C935441295C8F3283A751415C8FC2C50C935441295C8F4281A75141CDCCCC7C0D935441D7A3703D7FA75141713D0A570F93544185EB51587DA751419A9999491293544185EB51E87CA751417B14AE4716935441C3F528FC7CA751415C8FC2B51C9354416AEFAFF37DA75141C29233FC1D9354414584768A7EA751410AFC11A51E935441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130623 - 97296
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000550000001F85EBC1ABA75141D7A3703D2E9354418FC2F538AFA75141A4703D4A2F9354413D0AD763B3A7514148E17AB4289354417B14AE57AEA75141AE47E15A1A935441D7A3705DA9A7514148E17A340C9354418FC2F5E8A8A75141713D0A770B9354410AD7A3E0A6A75141A4703D1A08935441EC51B8CEA2A75141713D0AF7FE9254411F85EB51A0A75141000000F0F3925441333333839EA751411F85EBE1EB92544152B81E959FA7514148E17A44E3925441B81E851B93A75141EC51B86EE1925441295C8F4292A75141713D0A27DB925441B81E857B91A751418FC2F5F8D8925441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000410000001F85EBC1ABA75141D7A3703D2E935441F48CBDCBABA75141AE776A402E935441295846D6ABA751416A362C332E935441EA3BC19F92A75141440A6F8B2A935441253260E485A75141330EFD7B0B9354415A94424484A75141DB8CF02F0C935441295C8F3283A751415C8FC2C50C935441295C8F4281A75141CDCCCC7C0D935441D7A3703D7FA75141713D0A570F93544185EB51587DA751419A9999491293544185EB51E87CA751417B14AE4716935441C3F528FC7CA751415C8FC2B51C93544167EFAFF37DA75141BF9233FC1D9354414184768A7EA751410CFC11A51E935441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130623 - 299029
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000550000001F85EBC1ABA75141D7A3703D2E9354418FC2F538AFA75141A4703D4A2F9354413D0AD763B3A7514148E17AB4289354417B14AE57AEA75141AE47E15A1A935441D7A3705DA9A7514148E17A340C9354418FC2F5E8A8A75141713D0A770B9354410AD7A3E0A6A75141A4703D1A08935441EC51B8CEA2A75141713D0AF7FE9254411F85EB51A0A75141000000F0F3925441333333839EA751411F85EBE1EB92544152B81E959FA7514148E17A44E3925441B81E851B93A75141EC51B86EE1925441295C8F4292A75141713D0A27DB925441B81E857B91A751418FC2F5F8D8925441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000410000001F85EBC1ABA75141D7A3703D2E935441F48CBDCBABA75141AE776A402E935441295846D6ABA751416A362C332E935441EA3BC19F92A75141440A6F8B2A935441253260E485A75141330EFD7B0B9354415A94424484A75141DB8CF02F0C935441295C8F3283A751415C8FC2C50C935441295C8F4281A75141CDCCCC7C0D935441D7A3703D7FA75141713D0A570F93544185EB51587DA751419A9999491293544185EB51E87CA751417B14AE4716935441C3F528FC7CA751415C8FC2B51C93544167EFAFF37DA75141BF9233FC1D9354414184768A7EA751410CFC11A51E935441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130821 - 3176149
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000A4703D3AA38B5141D7A370CD5A96544148E17A14A48B514148E17AC4649654415C8FC245A78B51411F85EB218A96544114AE4711A98B51415C8FC2259F96544148E17A34AA8B5141CDCCCC8C9E96544152B81E35AE8B5141A4703DDA9B965441AE47E1FAB18B51416666669698965441C3F5282CB58B514185EB5148959654410AD7A3E0B98B51415C8FC2B58E9654415C8FC245BB8B514114AE47418D965441AE47E12ABB8B5141295C8F228C965441C3F5284CB88B51413D0AD7B36D96544100000040B78B51411F85EB1165965441AE47E1EAAA8B5141A4703D9A66965441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000004F915E76A38B51413FCAAB9F5D96544120AA3B27A48B514122B0C2A05D965441EF8B8170A48B51413FCAAB9F5D9654411C1B79F4A58B5141335F1E9D5D96544103EE5A63A68B514179A5FF9B5D9654415BBD30DAA68B51411B8903985D96544111C9A7DEA98B5141E067478C5D9654419730089FA98B5141FEEEBB1E5B9654414A59CE75A98B5141ABD54F9A59965441A4703D8AA88B5141EC51B88E509654410AD7A360A28B5141713D0AD75096544137AF72F5A28B5141F9FA43DE57965441DE14AC3CA38B5141E810B6265B9654418ED76A5AA38B51414F9576BF5C965441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130821 - 3340917
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000A4703D3AA38B5141D7A370CD5A96544148E17A14A48B514148E17AC4649654415C8FC245A78B51411F85EB218A96544114AE4711A98B51415C8FC2259F96544148E17A34AA8B5141CDCCCC8C9E96544152B81E35AE8B5141A4703DDA9B965441AE47E1FAB18B51416666669698965441C3F5282CB58B514185EB5148959654410AD7A3E0B98B51415C8FC2B58E9654415C8FC245BB8B514114AE47418D965441AE47E12ABB8B5141295C8F228C965441C3F5284CB88B51413D0AD7B36D96544100000040B78B51411F85EB1165965441AE47E1EAAA8B5141A4703D9A66965441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000004F915E76A38B51413FCAAB9F5D96544120AA3B27A48B514122B0C2A05D965441EF8B8170A48B51413FCAAB9F5D9654411C1B79F4A58B5141335F1E9D5D96544103EE5A63A68B514179A5FF9B5D9654415BBD30DAA68B51411B8903985D96544111C9A7DEA98B5141E067478C5D9654419730089FA98B5141FEEEBB1E5B9654414A59CE75A98B5141ABD54F9A59965441A4703D8AA88B5141EC51B88E509654410AD7A360A28B5141713D0AD75096544137AF72F5A28B5141F9FA43DE57965441DE14AC3CA38B5141E810B6265B9654418ED76A5AA38B51414F9576BF5C965441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>187298 - 35972
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000F6285CCF31D15041F6285C5F799354419A99991901D15041B81E85BBCF93544148E17A5402D150410AD7A350D09354410AD7A3B033D15041F6285C1F7A935441F6285CCF31D15041F6285C5F79935441
+</a>
+
+<b>
+010600000001000000010300000001000000080000008609013824D15041B8520E78919354411971C59521D150413F786E239693544148E6A6481BD1504100F9654FA19354410EB025381CD15041B2F220CBA193544168113C9026D150415ED7364B8F93544167D67ECF25D1504187EC98A58E935441B2B6069225D15041422894128F9354418609013824D15041B8520E7891935441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>187298 - 74634
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000F6285CCF31D15041F6285C5F799354419A99991901D15041B81E85BBCF93544148E17A5402D150410AD7A350D09354410AD7A3B033D15041F6285C1F7A935441F6285CCF31D15041F6285C5F79935441
+</a>
+
+<b>
+010600000001000000010300000001000000080000008609013824D15041B8520E78919354411971C59521D150413F786E239693544148E6A6481BD1504100F9654FA19354410EB025381CD15041B2F220CBA193544168113C9026D150415ED7364B8F93544167D67ECF25D1504187EC98A58E935441B2B6069225D15041422894128F9354418609013824D15041B8520E7891935441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>131196 - 3144157
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A000000295C8FA28B8B5141C3F528BCF19554411F85EB71888B5141F6285CEFF29554418FC2F598878B51410AD7A3C0F295544114AE47918A8B5141B81E85FBFA955441AE47E11A958B5141E17A142E1896544152B81E15978B5141C3F528CC1796544114AE47119C8B51415C8FC2E5169654417B14AE87918B51413D0AD7B3F9955441295C8F228E8B5141C3F5284CF0955441295C8FA28B8B5141C3F528BCF1955441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000F39D06ED898B514193F5F331F8955441E970749B908B514160EB6F25F79554418E755E1F8E8B5141F8F95356F095544168174AA48B8B5141B2632ABBF19554411F85EB71888B5141F6285CEFF29554410E62529E878B514143707FCFF2955441BB956B9B888B5141A73CD88CF59554414F4CE343898B51419704AD5FF7955441E1631196898B5141EE7D6643F8955441F39D06ED898B514193F5F331F8955441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>131196 - 3534419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A000000295C8FA28B8B5141C3F528BCF19554411F85EB71888B5141F6285CEFF29554418FC2F598878B51410AD7A3C0F295544114AE47918A8B5141B81E85FBFA955441AE47E11A958B5141E17A142E1896544152B81E15978B5141C3F528CC1796544114AE47119C8B51415C8FC2E5169654417B14AE87918B51413D0AD7B3F9955441295C8F228E8B5141C3F5284CF0955441295C8FA28B8B5141C3F528BCF1955441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000F39D06ED898B514193F5F331F8955441E970749B908B514160EB6F25F79554418E755E1F8E8B5141F8F95356F095544168174AA48B8B5141B2632ABBF19554411F85EB71888B5141F6285CEFF29554410E62529E878B514143707FCFF2955441BB956B9B888B5141A73CD88CF59554414F4CE343898B51419704AD5FF7955441E1631196898B5141EE7D6643F8955441F39D06ED898B514193F5F331F8955441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>131316 - 1215732
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001E000000F6285C9FA77F514185EB5148298A54418FC2F558997F5141A4703DBA2B8A5441EC51B8FE977F51415C8FC2F52B8A54419A999959927F51411F85EB612C8A54418FC2F5E87E7F51415C8FC2D52D8A54415C8FC2757B7F5141CDCCCC4C2E8A5441A4703DEA717F51415C8FC2952F8A54410AD7A3506E7F5141713D0A87308A54415C8FC2F5687F5141AE47E16A328A5441EC51B8CE587F5141E17A14BE3A8A544114AE4751367F5141A4703D2A488A544133333303317F5141A4703D2A4A8A54415C8FC275367F5141C3F528BC4B8A544148E17A743A7F5141713D0A174E8A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000F6285C9FA77F514185EB5148298A54418FC2F558997F5141A4703DBA2B8A5441EC51B8FE977F51415C8FC2F52B8A54419A999959927F51411F85EB612C8A54418FC2F5E87E7F51415C8FC2D52D8A54415C8FC2757B7F5141CDCCCC4C2E8A5441A4703DEA717F51415C8FC2952F8A54410AD7A3506E7F5141713D0A87308A54415C8FC2F5687F5141AE47E16A328A5441EC51B8CE587F5141E17A14BE3A8A544114AE4751367F5141A4703D2A488A544133333303317F5141A4703D2A4A8A54415C8FC275367F5141C3F528BC4B8A544148E17A743A7F5141713D0A174E8A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>131316 - 3390100
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001E000000F6285C9FA77F514185EB5148298A54418FC2F558997F5141A4703DBA2B8A5441EC51B8FE977F51415C8FC2F52B8A54419A999959927F51411F85EB612C8A54418FC2F5E87E7F51415C8FC2D52D8A54415C8FC2757B7F5141CDCCCC4C2E8A5441A4703DEA717F51415C8FC2952F8A54410AD7A3506E7F5141713D0A87308A54415C8FC2F5687F5141AE47E16A328A5441EC51B8CE587F5141E17A14BE3A8A544114AE4751367F5141A4703D2A488A544133333303317F5141A4703D2A4A8A54415C8FC275367F5141C3F528BC4B8A544148E17A743A7F5141713D0A174E8A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000F6285C9FA77F514185EB5148298A54418FC2F558997F5141A4703DBA2B8A5441EC51B8FE977F51415C8FC2F52B8A54419A999959927F51411F85EB612C8A54418FC2F5E87E7F51415C8FC2D52D8A54415C8FC2757B7F5141CDCCCC4C2E8A5441A4703DEA717F51415C8FC2952F8A54410AD7A3506E7F5141713D0A87308A54415C8FC2F5687F5141AE47E16A328A5441EC51B8CE587F5141E17A14BE3A8A544114AE4751367F5141A4703D2A488A544133333303317F5141A4703D2A4A8A54415C8FC275367F5141C3F528BC4B8A544148E17A743A7F5141713D0A174E8A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>131552 - 3086771
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002000000014AE47E1A58E514148E17A9410845441666666D6A98E5141EC51B87E0E84544166666606AA8E5141F6285C7F13845441713D0A47AA8E5141CDCCCC7C1784544114AE4791AA8E5141AE47E1EA1B8454410AD7A330AB8E5141EC51B8CE1D845441F6285C7FB18E5141000000402284544185EB5118B98E51416666666627845441000000C0B98E51417B14AE872784544185EB5118BF8E514185EB5128FA83544166666626BA8E51411F85EB11FF835441AE47E1BAB08E5141CDCCCC9CF8835441C3F528ACA78E5141713D0A67F28354411F85EB01A28E51413D0AD7A3F2835441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000E165F1C1AD8E5141717CA69B1F84544124E0E435B18E514170E223DC2184544122F9A096B48E5141F80A104324845441984FEED0B78E51415D29411026845441876013DFB98E51417DADE27F26845441E4DB9237BB8E5141F61185131B8454413884EE6DBC8E514180DCF5C810845441FCBF08ACBD8E51412703A93C0684544185EB5118BF8E514185EB5128FA83544166666626BA8E51411F85EB11FF835441A1A8EC24AF8E51418C097886F78354417AAD3D35AE8E51418050D512F78354417BFAFE14AD8E51413B551B40F98354419D517B8EAC8E51414ABFAF6E01845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>131552 - 3410556
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002000000014AE47E1A58E514148E17A9410845441666666D6A98E5141EC51B87E0E84544166666606AA8E5141F6285C7F13845441713D0A47AA8E5141CDCCCC7C1784544114AE4791AA8E5141AE47E1EA1B8454410AD7A330AB8E5141EC51B8CE1D845441F6285C7FB18E5141000000402284544185EB5118B98E51416666666627845441000000C0B98E51417B14AE872784544185EB5118BF8E514185EB5128FA83544166666626BA8E51411F85EB11FF835441AE47E1BAB08E5141CDCCCC9CF8835441C3F528ACA78E5141713D0A67F28354411F85EB01A28E51413D0AD7A3F2835441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000E165F1C1AD8E5141717CA69B1F84544124E0E435B18E514170E223DC2184544122F9A096B48E5141F80A104324845441984FEED0B78E51415D29411026845441876013DFB98E51417DADE27F26845441E4DB9237BB8E5141F61185131B8454413884EE6DBC8E514180DCF5C810845441FCBF08ACBD8E51412703A93C0684544185EB5118BF8E514185EB5128FA83544166666626BA8E51411F85EB11FF835441A1A8EC24AF8E51418C097886F78354417AAD3D35AE8E51418050D512F78354417BFAFE14AD8E51413B551B40F98354419D517B8EAC8E51414ABFAF6E01845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>132073 - 168547
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000170000005C8FC2C5D3835141AE47E1CAF48D54411F85EBB1D98351410AD7A370F78D54410AD7A390DB835141295C8F22F88D54419A999929DD835141E17A145EF88D54415C8FC285DE8351413D0AD743F88D544185EB51E8DF835141B81E85DBF78D54418FC2F5E8E0835141CDCCCC5CF78D5441F6285CEFE1835141295C8F82F68D54410AD7A310E483514100000090F48D5441F6285C9FEC835141713D0AD7EB8D5441C3F528FCE58351411F85EB81E58D5441E17A141EE0835141EC51B86EEA8D5441D7A370DDCA8351418FC2F558D38D5441B81E85DBC1835141CDCCCC5CD78D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000F24171A4E4835141CE0659F9F38D544148F0BC17EC835141EEE44661EC8D5441105A0796EC8351412C5D61D5EB8D5441C3F528FCE58351411F85EB81E58D5441E17A141EE0835141EC51B86EEA8D5441D7A370DDCA8351418FC2F558D38D5441768A3618C983514109D40B28D48D5441D80104EDC68351417DE96D22D58D5441A32782E5C3835141C4997A76D68D5441A4A2728CC38351417BB0D39BD68D5441AAD1F61FC38351417BB02ECCD68D5441ED46102FC283514124B28F37D78D544132019AE5C18351419475A363D78D544133333323CB835141E17A141EE18D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>133019 - 3144884
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002000000052B81EA59D83514152B81EC5CC945441D7A370CD9883514152B81EA5CB9454417B14AEF796835141333333D3CD9454411F85EB41978351410AD7A310D09454417B14AEB79383514114AE4791DC945441713D0A6791835141AE47E1AAE3945441F6285C9F8F8351417B14AE27EA9454410AD7A3F08F8351417B14AE07EB945441E17A14CE918351417B14AE17EB9454411F85EB3193835141AE47E1FAEA945441E17A14DE94835141C3F5287CEA945441B81E85BB9483514185EB5198E794544185EB51F892835141295C8FA2E7945441333333F39283514114AE4731E2945441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000005BFE2916A18351412B335ED4DF945441D6445DA8A9835141A58EB142E2945441E2FE49FAA98351417B4660DCE7945441EF1B7F68AB83514182D24D1DE8945441384F5718AD8351411F9031B7C8945441B25CCBC5A88351415E90D3E7C89454411CC12D3DA8835141EAC652E9C99454410FFC3090A68351417458E97BCB94544115D68AD9A3835141DD59D8B4CD9454419932E561A28351417667C7EFCD945441CD72A5AAA18351418A5C351FD79454415BFE2916A18351412B335ED4DF945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>133342 - 2979364
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C00000014AE4701F8085141295C8FF2808A5441EC51B89EF608514133333313828A544166666666F5085141B81E85CB8C8A5441B81E859BF40851417B14AEB7938A544152B81E75F308514152B81EF5938A54418FC2F5C8ED08514166666626958A54415C8FC235F008514166666646A88A5441E17A14FE01095141295C8FF2A38A54417B14AE371709514148E17A349F8A5441AE47E19A15095141E17A14CE908A54413333331314095141D7A3707D838A544114AE4701F8085141295C8FF2808A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000158566ADFF085141569C3C3D918A5441CD7BF86BFF0851419572CD16908A5441CABE551115095141551214218C8A54413333331314095141D7A3707D838A544114AE4701F8085141295C8FF2808A5441EC51B89EF608514133333313828A544166666666F5085141B81E85CB8C8A54415D1A50C2F408514176C9D264928A5441E1018AA8F4085141A941F545938A5441158566ADFF085141569C3C3D918A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>133342 - 3271187
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C00000014AE4701F8085141295C8FF2808A5441EC51B89EF608514133333313828A544166666666F5085141B81E85CB8C8A5441B81E859BF40851417B14AEB7938A544152B81E75F308514152B81EF5938A54418FC2F5C8ED08514166666626958A54415C8FC235F008514166666646A88A5441E17A14FE01095141295C8FF2A38A54417B14AE371709514148E17A349F8A5441AE47E19A15095141E17A14CE908A54413333331314095141D7A3707D838A544114AE4701F8085141295C8FF2808A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000158566ADFF085141569C3C3D918A5441CD7BF86BFF0851419572CD16908A5441CABE551115095141551214218C8A54413333331314095141D7A3707D838A544114AE4701F8085141295C8FF2808A5441EC51B89EF608514133333313828A544166666666F5085141B81E85CB8C8A54415D1A50C2F408514176C9D264928A5441E1018AA8F4085141A941F545938A5441158566ADFF085141569C3C3D918A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>133590 - 163332
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000F6285C6FCB08514148E17A94938F5441A4703DBACD085141F6285C5F968F5441AE47E1DACE08514114AE47C1998F5441D7A370EDD1085141AE47E1AA9A8F5441CDCCCC8CD108514185EB5128938F544185EB51F8D00851418FC2F548888F54415C8FC295D0085141C3F5288C838F544133333363D008514185EB51F8818F5441EC51B8CECE085141A4703D7A768F54415C8FC2C5CC085141A4703DAA6A8F5441EC51B85ECB0851413D0AD7B3648F5441000000B0C908514185EB51A8618F5441AE47E11AC308514133333303638F5441E17A14EEC3085141666666D6658F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000F7CA5B6FCB08514109707A94938F5441B61F8470CB085141F364E395938F5441706E3EBACD08514134E55A5F968F544170A76E48CE0851415ACDEF09988F5441AE47E1DACE08514114AE47C1998F5441DAE49941D0085141B6FED02B9A8F5441E29A70EDD10851418695E0AA9A8F5441CDCCCC8CD108514185EB5128938F54412431A66CD1085141EB7EA1CD908F54410E4651F8D00851419148F648888F5441011AC295D00851416559288C838F5441881C3263D00851417BA651F8818F544182EDB7CECE085141A0813D7A768F54418685C1C5CC085141FE663DAA6A8F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>133590 - 394052
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000F6285C6FCB08514148E17A94938F5441A4703DBACD085141F6285C5F968F5441AE47E1DACE08514114AE47C1998F5441D7A370EDD1085141AE47E1AA9A8F5441CDCCCC8CD108514185EB5128938F544185EB51F8D00851418FC2F548888F54415C8FC295D0085141C3F5288C838F544133333363D008514185EB51F8818F5441EC51B8CECE085141A4703D7A768F54415C8FC2C5CC085141A4703DAA6A8F5441EC51B85ECB0851413D0AD7B3648F5441000000B0C908514185EB51A8618F5441AE47E11AC308514133333303638F5441E17A14EEC3085141666666D6658F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000F7CA5B6FCB08514109707A94938F5441B61F8470CB085141F364E395938F5441706E3EBACD08514134E55A5F968F544170A76E48CE0851415ACDEF09988F5441AE47E1DACE08514114AE47C1998F5441DAE49941D0085141B6FED02B9A8F5441E29A70EDD10851418695E0AA9A8F5441CDCCCC8CD108514185EB5128938F54412431A66CD1085141EB7EA1CD908F54410E4651F8D00851419148F648888F5441011AC295D00851416559288C838F5441881C3263D00851417BA651F8818F544182EDB7CECE085141A0813D7A768F54418685C1C5CC085141FE663DAA6A8F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>134286 - 163188
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000B0000005C8FC2F59D0251418FC2F5581F8C544152B81E35A102514185EB51681E8C5441E17A14AEAA025141EC51B86E1E8C54410AD7A3B0AF025141295C8FA21B8C54417B14AE27B90251415C8FC245168C5441F6285CBFB10251418FC2F5B8098C5441EC51B83E9A0251418FC2F5E8E18B544152B81E658F0251413D0AD7D3E28B54416666663687025141C3F528DCF18B5441E17A14AE8D02514100000090FF8B54415C8FC2F59D0251418FC2F5581F8C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000052B81E658F0251413D0AD7D3E28B5441CCDB663687025141BBBB29DCF18B5441122614AE8D025141502CFF8FFF8B54414276ED72900251419F6DF3F7048C5441BE0DC2F59D0251417FC5F4581F8C54417A3A4E18A0025141C2B0C2BA1E8C544152B81E35A102514185EB51681E8C5441A9E413AEAA0251418751B86E1E8C54410EEFA2B0AF025141E50A8EA21B8C5441FE28881DB80251412F958CDC168C54410CE5AD27B90251413CAAC245168C544196C57E31B402514106BCC6DD0D8C5441F6285CBFB10251418FC2F5B8098C5441498D4093AF0251419242EE0A068C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>134286 - 398421
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000B0000005C8FC2F59D0251418FC2F5581F8C544152B81E35A102514185EB51681E8C5441E17A14AEAA025141EC51B86E1E8C54410AD7A3B0AF025141295C8FA21B8C54417B14AE27B90251415C8FC245168C5441F6285CBFB10251418FC2F5B8098C5441EC51B83E9A0251418FC2F5E8E18B544152B81E658F0251413D0AD7D3E28B54416666663687025141C3F528DCF18B5441E17A14AE8D02514100000090FF8B54415C8FC2F59D0251418FC2F5581F8C5441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000052B81E658F0251413D0AD7D3E28B5441CCDB663687025141BBBB29DCF18B5441122614AE8D025141502CFF8FFF8B54414276ED72900251419F6DF3F7048C5441BE0DC2F59D0251417FC5F4581F8C54417A3A4E18A0025141C2B0C2BA1E8C544152B81E35A102514185EB51681E8C5441A9E413AEAA0251418751B86E1E8C54410EEFA2B0AF025141E50A8EA21B8C5441FE28881DB80251412F958CDC168C54410CE5AD27B90251413CAAC245168C544196C57E31B402514106BCC6DD0D8C5441F6285CBFB10251418FC2F5B8098C5441498D4093AF0251419242EE0A068C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>134448 - 163163
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000011000000EC51B87E39035141295C8F42B68C5441F6285C8F3603514185EB51C8B68C544114AE4781340351415C8FC265B78C5441AE47E19A32035141B81E853BB88C5441A4703DDA3003514166666646B98C54410AD7A3F02E0351413D0AD7B3BA8C5441AE47E18A2E035141CDCCCCCCBB8C5441C3F528DC2E03514166666626BD8C5441295C8FD2340351418FC2F5D8C58C54418FC2F5082E035141713D0A27CB8C54417B14AE973E035141B81E851BE18C5441A4703D8A4F03514148E17A94F78C5441713D0A1752035141D7A3705DF58C54418FC2F53855035141C3F528DCF18C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001900000052A3FB9C3103514192E88DD2B88C544154C33EDA300351412CA96646B98C5441A753A4F02E0351410230D8B3BA8C54415F8C30A82E0351419E3AE07BBB8C5441AE47E18A2E035141CDCCCCCCBB8C54414885C2BF2E03514183B8A4ADBC8C54417C5429DC2E03514191F06626BD8C5441295C8FD2340351418FC2F5D8C58C5441DD05858D30035141CB3C432FC98C5441DED7F5082E035141CA2C0A27CB8C54417B14AE973E035141B81E851BE18C544140BD3C8A4F03514169F37994F78C5441CED9081752035141E4C1715DF58C5441E18BEBF45203514125D42C65F48C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>134448 - 352324
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000011000000EC51B87E39035141295C8F42B68C5441F6285C8F3603514185EB51C8B68C544114AE4781340351415C8FC265B78C5441AE47E19A32035141B81E853BB88C5441A4703DDA3003514166666646B98C54410AD7A3F02E0351413D0AD7B3BA8C5441AE47E18A2E035141CDCCCCCCBB8C5441C3F528DC2E03514166666626BD8C5441295C8FD2340351418FC2F5D8C58C54418FC2F5082E035141713D0A27CB8C54417B14AE973E035141B81E851BE18C5441A4703D8A4F03514148E17A94F78C5441713D0A1752035141D7A3705DF58C54418FC2F53855035141C3F528DCF18C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001900000052A3FB9C3103514192E88DD2B88C544154C33EDA300351412CA96646B98C5441A753A4F02E0351410230D8B3BA8C54415F8C30A82E0351419E3AE07BBB8C5441AE47E18A2E035141CDCCCCCCBB8C54414885C2BF2E03514183B8A4ADBC8C54417C5429DC2E03514191F06626BD8C5441295C8FD2340351418FC2F5D8C58C5441DD05858D30035141CB3C432FC98C5441DED7F5082E035141CA2C0A27CB8C54417B14AE973E035141B81E851BE18C544140BD3C8A4F03514169F37994F78C5441CED9081752035141E4C1715DF58C5441E18BEBF45203514125D42C65F48C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>134750 - 163232
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F0000008FC2F5289C045141AE47E15A728D5441F6285CCF99045141F6285C9F5F8D5441666666469B04514133333353578D5441D7A3704D9D045141EC51B82E508D5441F6285C3F9E045141AE47E1BA4D8D54419A9999B992045141B81E85FB518D5441E17A148E5D045141CDCCCC9C658D544185EB512867045141AE47E1FA758D54418FC2F5C86A045141333333537A8D5441666666F66B0451413D0AD7837C8D5441EC51B89E6C045141EC51B83E7E8D54413D0AD7437D045141C3F5283C788D544114AE477189045141295C8FF2748D5441C3F528EC90045141AE47E19A738D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000EBE2F5C86A045141626F33537A8D5441035866F66B0451419A11D6837C8D5441C063B99E6C0451410DEFB73E7E8D5441E036FC90710451410DA982757C8D5441BF76D7437D04514180D7273C788D544137B5B4AA82045141FA9FD5C6768D544114AE477189045141295C8FF2748D5441465931DB8E045141527CD1F9738D5441E71428EC90045141C7F7E09A738D5441BCB1F5289C04514194C1E05A728D5441ACA6EB649B045141A4EC31406C8D544141F35ACF99045141966B5D9F5F8D54413156BBF89A0451418357190B598D5441666666469B04514133333353578D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>134750 - 342002
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F0000008FC2F5289C045141AE47E15A728D5441F6285CCF99045141F6285C9F5F8D5441666666469B04514133333353578D5441D7A3704D9D045141EC51B82E508D5441F6285C3F9E045141AE47E1BA4D8D54419A9999B992045141B81E85FB518D5441E17A148E5D045141CDCCCC9C658D544185EB512867045141AE47E1FA758D54418FC2F5C86A045141333333537A8D5441666666F66B0451413D0AD7837C8D5441EC51B89E6C045141EC51B83E7E8D54413D0AD7437D045141C3F5283C788D544114AE477189045141295C8FF2748D5441C3F528EC90045141AE47E19A738D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000EBE2F5C86A045141626F33537A8D5441035866F66B0451419A11D6837C8D5441C063B99E6C0451410DEFB73E7E8D5441E036FC90710451410DA982757C8D5441BF76D7437D04514180D7273C788D544137B5B4AA82045141FA9FD5C6768D544114AE477189045141295C8FF2748D5441465931DB8E045141527CD1F9738D5441E71428EC90045141C7F7E09A738D5441BCB1F5289C04514194C1E05A728D5441ACA6EB649B045141A4EC31406C8D544141F35ACF99045141966B5D9F5F8D54413156BBF89A0451418357190B598D5441666666469B04514133333353578D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>237297 - 1281776
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000A4703D4A08185141D7A3703D96F85441713D0A7705185141CDCCCC5C92F85441666666C60318514114AE47D18FF8544152B81EF501185141000000B08CF8544133333373FF1751413D0AD7F387F85441666666F6F9175141713D0AE77CF85441B81E850BE7175141F6285C2F6DF8544100000060E61751419A99998971F85441713D0AB7E71751419A99993976F85441F6285C8FEA1751419A9999E97AF8544152B81E35E61751417B14AEE778F85441AE47E18AE61751413D0AD7037FF85441EC51B85EE517514152B81E6589F854418FC2F5C8E4175141A4703DDA92F85441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000450000002D2C8DB7EB175141A1655EF0A7F85441666666A6EB1751417B14AEC7A7F85441B74F9327EA1751416C420C02A4F854413EEED936E91751419122D9A2A1F854411F85EB21E817514185EB51E89EF8544112802623E61751412982D1B598F8544171D8E31BE617514193735E9698F85441927D9D15E6175141E8D6568298F85441EE3BD27EE51751414D2A00EE95F85441E18509C9E4175141E30B93DA92F854414D3BEDCBE4175141A15047AA92F85441EC51B85EE517514152B81E6589F8544134EA78BAE51751412A3B29B485F85441233EC4E4E5175141A85F920084F85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>237297 - 3564498
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000A4703D4A08185141D7A3703D96F85441713D0A7705185141CDCCCC5C92F85441666666C60318514114AE47D18FF8544152B81EF501185141000000B08CF8544133333373FF1751413D0AD7F387F85441666666F6F9175141713D0AE77CF85441B81E850BE7175141F6285C2F6DF8544100000060E61751419A99998971F85441713D0AB7E71751419A99993976F85441F6285C8FEA1751419A9999E97AF8544152B81E35E61751417B14AEE778F85441AE47E18AE61751413D0AD7037FF85441EC51B85EE517514152B81E6589F854418FC2F5C8E4175141A4703DDA92F85441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000450000002D2C8DB7EB175141A1655EF0A7F85441666666A6EB1751417B14AEC7A7F85441B74F9327EA1751416C420C02A4F854413EEED936E91751419122D9A2A1F854411F85EB21E817514185EB51E89EF8544112802623E61751412982D1B598F8544171D8E31BE617514193735E9698F85441927D9D15E6175141E8D6568298F85441EE3BD27EE51751414D2A00EE95F85441E18509C9E4175141E30B93DA92F854414D3BEDCBE4175141A15047AA92F85441EC51B85EE517514152B81E6589F8544134EA78BAE51751412A3B29B485F85441233EC4E4E5175141A85F920084F85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>293602 - 1625530
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B00000052B81EC585AD504114AE47017436554148E17A6497AD5041F6285C0F79365541295C8FB295AD5041F6285CDF753655410000002093AD50417B14AE376E365541CDCCCCDC91AD5041AE47E1FA6C36554185EB516883AD50411F85EBC168365541E17A148E82AD5041295C8F226C36554185EB519881AD5041AE47E1DA6B365541F6285C1F74AD5041CDCCCCEC673655413D0AD70374AD50419A9999E96E36554152B81EC585AD504114AE470174365541
+</a>
+
+<b>
+0106000000010000000103000000010000001000000085EB516883AD50411F85EBC168365541E17A148E82AD5041295C8F226C365541517784177CAD50412DBFEC3F6A365541674C741F74AD504160D7D3EC673655419531E20374AD5041249CC4E66E3655419FC0D17B76AD50413B5DDD9E6F36554184FF81447FAD50418DBCD5237236554148E17A6497AD5041F6285C0F793655413318CBB195AD5041C62114DD753655415FD7691F93AD5041993CFE356E365541345781DE91AD5041202D8DFC6C3655416261E2A28FAD5041746366546C365541849836268FAD504150FF05F16D365541C4A918048BAD5041C6F531B76C365541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>293602 - 3362484
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B00000052B81EC585AD504114AE47017436554148E17A6497AD5041F6285C0F79365541295C8FB295AD5041F6285CDF753655410000002093AD50417B14AE376E365541CDCCCCDC91AD5041AE47E1FA6C36554185EB516883AD50411F85EBC168365541E17A148E82AD5041295C8F226C36554185EB519881AD5041AE47E1DA6B365541F6285C1F74AD5041CDCCCCEC673655413D0AD70374AD50419A9999E96E36554152B81EC585AD504114AE470174365541
+</a>
+
+<b>
+0106000000010000000103000000010000001000000085EB516883AD50411F85EBC168365541E17A148E82AD5041295C8F226C365541517784177CAD50412DBFEC3F6A365541674C741F74AD504160D7D3EC673655419531E20374AD5041249CC4E66E3655419FC0D17B76AD50413B5DDD9E6F36554184FF81447FAD50418DBCD5237236554148E17A6497AD5041F6285C0F793655413318CBB195AD5041C62114DD753655415FD7691F93AD5041993CFE356E365541345781DE91AD5041202D8DFC6C3655416261E2A28FAD5041746366546C365541849836268FAD504150FF05F16D365541C4A918048BAD5041C6F531B76C365541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>237495 - 3699640
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000666666B695195141C3F528ECDDF65441CDCCCC3C93195141713D0A27D3F65441295C8F3291195141E17A142ECDF654418FC2F5A89019514185EB51F8C9F65441E17A14DE8F19514152B81E05C6F65441666666B68F19514100000000C5F65441F6285C9F8219514185EB5108C8F65441AE47E1CA82195141E17A141ECAF65441295C8F828519514133333363D6F654410000009089195141E17A14CEECF65441295C8FE28A19514100000040ECF65441000000A08F195141CDCCCC0CEDF654415C8FC2759719514185EB5198EEF6544152B81E65981951418FC2F5A8EEF65441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000652FDE23971951417F25E537E6F65441E4474CEE961951413291DCA0E4F654416DCA81129619514179121FE7DFF65441E5CD69B99519514182CEBEFCDDF654411A7ED1A195195141C33A9992DDF65441D513228B941951411A47E5D5D8F65441CDCCCC3C93195141713D0A27D3F65441295C8F3291195141E17A142ECDF654418FC2F5A89019514185EB51F8C9F65441E17A14DE8F19514152B81E05C6F65441666666B68F19514100000000C5F65441F6285C9F8219514185EB5108C8F65441AE47E1CA82195141E17A141ECAF65441295C8F828519514133333363D6F65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>237495 - 5234461
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000666666B695195141C3F528ECDDF65441CDCCCC3C93195141713D0A27D3F65441295C8F3291195141E17A142ECDF654418FC2F5A89019514185EB51F8C9F65441E17A14DE8F19514152B81E05C6F65441666666B68F19514100000000C5F65441F6285C9F8219514185EB5108C8F65441AE47E1CA82195141E17A141ECAF65441295C8F828519514133333363D6F654410000009089195141E17A14CEECF65441295C8FE28A19514100000040ECF65441000000A08F195141CDCCCC0CEDF654415C8FC2759719514185EB5198EEF6544152B81E65981951418FC2F5A8EEF65441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000024000000CDCCCC3C93195141713D0A27D3F65441D513228B941951411A47E5D5D8F654411A7ED1A195195141C33A9992DDF65441D958DDA895195141CABA42B1DDF6544144A991AB9519514121C176BEDDF65441E5CD69B99519514182CEBEFCDDF65441FF99F3C195195141838ABD2BDEF654416DCA81129619514179121FE7DFF65441E4474CEE961951413291DCA0E4F6544116FED9F39619514182F90ECBE4F65441DD33FAF796195141F76A76E2E4F65441652FDE23971951417F25E537E6F654412ED1928997195141C9C9144FE9F6544194F63CB597195141B898C1A2EAF65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>136963 - 3085938
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000C0000009A9999F944695141C3F5287C7D765441333333734369514148E17A449A765441333333A34E695141713D0A879D7654415C8FC2354F695141EC51B86E9C7654413D0AD77355695141EC51B8BE897654413D0AD7135569514114AE47517E765441E17A14FE53695141C3F528EC72765441713D0AE751695141A4703DDA69765441CDCCCC4C50695141F6285C0F63765441333333B342695141A4703D9A67765441295C8FA2456951410AD7A300717654419A9999F944695141C3F5287C7D765441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000AFD07BBF436951410A9CA140677654414379353843695141F0B11777677654410937E52E46695141312766056E76544122C2D1E646695141FFE1AAEF74765441C792B4FA476951419C21CB327D7654410170B9CC476951419C5734C4827654417DF1EED245695141DDCC8252897654416466021B4569514159BA8A7B927654419E4307ED446951419A2FD90999765441E082ECE945695141797875B89C765441A3409CE048695141C9E066429D76544182EE83C649695141B81CA6EC9A765441BC01F2294F695141EA327F5C9C7654413D0AD77355695141EC51B8BE89765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>136963 - 3424219
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000C0000009A9999F944695141C3F5287C7D765441333333734369514148E17A449A765441333333A34E695141713D0A879D7654415C8FC2354F695141EC51B86E9C7654413D0AD77355695141EC51B8BE897654413D0AD7135569514114AE47517E765441E17A14FE53695141C3F528EC72765441713D0AE751695141A4703DDA69765441CDCCCC4C50695141F6285C0F63765441333333B342695141A4703D9A67765441295C8FA2456951410AD7A300717654419A9999F944695141C3F5287C7D765441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000AFD07BBF436951410A9CA140677654414379353843695141F0B11777677654410937E52E46695141312766056E76544122C2D1E646695141FFE1AAEF74765441C792B4FA476951419C21CB327D7654410170B9CC476951419C5734C4827654417DF1EED245695141DDCC8252897654416466021B4569514159BA8A7B927654419E4307ED446951419A2FD90999765441E082ECE945695141797875B89C765441A3409CE048695141C9E066429D76544182EE83C649695141B81CA6EC9A765441BC01F2294F695141EA327F5C9C7654413D0AD77355695141EC51B8BE89765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>237656 - 3090239
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000666666364F1751413D0AD7C35DF954417B14AE374F175141E17A14CE5CF954413D0AD7A33A175141EC51B8DE5CF95441666666563A175141EC51B88E5FF9544148E17AA42E1751413D0AD7735EF95441C3F5284C2E1751416666661660F95441F6285CFF2C175141B81E854B66F954418FC2F5182B175141CDCCCC5C6FF95441713D0AD72A1751417B14AE9770F9544152B81E05321751413D0AD7736EF954415C8FC2F539175141C3F5280C6CF95441A4703DDA39175141CDCCCC1C65F95441E17A144E3A175141F6285C5F60F954417B14AE773D175141D7A3700D61F95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000009C7D800E581751416614B47F5EF95441DAAAC0D75717514142FAD5AC5CF95441B645D85B4F1751419A84F7CD5CF954419793B14D4F1751413BA0011064F95441E27D96644F175141840B96A467F954414790318D4C175141683D2A1A67F9544185EB51784B175141F6285CEF66F95441EF2F4C544B1751415AA34CBB66F95441C458CDFB491751416EF8E2DD64F95441F23D5F5E42175141C88CA26062F9544122CF2D473A1751410F48A6A760F95441B385A2DA39175141FDC7453665F95441788D5BE9391751418A1010EC68F9544152CFAE063A1751414DFAFF786CF95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>237656 - 3194316
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000666666364F1751413D0AD7C35DF954417B14AE374F175141E17A14CE5CF954413D0AD7A33A175141EC51B8DE5CF95441666666563A175141EC51B88E5FF9544148E17AA42E1751413D0AD7735EF95441C3F5284C2E1751416666661660F95441F6285CFF2C175141B81E854B66F954418FC2F5182B175141CDCCCC5C6FF95441713D0AD72A1751417B14AE9770F9544152B81E05321751413D0AD7736EF954415C8FC2F539175141C3F5280C6CF95441A4703DDA39175141CDCCCC1C65F95441E17A144E3A175141F6285C5F60F954417B14AE773D175141D7A3700D61F95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000009C7D800E581751416614B47F5EF95441DAAAC0D75717514142FAD5AC5CF95441B645D85B4F1751419A84F7CD5CF954419793B14D4F1751413BA0011064F95441E27D96644F175141840B96A467F954414790318D4C175141683D2A1A67F9544185EB51784B175141F6285CEF66F95441EF2F4C544B1751415AA34CBB66F95441C458CDFB491751416EF8E2DD64F95441F23D5F5E42175141C88CA26062F9544122CF2D473A1751410F48A6A760F95441B385A2DA39175141FDC7453665F95441788D5BE9391751418A1010EC68F9544152CFAE063A1751414DFAFF786CF95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>137823 - 144679
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000025000000E17A14AECB695141CDCCCC9C8E7B5441A4703DCACB69514114AE47B18A7B5441CDCCCCBCC6695141D7A3708D8D7B5441D7A370EDC66951419A9999C98A7B544152B81ED5C66951419A999929857B5441D7A370EDC669514114AE4741817B5441F6285C4FC7695141713D0AF77C7B5441295C8F12C8695141713D0A27797B54411F85EBE1C969514166666656737B5441295C8FE2CB695141AE47E1DA6C7B5441F6285CEFCC695141D7A370CD657B544166666626C9695141666666A6647B544185EB5108C969514152B81E25687B5441F6285CAFC86951418FC2F5386C7B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003400000082B8A36AC76951419DA624D9937B544199C1026BCA695141A48A8B29907B54410998F8E8CA695141A60CDC8E8F7B54417D501E96CB69514142DC39BA8E7B5441EC942EBDCB69514134FE9E828C7B5441F9A411B1CB695141553B87BF8A7B54417A9CBDE8C9695141CAF5D5C18B7B544111641FCEC7695141B456B9F28C7B5441574EAEBDC6695141AAFDF08C8D7B54419DA3D572C5695141923A4A6A8E7B5441BE416CD9C369514108C1CA818F7B5441BF42D718C36951411E264405907B54416CD17EE9C26951411E728325907B5441D9049A0BC1695141692A6716917B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>137823 - 324011
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000025000000E17A14AECB695141CDCCCC9C8E7B5441A4703DCACB69514114AE47B18A7B5441CDCCCCBCC6695141D7A3708D8D7B5441D7A370EDC66951419A9999C98A7B544152B81ED5C66951419A999929857B5441D7A370EDC669514114AE4741817B5441F6285C4FC7695141713D0AF77C7B5441295C8F12C8695141713D0A27797B54411F85EBE1C969514166666656737B5441295C8FE2CB695141AE47E1DA6C7B5441F6285CEFCC695141D7A370CD657B544166666626C9695141666666A6647B544185EB5108C969514152B81E25687B5441F6285CAFC86951418FC2F5386C7B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003400000082B8A36AC76951419DA624D9937B544199C1026BCA695141A48A8B29907B54410998F8E8CA695141A60CDC8E8F7B54417D501E96CB69514142DC39BA8E7B5441EC942EBDCB69514134FE9E828C7B5441F9A411B1CB695141553B87BF8A7B54417A9CBDE8C9695141CAF5D5C18B7B544111641FCEC7695141B456B9F28C7B5441574EAEBDC6695141AAFDF08C8D7B54419DA3D572C5695141923A4A6A8E7B5441BE416CD9C369514108C1CA818F7B5441BF42D718C36951411E264405907B54416CD17EE9C26951411E728325907B5441D9049A0BC1695141692A6716917B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>139170 - 206297
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003F0000000AD7A3E0086D51410AD7A380FBB25441713D0AC7066D5141EC51B8CEF8B25441666666E6046D5141AE47E1CAF6B25441C3F528CC026D51415C8FC255F6B25441C3F528FC006D51417B14AEA7F2B254417B14AE97FF6C514100000060F2B2544114AE47A1FC6C51419A9999D9F1B25441713D0A87F96C51415C8FC2F5F1B25441AE47E12AF46C5141AE47E1EAF2B25441B81E85EBE96C51410AD7A380F5B25441AE47E11AE96C5141EC51B8FEF6B25441EC51B80EEF6C5141666666C608B35441295C8F02F56C5141E17A148E1AB35441D7A370DDFA6C5141A4703D0A2CB35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005500000078554C76F66C51418CDBF181F2B25441AE47E12AF46C5141AE47E1EAF2B25441A79685EBE96C5141C9B8A380F5B254418085D3B9E96C51414CC1A4DBF5B25441AE47E11AE96C5141EC51B8FEF6B25441EC51B80EEF6C5141666666C608B35441128D9ABFF36C5141D37B6AC916B3544180898F02F56C5141EB4D148E1AB3544154FA70DDFA6C514103A33D0A2CB35441B9E70BDEFA6C5141CE810A3E2DB35441EC51B8DEFA6C51413D0AD7932EB35441B48217CAFA6C5141F52116E72EB35441D059CD3CFA6C5141F4B3472131B3544191DBEECBF96C5141C6926A0332B35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>237981 - 404219
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001F000000CDCCCCAC6CC05041C3F5284CAFCD5441666666366EC05041E17A140EB4CD5441CDCCCC3C78C05041D7A3708DDBCD5441A4703D0A7AC050417B14AEB7E0CD5441A4703DCA7CC0504152B81E05E6CD5441A4703D4A80C05041AE47E1EAEACD54410000006092C050417B14AE4700CE54415C8FC28595C0504114AE47A103CE5441666666E699C050410AD7A3F004CE54415C8FC2659EC05041A4703D3A04CE5441CDCCCC3CA6C05041333333C301CE544166666666A4C0504133333333FDCD544152B81E85A1C05041CDCCCC0CF9CD54418FC2F5D89DC05041666666A6F5CD5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000320000006DAD3BC16DC05041B08A87A3B2CD5441666666366EC05041E17A140EB4CD5441280B262A76C0504174F8B962D3CD5441CDCCCC3C78C05041AAA3708DDBCD5441DCE53BBD78C050413B8876FDDCCD5441A4703D0A7AC050417B14AEB7E0CD5441A4703DCA7CC0504152B81E05E6CD5441A4703D4A80C05041AE47E1EAEACD5441BB1DEA2E90C05041690EE9B0FDCD54414600006092C05041C014AE4700CE54413F3A6BFB92C05041E51619ED00CE54415C8FC28595C0504114AE47A103CE54414B6666E699C0504102D7A3F004CE5441080367239BC05041B8886BBE04CE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238023 - 396550
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001800000085EB5148F5BD50413333332397D05441EC51B85E12BE5041C3F5289C9DD05441CDCCCC8C1DBE504114AE478195D054417B14AE3722BE504114AE472193D054416666662626BE5041295C8F2292D05441000000302BBE5041F6285C3F92D054415C8FC2952EBE504152B81EB591D05441295C8F9231BE504185EB511890D05441EC51B82E35BE5041CDCCCCEC8CD0544148E17A7438BE50410000006089D05441333333533ABE50418FC2F56886D05441295C8F123CBE50410AD7A3D07FD05441A4703DBA36BE50411F85EB417DD05441EC51B8FE2CBE50413D0AD79378D05441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000295C8F9231BE504185EB511890D05441A774BFAB34BE5041330BCF5F8DD05441B032C20B35BE50414E0C800B8DD054417915036E01BE5041C38E243D82D05441CDCCCC6C01BE50413333334382D054419A999949F5BD5041F6285CBF7FD054419F0FEA29F5BD504149B661E67FD054415D1E964CF4BD50414EC5F3F680D0544108A4084CF3BD50413323E73282D0544166666626EEBD50419A99998988D0544114DBE30FE9BD5041CC31C28091D054417B14AE97E7BD50417B14AE1794D0544185EB5148F5BD50413333332397D05441D251B85E12BE5041BDF5289C9DD05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>142568 - 2942182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C000000B81E853B01F9504148E17AF46CCE5441C3F528EC04F95041C3F5280C6ACE54410000008008F95041295C8F2266CE5441713D0AF70BF95041AE47E1EA66CE54413D0AD7730EF9504152B81EB563CE54418FC2F548C8F850413333335349CE5441EC51B89EC3F85041E17A140E57CE5441666666A6D7F850410AD7A3C05DCE5441A4703D0AE1F850417B14AE3761CE5441EC51B8DEE9F850418FC2F55864CE544185EB51B8F5F8504152B81EB568CE5441B81E853B01F9504148E17AF46CCE5441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000EC51B89EC3F85041E17A140E57CE544133333363B9F85041AE47E12A75CE54417B14AED7BDF85041713D0A0777CE54410AD7A3C0BCF850417B14AE9779CE54418FC2F538ECF85041D7A3705D8BCE5441000000C0EDF85041D7A370ED8ACE5441CDCCCC5CF7F8504148E17A147ECE544114AE47A10AF95041AE47E14A6BCE5441666666060DF950416666667668CE544114AE47C10FF95041295C8F3264CE54413D0AD7730EF9504152B81EB563CE5441514E9B9A0DF950410C0273CD64CE5441713D0AF70BF95041AE47E1EA66CE544102A181B409F9504136DB3A6866CE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>142568 - 3712828
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C000000B81E853B01F9504148E17AF46CCE5441C3F528EC04F95041C3F5280C6ACE54410000008008F95041295C8F2266CE5441713D0AF70BF95041AE47E1EA66CE54413D0AD7730EF9504152B81EB563CE54418FC2F548C8F850413333335349CE5441EC51B89EC3F85041E17A140E57CE5441666666A6D7F850410AD7A3C05DCE5441A4703D0AE1F850417B14AE3761CE5441EC51B8DEE9F850418FC2F55864CE544185EB51B8F5F8504152B81EB568CE5441B81E853B01F9504148E17AF46CCE5441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000EC51B89EC3F85041E17A140E57CE544133333363B9F85041AE47E12A75CE54417B14AED7BDF85041713D0A0777CE54410AD7A3C0BCF850417B14AE9779CE54418FC2F538ECF85041D7A3705D8BCE5441000000C0EDF85041D7A370ED8ACE5441CDCCCC5CF7F8504148E17A147ECE544114AE47A10AF95041AE47E14A6BCE5441666666060DF950416666667668CE544114AE47C10FF95041295C8F3264CE54413D0AD7730EF9504152B81EB563CE5441514E9B9A0DF950410C0273CD64CE5441713D0AF70BF95041AE47E1EA66CE544102A181B409F9504136DB3A6866CE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238308 - 58750
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A000000A4703DAA54BD5041333333A31CCD54417B14AEE745BD50411F85EB01FECC54415C8FC2D50DBD5041F6285CCF03CD5441295C8F321FBD50418FC2F5D827CD5441A4703D9A27BD5041295C8F8226CD544148E17A542DBD5041E17A147E25CD54417B14AEF732BD5041AE47E14A24CD5441A4703D1A41BD50417B14AEC720CD5441295C8FC24DBD5041AE47E1EA1DCD5441A4703DAA54BD5041333333A31CCD5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000003333335314BD50413D0AD773FACC54413324A14D11BD50412CABE178FACC54417499D27009BD504154E227A0FACC54411611DFD50DBD5041EB6A75CA03CD5441E5F6316A41BD50412B5CE078FECC544165624CC643BD5041AE185C3AFECC5441BAA86B1444BD5041ED6F4632FECC544104CE1ADE45BD5041C631E902FECC54418EE5287E42BD50413463A0ECF6CC5441A1FD133342BD50414305C850F6CC5441E3F56F0C42BD5041BE5F9300F6CC5441364163053FBD50418A9FCB2BF6CC54411F85EBC13DBD5041E17A143EF6CC54419BA16B1137BD50418557ED56F7CC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238308 - 120116
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A000000A4703DAA54BD5041333333A31CCD54417B14AEE745BD50411F85EB01FECC54415C8FC2D50DBD5041F6285CCF03CD5441295C8F321FBD50418FC2F5D827CD5441A4703D9A27BD5041295C8F8226CD544148E17A542DBD5041E17A147E25CD54417B14AEF732BD5041AE47E14A24CD5441A4703D1A41BD50417B14AEC720CD5441295C8FC24DBD5041AE47E1EA1DCD5441A4703DAA54BD5041333333A31CCD5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000003333335314BD50413D0AD773FACC54413224A14D11BD50412BABE178FACC54417599D27009BD504152E227A0FACC54411211DFD50DBD5041E66A75CA03CD5441E8F6316A41BD50412B5CE078FECC544164624CC643BD5041B0185C3AFECC5441BBA86B1444BD5041F16F4632FECC544102CE1ADE45BD5041C831E902FECC544192E5287E42BD50413763A0ECF6CC5441A3FD133342BD50414805C850F6CC5441E7F56F0C42BD5041B95F9300F6CC5441384163053FBD5041869FCB2BF6CC54411F85EBC13DBD5041E17A143EF6CC544199A16B1137BD50418757ED56F7CC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238308 - 320294
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A000000A4703DAA54BD5041333333A31CCD54417B14AEE745BD50411F85EB01FECC54415C8FC2D50DBD5041F6285CCF03CD5441295C8F321FBD50418FC2F5D827CD5441A4703D9A27BD5041295C8F8226CD544148E17A542DBD5041E17A147E25CD54417B14AEF732BD5041AE47E14A24CD5441A4703D1A41BD50417B14AEC720CD5441295C8FC24DBD5041AE47E1EA1DCD5441A4703DAA54BD5041333333A31CCD5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000003333335314BD50413D0AD773FACC54413224A14D11BD50412BABE178FACC54417599D27009BD504152E227A0FACC54411211DFD50DBD5041E66A75CA03CD5441E8F6316A41BD50412B5CE078FECC544164624CC643BD5041B0185C3AFECC5441BBA86B1444BD5041F16F4632FECC544102CE1ADE45BD5041C831E902FECC544192E5287E42BD50413763A0ECF6CC5441A3FD133342BD50414805C850F6CC5441E7F56F0C42BD5041B95F9300F6CC5441384163053FBD5041869FCB2BF6CC54411F85EBC13DBD5041E17A143EF6CC544199A16B1137BD50418757ED56F7CC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145177 - 235310
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000300000001030000000100000009000000CDCCCCFC9DF850417B14AEE7EAC2544185EB5158A1F85041D7A370ADE8C25441D7A3700D9EF85041295C8F02E6C254415C8FC21593F850417B14AE57E1C25441333333538CF850411F85EBD1DCC25441CDCCCC8C8BF85041AE47E17ADDC25441E17A14DE92F85041EC51B8AEEEC254418FC2F5E89AF850418FC2F5A8EDC25441CDCCCCFC9DF850417B14AEE7EAC2544101030000000100000009000000CDCCCC8C96F85041D7A3707DDCC25441EC51B8EE93F850418FC2F528E0C25441E17A146E9EF8504148E17AB4E4C25441EC51B85EA9F85041B81E851BE6C25441CDCCCC [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000009301946194F85041E84D40D429C354419FEE74D695F85041D54E28182AC35441908E8C0796F85041100B19212AC35441F245A80D9BF8504181CC500B2BC354419113931EA5F8504165C1BFB32CC35441861ABFD7A9F85041A6BD29572AC35441672F8E31B9F850418F6F198F10C35441F066848BA3F850418A2109AD15C3544186EAA3B98CF85041F1F461B5FBC2544165F3F0B78CF85041C2E4F9B5FBC25441AC7A08D192F85041EDF8B50D17C354419301946194F85041E84D40D429C35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145177 - 288499
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000300000001030000000100000009000000CDCCCCFC9DF850417B14AEE7EAC2544185EB5158A1F85041D7A370ADE8C25441D7A3700D9EF85041295C8F02E6C254415C8FC21593F850417B14AE57E1C25441333333538CF850411F85EBD1DCC25441CDCCCC8C8BF85041AE47E17ADDC25441E17A14DE92F85041EC51B8AEEEC254418FC2F5E89AF850418FC2F5A8EDC25441CDCCCCFC9DF850417B14AEE7EAC2544101030000000100000009000000CDCCCC8C96F85041D7A3707DDCC25441EC51B8EE93F850418FC2F528E0C25441E17A146E9EF8504148E17AB4E4C25441EC51B85EA9F85041B81E851BE6C25441CDCCCC [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000009301946194F85041E84D40D429C354419FEE74D695F85041D54E28182AC35441908E8C0796F85041100B19212AC35441F245A80D9BF8504181CC500B2BC354419113931EA5F8504165C1BFB32CC35441861ABFD7A9F85041A6BD29572AC35441672F8E31B9F850418F6F198F10C35441F066848BA3F850418A2109AD15C3544186EAA3B98CF85041F1F461B5FBC2544165F3F0B78CF85041C2E4F9B5FBC25441AC7A08D192F85041EDF8B50D17C354419301946194F85041E84D40D429C35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145398 - 32113
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000017000000A4703D6A2D87514133333353327654415C8FC275258751417B14AE27297654411F85EB011D875141A4703D6A1F765441EC51B80E1A875141E17A146E1A7654411F85EBF10C8751413D0AD76304765441EC51B83E09875141295C8F920476544152B81E05098751418FC2F59804765441295C8F8202875141CDCCCCFC0376544185EB51E80187514114AE47E103765441F6285CDF008751411F85EB81047654419A999919FC8651410000000012765441713D0A17F88651415C8FC2C51A7654413D0AD763FC86514148E17A741C765441D7A370BDF7865141EC51B80E25765441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000004C987858ED8651415C44E2D338765441677FEAF4ED865141772B547039765441516E2444EF8651416F3C45783976544163A68008F08651419E2A41C3367654419D933123F286514134FF906B2F76544185EB5198F2865141333333932E7654418A8F1468F2865141A828327B2E765441D6C82D70F286514157EEEF5E2E765441B52D840AF1865141253EA7C52D765441C8BC48D9F0865141DFB4E0582E7654414C987858ED8651415C44E2D338765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145398 - 73920
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000017000000A4703D6A2D87514133333353327654415C8FC275258751417B14AE27297654411F85EB011D875141A4703D6A1F765441EC51B80E1A875141E17A146E1A7654411F85EBF10C8751413D0AD76304765441EC51B83E09875141295C8F920476544152B81E05098751418FC2F59804765441295C8F8202875141CDCCCCFC0376544185EB51E80187514114AE47E103765441F6285CDF008751411F85EB81047654419A999919FC8651410000000012765441713D0A17F88651415C8FC2C51A7654413D0AD763FC86514148E17A741C765441D7A370BDF7865141EC51B80E25765441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000004C987858ED8651415C44E2D338765441677FEAF4ED865141772B547039765441516E2444EF8651416F3C45783976544163A68008F08651419E2A41C3367654419D933123F286514134FF906B2F76544185EB5198F2865141333333932E7654418A8F1468F2865141A828327B2E765441D6C82D70F286514157EEEF5E2E765441B52D840AF1865141253EA7C52D765441C8BC48D9F0865141DFB4E0582E7654414C987858ED8651415C44E2D338765441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145606 - 1217125
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B000000AE47E16A2987514114AE47E12E72544148E17A34148751411F85EB413D725441666666B616875141295C8F6244725441D7A3701D1A87514152B81ED54D72544148E17A541F8751410AD7A3A05A7254419A9999C9248751419A999979667254410AD7A3702B87514114AE47C173725441F6285CBF2D875141713D0A37727254411F85EBB14C875141F6285C0F5572544185EB51884F875141D7A3708D50725441AE47E16A2987514114AE47E12E725441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000048E17A34148751411F85EB413D725441666666B616875141295C8F6244725441A06BE6C5188751410A2F3C1B4A725441D7A3701D1A87514152B81ED54D72544148E17A541F8751410AD7A3A05A7254419A9999C9248751419A999979667254410AD7A3702B87514114AE47C173725441F6285CBF2D875141713D0A3772725441BB8B228531875141551134A96E725441288215F33487514147101B6E6B7254416A84402B398751410E748074677254415132B7383D875141F1F620A363725441353F21794087514155B2ED92607254417B611936448751415935630D5D725441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145606 - 3346713
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B000000AE47E16A2987514114AE47E12E72544148E17A34148751411F85EB413D725441666666B616875141295C8F6244725441D7A3701D1A87514152B81ED54D72544148E17A541F8751410AD7A3A05A7254419A9999C9248751419A999979667254410AD7A3702B87514114AE47C173725441F6285CBF2D875141713D0A37727254411F85EBB14C875141F6285C0F5572544185EB51884F875141D7A3708D50725441AE47E16A2987514114AE47E12E725441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000048E17A34148751411F85EB413D725441666666B616875141295C8F6244725441A06BE6C5188751410A2F3C1B4A725441D7A3701D1A87514152B81ED54D72544148E17A541F8751410AD7A3A05A7254419A9999C9248751419A999979667254410AD7A3702B87514114AE47C173725441F6285CBF2D875141713D0A3772725441BB8B228531875141551134A96E725441288215F33487514147101B6E6B7254416A84402B398751410E748074677254415132B7383D875141F1F620A363725441353F21794087514155B2ED92607254417B611936448751415935630D5D725441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145622 - 1216738
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000027000000295C8F72E9855141CDCCCC9C3C745441B81E85CBEC8551413D0AD7033B7454410AD7A320FC855141C3F5281C49745441A4703DBA02865141AE47E1BA4F745441CDCCCC9C0F865141A4703DCA567454419A9999691086514114AE4751557454419A9999690B865141666666165374544148E17A7409865141A4703D9A517454417B14AE2707865141D7A3704D4F745441713D0A2706865141E17A141E4C745441CDCCCCBC0486514152B81E95497454419A9999B9FF855141000000A043745441C3F528ACF9855141B81E852B3E745441C3F528DCF48551410AD7A3D039745441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000003C40F731EA8551418545AB8C3A74544172114262EB85514128C3A7E939745441B13A2E6FF185514141D1C0EE367454414C21A9BAFB8551419318E5B131745441B81E856BF6855141C3F5281C2E745441D7A3703DEE855141295C8FD22674544117E31354E8855141D0D2383E2074544133333373E385514114AE479119745441C3F5285CDC855141295C8F220E745441A4703D0ADB85514152B81E950F74544152B81ED5D88551418FC2F52811745441CDCCCC0CD5855141D7A3701D147454411F85EBE1D2855141CDCCCC9C157454419A9999E9D085514114AE47C116745441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145622 - 3316213
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000027000000295C8F72E9855141CDCCCC9C3C745441B81E85CBEC8551413D0AD7033B7454410AD7A320FC855141C3F5281C49745441A4703DBA02865141AE47E1BA4F745441CDCCCC9C0F865141A4703DCA567454419A9999691086514114AE4751557454419A9999690B865141666666165374544148E17A7409865141A4703D9A517454417B14AE2707865141D7A3704D4F745441713D0A2706865141E17A141E4C745441CDCCCCBC0486514152B81E95497454419A9999B9FF855141000000A043745441C3F528ACF9855141B81E852B3E745441C3F528DCF48551410AD7A3D039745441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000003C40F731EA8551418545AB8C3A74544172114262EB85514128C3A7E939745441B13A2E6FF185514141D1C0EE367454414C21A9BAFB8551419318E5B131745441B81E856BF6855141C3F5281C2E745441D7A3703DEE855141295C8FD22674544117E31354E8855141D0D2383E2074544133333373E385514114AE479119745441C3F5285CDC855141295C8F220E745441A4703D0ADB85514152B81E950F74544152B81ED5D88551418FC2F52811745441CDCCCC0CD5855141D7A3701D147454411F85EBE1D2855141CDCCCC9C157454419A9999E9D085514114AE47C116745441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145743 - 1217439
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000013000000B81E856BE38D5141B81E85AB6A76544148E17AA4E48D51417B14AEF769765441AE47E1BAE58D514185EB51586576544114AE4741E88D5141713D0AF7527654417B14AEB7E18D5141666666364C7654413D0AD723E88D5141A4703D0A47765441295C8FA2EE8D5141E17A14DE41765441C3F528FCE08D51419A9999793D765441CDCCCC7CD78D5141A4703D6A3A7654410AD7A350CF8D51413D0AD7F337765441000000C0CE8D514114AE47813A765441AE47E1DACA8D51418FC2F5583C7654415C8FC295C88D5141F6285C8F3D76544185EB5158C68D51411F85EBC13E765441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000877AF729D18D5141FD9E98405576544101642108D68D5141B9ED6F7056765441D609135BD88D51417433518757765441C2FE911DDB8D51415F174D7D59765441B56AA677E38D51410974B3EF5E76544113965869E48D5141EF0220E75C7654415CA50651E78D51415AC2BD7E55765441A15F253AE68D5141F7417C8E50765441F8134294E18D5141F2ECEC8F4C7654416F9F04C2E38D51411D36787049765441CC272DC1E58D5141C8DD357747765441EBA2B0AEEA8D51414BC633324376544152C69D4CED8D51417E550B704176544128719553E78D5141A96A02843F765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>145743 - 3671273
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000013000000B81E856BE38D5141B81E85AB6A76544148E17AA4E48D51417B14AEF769765441AE47E1BAE58D514185EB51586576544114AE4741E88D5141713D0AF7527654417B14AEB7E18D5141666666364C7654413D0AD723E88D5141A4703D0A47765441295C8FA2EE8D5141E17A14DE41765441C3F528FCE08D51419A9999793D765441CDCCCC7CD78D5141A4703D6A3A7654410AD7A350CF8D51413D0AD7F337765441000000C0CE8D514114AE47813A765441AE47E1DACA8D51418FC2F5583C7654415C8FC295C88D5141F6285C8F3D76544185EB5158C68D51411F85EBC13E765441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000877AF729D18D5141FD9E98405576544101642108D68D5141B9ED6F7056765441D609135BD88D51417433518757765441C2FE911DDB8D51415F174D7D59765441B56AA677E38D51410974B3EF5E76544113965869E48D5141EF0220E75C7654415CA50651E78D51415AC2BD7E55765441A15F253AE68D5141F7417C8E50765441F8134294E18D5141F2ECEC8F4C7654416F9F04C2E38D51411D36787049765441CC272DC1E58D5141C8DD357747765441EBA2B0AEEA8D51414BC633324376544152C69D4CED8D51417E550B704176544128719553E78D5141A96A02843F765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>146117 - 1217426
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000028000000CDCCCC6C078F5141295C8FF26374544100000010068F514185EB51A85A745441000000F0048F51419A9999F9527454418FC2F548048F514152B81EC547745441713D0AE7038F5141CDCCCC2C3174544133333373028F5141D7A3709D2B7454413D0AD7F3008F5141CDCCCC2C2874544148E17A74FA8E5141EC51B8FE1F74544114AE4741F28E51417B14AE071A74544185EB51A8EA8E5141C3F528BC15745441A4703D4AE58E51418FC2F5E814745441C3F5289CDD8E5141666666E61574544152B81E75C98E514100000070197454413D0AD713C38E5141D7A370BDF0735441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000713D0A57B68E514100000060BE735441CDCCCC1CB28E5141000000E0B773544148E17AF4AE8E5141E17A149EB37354415C8FC2B5AA8E5141F6285CAFAE73544100000060A68E514114AE4751AA735441AE47E13A878E51413D0AD7538D735441000000C04D8E5141B81E85AB97735441F6285C9F4D8E5141D7A3700DA0735441F6285CAF4D8E5141EC51B86EA3735441713D0AA74F8E5141000000E0A6735441A4703DDA508E5141C3F5284CA9735441713D0A17568E5141AE47E14AB87354410AD7A300598E51419A9999D9C873544148E17AC45C8E51413D0AD7E3D2735441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>146117 - 3514730
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000028000000CDCCCC6C078F5141295C8FF26374544100000010068F514185EB51A85A745441000000F0048F51419A9999F9527454418FC2F548048F514152B81EC547745441713D0AE7038F5141CDCCCC2C3174544133333373028F5141D7A3709D2B7454413D0AD7F3008F5141CDCCCC2C2874544148E17A74FA8E5141EC51B8FE1F74544114AE4741F28E51417B14AE071A74544185EB51A8EA8E5141C3F528BC15745441A4703D4AE58E51418FC2F5E814745441C3F5289CDD8E5141666666E61574544152B81E75C98E514100000070197454413D0AD713C38E5141D7A370BDF0735441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000713D0A57B68E514100000060BE735441CDCCCC1CB28E5141000000E0B773544148E17AF4AE8E5141E17A149EB37354415C8FC2B5AA8E5141F6285CAFAE73544100000060A68E514114AE4751AA735441AE47E13A878E51413D0AD7538D735441000000C04D8E5141B81E85AB97735441F6285C9F4D8E5141D7A3700DA0735441F6285CAF4D8E5141EC51B86EA3735441713D0AA74F8E5141000000E0A6735441A4703DDA508E5141C3F5284CA9735441713D0A17568E5141AE47E14AB87354410AD7A300598E51419A9999D9C873544148E17AC45C8E51413D0AD7E3D2735441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>146471 - 58531
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000007B14AEE70D855141C3F5281C8F7A5441CDCCCC9C16855141666666E6AC7A5441713D0A27178551417B14AE07AF7A544152B81E6517855141713D0AF7AE7A5441713D0A871E85514114AE4751AA7A5441EC51B8CE25855141D7A3709DA37A5441E17A148E2A8551410AD7A3809F7A5441333333D32C855141C3F5287C9D7A5441A4703D7A27855141333333538C7A54419A9999B91E8551415C8FC2D5897A54417B14AEE70D855141C3F5281C8F7A5441
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000FE234BD22C855141E634F77C9D7A54414EF262832A855141416C0B11967A54415482383E298551410A6D98FD917A5441AE64459428855141F3203BDC8F7A544142C4577727855141463839568C7A5441A23FE94A20855141F1D6ED478A7A54419A9999B91E8551415C8FC2D5897A54415CEB46E80D855141FF06F91B8F7A5441CDCCCC9C16855141666666E6AC7A5441A735B42417855141A02E77FEAE7A54417FCF99281785514186FA4207AF7A5441173E462B17855141CA858B06AF7A5441BB3941361785514132109A03AF7A54418ECD2B3717855141D12F5B03AF7A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238412 - 1507082
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000E0000009A9999E926BD50411F85EBB1BDD4544148E17A5430BD5041000000B0C0D45441C3F5285C32BD5041EC51B82EC1D4544114AE47A12BBD5041333333A379D454413D0AD7F329BD5041AE47E1CA67D45441CDCCCCBC26BD5041CDCCCC9C45D454410000005026BD50410AD7A3B045D4544152B81E651CBD504114AE47F146D45441EC51B86E12BD5041CDCCCCAC47D45441CDCCCC6C0EBD5041666666B647D4544114AE47D112BD50415C8FC26576D45441AE47E10A19BD504148E17A94B8D45441295C8FA21DBD504100000060BAD454419A9999E926BD50411F85EBB1BDD45441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000EFFA93A12BBD504147545EA679D454412D45AFCE12BD504107FC2C4A76D454410104A8CF12BD504186BC805476D4544114AE47D112BD50415C8FC26576D45441AE47E10A19BD504148E17A94B8D45441295C8FA21DBD504100000060BAD454419A9999E926BD50411F85EBB1BDD4544148E17A5430BD5041000000B0C0D45441C3F5285C32BD5041EC51B82EC1D45441EFFA93A12BBD504147545EA679D45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238412 - 3704005
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000E0000009A9999E926BD50411F85EBB1BDD4544148E17A5430BD5041000000B0C0D45441C3F5285C32BD5041EC51B82EC1D4544114AE47A12BBD5041333333A379D454413D0AD7F329BD5041AE47E1CA67D45441CDCCCCBC26BD5041CDCCCC9C45D454410000005026BD50410AD7A3B045D4544152B81E651CBD504114AE47F146D45441EC51B86E12BD5041CDCCCCAC47D45441CDCCCC6C0EBD5041666666B647D4544114AE47D112BD50415C8FC26576D45441AE47E10A19BD504148E17A94B8D45441295C8FA21DBD504100000060BAD454419A9999E926BD50411F85EBB1BDD45441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000EFFA93A12BBD504147545EA679D454412D45AFCE12BD504107FC2C4A76D454410104A8CF12BD504186BC805476D4544114AE47D112BD50415C8FC26576D45441AE47E10A19BD504148E17A94B8D45441295C8FA21DBD504100000060BAD454419A9999E926BD50411F85EBB1BDD4544148E17A5430BD5041000000B0C0D45441C3F5285C32BD5041EC51B82EC1D45441EFFA93A12BBD504147545EA679D45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>147018 - 3078619
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001B00000048E17AC4292F5141F6285C4FA340544114AE4761262F51413D0AD793AC4054413D0AD7E3262F5141295C8FB2AC405441CDCCCC4C292F514185EB5128AD405441F6285CEF2B2F5141713D0A77AD405441CDCCCCBC2F2F5141333333C3AD405441AE47E11A372F5141713D0A27AE4054418FC2F5F83D2F514152B81E95AE40544166666696402F5141666666E6AE405441AE47E1DA452F5141EC51B86EAF4054418FC2F568492F5141295C8FD2AF4054413D0AD7134A2F514152B81EE5AF405441A4703D6A4C2F51419A999909B0405441EC51B85E4C2F5141D7A370EDAF405441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005500000034CA08135F2F51410EF0F545A0405441D7A370FD522F5141713D0A0789405441713D0AA74A2F5141F6285CCF8740544100000050422F5141EC51B8AE8640544133333373362F5141666666E68440544185EB5178362F5141295C8F528740544148E17A24352F5141C3F5281C8B40544152B81E55322F5141EC51B80E8F405441295C8F52322F51413D0AD78392405441AE47E1DA322F5141F6285CBF92405441EC51B83E332F5141333333039340544185EB51A82F2F5141D7A370AD944054411F85EBE12C2F51413333339398405441C3F528CC2B2F5141333333539A405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>147018 - 3303074
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001B00000048E17AC4292F5141F6285C4FA340544114AE4761262F51413D0AD793AC4054413D0AD7E3262F5141295C8FB2AC405441CDCCCC4C292F514185EB5128AD405441F6285CEF2B2F5141713D0A77AD405441CDCCCCBC2F2F5141333333C3AD405441AE47E11A372F5141713D0A27AE4054418FC2F5F83D2F514152B81E95AE40544166666696402F5141666666E6AE405441AE47E1DA452F5141EC51B86EAF4054418FC2F568492F5141295C8FD2AF4054413D0AD7134A2F514152B81EE5AF405441A4703D6A4C2F51419A999909B0405441EC51B85E4C2F5141D7A370EDAF405441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005500000034CA08135F2F51410EF0F545A0405441D7A370FD522F5141713D0A0789405441713D0AA74A2F5141F6285CCF8740544100000050422F5141EC51B8AE8640544133333373362F5141666666E68440544185EB5178362F5141295C8F528740544148E17A24352F5141C3F5281C8B40544152B81E55322F5141EC51B80E8F405441295C8F52322F51413D0AD78392405441AE47E1DA322F5141F6285CBF92405441EC51B83E332F5141333333039340544185EB51A82F2F5141D7A370AD944054411F85EBE12C2F51413333339398405441C3F528CC2B2F5141333333539A405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>147020 - 1128832
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000034000000F6285C6F3C2F514148E17A04EF40544148E17A043D2F5141EC51B85EEE405441EC51B86E3D2F514148E17A84ED4054411F85EBA13D2F514185EB5128ED4054413D0AD7033E2F514152B81E75EC4054418FC2F5B83E2F5141AE47E1EAEA4054410AD7A3204A2F51419A999989014154410AD7A3205C2F5141E17A14AE05415441666666D6712F5141000000E02D41544114AE4741792F5141AE47E1EA2B4154413D0AD7935A2F514185EB5108F640544114AE4711582F51418FC2F538F1405441CDCCCC9C562F514133333323F1405441CDCCCC5C552F51418FC2F5D8F0405441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000240000000F7633F6432F51415BADD7B5E140544193D1B549442F5141737AE6C0E0405441FEB0BC133D2F514150756CCEE040544119D12A812E2F514181DAC0E9E040544193DA134A2D2F5141CA41DEEBE04054415EE04DF5282F5141459E851FE1405441E17A14DE2A2F51418FC2F5D8EA40544114AE47B12B2F51419A999969EF405441666666462F2F5141EC51B84E02415441B81E851B302F51419A99994907415441E17A147E302F51415C8FC27505415441713D0A57332F5141F6285C4F00415441C3F528EC362F514148E17AD4F9405441E17A14DE3B2F51415C8FC245EF405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>147020 - 3539197
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000034000000F6285C6F3C2F514148E17A04EF40544148E17A043D2F5141EC51B85EEE405441EC51B86E3D2F514148E17A84ED4054411F85EBA13D2F514185EB5128ED4054413D0AD7033E2F514152B81E75EC4054418FC2F5B83E2F5141AE47E1EAEA4054410AD7A3204A2F51419A999989014154410AD7A3205C2F5141E17A14AE05415441666666D6712F5141000000E02D41544114AE4741792F5141AE47E1EA2B4154413D0AD7935A2F514185EB5108F640544114AE4711582F51418FC2F538F1405441CDCCCC9C562F514133333323F1405441CDCCCC5C552F51418FC2F5D8F0405441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000240000000F7633F6432F51415BADD7B5E140544193D1B549442F5141737AE6C0E0405441FEB0BC133D2F514150756CCEE040544119D12A812E2F514181DAC0E9E040544193DA134A2D2F5141CA41DEEBE04054415EE04DF5282F5141459E851FE1405441E17A14DE2A2F51418FC2F5D8EA40544114AE47B12B2F51419A999969EF405441666666462F2F5141EC51B84E02415441B81E851B302F51419A99994907415441E17A147E302F51415C8FC27505415441713D0A57332F5141F6285C4F00415441C3F528EC362F514148E17AD4F9405441E17A14DE3B2F51415C8FC245EF405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>147181 - 209119
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000C3F5287CCB2C514148E17A847D3F544100000010C72C51419A9999A9923F544100000030C22C514148E17A14AF3F5441713D0A97C42C51413D0AD7E3B23F54415C8FC2E5C52C51410AD7A310B23F5441EC51B88EC72C51413D0AD743B03F544152B81ED5C92C51415C8FC2C5AB3F5441713D0AB7CB2C5141713D0A57A73F5441B81E850BCC2C5141A4703D2AA33F5441D7A3701DCE2C5141000000B0A13F54410AD7A300CF2C514148E17A149E3F54418FC2F588CF2C514148E17A84973F5441AE47E13AD12C5141713D0A07943F5441D7A3703DCF2C514114AE4741923F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000007A300C25C32C51410A9A1699B03F5441ADE8A29AC32C514109F19053B13F5441B2B90D81C42C514109F19053B13F5441130FA837C72C51415A2BBB0AAE3F544152AC24A5C92C514108A9DF78A93F54419149A112CC2C5141A91D34E7A23F5441719A53C9CD2C51418A2F05C39E3F5441AF2E0037CE2C51416B41D69E9A3F5441261A66B9CE2C5141A81DFCEC963F5441AF2E0037CE2C5141A996A131953F54419E527112CE2C51414841077B923F5441EFE09272CD2C5141DE08AF5B8F3F5441A4703D3ACD2C51410AD7A3008F3F54413F06A75BCD2C51413B29461D8E3F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>147181 - 271856
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000C3F5287CCB2C514148E17A847D3F544100000010C72C51419A9999A9923F544100000030C22C514148E17A14AF3F5441713D0A97C42C51413D0AD7E3B23F54415C8FC2E5C52C51410AD7A310B23F5441EC51B88EC72C51413D0AD743B03F544152B81ED5C92C51415C8FC2C5AB3F5441713D0AB7CB2C5141713D0A57A73F5441B81E850BCC2C5141A4703D2AA33F5441D7A3701DCE2C5141000000B0A13F54410AD7A300CF2C514148E17A149E3F54418FC2F588CF2C514148E17A84973F5441AE47E13AD12C5141713D0A07943F5441D7A3703DCF2C514114AE4741923F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000007A300C25C32C51410A9A1699B03F5441ADE8A29AC32C514109F19053B13F5441B2B90D81C42C514109F19053B13F5441130FA837C72C51415A2BBB0AAE3F544152AC24A5C92C514108A9DF78A93F54419149A112CC2C5141A91D34E7A23F5441719A53C9CD2C51418A2F05C39E3F5441AF2E0037CE2C51416B41D69E9A3F5441261A66B9CE2C5141A81DFCEC963F5441AF2E0037CE2C5141A996A131953F54419E527112CE2C51414841077B923F5441EFE09272CD2C5141DE08AF5B8F3F5441A4703D3ACD2C51410AD7A3008F3F54413F06A75BCD2C51413B29461D8E3F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238557 - 178085
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000AE47E12A04C15041EC51B8DEC0CF5441CDCCCC2CFEC05041CDCCCCBCBCCF544185EB51C8F7C0504152B81EE5B8CF5441295C8FC2F0C050419A999949B5CF54411F85EBA1DFC050418FC2F558ADCF544152B81E35DDC05041B81E853BADCF5441EC51B8BED6C0504166666636B5CF5441E17A14CECAC05041EC51B81EC3CF54413D0AD743BDC05041713D0A17D3CF5441E17A140EBDC05041D7A370BDD4CF5441EC51B84EBFC050410AD7A350D9CF5441A4703DEAC0C05041D7A3707DDDCF5441CDCCCC3CC1C0504148E17A54DECF54419A9999F9C3C05041E17A14FEE7CF5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000008000000CAFAFCACC1C0504124EF77E0DFCF54410B7DF1D4C2C05041EB6E18F5E3CF544120B27FFD11C1504106E1CB17CBCF544101C609D00DC15041A950CA00C8CF54417E14AEE70AC15041A6703DDAC5CF5441C5703DEAC0C050412DA4707DDDCF5441CDCCCC3CC1C0504148E17A54DECF5441CAFAFCACC1C0504124EF77E0DFCF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238557 - 365386
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000AE47E12A04C15041EC51B8DEC0CF5441CDCCCC2CFEC05041CDCCCCBCBCCF544185EB51C8F7C0504152B81EE5B8CF5441295C8FC2F0C050419A999949B5CF54411F85EBA1DFC050418FC2F558ADCF544152B81E35DDC05041B81E853BADCF5441EC51B8BED6C0504166666636B5CF5441E17A14CECAC05041EC51B81EC3CF54413D0AD743BDC05041713D0A17D3CF5441E17A140EBDC05041D7A370BDD4CF5441EC51B84EBFC050410AD7A350D9CF5441A4703DEAC0C05041D7A3707DDDCF5441CDCCCC3CC1C0504148E17A54DECF54419A9999F9C3C05041E17A14FEE7CF5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000008000000CAFAFCACC1C0504124EF77E0DFCF54410B7DF1D4C2C05041EB6E18F5E3CF544120B27FFD11C1504106E1CB17CBCF544101C609D00DC15041A950CA00C8CF54417E14AEE70AC15041A6703DDAC5CF5441C5703DEAC0C050412DA4707DDDCF5441CDCCCC3CC1C0504148E17A54DECF5441CAFAFCACC1C0504124EF77E0DFCF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>148760 - 219760
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001400000033333303E4F450410AD7A330622F5541295C8F02E8F45041000000A0622F554185EB5178F3F45041295C8F82662F554152B81EC5F3F450413D0AD713632F554166666676F4F450410AD7A3B0572F5541AE47E1FAF5F45041000000204C2F55418FC2F5D8F9F450411F85EB01362F5541E17A143EF2F450419A9999D9342F55415C8FC2D5F6F45041AE47E1CA072F5541C3F5284CF9F4504152B81E15092F5541EC51B8AEF2F45041D7A3709D052F5541D7A370EDEFF45041B81E850B062F55417B14AEC7EBF4504152B81EA51A2F55415C8FC295E7F45041A4703D7A2F2F5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B00000082336A69F2F4504137E0FD36352F55418C60A65FF2F450411FA825F9342F55411CD0505EF2F450412EA081DE342F5541E17A143EF2F450419A9999D9342F554105B68753F2F45041388E2607342F5541FE4CCA4CF2F450412C329380332F554175FE2912F4F4504125A62DE9222F5541810F54D2F6F45041B2548CEC072F5541693DAAAAF2F450419E7385C9052F554149CCFA0FF0F450418A092106062F554105DE0F0BF0F45041EF87E506062F5541D5A56506F0F45041B2EC9F07062F5541CC2E9402F0F45041B87C3808062F554135107A00F0F450410F7A8C08062F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>148760 - 318875
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001400000033333303E4F450410AD7A330622F5541295C8F02E8F45041000000A0622F554185EB5178F3F45041295C8F82662F554152B81EC5F3F450413D0AD713632F554166666676F4F450410AD7A3B0572F5541AE47E1FAF5F45041000000204C2F55418FC2F5D8F9F450411F85EB01362F5541E17A143EF2F450419A9999D9342F55415C8FC2D5F6F45041AE47E1CA072F5541C3F5284CF9F4504152B81E15092F5541EC51B8AEF2F45041D7A3709D052F5541D7A370EDEFF45041B81E850B062F55417B14AEC7EBF4504152B81EA51A2F55415C8FC295E7F45041A4703D7A2F2F5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B00000082336A69F2F4504137E0FD36352F55418C60A65FF2F450411FA825F9342F55411CD0505EF2F450412EA081DE342F5541E17A143EF2F450419A9999D9342F554105B68753F2F45041388E2607342F5541FE4CCA4CF2F450412C329380332F554175FE2912F4F4504125A62DE9222F5541810F54D2F6F45041B2548CEC072F5541693DAAAAF2F450419E7385C9052F554149CCFA0FF0F450418A092106062F554105DE0F0BF0F45041EF87E506062F5541D5A56506F0F45041B2EC9F07062F5541CC2E9402F0F45041B87C3808062F554135107A00F0F450410F7A8C08062F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238714 - 230995
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000A4703D3A81C1504148E17AD4E7CF5441AE47E17A79C15041AE47E18ADCCF54415C8FC2856DC15041EC51B84EE0CF5441713D0A5789C1504152B81EC508D05441B81E850B9AC150411F85EB1121D05441713D0A779BC15041CDCCCCFC20D054415C8FC285A2C15041C3F5284C20D05441D7A3709DA5C15041E17A14DE1FD05441A4703D7AA7C15041000000901FD05441A4703D3A81C1504148E17AD4E7CF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000008261E0E27EC150417BF37390F9CF5441713D0A5789C1504152B81EC508D05441B3A4B3E090C1504190581CBC13D05441B81E850B9AC150411F85EB1121D05441713D0A779BC15041CDCCCCFC20D054415C8FC285A2C15041C3F5284C20D05441D7A3709DA5C15041E17A14DE1FD05441A4703D7AA7C15041000000901FD05441A4703D3A81C1504148E17AD4E7CF544169DB888879C15041CC0FC69EDCCF54411776FE8C6DC150413E0A3E59E0CF5441FDD2EF796FC150418D1D4326E3CF54418A47C01572C15041120FA5F1E6CF54418261E0E27EC150417BF37390F9CF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238714 - 367390
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000A4703D3A81C1504148E17AD4E7CF5441AE47E17A79C15041AE47E18ADCCF54415C8FC2856DC15041EC51B84EE0CF5441713D0A5789C1504152B81EC508D05441B81E850B9AC150411F85EB1121D05441713D0A779BC15041CDCCCCFC20D054415C8FC285A2C15041C3F5284C20D05441D7A3709DA5C15041E17A14DE1FD05441A4703D7AA7C15041000000901FD05441A4703D3A81C1504148E17AD4E7CF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000008261E0E27EC150417BF37390F9CF5441713D0A5789C1504152B81EC508D05441B3A4B3E090C1504190581CBC13D05441B81E850B9AC150411F85EB1121D05441713D0A779BC15041CDCCCCFC20D054415C8FC285A2C15041C3F5284C20D05441D7A3709DA5C15041E17A14DE1FD05441A4703D7AA7C15041000000901FD05441A4703D3A81C1504148E17AD4E7CF544169DB888879C15041CC0FC69EDCCF54411776FE8C6DC150413E0A3E59E0CF5441FDD2EF796FC150418D1D4326E3CF54418A47C01572C15041120FA5F1E6CF54418261E0E27EC150417BF37390F9CF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238731 - 178055
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003C000000333333639CBB5041B81E854B8BCC544148E17A949CBB5041C3F528CC85CC544148E17AC4A1BB504185EB51E882CC5441CDCCCC4CA1BB5041AE47E1DA82CC544185EB51E899BB50410000001082CC5441666666368FBB50411F85EB9181CC54419A9999298EBB5041EC51B88E81CC544152B81E758DBB504152B81ED584CC5441333333338CBB5041EC51B8BE8ACC544114AE47918ABB5041C3F5280C90CC54410AD7A3C089BB5041CDCCCC6C92CC544148E17AC488BB50413D0AD71395CC5441CDCCCC3C87BB50415C8FC2E597CC5441295C8F3285BB50411F85EBD19ACC5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005F000000A051B8DE76BB5041A8E17AC4B3CC5441295C8FD278BB50410AD7A3C0B2CC544114AE47F17EBB5041B81E854BB3CC54417632BA8B7FBB5041763ED7F6B2CC544197CCCCDC83BB50415AC2F598B0CC54418D1E855B89BB5041478FC275AFCC5441A7606BAA8ABB50413AEC857BAECC5441B81E85EB8ABB5041AE47E14AAECC54413A14AEB78DBB50416E703DAAA9CC5441B8F528EC8FBB504181A3704DA4CC5441203AAAFA8FBB504149CDB3A2A3CC54410000004090BB5041295C8F72A0CC5441194229CC90BB50419A9C754E9FCC5441B4D6A37091BB50419B14AEF79DCC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238731 - 393452
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003C000000333333639CBB5041B81E854B8BCC544148E17A949CBB5041C3F528CC85CC544148E17AC4A1BB504185EB51E882CC5441CDCCCC4CA1BB5041AE47E1DA82CC544185EB51E899BB50410000001082CC5441666666368FBB50411F85EB9181CC54419A9999298EBB5041EC51B88E81CC544152B81E758DBB504152B81ED584CC5441333333338CBB5041EC51B8BE8ACC544114AE47918ABB5041C3F5280C90CC54410AD7A3C089BB5041CDCCCC6C92CC544148E17AC488BB50413D0AD71395CC5441CDCCCC3C87BB50415C8FC2E597CC5441295C8F3285BB50411F85EBD19ACC5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005F000000A051B8DE76BB5041A8E17AC4B3CC5441295C8FD278BB50410AD7A3C0B2CC544114AE47F17EBB5041B81E854BB3CC54417632BA8B7FBB5041763ED7F6B2CC544197CCCCDC83BB50415AC2F598B0CC54418D1E855B89BB5041478FC275AFCC5441A7606BAA8ABB50413AEC857BAECC5441B81E85EB8ABB5041AE47E14AAECC54413A14AEB78DBB50416E703DAAA9CC5441B8F528EC8FBB504181A3704DA4CC5441203AAAFA8FBB504149CDB3A2A3CC54410000004090BB5041295C8F72A0CC5441194229CC90BB50419A9C754E9FCC5441B4D6A37091BB50419B14AEF79DCC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>149648 - 137244
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000080000008FC2F5D862D45041EC51B8CEC260544185EB51F850D4504114AE4741A26054413333336303D45041A4703DCAB06054413333334315D4504166666656D1605441C3F5285C16D45041B81E85DBD1605441B81E856B3CD45041A4703DBACA60544185EB517862D45041A4703D9AC36054418FC2F5D862D45041EC51B8CEC2605441
+</a>
+
+<b>
+010600000001000000010300000001000000070000003333336303D45041A4703DCAB06054411E68E82B05D450415EDED409B4605441BD8CA0D852D450411FA6DAABA56054418554F89851D45041E049CD65A3605441F0D2D96E51D4504113CF1B19A36054415B3B970151D4504198282952A26054413333336303D45041A4703DCAB0605441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>149648 - 335715
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000080000008FC2F5D862D45041EC51B8CEC260544185EB51F850D4504114AE4741A26054413333336303D45041A4703DCAB06054413333334315D4504166666656D1605441C3F5285C16D45041B81E85DBD1605441B81E856B3CD45041A4703DBACA60544185EB517862D45041A4703D9AC36054418FC2F5D862D45041EC51B8CEC2605441
+</a>
+
+<b>
+010600000001000000010300000001000000070000003333336303D45041A4703DCAB06054411E68E82B05D450415EDED409B4605441BD8CA0D852D450411FA6DAABA56054418554F89851D45041E049CD65A3605441F0D2D96E51D4504113CF1B19A36054415B3B970151D4504198282952A26054413333336303D45041A4703DCAB0605441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238750 - 58142
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000034000000F6285C7F00BC5041295C8F3231CC5441E17A14FEFEBB5041F6285C0F2FCC5441B81E85CBFCBB5041000000B028CC5441F6285C8FFCBB5041713D0A472ACC54411F85EB51F8BB504148E17AE435CC5441D7A3708DF5BB504185EB51583CCC5441AE47E16AF2BB50417B14AEE743CC5441C3F5284CF0BB50410000008047CC544152B81E25EEBB5041D7A370AD49CC54415C8FC265ECBB50417B14AEE74BCC544100000070EBBB5041CDCCCCBC4DCC5441333333D3EABB5041AE47E1EA4ECC544114AE4741E9BB50416666666650CC544148E17A54E6BB5041D7A3705D52CC5441 [...]
+</a>
+
+<b>
+010600000002000000010300000001000000520000000EFE673176BB504176E1F66848CC5441F205A99972BB5041377405664ECC54410F58E1F770BB5041D5E4EE2B51CC5441E278CA8BCEBB5041B434FD7854CC5441EB984749D3BB50419D9223A854CC544148E17A74D8BB5041713D0AD754CC544116C78133DABB50410FB9EBEC54CC54414055205ADFBB50414BCE272055CC5441027313B8E0BB5041D7BDCF2855CC5441E2824DE1E1BB50417129289554CC544116B88E94E6BB50416B674C2C52CC54419EE3954AE9BB504111F59C5D50CC5441D1CAD3B6E9BB50415A6567F74FCC54418E5F7EC5EABB50419DD0BCE84ECC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238750 - 178157
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000034000000F6285C7F00BC5041295C8F3231CC5441E17A14FEFEBB5041F6285C0F2FCC5441B81E85CBFCBB5041000000B028CC5441F6285C8FFCBB5041713D0A472ACC54411F85EB51F8BB504148E17AE435CC5441D7A3708DF5BB504185EB51583CCC5441AE47E16AF2BB50417B14AEE743CC5441C3F5284CF0BB50410000008047CC544152B81E25EEBB5041D7A370AD49CC54415C8FC265ECBB50417B14AEE74BCC544100000070EBBB5041CDCCCCBC4DCC5441333333D3EABB5041AE47E1EA4ECC544114AE4741E9BB50416666666650CC544148E17A54E6BB5041D7A3705D52CC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000044000000B57313B8E0BB5041DCBDCF2855CC5441CAA010D3DFBB5041B29B252355CC544148E17A34DDBB5041295C8F1255CC54418598693EDCBB50412801840655CC54414063AD7CD8BB5041D1B386E754CC5441713D0AE7D8BB5041D7A370BD55CC544152B81EB5CFBB5041AE47E15A5ACC5441497CB0FACDBB504112C025515BCC5441EC7A145ECDBB50419BEB51A85BCC54411BEABD66CEBB504121C332265ECC54410B10A213DABB5041B7A0105D57CC54411952875FDCBB5041235C949056CC54414BFA26DEDFBB5041003B562A56CC5441A754610FE2BB50419EC22CEB55CC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>630446 - 4107510
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003F000000B5E880C00D075141ECFC31DD042255417AF08D4A0E0751413B9D2025042255412D2EBE800F075141A2F58A87022255414BB40EA50F075141EA798E4602225541D59915F60F075141FC458EB501225541131DF0A610075141913D8757002255412E45C1F710075141096493B7FF2155412AE8139511075141F0933A7DFE215541DB3A342F12075141050300FCFC215541A9B5218012075141AFFDB931FC215541272DCC031307514103D3A2E8FA2155414AE12B93130751410915E65BF92155414FBCE3E313075141620B8A7CF821554137EFC05D14075141FF067344F6215541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000007ED6E9FD0D07514139199586062255411B2FDD6411075141EC51B83E04225541333333D3180751410C022B77FF215541666666862807514166666696F62155418FC2F55824075141B81E859BEE215541885A7DE821075141C12A0B0FEA21554122FA2BB02007514126B5A6C8E7215541E17A14EE1F075141EC51B85EE6215541B81E856B1E075141666666E6DC215541F6285C3F170751413D0AD7E3DD215541A4703D8A0E0751411F85EB41DF21554114AE47810E075141B81E85CBE02155419A99998907075141D7A370BDE2215541333333A300075141000000B0E4215541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>152291 - 5223098
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000005000000295C8F122360514148E17A94EBA35441F6285CAFF55F51410AD7A3E002A4544152B81E05F95F51415C8FC2250CA4544152B81EC525605141AE47E10AF5A35441295C8F122360514148E17A94EBA35441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D7AB7AC825605141284F5903F5A3544177DED34A23605141AA22DC59ECA354416FFDF2262360514111B400DCEBA35441F154671A236051417399FEAFEBA35441495621A1F55F51413EEBF6B802A454417AB8AFBBF55F51411429B90203A45441287860E7F55F51419A5B127C03A45441230A9CFAF85F5141325394060CA454413D90FCFCFC5F5141E54941190AA4544172725191006051410E2A244008A45441E12469B107605141FFBD569204A45441B8D8C97512605141D6822F03FFA35441D7AB7AC825605141284F5903F5A35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>152737 - 3143318
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E0000005C8FC275705751419A99990955B3544114AE47D1715751415C8FC2A551B35441AE47E1EA73575141C3F5284C50B3544148E17AC475575141B81E857B4EB3544152B81E85765751418FC2F5284EB35441B81E857B7657514152B81E6546B35441E17A142E5E57514185EB51A83DB35441333333C35957514152B81E453CB354413D0AD7434E575141C3F528BC39B35441AE47E10A495751419A9999594EB35441F6285C4F57575141C3F528EC53B354413D0AD7636D5751410AD7A3605CB35441CDCCCC6C6F575141F6285CBF5AB354415C8FC275705751419A99990955B35441
+</a>
+
+<b>
+010600000001000000010300000001000000240000003B73CD374B5751415C4F3CC345B35441E73E64624B575141D13B1F1B45B35441DCE7116C4B5751412E0FEBF444B35441E415AE4B4C57514144A2408241B354411B0638594C575141B862CF4C41B354415AD933894C57514158E9668F40B354419537A1DC4C5751419C0C16463FB354413E8AF7104D57514127457E773EB35441B1C8BB2B4D575141881CD60D3EB354412174C9854D575141565D5DAA3CB35441AD56BA914D5751415DCA3A7B3CB3544175DE1EAE4D5751410068270B3CB35441FEB922DA4D575141174E695D3BB354411218D5034E575141B0E9D1B83AB35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>152737 - 3521027
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E0000005C8FC275705751419A99990955B3544114AE47D1715751415C8FC2A551B35441AE47E1EA73575141C3F5284C50B3544148E17AC475575141B81E857B4EB3544152B81E85765751418FC2F5284EB35441B81E857B7657514152B81E6546B35441E17A142E5E57514185EB51A83DB35441333333C35957514152B81E453CB354413D0AD7434E575141C3F528BC39B35441AE47E10A495751419A9999594EB35441F6285C4F57575141C3F528EC53B354413D0AD7636D5751410AD7A3605CB35441CDCCCC6C6F575141F6285CBF5AB354415C8FC275705751419A99990955B35441
+</a>
+
+<b>
+010600000001000000010300000001000000240000003B73CD374B5751415C4F3CC345B35441E73E64624B575141D13B1F1B45B35441DCE7116C4B5751412E0FEBF444B35441E415AE4B4C57514144A2408241B354411B0638594C575141B862CF4C41B354415AD933894C57514158E9668F40B354419537A1DC4C5751419C0C16463FB354413E8AF7104D57514127457E773EB35441B1C8BB2B4D575141881CD60D3EB354412174C9854D575141565D5DAA3CB35441AD56BA914D5751415DCA3A7B3CB3544175DE1EAE4D5751410068270B3CB35441FEB922DA4D575141174E695D3BB354411218D5034E575141B0E9D1B83AB35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>152875 - 4020575
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001F000000A4703DCAE9555141F6285C1FB9B354419A9999C9F55551417B14AED7C3B35441B81E85ABFB55514114AE47C1C0B354418FC2F59806565141EC51B8FEBAB35441EC51B8AE1256514185EB51A8B4B354410AD7A3A019565141713D0AE7B0B354419A9999C91C565141AE47E12AAFB35441D7A3704D1F5651418FC2F5C8ADB35441F6285C3F3156514114AE4701A5B354417B14AE273256514100000090A4B354411F85EBB13F565141B81E85CB9DB35441295C8FB248565141B81E857B99B354415C8FC2554A56514114AE472199B35441EC51B8CE44565141AE47E19A90B35441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000001567259FE2555141AFD6A6BEA9B35441295C8F52DF55514185EB51B8ACB35441A4703DCAE9555141F6285C1FB9B354419A9999C9F55551417B14AED7C3B35441B81E85ABFB55514114AE47C1C0B354418FC2F59806565141EC51B8FEBAB35441EC51B8AE1256514185EB51A8B4B354410AD7A3A019565141713D0AE7B0B354419A9999C91C565141AE47E12AAFB35441D7A3704D1F5651418FC2F5C8ADB3544135121BDD2B565141394E9FA3A7B354413D667BA52C56514192689541A7B35441DA1362D531565141E1D320B8A4B354415D17457919565141CC2DD0A482B35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238919 - 2964541
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002700000052B81E750BBE5041C3F5288CF4D554411F85EBE10ABE504166666666F2D5544148E17AA40ABE504100000080F1D55441E17A146E08BE50410AD7A3C0F2D554417B14AE0705BE5041E17A14FEF3D5544152B81E5507BE50415C8FC29508D654410000003007BE50413D0AD76309D65441666666B603BE50410AD7A37008D654417B14AED701BE5041A4703DDA07D65441AE47E16AFEBD50415C8FC2D50ED6544133333363FABD5041333333C317D65441333333F3FFBD5041713D0A3719D65441B81E85AB00BE5041713D0A6719D65441F6285CDF02BE50417B14AE071AD65441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000310000009A9999F92EBE50410AD7A350DFD554412AF41B502ABE5041C4599285E7D55441713D0A9727BE50410AD7A350ECD55441713D0A1720BE5041EC51B83EF8D55441A245B6D519BE5041044034E501D654414D982B7316BE50419239942407D6544160E5D06211BE504148E17A1C01D6544191ED7C170EBE504119045646FCD55441D122DBC90CBE5041E9263118F9D554411B876FE80ABE504138A2ED88F1D55441D9F6D7E404BE5041B45F0EC5F3D554417B14AE0705BE5041E17A14FEF3D5544152B81E5507BE50415C8FC29508D654410000003007BE50413D0AD76309D65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>238919 - 3454429
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002700000052B81E750BBE5041C3F5288CF4D554411F85EBE10ABE504166666666F2D5544148E17AA40ABE504100000080F1D55441E17A146E08BE50410AD7A3C0F2D554417B14AE0705BE5041E17A14FEF3D5544152B81E5507BE50415C8FC29508D654410000003007BE50413D0AD76309D65441666666B603BE50410AD7A37008D654417B14AED701BE5041A4703DDA07D65441AE47E16AFEBD50415C8FC2D50ED6544133333363FABD5041333333C317D65441333333F3FFBD5041713D0A3719D65441B81E85AB00BE5041713D0A6719D65441F6285CDF02BE50417B14AE071AD65441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000310000009A9999F92EBE50410AD7A350DFD554412AF41B502ABE5041C4599285E7D55441713D0A9727BE50410AD7A350ECD55441713D0A1720BE5041EC51B83EF8D55441A245B6D519BE5041044034E501D654414D982B7316BE50419239942407D6544160E5D06211BE504148E17A1C01D6544191ED7C170EBE504119045646FCD55441D122DBC90CBE5041E9263118F9D554411B876FE80ABE504138A2ED88F1D55441D9F6D7E404BE5041B45F0EC5F3D554417B14AE0705BE5041E17A14FEF3D5544152B81E5507BE50415C8FC29508D654410000003007BE50413D0AD76309D65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>153318 - 55506
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000003D000000C3F5282CFA6451413D0AD7337CB0544148E17A74FA6451418FC2F52877B05441CDCCCC7CFB645141CDCCCC4C70B05441EC51B8FEFC645141D7A370FD6AB05441F6285CEFFE645141E17A142E66B054418FC2F59800655141EC51B89E62B054417B14AE170465514114AE47315EB0544185EB5168FE645141E17A145E5AB05441EC51B80EFE6451411F85EB215AB05441666666A6FD64514148E17A545DB0544100000090FD645141EC51B8AE5FB054415C8FC235FD6451419A9999A961B05441A4703D7AFC6451416666661663B054419A999929FB6451415C8FC2D565B05441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000900000002BF681A3FA6451415354D6E845B0544115649048F9645141C6B2BA0143B054414EFD1FF9F8645141A630CBA842B05441CC494FE4F8645141AF787D9142B054411CBCF090F8645141F787273442B05441ED5C8FE6F764514139F0677541B05441D5AC15C2F7645141FDFA914C41B054413E5ACE95F6645141F148E24940B05441923D2EA3F564514161A1ECD43FB054412B52F96FF46451413233D5403FB0544195C6ED53F4645141BB3D50333FB05441E17A145EF3645141CDCCCCBC3EB054410BBB7209F36451410C391DBF3EB05441373A6FD6F0645141925182CE3EB05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239054 - 59017
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B0000001F85EBA15FC1504114AE47A1F7D05441333333F35FC150413D0AD783F3D054417B14AE1760C1504185EB51E8E9D05441D7A370ED5FC15041E17A145ED9D0544114AE47E15FC15041295C8FC2D7D054413D0AD7335FC150411F85EB71C4D054419A9999995EC150411F85EBB1B3D05441000000E05CC1504185EB517892D054413D0AD7035DC150411F85EB618CD054413D0AD7F35DC150410AD7A36086D05441B81E85AB5FC15041C3F5287C80D054417B14AE4761C15041713D0AC77CD0544152B81EC53BC150413D0AD73370D054413D0AD7133EC15041CDCCCC9C76D05441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000560000008FC2F5B845C1504100000050E7D0544128042EB845C15041E1006E54E7D05441686217B145C15041CB2F1391E7D0544147788A1945C150414DF8B9DEEAD05441DD21F15658C15041733DEF1FF4D054411F85EBA15FC1504114AE47A1F7D05441333333F35FC150413D0AD783F3D054417B14AE1760C1504185EB51E8E9D054418E22631260C150415CF2C2D5E7D0544134F5250F60C15041B8DDBB6FE7D054419624C30B60C150412F97A83DE5D05441E694CB0660C150419E34C04BE3D05441A774E1FE5FC15041166D6032E0D054419A73E6F65FC150418E15FF9BDDD05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239054 - 120152
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B0000001F85EBA15FC1504114AE47A1F7D05441333333F35FC150413D0AD783F3D054417B14AE1760C1504185EB51E8E9D05441D7A370ED5FC15041E17A145ED9D0544114AE47E15FC15041295C8FC2D7D054413D0AD7335FC150411F85EB71C4D054419A9999995EC150411F85EBB1B3D05441000000E05CC1504185EB517892D054413D0AD7035DC150411F85EB618CD054413D0AD7F35DC150410AD7A36086D05441B81E85AB5FC15041C3F5287C80D054417B14AE4761C15041713D0AC77CD0544152B81EC53BC150413D0AD73370D054413D0AD7133EC15041CDCCCC9C76D05441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000560000008FC2F5B845C1504100000050E7D054412A042EB845C15041E5006E54E7D05441676217B145C15041C82F1391E7D0544149788A1945C1504149F8B9DEEAD05441E121F15658C15041703DEF1FF4D054411F85EBA15FC1504114AE47A1F7D05441333333F35FC150413D0AD783F3D054417B14AE1760C1504185EB51E8E9D054418F22631260C1504158F2C2D5E7D0544132F5250F60C15041BCDDBB6FE7D054419824C30B60C150412E97A83DE5D05441E994CB0660C150419934C04BE3D05441A574E1FE5FC15041136D6032E0D054419D73E6F65FC150418A15FF9BDDD05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239054 - 320328
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B0000001F85EBA15FC1504114AE47A1F7D05441333333F35FC150413D0AD783F3D054417B14AE1760C1504185EB51E8E9D05441D7A370ED5FC15041E17A145ED9D0544114AE47E15FC15041295C8FC2D7D054413D0AD7335FC150411F85EB71C4D054419A9999995EC150411F85EBB1B3D05441000000E05CC1504185EB517892D054413D0AD7035DC150411F85EB618CD054413D0AD7F35DC150410AD7A36086D05441B81E85AB5FC15041C3F5287C80D054417B14AE4761C15041713D0AC77CD0544152B81EC53BC150413D0AD73370D054413D0AD7133EC15041CDCCCC9C76D05441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000560000008FC2F5B845C1504100000050E7D054412A042EB845C15041E5006E54E7D05441676217B145C15041C82F1391E7D0544149788A1945C1504149F8B9DEEAD05441E121F15658C15041703DEF1FF4D054411F85EBA15FC1504114AE47A1F7D05441333333F35FC150413D0AD783F3D054417B14AE1760C1504185EB51E8E9D054418F22631260C1504158F2C2D5E7D0544132F5250F60C15041BCDDBB6FE7D054419824C30B60C150412E97A83DE5D05441E994CB0660C150419934C04BE3D05441A574E1FE5FC15041136D6032E0D054419D73E6F65FC150418A15FF9BDDD05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>872592 - 3182900
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001C00000033333303AF845141295C8FC29F995441295C8FB2AA845141C3F528BC98995441D7A370FDA5845141295C8F1292995441A4703D1AA38451411F85EB218D995441666666D69E84514114AE47918F995441CDCCCC6C9C8451418FC2F52891995441295C8FA298845141000000509399544185EB51589684514185EB51889499544185EB51488E845141295C8FA29899544114AE47618C845141CDCCCCEC99995441666666468B845141666666A69A995441CDCCCC2C898451410AD7A3E09B99544152B81EE58984514185EB5108A19954418FC2F5188B8451419A999919A6995441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001100000075A72561B0845141A5CC272FA49954418A18B789AB845141F527F029A7995441FE4C1EEEA6845141A4E44AB0A9995441CF076FE3A384514148B55566AB995441A7AFEAAF9F8451410473EFE8AD99544178F0D3079F845141E0ED0D52AE99544186C8635D9E8451416784A4BCAE995441B4DC37069E845141EE6628F3AE995441AF3A86B19D845141F79D1F28AF995441D0E6DF5C9E84514107ACFCF6AE995441621C38B9A3845141B3C896BAAC9954415FEFD632B1845141FD31C0DEA5995441C080481AB18451412D763E1CA5995441814511E5B08451418B39B296A4995441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>872592 - 3582367
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001C00000033333303AF845141295C8FC29F995441295C8FB2AA845141C3F528BC98995441D7A370FDA5845141295C8F1292995441A4703D1AA38451411F85EB218D995441666666D69E84514114AE47918F995441CDCCCC6C9C8451418FC2F52891995441295C8FA298845141000000509399544185EB51589684514185EB51889499544185EB51488E845141295C8FA29899544114AE47618C845141CDCCCCEC99995441666666468B845141666666A69A995441CDCCCC2C898451410AD7A3E09B99544152B81EE58984514185EB5108A19954418FC2F5188B8451419A999919A6995441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001100000075A72561B0845141A5CC272FA49954418A18B789AB845141F527F029A7995441FE4C1EEEA6845141A4E44AB0A9995441CF076FE3A384514148B55566AB995441A7AFEAAF9F8451410473EFE8AD99544178F0D3079F845141E0ED0D52AE99544186C8635D9E8451416784A4BCAE995441B4DC37069E845141EE6628F3AE995441AF3A86B19D845141F79D1F28AF995441D0E6DF5C9E84514107ACFCF6AE995441621C38B9A3845141B3C896BAAC9954415FEFD632B1845141FD31C0DEA5995441C080481AB18451412D763E1CA5995441814511E5B08451418B39B296A4995441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>317104 - 290020
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000130000009A999909CD4751411F85EBB148025541CDCCCCFCD0475141000000D043025541F6285CCFD3475141333333E340025541E17A143ED6475141AE47E19A3E02554148E17A04D947514114AE47613C025541AE47E1AADE475141295C8F2238025541E17A140EE3475141713D0AA73502554185EB5158E6475141C3F5283C3402554133333343E3475141E17A14EE3002554185EB5118D9475141A4703D0A260255411F85EBA1D547514152B81E55220255413D0AD703CC47514133333393420255410AD7A390CA4751419A999929460255411F85EBB1C84751410000007049025541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002400000000000090DF475141AE47E1FA4D025541822B36CDEC475141DA3699DD4B025541484421B3ED475141F5234BB34B025541814A81DAED475141D92397B24B025541713D0A97EE47514148E17A944B02554152B81E15F94751411F85EB814C0255417FC5A4B9F74751413377F04547025541CECD977CF54751415B4B9BEF3F0255411F36654FF54751419E0E21993F0255411122647CF4475141522469053E025541ACCE1A3AF4475141896795863D0255413091A553F2475141B703B1703A025541DF300EDAF1475141E67054B3390255412A02D87CF147514153662A2239025541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>243408 - 254534
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000260000009A999929791A51419A9999E9331C55418FC2F588761A51419A999919361C5541AE47E14A761A5141CDCCCC9C371C5541A4703DAA751A5141A4703DDA381C5541C3F528DC741A5141AE47E1BA391C55413D0AD783731A51415C8FC215391C554185EB5178711A5141C3F5280C371C5541F6285C2F6F1A5141D7A3703D3A1C55411F85EB916D1A5141AE47E1DA3A1C5541F6285C7F651A5141CDCCCC7C431C55415C8FC225601A51419A9999B94A1C55411F85EB915C1A5141333333134F1C5541CDCCCCCC581A5141C3F5282C551C5541CDCCCCAC561A51410AD7A300591C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000C3F528DC741A5141AE47E1BA391C55416C3423A4741A5141A3A203A0391C55416175A045731A514185F7CB3B3A1C554114D812CE701A5141E84F174A3C1C55415242519E6D1A51414281500E3B1C55413C8B18756D1A51417725B4F93A1C55414B0536306C1A5141645120553C1C5541EB285C7F651A5141EDCCCC7C431C5541478FC225601A5141BA9999B94A1C55411F85EB915C1A5141693333134F1C5541D506530F5B1A5141B9447884511C5541CDCCCCCC581A5141C3F5282C551C554151671168571A5141C6F31DAF571C5541D8CCCCAC561A514120D7A300591C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>243408 - 382330
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000260000009A999929791A51419A9999E9331C55418FC2F588761A51419A999919361C5541AE47E14A761A5141CDCCCC9C371C5541A4703DAA751A5141A4703DDA381C5541C3F528DC741A5141AE47E1BA391C55413D0AD783731A51415C8FC215391C554185EB5178711A5141C3F5280C371C5541F6285C2F6F1A5141D7A3703D3A1C55411F85EB916D1A5141AE47E1DA3A1C5541F6285C7F651A5141CDCCCC7C431C55415C8FC225601A51419A9999B94A1C55411F85EB915C1A5141333333134F1C5541CDCCCCCC581A5141C3F5282C551C5541CDCCCCAC561A51410AD7A300591C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000C3F528DC741A5141AE47E1BA391C55416C3423A4741A5141A3A203A0391C55416175A045731A514185F7CB3B3A1C554114D812CE701A5141E84F174A3C1C55415242519E6D1A51414281500E3B1C55413C8B18756D1A51417725B4F93A1C55414B0536306C1A5141645120553C1C5541EB285C7F651A5141EDCCCC7C431C5541478FC225601A5141BA9999B94A1C55411F85EB915C1A5141693333134F1C5541D506530F5B1A5141B9447884511C5541CDCCCCCC581A5141C3F5282C551C554151671168571A5141C6F31DAF571C5541D8CCCCAC561A514120D7A300591C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158654 - 3112963
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000016000000666666F6B2415141713D0A1703115541A4703D6ACC41514185EB51A8FE105541D7A3701DE1415141B81E859BF61055417B14AEB7F54151418FC2F598EE10554185EB51B8F641514185EB51E8EC105541295C8F82F64151411F85EB51EB105541C3F528FCF641514148E17A44E310554100000090F6415141AE47E13ADE105541F6285C2FF54151410AD7A370DA1055418FC2F5D8F141514185EB5108D3105541D7A370ADEE4151417B14AE17CC10554100000010E041514148E17A24D110554114AE4711D6415141713D0AD7D4105541D7A3704DC0415141C3F528DCDC105541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000F7D8A14AC0415141B87E56DEDC1055413CB222BACA4151417FE88D0BD9105541536CD6CADF4151411F398241D11055413D09D61EE8415141956D945DCE105541B1B5CFA2EE415141752D3A29CC1055412D588BB3EE415141D6440B25CC105541D7A370ADEE4151417B14AE17CC10554100000080EE41514185EB5188C0105541B81E853BEC415141EC51B86EB810554148E17A54E84151415C8FC205B11055418FC2F558E74151418FC2F548B010554114AE4711E64151419A999979B310554166666686E34151411F85EB81B9105541AE47E1CAE041514100000090BE105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158654 - 3492526
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000016000000666666F6B2415141713D0A1703115541A4703D6ACC41514185EB51A8FE105541D7A3701DE1415141B81E859BF61055417B14AEB7F54151418FC2F598EE10554185EB51B8F641514185EB51E8EC105541295C8F82F64151411F85EB51EB105541C3F528FCF641514148E17A44E310554100000090F6415141AE47E13ADE105541F6285C2FF54151410AD7A370DA1055418FC2F5D8F141514185EB5108D3105541D7A370ADEE4151417B14AE17CC10554100000010E041514148E17A24D110554114AE4711D6415141713D0AD7D4105541D7A3704DC0415141C3F528DCDC105541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000F7D8A14AC0415141B87E56DEDC1055413CB222BACA4151417FE88D0BD9105541536CD6CADF4151411F398241D11055413D09D61EE8415141956D945DCE105541B1B5CFA2EE415141752D3A29CC1055412D588BB3EE415141D6440B25CC105541D7A370ADEE4151417B14AE17CC10554100000080EE41514185EB5188C0105541B81E853BEC415141EC51B86EB810554148E17A54E84151415C8FC205B11055418FC2F558E74151418FC2F548B010554114AE4711E64151419A999979B310554166666686E34151411F85EB81B9105541AE47E1CAE041514100000090BE105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158946 - 54584
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000140000003D0AD713123F51410AD7A3A01A0A554152B81EE50E3F5141C3F5282C160A5541CDCCCC9C0B3F5141C3F528AC140A5541E17A141E033F514166666686190A55418FC2F5C8F63E5141333333E31E0A55417B14AE37EC3E5141F6285C8F240A5541333333D3E63E51418FC2F548290A554100000060E13E514185EB51582E0A554185EB5118E13E5141C3F5281C300A5541CDCCCCFCE13E51410AD7A320310A5541B81E85ABF43E514148E17A84340A55419A9999C9F93E51418FC2F568360A5541A4703DFAFF3E514133333313380A5541713D0AE7043F51419A999949390A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000045000000B81E858B073F5141295C8F92380A5541B62E0337093F514123F0A8A8360A55414C3346D00A3F51418AE1A6D3340A554185EB51F80A3F51415C8FC2A5340A5541B3870F08103F51415286F5F22E0A554189ECF91B103F51413D8889DC2E0A5541F5F9F067113F514108EFCB662D0A5541C3DD1B15133F5141BB089F832B0A5541AE47E19A143F5141CDCCCCCC290A554194FEDE7F153F514180EC50E0280A5541F463FE91153F5141DCB899CD280A5541464983A2163F5141670C2AB4270A554166C20FAB173F5141E78FF5A2260A5541E000F0C3173F514154F14489260A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158985 - 54622
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000014AE4781173C5141C3F528DC8D0C55413D0AD7A3173C5141CDCCCCAC8B0C55415C8FC255173C5141D7A3703D8A0C55415C8FC225153C51413D0AD763850C5541666666E6123C5141AE47E14A850C55417B14AE97113C51415C8FC2D5860C5541E17A145E0E3C5141AE47E11A8A0C55417B14AEC70C3C51410AD7A3008D0C5541D7A370ED093C51419A9999F9900C554133333363083C51417B14AEA7920C5541C3F528CC063C5141713D0AC7930C5541A4703D9A043C51415C8FC2E5940C5541E17A14BE043C51417B14AED7970C5541D7A3704D053C51415C8FC2459A0C5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000A4703D9A043C51415C8FC2E5940C55410FF63DC7043C5141FDCA6FFF970C554165DE2C01053C51419656D3FA980C5541D7A3704D053C51415C8FC2459A0C554102A717FF053C51414E491C2FA00C55417E46720E063C5141A7B5E7B1A00C55410AD7A360063C5141E17A146EA30C55415C8FC2A5093C5141D7A370CDA30C5541E5C7AA630C3C51413F41B52EA40C5541355A02D00C3C5141D3C2B83DA40C554156EB7D0A0D3C514188709942A40C5541BB69AA5C0D3C5141D56E7C3BA40C55416FDFC560143C514174ED01A0A30C554182EB4A53153C5141C5680F49A30C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158991 - 54634
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F52AC3B51411F85EB81CA0C5541EC51B83EAC3B5141713D0A57C90C5541F6285C9FAA3B514114AE4791C40C5541B81E852BA73B5141A4703D8AB90C554152B81EC5A53B51417B14AEA7B80C55419A9999F9A43B5141713D0AD7B80C554133333323A43B514166666666B90C5541C3F528CC9F3B51411F85EB51BD0C55418FC2F5989B3B5141713D0A47C10C5541F6285C2F993B5141CDCCCC9CC30C55411F85EBB1983B514185EB51F8C40C5541C3F5284C993B51417B14AE57C70C5541CDCCCC3C9C3B5141713D0AD7CE0C5541AE47E17A9D3B51418FC2F5B8D00C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000288E8FD2A33B5141193278B9AC0C55414BAEA505A33B5141B42E63B1AD0C5541A37EE0C1A33B5141A950EDC5AE0C554185EB51C8A33B5141F6285CCFAE0C55415D039F11A53B5141905683B8B20C5541486D4693A53B5141D518C53EB40C5541D9B72BCAA53B5141645E96E9B40C554148E17A54A63B5141E17A148EB60C5541A3FAD66AA63B51418D7989DDB60C5541B6ADC66FA63B51416DDC25DCB60C55417852B13CA73B5141F52E17C1B90C554109BF01B9A73B51413560284EBB0C5541F6285C9FAA3B514114AE4791C40C5541C4037707AC3B51411742AD9FC50C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>158992 - 54640
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000005C8FC2F5983B5141B81E85CBD20C554114AE47B19A3B514114AE4791D20C5541C3F5280C9C3B51410AD7A300D20C55413D0AD7C39C3B51419A999919D10C5541CDCCCC3C9C3B5141713D0AD7CE0C5541C3F5284C993B51417B14AE57C70C55411F85EBB1983B514185EB51F8C40C55413D0AD713973B51418FC2F598C20C5541AE47E11A873B5141333333C3CE0C5541CDCCCC9C883B5141A4703D0AD20C554152B81E758A3B5141E17A140ED50C55415C8FC2F5983B5141B81E85CBD20C5541
+</a>
+
+<b>
+010600000001000000010300000001000000180000003D0AD713973B51418FC2F598C20C55410E99A79B8D3B5141699145CFC90C5541AE47E11A873B5141333333C3CE0C5541E39BC768883B5141DE242499D10C554127A25489893B51413DFFC38CD30C55413EC3AEE2893B51411AE31219D40C5541040AA24D8A3B5141876A8DCDD40C5541BEDEAC6F8A3B5141AAB92E05D50C554197B966EA8F3B5141C49A5534D40C5541C96EC58A933B51418563A9A3D30C5541430D5FEA943B5141C0B8DE6CD30C554187C1BF89963B514154B8232CD30C55415C8FC2F5983B5141B81E85CBD20C554181BF573D993B51413CC81EC2D20C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>159119 - 54691
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000020000000EC51B83E05425141D7A3709D9E11554152B81E65044251411F85EB31A5115541EC51B86E03425141C3F528ACAA1155418FC2F54804425141713D0AC7AB115541B81E851B1D425141D7A370BDAE1155413D0AD703344251419A999979B111554152B81EA534425141000000A0AD11554114AE475139425141295C8FF298115541B81E85BB3F425141B81E853B81115541CDCCCC6C42425141713D0A6776115541E17A14BE434251413D0AD7036E1155419A9999F9444251415C8FC2C561115541A4703DFA44425141CDCCCCEC59115541000000E03D425141295C8F225A115541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000420000004708AB100D425141E336169571115541CDCCCC9C09425141EC51B8AE801155418FC2F5C8074251415C8FC2E589115541D7A3706D064251413333334392115541EC51B83E05425141D7A3709D9E11554152B81E65044251411F85EB31A5115541EC51B86E03425141C3F528ACAA1155418FC2F54804425141713D0AC7AB115541B81E851B1D425141D7A370BDAE1155413D0AD703344251419A999979B111554152B81EA534425141000000A0AD11554114AE475139425141295C8FF298115541B81E85BB3F425141B81E853B81115541CDCCCC6C42425141713D0A6776115541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>159902 - 109915
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001C000000E17A149EFC3F514148E17A84AF0B55411F85EB41EF3F51411F85EB21AE0B55417B14AEB7E63F51411F85EB11AD0B5541C3F528ECDD3F5141713D0A17AB0B5541A4703DEADC3F5141A4703D0AAC0B55417B14AEF7DB3F5141EC51B8CEAC0B5541F6285C2FDE3F514114AE4741BA0B5541333333F3DC3F51418FC2F598BE0B55418FC2F5D8D93F5141AE47E1BAC30B5541713D0A77D53F5141F6285C9FCA0B5541E17A143ED33F5141E17A141ECE0B55419A9999F9D03F5141AE47E11AD10B55413D0AD7B3EE3F51413D0AD7F3DE0B554148E17A24F13F51418FC2F598E00B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000004000000BE5DE169D63F514119E76F21C90B5541E1B12392D63F514126B47C3BC90B55416A43AE22E13F5141E835F028CC0B5541BE5DE169D63F514119E76F21C90B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>159902 - 310808
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001C000000E17A149EFC3F514148E17A84AF0B55411F85EB41EF3F51411F85EB21AE0B55417B14AEB7E63F51411F85EB11AD0B5541C3F528ECDD3F5141713D0A17AB0B5541A4703DEADC3F5141A4703D0AAC0B55417B14AEF7DB3F5141EC51B8CEAC0B5541F6285C2FDE3F514114AE4741BA0B5541333333F3DC3F51418FC2F598BE0B55418FC2F5D8D93F5141AE47E1BAC30B5541713D0A77D53F5141F6285C9FCA0B5541E17A143ED33F5141E17A141ECE0B55419A9999F9D03F5141AE47E11AD10B55413D0AD7B3EE3F51413D0AD7F3DE0B554148E17A24F13F51418FC2F598E00B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000004000000BE5DE169D63F514119E76F21C90B5541E1B12392D63F514126B47C3BC90B55416A43AE22E13F5141E835F028CC0B5541BE5DE169D63F514119E76F21C90B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>160434 - 250140
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000002000000230000009A999949A6335141A4703D8AEC1B554152B81ED5A6335141CDCCCC6CE91B554114AE47C1A6335141333333E3E61B55417B14AE37A633514114AE4781E51B5541666666D6A23351419A999929E11B5541E17A14FEA13351419A999979DD1B5541333333C39F335141713D0A67D91B55419A9999399F3351410AD7A340D51B55419A999939A03351413D0AD7A3D21B5541666666D6A1335141A4703D1AD11B5541713D0A87A33351418FC2F568D11B55415C8FC2D5A53351413D0AD7A3D11B554114AE47C1A73351418FC2F568D11B5541C3F528FCA8335141F6285CDFD01B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003B0000007B14AE27873351411F85EB91FE1B554103A258C289335141E90E5EDFFB1B55411FDF96778B335141A443751AFA1B5541568457DF8B33514160F6FCAEF91B55416D740C478C335141A7C99043F91B5541DDE9F3518C335141EB4F4538F91B5541D78CE97D8C3351416876BC0AF91B5541666666E68E335141C3F5288CF61B55416B072BCA91335141C1553F5AF31B554195285CEF94335141400000E0EF1B55412C7B14DE98335141FDE07AB4EC1B5541B81E858B9E3351419A9999C9F21B5541A4703D6AA1335141EC51B85EF51B55419A999949A6335141A4703D8AEC1B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>160434 - 359879
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000002000000230000009A999949A6335141A4703D8AEC1B554152B81ED5A6335141CDCCCC6CE91B554114AE47C1A6335141333333E3E61B55417B14AE37A633514114AE4781E51B5541666666D6A23351419A999929E11B5541E17A14FEA13351419A999979DD1B5541333333C39F335141713D0A67D91B55419A9999399F3351410AD7A340D51B55419A999939A03351413D0AD7A3D21B5541666666D6A1335141A4703D1AD11B5541713D0A87A33351418FC2F568D11B55415C8FC2D5A53351413D0AD7A3D11B554114AE47C1A73351418FC2F568D11B5541C3F528FCA8335141F6285CDFD01B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003B0000007B14AE27873351411F85EB91FE1B554103A258C289335141E90E5EDFFB1B55411FDF96778B335141A443751AFA1B5541568457DF8B33514160F6FCAEF91B55416D740C478C335141A7C99043F91B5541DDE9F3518C335141EB4F4538F91B5541D78CE97D8C3351416876BC0AF91B5541666666E68E335141C3F5288CF61B55416B072BCA91335141C1553F5AF31B554195285CEF94335141400000E0EF1B55412C7B14DE98335141FDE07AB4EC1B5541B81E858B9E3351419A9999C9F21B5541A4703D6AA1335141EC51B85EF51B55419A999949A6335141A4703D8AEC1B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>174213 - 5228493
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000400000068000000F6285C3FA4F85041EC51B82E424A544114AE4751A7F8504100000090464A54418FC2F5D8A8F85041D7A3705D4B4A544152B81EE5AAF85041E17A14CE4E4A544185EB5138AEF85041F6285CAF524A5441C3F528ECB1F850419A9999A9564A54410AD7A3D0B4F850418FC2F5F8584A54418FC2F578B7F8504185EB51185B4A54411F85EB61B8F8504133333363564A54410AD7A3B0BAF850419A9999794A4A5441A4703D6ABBF85041000000C0484A5441E17A14CEBEF8504114AE47B13C4A5441295C8F52BFF8504152B81ED53A4A544114AE4741CCF850418FC2F508404A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000050000006A000000C86C689FC2F850414DE6D3CB2D4A5441F6285C3FC2F850410AD7A3002F4A544152B81E75C0F8504148E17A94344A54415C8FC2F5BEF85041B81E85AB384A5441AE47E17ABEF850410AD7A3203A4A544148E17A54BBF85041C3F5284C384A5441295C8F52B3F85041E17A14DE334A544114AE4711A8F85041295C8FB22D4A5441000000E0A5F850418FC2F5D82C4A544148E17A149AF850410AD7A3E0264A544114AE47D199F850411F85EB21254A5441C3F5287C9AF850419A9999B9224A5441A4703DDAA4F85041E17A147EFA495441295C8FE29FF8504100000080FB495441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239473 - 284195
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A0000003D0AD74314BD5041F6285C0FD6D254415C8FC2E518BD504148E17A54D0D2544148E17A6419BD5041A4703DAACFD25441713D0AB7FCBC504100000080A7D25441EC51B8DEF8BC504148E17A14A8D25441F6285CBFF7BC50413D0AD7B3A9D254418FC2F5B8F7BC5041666666E6B2D254419A9999D9F5BC5041EC51B83EB7D25441C3F5289C0FBD504133333353DBD254413D0AD74314BD5041F6285C0FD6D25441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000060A799D9F5BC5041F631B83EB7D25441D941299C0FBD504124DD3253DBD2544149A128E812BD504161239A98D7D25441F189D64314BD5041C3015C0FD6D254417E901CD016BD5041CD858EE8D2D254415C8FC2E518BD504148E17A54D0D25441120C231219BD5041B8CFDC18D0D254418D5D7A6419BD504125B83CAACFD25441713D0AB7FCBC504100000080A7D25441AC8CB9DEF8BC5041CEB17A14A8D254411BFFD835F8BC5041F2EA9208A9D254412EF36516F8BC5041372D0836A9D254416C405CBFF7BC504154E8D6B3A9D254419189F6B8F7BC5041CEAC66E6B2D25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239494 - 178029
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000130000008FC2F56859BE5041E17A141E3BCE54413D0AD74356BE504148E17A843ACE5441000000E055BE50418FC2F5283BCE5441F6285CFF54BE5041D7A3707D3BCE544152B81EB553BE50417B14AE873BCE54419A99991953BE5041D7A370BD3BCE544185EB51784DBE504148E17AA43ACE5441D7A3709D4DBE5041CDCCCCDC38CE54418FC2F5384CBE50417B14AE9738CE5441EC51B88E4BBE50411F85EBA140CE5441D7A3709D44BE50415C8FC20540CE54418FC2F57844BE5041333333D341CE5441C3F5286C43BE5041333333F34ECE5441EC51B8AE47BE504148E17A344FCE5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000040000000CAA058651BE504177721A5045CE544135D0370851BE5041456302DF49CE54414B1F9D8C51BE50414C9A125145CE54410CAA058651BE504177721A5045CE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239494 - 365329
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000130000008FC2F56859BE5041E17A141E3BCE54413D0AD74356BE504148E17A843ACE5441000000E055BE50418FC2F5283BCE5441F6285CFF54BE5041D7A3707D3BCE544152B81EB553BE50417B14AE873BCE54419A99991953BE5041D7A370BD3BCE544185EB51784DBE504148E17AA43ACE5441D7A3709D4DBE5041CDCCCCDC38CE54418FC2F5384CBE50417B14AE9738CE5441EC51B88E4BBE50411F85EBA140CE5441D7A3709D44BE50415C8FC20540CE54418FC2F57844BE5041333333D341CE5441C3F5286C43BE5041333333F34ECE5441EC51B8AE47BE504148E17A344FCE5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000040000000CAA058651BE504177721A5045CE544135D0370851BE5041456302DF49CE54414B1F9D8C51BE50414C9A125145CE54410CAA058651BE504177721A5045CE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>162020 - 3360494
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000016000000D7A370BD39475141713D0A27444D5441B81E85FB3647514152B81E95444D544152B81E053347514148E17AE4444D544152B81E453147514152B81EB5454D5441C3F528DC31475141333333034A4D5441666666863247514185EB51A8514D5441333333E332475141F6285C3F584D5441B81E853B3347514148E17A145F4D5441B81E855B334751415C8FC245654D54415C8FC25534475141C3F528AC724D544166666666384751417B14AE67724D544114AE47713847514148E17A54714D54415C8FC2C53B47514185EB51C8704D5441B81E853B41475141CDCCCCAC704D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002000000098A3BF5232475141EBE085564F4D544106A49ADC314751417A3A36F04A4D5441FCDB2B6B284751411A7652594C4D54414BF33FE520475141B9256A774C4D54413CEA7DA91E475141DD904A4F4C4D54412C55B7221B4751410517CA7B4F4D544140D1E355184751416DD9ABFC514D5441EC51B88E154751413D0AD753564D5441A4703DDA144751413D0AD7C3574D54418FC2F5781247514152B81ED55E4D54417B14AED71047514148E17A94664D5441A4703DDA0F475141D7A370CD6D4D54418FC2F5B80E4751417B14AE67754D5441AE47E1DA0C475141333333E37A4D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>199154 - 976789
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000019000000D36FB2A094C350416FD8E7F421395541278CBC6E97C35041139C314C22395541F559DDBD9BC350413CC5D12823395541B5D509769FC35041BE2BF09C2339554151C20F22A4C350410DB1F36D243955419E2912FDA7C3504128889FB324395541AD7B0694A8C35041022C3CBF24395541B3158064AAC35041B57375D624395541B097928CADC3504115E879542539554158BA00D7ADC350418C40669C24395541A83F04A8AEC350413036AB1C24395541792B26EDAFC3504176A5BC421E395541F2D9C99AB1C3504139842BB113395541D15AD4D9B2C350413E9B62D00D395541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000009BED8149B3C3504154D19C2E0A395541D15AD4D9B2C350413E9B62D00D3955417FA1918EB1C35041DFD91EFE1339554184D69FCEB0C350413B24DAB6183955411B857877B0C35041E624AFDB1A395541792B26EDAFC3504176A5BC421E395541A2E57B88AFC3504183F983122039554169E05F76AFC350416CC8F26520395541A3042BC2AEC35041D0732FA4233955417903BCB3AEC35041C0DDAEE6233955411B15B7AEAEC350413ABACEFD23395541A83F04A8AEC350413036AB1C24395541F2BD3EF2ADC35041CA5AC08B24395541B097928CADC3504115E8795425395541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164277 - 227310
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000005C000000B81E85BBD339514185EB5158900B5541A4703D9AD039514166666656930B5541E17A143ECD3951418FC2F518960B55413D0AD753C939514185EB5108980B554148E17AD4C539514114AE4781990B5541295C8FC2C43951411F85EBD1980B554114AE4771C3395141B81E851B960B5541F6285CCFBF395141F6285CCF930B5541C3F5288CBD3951411F85EB91940B5541F6285C8FBA395141A4703DAA950B5541B81E854BB739514100000090960B55411F85EB31B53951418FC2F538970B5541EC51B83EB2395141E17A149E980B554114AE4741B1395141D7A370DD9A0B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009A00000048E17AC4EE395141E17A140E7F0B55415CB6ADCFEF395141ECEF550E7F0B554114AE4761F1395141EC51B80E7F0B554114AE4761F339514185EB51787F0B55410AD7A380F5395141C3F5289C800B55410AD7A360F73951418FC2F5D8810B554127301FE1F73951417D203D5B820B554133333373F8395141F6285CEF820B55417A40EE8FF839514116C97051830B55416C63E82AF93951410F047169850B5541490B1F93F7395141885233D1850B55414D63810EF6395141744D792D860B5541F849FFDCF3395141C8C199A2860B5541473DE58EF239514107718EDF860B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164513 - 214695
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000008F00000085EB513858345141C3F5286C7205554152B81E355C3451417B14AE0770055541A4703DEA5E345141A4703D5A6C0555419A999969613451410000001069055541D7A370CD623451410AD7A390670555419A9999A9623451413D0AD70366055541A4703D0A633451413D0AD763640555418FC2F5D8633451411F85EBC161055541D7A3709D633451413D0AD70361055541D7A3707D63345141295C8FC2600555413D0AD72363345141295C8F92600555413333334362345141CDCCCC6C600555419A9999C96134514148E17A646005554148E17A4461345141295C8F1260055541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005100000052F38EA2313451419925D6F3AA055541A552D48D3134514149433D50AB055541381EC37531345141F9C985BBAB055541F28A33D331345141021D9AA9AC0555415EFF4711323451414FF1708DAD05554110A570BA3234514148E90F0AB10555410D1CCE0C33345141D50415AEB20555410C93673633345141CB7E84EBB305554128DF8FE532345141B2AE2EEBB4055541C3F528CC32345141B81E853BB505554114AE475132345141295C8F92B6055541AAB6ACD73C3451418C36F5C8BA055541AE47E1BA3B34514148E17AD4B6055541CDCCCC3C3B345141666666D6B3055541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164513 - 389243
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000008F00000085EB513858345141C3F5286C7205554152B81E355C3451417B14AE0770055541A4703DEA5E345141A4703D5A6C0555419A999969613451410000001069055541D7A370CD623451410AD7A390670555419A9999A9623451413D0AD70366055541A4703D0A633451413D0AD763640555418FC2F5D8633451411F85EBC161055541D7A3709D633451413D0AD70361055541D7A3707D63345141295C8FC2600555413D0AD72363345141295C8F92600555413333334362345141CDCCCC6C600555419A9999C96134514148E17A646005554148E17A4461345141295C8F1260055541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005100000052F38EA2313451419925D6F3AA055541A552D48D3134514149433D50AB055541381EC37531345141F9C985BBAB055541F28A33D331345141021D9AA9AC0555415EFF4711323451414FF1708DAD05554110A570BA3234514148E90F0AB10555410D1CCE0C33345141D50415AEB20555410C93673633345141CB7E84EBB305554128DF8FE532345141B2AE2EEBB4055541C3F528CC32345141B81E853BB505554114AE475132345141295C8F92B6055541AAB6ACD73C3451418C36F5C8BA055541AE47E1BA3B34514148E17AD4B6055541CDCCCC3C3B345141666666D6B3055541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>165355 - 346845
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003F000000333333D399275141295C8F8200015541AE47E17A932751418FC2F538E90055419A99993992275141CDCCCC9CE4005541666666D69527514148E17A84E10055411F85EB019A27514152B81E35E00055419A9999A9A12751411F85EB91DB00554114AE4761A52751415C8FC205D90055411F85EBE1A827514148E17AE4D600554133333333B0275141666666A6D200554152B81E55B3275141666666E6D0005541A4703D2AB7275141D7A3700DCF0055410AD7A370B7275141B81E85EBCE00554152B81E35B627514114AE4751CD00554133333393B327514185EB5138C8005541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000650000006186DC58C027514172D0003FCE005541886F9B67C02751412F773B33CE005541327D6516C127514145AF5258CD005541605E3E2AC22751418430D6F3CC00554143CC1FB5C6275141EA13CEACCC00554185EB51E8C62751411F85EB31CC0055411F85EBA1C42751410AD7A330C80055411F85EB61C32751410AD7A310C6005541D5A168A5C227514179972885C4005541713D0A57C12751417B14AEC7C1005541AD987AE4BD2751414C0C34E3BA005541AF02A3A0B4275141396E6796B00055417193ECB1B42751416B4CC2A5AF00554149173493B4275141FA84C3B5AE005541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>239734 - 365480
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E000000D7A3701DD0BE50419A9999B94BCD5441AE47E1BACDBE5041000000B042CD5441EC51B8CECCBE5041AE47E16A3FCD5441666666F6CBBE5041666666863CCD54417B14AEA7C9BE5041F6285C4F34CD5441CDCCCC2CC5BE50413D0AD72325CD54415C8FC2C5A7BE5041333333B32ACD544185EB5168AEBE5041333333E341CD544100000000B0BE5041B81E85DB42CD5441F6285C5FB9BE50415C8FC21541CD5441CDCCCCDCB9BE50415C8FC24543CD544100000050BCBE5041B81E853B4ECD5441000000D0BDBE50417B14AE374FCD5441D7A3701DD0BE50419A9999B94BCD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000900000073978A28ACBE50416EEDE1DE29CD54415F8FC2C5A7BE5041323333B32ACD544191EB5168AEBE50413A3333E341CD5441F56CA64EAFBE50412CC97E6F42CD544115000000B0BE5041AE1E85DB42CD5441A8283EEEB0BE504192D676AE42CD5441D776F4CAB5BE5041A65F11C341CD54411650A67DAEBE50417638F86D29CD544173978A28ACBE50416EEDE1DE29CD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>166446 - 218140
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A0000008FC2F5081BDD5041C3F5288C12B15441D7A370BD1DDD5041333333F311B154410000004038DD50416666664609B1544152B81E7541DD50410000006004B15441295C8FC24ADD504152B81E05FFB05441666666764BDD5041C3F5287CFEB054411F85EBC14BDD50410AD7A340FEB0544114AE47D151DD5041AE47E17AF9B054410AD7A35057DD5041295C8F72F5B0544152B81E6554DD504148E17A94F3B05441000000D050DD5041713D0AF7F3B05441C3F5285C4EDD50413D0AD783F4B054411F85EB714BDD5041D7A370CDF5B0544152B81E354ADD504133333333F7B05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000000000B01BDD50411F85EB81FAB0544142D13A121BDD50411F4796B5FAB05441A766664616DD5041BB14AE47FCB0544186AD1B1E14DD50419E5CB87DFDB05441B28FC2A513DD5041EAAD47C1FDB054419270C53114DD50419450594BFFB05441C830E93414DD50414F832F54FFB054418BB9353919DD5041B7C3B2E1FCB05441B16414F521DD504115F05D8BFAB0544176F61B7A28DD5041AA1D708FF9B0544131CF0C3A30DD5041494B8293F8B05441958E26C335DD5041B4D68654F8B0544199C23B8B3BDD5041D4A70DF6F7B05441D151755B3FDD5041CAEEF630F9B05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>167077 - 58848
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000F00000048E17AE408DB5041000000C0BABB5441A4703D3A16DB50413D0AD7F3B0BB5441EC51B8BE16DB5041000000F0AFBB544114AE47D112DB504148E17AA4A8BB5441F6285CBF05DB5041E17A145E90BB5441C3F5281C04DB5041EC51B81E8DBB54415C8FC2B5FDDA50411F85EBD191BB54411F85EBA1EFDA50418FC2F5289CBB5441A4703D9AECDA5041295C8F629EBB5441D7A3701DEDDA504114AE47619FBB54417B14AED7EFDA504114AE4771A3BB54413D0AD7A3FEDA5041E17A146EB7BB544185EB51F802DB50417B14AE47BDBB5441C3F528FC04DB5041F6285C9FBDBB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000F6285CBF05DB5041E17A145E90BB54412FDA02AA04DB5041C0400A388EBB54417B7A2B5804DB5041425CBB958DBB5441ADD24E4D04DB504158BF30808DBB544144B3163104DB5041BCD239488DBB54418CB17EBCFDDA5041B73417CD91BB5441042A3EF0F4DA5041EBB7434398BB54411F85EBA1EFDA50418FC2F5289CBB5441ACC7E29FECDA504154036A5E9EBB544148E94469F0DA50417DB1EE35A4BB54415C03FA13F3DA504149D316D0A7BB5441FA770CAFFBDA5041AB06DB6FB3BB54414A49CE5EFDDA5041B6820BB7B5BB54413D0AD7A3FEDA5041E17A146EB7BB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>167083 - 58850
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000C3F528FC27DB5041CDCCCC0CE4BB544114AE47613DDB5041CDCCCC5CEABB5441A4703D5A4FDB504100000050DDBB54418FC2F54849DB50415C8FC2D5D7BB5441EC51B86E45DB504148E17A14D5BB54415C8FC24540DB5041AE47E16AD2BB5441C3F528FC27DB5041CDCCCC0CE4BB5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000A4703D5A4FDB504100000050DDBB54416E1430D74ADB50418DAE433DD9BB5441A3364DDC47DB50413448FCD0D6BB5441BE6EDC9A45DB50412DD10B34D5BB544124C7457545DB5041BA762A19D5BB54411D3CBC4540DB50413DDFE56AD2BB5441EB5AD3202CDB5041A43FC40AE1BB54418F20062828DB504182EABD19E4BB544139FCD89D2ADB5041008C91D3E4BB54418C8EA48A2EDB5041186707FCE5BB5441A4F4F6DA39DB50416E6B9352E9BB544141A748613DDB5041DF17CC5CEABB5441A4703D5A4FDB504100000050DDBB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>167655 - 137661
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000130000005C8FC2957CB25041713D0AB721955441713D0AB780B25041D7A3709D1E955441EC51B81E8AB25041713D0A772595544148E17AD48BB25041D7A370FD26955441666666268DB250417B14AE87269554416666661682B25041B81E855B1E955441713D0AF787B250413D0AD76317955441713D0AD78CB2504133333393119554410AD7A3908CB250418FC2F5A8109554417B14AE2785B250413D0AD7B30E955441295C8F9281B25041B81E858B07955441E17A14AE80B25041713D0AD701955441713D0A8772B25041A4703DEA099554413D0AD7E375B25041F6285C9F10955441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000D822B39472B25041C93672E209955441B9DCE4E975B25041462382AA109554419BC7420276B2504104B4469D10955441F513CE926EB250416F087E2E1595544197DD973476B250419A53B28624955441B0C7C8B37CB250412D70607C22955441BDA138997CB250415150A7CA219554415C8FC2957CB25041713D0AB721955441713D0AB780B25041D7A3709D1E95544108DA2CC380B250410F4C47A61E955441EC51B81E8AB25041713D0A77259554410A9D17F88AB250415036E53826955441C3A3C5F28BB250414639E2F226955441174FD43E8CB2504191FD60D826955441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>167655 - 336095
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000130000005C8FC2957CB25041713D0AB721955441713D0AB780B25041D7A3709D1E955441EC51B81E8AB25041713D0A772595544148E17AD48BB25041D7A370FD26955441666666268DB250417B14AE87269554416666661682B25041B81E855B1E955441713D0AF787B250413D0AD76317955441713D0AD78CB2504133333393119554410AD7A3908CB250418FC2F5A8109554417B14AE2785B250413D0AD7B30E955441295C8F9281B25041B81E858B07955441E17A14AE80B25041713D0AD701955441713D0A8772B25041A4703DEA099554413D0AD7E375B25041F6285C9F10955441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000D822B39472B25041C93672E209955441B9DCE4E975B25041462382AA109554419BC7420276B2504104B4469D10955441F513CE926EB250416F087E2E1595544197DD973476B250419A53B28624955441B0C7C8B37CB250412D70607C22955441BDA138997CB250415150A7CA219554415C8FC2957CB25041713D0AB721955441713D0AB780B25041D7A3709D1E95544108DA2CC380B250410F4C47A61E955441EC51B81E8AB25041713D0A77259554410A9D17F88AB250415036E53826955441C3A3C5F28BB250414639E2F226955441174FD43E8CB2504191FD60D826955441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>168126 - 1781575
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000A0000001F85EB710EB2504185EB51986A8654410000008010B250418FC2F5A86E865441CDCCCC6C2BB250413D0AD7B36F865441EC51B8DE2FB250410AD7A39059865441B81E856B1BB250413D0AD743598654413D0AD7D313B2504148E17AE45986544152B81EB50CB25041C3F528BC59865441F6285CDF09B25041A4703D5A5986544148E17A140AB25041333333235A8654411F85EB710EB2504185EB51986A865441
+</a>
+
+<b>
+010600000001000000010300000001000000190000004A742A4F24B25041CBF47DBF6D8654413BDA831026B25041F9C56BCC6D8654410806242127B25041016713B86D8654414F0AE3DC2BB25041FF9FA55D6D8654411C0604A82BB25041AA3DD0776E86544169933DAC2BB2504179DCE2776E865441F5FAF0AC2DB25041B01114516486544143029FB92FB25041EBBF0D9058865441FD448E5527B250419DD4990659865441A82124C621B250414477E26759865441520E1EA71BB25041B99FFB455986544149DF2E4118B2504122F14B7D598654416F565D3F14B250414FACD6DC598654417FA992F210B25041175FCFD759865441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>168290 - 43300
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000220000005C8FC2A5EBBC5041000000B04B81544100000080ECBC504148E17A94498154417B14AEA7EDBC5041EC51B81E468154411F85EB81EEBC50419A9999A9438154418FC2F5A8EFBC50417B14AEA740815441CDCCCC9CF0BC5041C3F5280C3E815441E17A141EF2BC5041333333E33A8154418FC2F5B8F3BC5041E17A142E38815441A4703D7AF5BC5041295C8F1236815441713D0AC7F6BC504185EB5178358154418FC2F548E7BC5041666666A6308154419A999929E3BC50417B14AE573E8154417B14AE47E1BC504185EB51B8458154410AD7A340E0BC50418FC2F5084D815441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000008B1BE1BFF1BC5041919AFBC03D815441999F0B43F3BC5041598326523B815441FDA519DCF4BC5041C7482D6538815441BD5ED4ACF6BC50419E0250B835815441872CB398F5BC50417A069809368154412DC0B373F5BC5041BA37691A36815441C99C61E1F3BC504176368AFD37815441AA6CE79CF3BC5041D579685D38815441F20D8215F3BC5041A94ACF413981544128CF1134F1BC5041C916C9D53C81544115438400F0BC5041AB5BFBCF3F815441EC9BB7A8ECBC50416A244A4449815441E90C06B8EBBC50413B6CA0FB4B815441C10D5BFAEABC5041338678D94F815441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>168290 - 80892
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000220000005C8FC2A5EBBC5041000000B04B81544100000080ECBC504148E17A94498154417B14AEA7EDBC5041EC51B81E468154411F85EB81EEBC50419A9999A9438154418FC2F5A8EFBC50417B14AEA740815441CDCCCC9CF0BC5041C3F5280C3E815441E17A141EF2BC5041333333E33A8154418FC2F5B8F3BC5041E17A142E38815441A4703D7AF5BC5041295C8F1236815441713D0AC7F6BC504185EB5178358154418FC2F548E7BC5041666666A6308154419A999929E3BC50417B14AE573E8154417B14AE47E1BC504185EB51B8458154410AD7A340E0BC50418FC2F5084D815441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000008B1BE1BFF1BC5041919AFBC03D815441999F0B43F3BC5041598326523B815441FDA519DCF4BC5041C7482D6538815441BD5ED4ACF6BC50419E0250B835815441872CB398F5BC50417A069809368154412DC0B373F5BC5041BA37691A36815441C99C61E1F3BC504176368AFD37815441AA6CE79CF3BC5041D579685D38815441F20D8215F3BC5041A94ACF413981544128CF1134F1BC5041C916C9D53C81544115438400F0BC5041AB5BFBCF3F815441EC9BB7A8ECBC50416A244A4449815441E90C06B8EBBC50413B6CA0FB4B815441C10D5BFAEABC5041338678D94F815441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>170884 - 2961276
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001F000000C3F528FCC4A35041EC51B8FE125854417B14AE47C2A350413D0AD7530D585441713D0AD7BEA35041AE47E1DA0B58544152B81E55BBA350413D0AD7B32858544148E17A34BAA35041295C8FE231585441713D0A17BDA35041B81E858B31585441A4703DFAC3A3504148E17A443258544148E17A04CCA35041F6285CEF33585441EC51B81ED5A350411F85EB013758544152B81EB5E0A35041EC51B85E3A585441CDCCCCBCECA35041AE47E13A3D585441D7A3703DF6A35041666666964158544114AE4711FDA350411F85EBF145585441E17A149E00A4504114AE479145585441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000097AF905FC8A35041E41D04F9155854416DE7FB89C9A350419A9999A9165854413F355E3ACBA3504121B072E816585441BE9F1AB7CCA35041A69BC48015585441FA7E6A7CCDA3504114AE47691258544100000058D1A350411D5A644312585441A01A2F8DD1A350413BDF4F7511585441250681D5CEA35041B6F3FD540F5854416891ED74CEA35041CFF753930C5854411F85EB99CDA35041DF4F8D2709585441A8C64BC7CFA3504152B81E85085854411D5A6413D1A3504114AE47A90958544173689165D2A35041333333930D585441022B87CED3A35041C3F528E40E585441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>170884 - 3812928
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001F000000C3F528FCC4A35041EC51B8FE125854417B14AE47C2A350413D0AD7530D585441713D0AD7BEA35041AE47E1DA0B58544152B81E55BBA350413D0AD7B32858544148E17A34BAA35041295C8FE231585441713D0A17BDA35041B81E858B31585441A4703DFAC3A3504148E17A443258544148E17A04CCA35041F6285CEF33585441EC51B81ED5A350411F85EB013758544152B81EB5E0A35041EC51B85E3A585441CDCCCCBCECA35041AE47E13A3D585441D7A3703DF6A35041666666964158544114AE4711FDA350411F85EBF145585441E17A149E00A4504114AE479145585441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000097AF905FC8A35041E41D04F9155854416DE7FB89C9A350419A9999A9165854413F355E3ACBA3504121B072E816585441BE9F1AB7CCA35041A69BC48015585441FA7E6A7CCDA3504114AE47691258544100000058D1A350411D5A644312585441A01A2F8DD1A350413BDF4F7511585441250681D5CEA35041B6F3FD540F5854416891ED74CEA35041CFF753930C5854411F85EB99CDA35041DF4F8D2709585441A8C64BC7CFA3504152B81E85085854411D5A6413D1A3504114AE47A90958544173689165D2A35041333333930D585441022B87CED3A35041C3F528E40E585441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>966442 - 1151056
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000014000000F5482441F25A5141B78BFACE63455441302304B9F05A514168EC87CA644554414331E255EF5A5141DDBB805E6545544185EB5188EE5A5141C3F528AC654554411F85EBE1ED5A514166666626784554419A9999F9EE5A51413333336378455441F6285C0FED5A5141CDCCCCDC7F455441EC51B8FEF35A51419A999959814554411F85EB51FD5A51419A99993984455441333333B3065B5141B81E852B864554413D0AD7E3065B51416666667685455441F6285C3F095B5141EC51B8FE7B455441EC51B89E105B5141F6285CDF6B455441EC51B81E0D5B51418FC2F5B86C455441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000014000000F5482441F25A5141B78BFACE63455441302304B9F05A514168EC87CA644554414331E255EF5A5141DDBB805E6545544185EB5188EE5A5141C3F528AC654554411F85EBE1ED5A514166666626784554419A9999F9EE5A51413333336378455441F6285C0FED5A5141CDCCCCDC7F455441EC51B8FEF35A51419A999959814554411F85EB51FD5A51419A99993984455441333333B3065B5141B81E852B864554413D0AD7E3065B51416666667685455441F6285C3F095B5141EC51B8FE7B455441EC51B89E105B5141F6285CDF6B455441EC51B81E0D5B51418FC2F5B86C455441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>966442 - 3945193
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000014000000F5482441F25A5141B78BFACE63455441302304B9F05A514168EC87CA644554414331E255EF5A5141DDBB805E6545544185EB5188EE5A5141C3F528AC654554411F85EBE1ED5A514166666626784554419A9999F9EE5A51413333336378455441F6285C0FED5A5141CDCCCCDC7F455441EC51B8FEF35A51419A999959814554411F85EB51FD5A51419A99993984455441333333B3065B5141B81E852B864554413D0AD7E3065B51416666667685455441F6285C3F095B5141EC51B8FE7B455441EC51B89E105B5141F6285CDF6B455441EC51B81E0D5B51418FC2F5B86C455441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000014000000F5482441F25A5141B78BFACE63455441302304B9F05A514168EC87CA644554414331E255EF5A5141DDBB805E6545544185EB5188EE5A5141C3F528AC654554411F85EBE1ED5A514166666626784554419A9999F9EE5A51413333336378455441F6285C0FED5A5141CDCCCCDC7F455441EC51B8FEF35A51419A999959814554411F85EB51FD5A51419A99993984455441333333B3065B5141B81E852B864554413D0AD7E3065B51416666667685455441F6285C3F095B5141EC51B8FE7B455441EC51B89E105B5141F6285CDF6B455441EC51B81E0D5B51418FC2F5B86C455441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>171816 - 3184818
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000020000000103000000010000001E00000014AE472105945141713D0A3770A95441D7A3706D05945141EC51B83E77A954415C8FC2A5089451411F85EBC187A95441D7A370AD099451419A9999498AA9544185EB51D80994514114AE47A18AA9544152B81EC50C945141EC51B89E88A95441D7A3707D0F9451411F85EBC185A9544148E17AF4119451417B14AE3783A9544114AE472115945141CDCCCCEC7CA954418FC2F5C816945141B81E855B77A95441A4703D9A199451411F85EB3173A95441000000901A945141666666A671A95441AE47E1FA199451418FC2F54870A95441EC51B86E169451418FC2F5F867A95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009700000056EC45901094514156DF2AA86AA954410AD7A3A01394514185EB51E870A95441666666E6129451410000003074A95441295C8F3210945141D7A3700D75A95441E17A146E0F945141EC51B81E73A95441BF3023CF109451415EFE61986DA954417CB7E2C20F945141E19CF3A06BA95441F11609C20F94514108C980B16BA9544156A0809B0F945141888E8BE26BA95441897CB1200D945141622064E16EA954416A0F28C10C94514101F60C4C6FA95441F3A6276B0C945141BA8C67566FA95441CD03D7730B945141ABDA2D746FA954413BE2307D0A94514192A1DF916FA95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>171816 - 3588935
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000020000000103000000010000001E00000014AE472105945141713D0A3770A95441D7A3706D05945141EC51B83E77A954415C8FC2A5089451411F85EBC187A95441D7A370AD099451419A9999498AA9544185EB51D80994514114AE47A18AA9544152B81EC50C945141EC51B89E88A95441D7A3707D0F9451411F85EBC185A9544148E17AF4119451417B14AE3783A9544114AE472115945141CDCCCCEC7CA954418FC2F5C816945141B81E855B77A95441A4703D9A199451411F85EB3173A95441000000901A945141666666A671A95441AE47E1FA199451418FC2F54870A95441EC51B86E169451418FC2F5F867A95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009700000056EC45901094514156DF2AA86AA954410AD7A3A01394514185EB51E870A95441666666E6129451410000003074A95441295C8F3210945141D7A3700D75A95441E17A146E0F945141EC51B81E73A95441BF3023CF109451415EFE61986DA954417CB7E2C20F945141E19CF3A06BA95441F11609C20F94514108C980B16BA9544156A0809B0F945141888E8BE26BA95441897CB1200D945141622064E16EA954416A0F28C10C94514101F60C4C6FA95441F3A6276B0C945141BA8C67566FA95441CD03D7730B945141ABDA2D746FA954413BE2307D0A94514192A1DF916FA95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>172316 - 211366
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000000C000000000000F01E8A514114AE47D1AEAC5441713D0AC70D8A514152B81E85AFAC5441F6285C6FEB895141CDCCCCACA8AC54418FC2F5F8EA895141C3F5284CB7AC5441C3F5285C098A51411F85EBC1BBAC54415C8FC2850F8A514100000040BCAC5441295C8F72118A5141713D0A67BCAC54410AD7A3002A8A514185EB5148B9AC5441F6285CCF388A514100000040B7AC5441C3F528FC388A5141F6285C2FACAC5441EC51B84E2B8A514114AE4791ADAC5441000000F01E8A514114AE47D1AEAC54410103000000010000000B000000EC51B82E3A8A5141713D0AF7ABAC5441666666 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001100000085FCF43C2F8A5141C3965890B8AC54419EF15ACF388A5141BC2A0040B7AC54410F1088FB388A5141DF450857ACAC5441EC51B84E2B8A514114AE4791ADAC54418779A6FE1E8A5141E8B0CCCFAEAC54418269FFEF1E8A51418FCA47D1AEAC5441730209C70D8A514133701F85AFAC544106D75C6FEB895141486ECDACA8AC54418B2BF6F8EA8951412705294CB7AC5441C3F5285C098A51411F85EBC1BBAC5441DC6FA56A098A5141B0E513C3BBAC5441C3D7F86B118A5141FBA18466BCAC5441295C8F72118A5141713D0A67BCAC5441459A5D4B1F8A5141A587A1A4BAAC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>172316 - 345247
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000000C000000000000F01E8A514114AE47D1AEAC5441713D0AC70D8A514152B81E85AFAC5441F6285C6FEB895141CDCCCCACA8AC54418FC2F5F8EA895141C3F5284CB7AC5441C3F5285C098A51411F85EBC1BBAC54415C8FC2850F8A514100000040BCAC5441295C8F72118A5141713D0A67BCAC54410AD7A3002A8A514185EB5148B9AC5441F6285CCF388A514100000040B7AC5441C3F528FC388A5141F6285C2FACAC5441EC51B84E2B8A514114AE4791ADAC5441000000F01E8A514114AE47D1AEAC54410103000000010000000B000000EC51B82E3A8A5141713D0AF7ABAC5441666666 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001100000085FCF43C2F8A5141C3965890B8AC54419EF15ACF388A5141BC2A0040B7AC54410F1088FB388A5141DF450857ACAC5441EC51B84E2B8A514114AE4791ADAC54418779A6FE1E8A5141E8B0CCCFAEAC54418269FFEF1E8A51418FCA47D1AEAC5441730209C70D8A514133701F85AFAC544106D75C6FEB895141486ECDACA8AC54418B2BF6F8EA8951412705294CB7AC5441C3F5285C098A51411F85EBC1BBAC5441DC6FA56A098A5141B0E513C3BBAC5441C3D7F86B118A5141FBA18466BCAC5441295C8F72118A5141713D0A67BCAC5441459A5D4B1F8A5141A587A1A4BAAC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>172349 - 1181184
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000040000000103000000010000003300000052B81E25618C514148E17AA4F8AC5441AE47E19A638C5141A4703D0AFBAC5441E17A14CE638C514148E17AC4FDAC54415C8FC255618C51416666661600AD5441333333A35E8C5141666666B6FFAC5441D7A3709D5A8C5141F6285C3F06AD5441A4703DFA5F8C51410AD7A3C00BAD544114AE47E1638C514152B81EB510AD544100000030678C514152B81EA513AD5441CDCCCC6C6B8C5141AE47E19A17AD5441333333F36E8C5141333333B314AD5441000000407C8C514152B81E6509AD54417B14AE57758C5141295C8F02FAAC54417B14AE07748C514148E17A94F6AC5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009B0000007B14AEC77A8C5141F6285C0FE4AC5441666666867E8C51410AD7A390E1AC544100000040818C51415C8FC2E5DEAC544166666636878C5141EC51B87EDEAC544185EB51C8898C5141713D0A87DDAC5441295C8FC2898C51411F85EB91DCAC5441B81E85BB8D8C5141B81E855BDAAC5441000000A08D8C5141D7A3705DD4AC5441508D4C3D8D8C5141359B7D4FD3AC5441295C8F428D8C514185EB5138D3AC54414F0D85B28C8C5141E4CCCE30D2AC5441E01238DF878C51416CC7EB70D0AC5441DF630854858C51411DBC18E8CEAC54411633EEFA838C51419B82F101CEAC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>172349 - 3192934
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000040000000103000000010000003300000052B81E25618C514148E17AA4F8AC5441AE47E19A638C5141A4703D0AFBAC5441E17A14CE638C514148E17AC4FDAC54415C8FC255618C51416666661600AD5441333333A35E8C5141666666B6FFAC5441D7A3709D5A8C5141F6285C3F06AD5441A4703DFA5F8C51410AD7A3C00BAD544114AE47E1638C514152B81EB510AD544100000030678C514152B81EA513AD5441CDCCCC6C6B8C5141AE47E19A17AD5441333333F36E8C5141333333B314AD5441000000407C8C514152B81E6509AD54417B14AE57758C5141295C8F02FAAC54417B14AE07748C514148E17A94F6AC5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009B0000007B14AEC77A8C5141F6285C0FE4AC5441666666867E8C51410AD7A390E1AC544100000040818C51415C8FC2E5DEAC544166666636878C5141EC51B87EDEAC544185EB51C8898C5141713D0A87DDAC5441295C8FC2898C51411F85EB91DCAC5441B81E85BB8D8C5141B81E855BDAAC5441000000A08D8C5141D7A3705DD4AC5441508D4C3D8D8C5141359B7D4FD3AC5441295C8F428D8C514185EB5138D3AC54414F0D85B28C8C5141E4CCCE30D2AC5441E01238DF878C51416CC7EB70D0AC5441DF630854858C51411DBC18E8CEAC54411633EEFA838C51419B82F101CEAC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>172411 - 210814
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003200000000000030B6895141AE47E1AA68AC54415C8FC2B5B3895141D7A3708D68AC5441EC51B89EB189514148E17A2469AC5441AE47E18AB38951415C8FC2A56CAC5441CDCCCCBCB6895141295C8F726CAC54410AD7A3D0B889514152B81EC570AC5441F6285C7FB28951415C8FC2F56FAC54413D0AD753AF895141D7A3700D6BAC5441295C8FA2AE895141F6285C2F6CAC54413D0AD733AE8951417B14AE576FAC54411F85EB21B08951413333335373AC54411F85EB91B0895141F6285C4F75AC54418FC2F508B08951410000003078AC5441D7A3707DAD895141E17A149E7EAC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000D4E68CF9E18951418961F81992AC54418FC2F5B8E08951419A99999999AC544166666616E28951418FC2F5C89CAC5441713D0A47E08951415C8FC245A1AC5441213895E9DF895141E57BCC16A2AC5441213895E9DF8951416E83E064A2AC544177787858E289514127DFC76AA0AC54417100A0BEE48951412C392A9E9EAC5441713D0A57E4895141295C8F229DAC54415C8FC275E98951417B14AE3793AC5441C999DC39EA895141DB6CCE2992AC5441A771B78EEA8951410F2986AA91AC5441742A1356F0895141F063359B89AC5441120F0FBFF4895141120F0F5F83AC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>172411 - 261065
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003200000000000030B6895141AE47E1AA68AC54415C8FC2B5B3895141D7A3708D68AC5441EC51B89EB189514148E17A2469AC5441AE47E18AB38951415C8FC2A56CAC5441CDCCCCBCB6895141295C8F726CAC54410AD7A3D0B889514152B81EC570AC5441F6285C7FB28951415C8FC2F56FAC54413D0AD753AF895141D7A3700D6BAC5441295C8FA2AE895141F6285C2F6CAC54413D0AD733AE8951417B14AE576FAC54411F85EB21B08951413333335373AC54411F85EB91B0895141F6285C4F75AC54418FC2F508B08951410000003078AC5441D7A3707DAD895141E17A149E7EAC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000D4E68CF9E18951418961F81992AC54418FC2F5B8E08951419A99999999AC544166666616E28951418FC2F5C89CAC5441713D0A47E08951415C8FC245A1AC5441213895E9DF895141E57BCC16A2AC5441213895E9DF8951416E83E064A2AC544177787858E289514127DFC76AA0AC54417100A0BEE48951412C392A9E9EAC5441713D0A57E4895141295C8F229DAC54415C8FC275E98951417B14AE3793AC5441C999DC39EA895141DB6CCE2992AC5441A771B78EEA8951410F2986AA91AC5441742A1356F0895141F063359B89AC5441120F0FBFF4895141120F0F5F83AC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>172646 - 54028
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000F6285C8FB78E514148E17A4487AB54417B14AE17B68E514148E17A0485AB54411F85EBC1B48E5141EC51B82E84AB544166666676B38E5141D7A3709D84AB5441295C8FB29F8E5141B81E85DB8FAB54413D0AD763828E51411F85EB41A1AB544152B81E35828E5141EC51B88EA2AB54411F85EB61838E5141D7A370ADA4AB5441AE47E10A888E5141C3F5284CACAB544185EB51A8A08E5141EC51B8EE9DAB5441333333B3BB8E51415C8FC2258EAB5441F6285C8FB78E514148E17A4487AB5441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000A17E9E43828E5141254FE1A8A2AB5441D9B2C14C848E51410C79712DA6AB544175003E52848E51419EC76936A6AB544185F0D052848E5141240D5A37A6AB544185F0D052848E514175D09929A6AB5441AE47E10A888E5141C3F5284CACAB544170861C158D8E5141B388325BA9AB5441655368D58F8E5141CEDE2DC0A7AB5441206EC0159A8E51417239A5C4A1AB5441E9307AE59A8E51418B5C6B4BA1AB544185EB51A8A08E5141EC51B8EE9DAB54419C861195A98E51414E6C16B998AB54417A5B267DA98E5141FC814F8898AB5441293BEC60A68E5141B2D4BAB695AB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540637 - 142868
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000001D00000052B81E85E75C5141000000F0644954411F85EB11E95C514148E17A445D495441333333D3E95C5141D7A370BD584954418FC2F528EA5C5141AE47E18A5349544148E17A94EA5C5141295C8FE24D49544185EB5108E65C51419A9999B94B4954418FC2F598E25C51411F85EBF1494954417B14AE47E25C5141D7A3709D4A495441CDCCCC1CDB5C5141713D0A2766495441EC51B8FEDA5C5141000000C068495441E17A140EDB5C51410AD7A3506A495441D7A370BDDD5C51410AD7A3606B495441713D0AA7DD5C51418FC2F5A86F495441B81E85CBDC5C5141E17A145E70495441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000055000000AE1AF966B35C5141C3BFAB1B85495441732FAF20B95C514146EE91DC834954411F85EB11BF5C5141713D0A67824954410AD7A380C45C5141C3F5285C8149544103111820C85C514116FFFFD58049544178B60010CC5C5141BFD15D1980495441ECC31D46CC5C5141044BFE0980495441E63B43F7CC5C5141D7EBAAD77F49544157783154CE5C5141326C413C7F49544100285B97CE5C5141F337F5027F49544107EA6F4ACF5C5141A7552E6A7E49544143CEB118D05C5141F8B70E397D49544179F0A935D05C5141572A2D017D495441564384E6D05C5141230608AC7B495441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540637 - 329298
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000001D00000052B81E85E75C5141000000F0644954411F85EB11E95C514148E17A445D495441333333D3E95C5141D7A370BD584954418FC2F528EA5C5141AE47E18A5349544148E17A94EA5C5141295C8FE24D49544185EB5108E65C51419A9999B94B4954418FC2F598E25C51411F85EBF1494954417B14AE47E25C5141D7A3709D4A495441CDCCCC1CDB5C5141713D0A2766495441EC51B8FEDA5C5141000000C068495441E17A140EDB5C51410AD7A3506A495441D7A370BDDD5C51410AD7A3606B495441713D0AA7DD5C51418FC2F5A86F495441B81E85CBDC5C5141E17A145E70495441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000055000000AE1AF966B35C5141C3BFAB1B85495441732FAF20B95C514146EE91DC834954411F85EB11BF5C5141713D0A67824954410AD7A380C45C5141C3F5285C8149544103111820C85C514116FFFFD58049544178B60010CC5C5141BFD15D1980495441ECC31D46CC5C5141044BFE0980495441E63B43F7CC5C5141D7EBAAD77F49544157783154CE5C5141326C413C7F49544100285B97CE5C5141F337F5027F49544107EA6F4ACF5C5141A7552E6A7E49544143CEB118D05C5141F8B70E397D49544179F0A935D05C5141572A2D017D495441564384E6D05C5141230608AC7B495441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173295 - 427179
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000300000022000000B81E854B00F15041333333434E2154410000003005F15041666666B64F2154410000004006F15041713D0A0750215441000000300CF150411F85EBC152215441E17A146E16F1504152B81E9558215441CDCCCCDC1AF150411F85EBD1592154419A99992919F15041CDCCCC6C572154417B14AE5718F15041713D0AD755215441F6285C0F13F15041CDCCCCDC46215441F6285C1F0CF15041E17A140E332154413D0AD7530AF150411F85EB812E2154410000004009F15041000000202D215441A4703DEA04F15041713D0A272E215441333333A3F5F050411F85EB1131215441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000034000000FF524C63D8F05041C92AD9DD142154410A1F3CF3DEF05041D26D2E361F2154418FA95A30E0F050412C85BE631F215441004DCC42E1F05041EC0CDBBA1E215441BB6821FEE2F050418847A2D21D2154411F2E5AE6E3F05041BBE14C511E2154412BBCCD25E3F050415C8C830D1F215441CFBFD90DE0F0504147DA95F320215441333333D3EFF05041000000D039215441F17012B3F0F050413ACFD46D37215441D57D9921F1F05041FFF495403621544114AE4741F1F05041A4703DEA3521544184E57A10F2F05041AF61A38A34215441CA4DF535F2F050415751F05A34215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173295 - 429774
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000300000022000000B81E854B00F15041333333434E2154410000003005F15041666666B64F2154410000004006F15041713D0A0750215441000000300CF150411F85EBC152215441E17A146E16F1504152B81E9558215441CDCCCCDC1AF150411F85EBD1592154419A99992919F15041CDCCCC6C572154417B14AE5718F15041713D0AD755215441F6285C0F13F15041CDCCCCDC46215441F6285C1F0CF15041E17A140E332154413D0AD7530AF150411F85EB812E2154410000004009F15041000000202D215441A4703DEA04F15041713D0A272E215441333333A3F5F050411F85EB1131215441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000034000000FF524C63D8F05041C92AD9DD142154410A1F3CF3DEF05041D26D2E361F2154418FA95A30E0F050412C85BE631F215441004DCC42E1F05041EC0CDBBA1E215441BB6821FEE2F050418847A2D21D2154411F2E5AE6E3F05041BBE14C511E2154412BBCCD25E3F050415C8C830D1F215441CFBFD90DE0F0504147DA95F320215441333333D3EFF05041000000D039215441F17012B3F0F050413ACFD46D37215441D57D9921F1F05041FFF495403621544114AE4741F1F05041A4703DEA3521544184E57A10F2F05041AF61A38A34215441CA4DF535F2F050415751F05A34215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173361 - 1070288
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000000D00000033333323F7F25041713D0A475623544185EB5118F7F250411F85EB21552354410AD7A350EBF250417B14AE4757235441713D0A67EBF2504185EB51785E2354418FC2F5F8E9F250417B14AEE776235441EC51B80EEAF250411F85EBF1782354415C8FC2A5EBF25041E17A141E7D23544166666616EFF250418FC2F5688023544148E17A24F4F250411F85EB718423544100000050F6F25041713D0AB7802354413D0AD7C3F6F250418FC2F5987C23544148E17A34F8F250418FC2F5087323544133333323F7F25041713D0A475623544105000000EC51B87EEDF2504148E17A34 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000000000070D7F25041E17A14FE8F235441C3F5289CE5F250413D0AD713902354412C6192E8E6F25041751857128F2354413524B234E9F25041DD9D31738D2354411F78C6DAECF25041E881D53B8C2354419FC879F7F0F25041295DDF568B235441B4FD6C04F2F25041FAC5A47D8A235441B4FD6C04F2F2504187623CBE87235441E596C597EFF2504146C3629784235441FAA2A059EBF250418D93CCF17F2354413524B234E9F25041F00A0E737923544191C5E8CCE8F2504164951019732354417AEA053CEAF250415DB7BE6D72235441DFA389C6EAF2504165C7E32E69235441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173361 - 5257195
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000000D00000033333323F7F25041713D0A475623544185EB5118F7F250411F85EB21552354410AD7A350EBF250417B14AE4757235441713D0A67EBF2504185EB51785E2354418FC2F5F8E9F250417B14AEE776235441EC51B80EEAF250411F85EBF1782354415C8FC2A5EBF25041E17A141E7D23544166666616EFF250418FC2F5688023544148E17A24F4F250411F85EB718423544100000050F6F25041713D0AB7802354413D0AD7C3F6F250418FC2F5987C23544148E17A34F8F250418FC2F5087323544133333323F7F25041713D0A475623544105000000EC51B87EEDF2504148E17A34 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000000000070D7F25041E17A14FE8F235441C3F5289CE5F250413D0AD713902354412C6192E8E6F25041751857128F2354413524B234E9F25041DD9D31738D2354411F78C6DAECF25041E881D53B8C2354419FC879F7F0F25041295DDF568B235441B4FD6C04F2F25041FAC5A47D8A235441B4FD6C04F2F2504187623CBE87235441E596C597EFF2504146C3629784235441FAA2A059EBF250418D93CCF17F2354413524B234E9F25041F00A0E737923544191C5E8CCE8F2504164951019732354417AEA053CEAF250415DB7BE6D72235441DFA389C6EAF2504165C7E32E69235441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173472 - 405710
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000600000085EB51E886F0504133333313C6205441D7A3708D80F050410AD7A3D0BC2054419A99990939F050419A999949D62054419A9999E93AF05041D7A370CDD7205441D7A3700D41F0504148E17AF4DE20544185EB51E886F0504133333313C6205441
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000050E1F8E844F050413A32060FD2205441230E383B47F0504149CA24B5D3205441CCF453D749F05041F96E1E1DD6205441A3E262C44BF050414A6E4130D92054418E30968F4CF050412A0AA8C6DA2054410462C6924CF050414AB206DADA205441259105A04CF05041EDDE4ED5DA20544185EB51E886F0504133333313C6205441D7A3708D80F050410AD7A3D0BC20544150E1F8E844F050413A32060FD2205441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173472 - 414460
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000600000085EB51E886F0504133333313C6205441D7A3708D80F050410AD7A3D0BC2054419A99990939F050419A999949D62054419A9999E93AF05041D7A370CDD7205441D7A3700D41F0504148E17AF4DE20544185EB51E886F0504133333313C6205441
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000050E1F8E844F050413A32060FD2205441230E383B47F0504149CA24B5D3205441CCF453D749F05041F96E1E1DD6205441A3E262C44BF050414A6E4130D92054418E30968F4CF050412A0AA8C6DA2054410462C6924CF050414AB206DADA205441259105A04CF05041EDDE4ED5DA20544185EB51E886F0504133333313C6205441D7A3708D80F050410AD7A3D0BC20544150E1F8E844F050413A32060FD2205441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173941 - 245752
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000F000000E17A147E20FA5041F6285CEFB12D5441C3F528BC20FA5041CDCCCC9CB42D5441333333D320FA50413D0AD7B3B52D54415C8FC22524FA5041E17A146EB52D5441D7A370BD26FA504152B81E55B52D5441333333032AFA50417B14AE07B52D54415C8FC2352CFA50411F85EBE1B42D54411F85EB712DFA5041C3F5288CAB2D5441A4703D4A23FA50411F85EB21AB2D5441D7A3703D21FA5041A4703DFAAA2D54419A9999F920FA5041D7A3704DAC2D544152B81E7520FA50417B14AEA7AD2D54413D0AD75320FA504185EB5148AF2D5441D7A3703D20FA5041CDCCCC5CB02D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000F4C5D39D19FA5041CB617D5DB52D5441A02D4A881CFA504181E3AD75B52D544114AE47011DFA50419A999979B52D5441D07A0E2C20FA50412794B1A4B52D5441C3F5284C20FA5041666666A6B52D5441C3F5282C20FA5041B81E854BB42D544185B8AE3020FA50417E6AA14FB22D54417DC9485220FA504143B982F3AF2D5441231B009F20FA5041A226DB00AE2D5441D7A3703D21FA5041A4703DFAAA2D5441C3F5288C20FA50417B14AED7AA2D5441ABCF202513FA5041CB18C85BAA2D5441156A5F3312FA504100FFF93DB52D54413333332313FA504166666656B52D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>173941 - 282133
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000F000000E17A147E20FA5041F6285CEFB12D5441C3F528BC20FA5041CDCCCC9CB42D5441333333D320FA50413D0AD7B3B52D54415C8FC22524FA5041E17A146EB52D5441D7A370BD26FA504152B81E55B52D5441333333032AFA50417B14AE07B52D54415C8FC2352CFA50411F85EBE1B42D54411F85EB712DFA5041C3F5288CAB2D5441A4703D4A23FA50411F85EB21AB2D5441D7A3703D21FA5041A4703DFAAA2D54419A9999F920FA5041D7A3704DAC2D544152B81E7520FA50417B14AEA7AD2D54413D0AD75320FA504185EB5148AF2D5441D7A3703D20FA5041CDCCCC5CB02D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000F4C5D39D19FA5041CB617D5DB52D5441A02D4A881CFA504181E3AD75B52D544114AE47011DFA50419A999979B52D5441D07A0E2C20FA50412794B1A4B52D5441C3F5284C20FA5041666666A6B52D5441C3F5282C20FA5041B81E854BB42D544185B8AE3020FA50417E6AA14FB22D54417DC9485220FA504143B982F3AF2D5441231B009F20FA5041A226DB00AE2D5441D7A3703D21FA5041A4703DFAAA2D5441C3F5288C20FA50417B14AED7AA2D5441ABCF202513FA5041CB18C85BAA2D5441156A5F3312FA504100FFF93DB52D54413333332313FA504166666656B52D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>174396 - 3090944
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000061000000C3F5282CBFF350413D0AD723EB31544166666626BDF35041EC51B8AEEE3154413D0AD7A3BAF3504148E17A34F431544185EB5108B8F35041C3F5280CFB315441713D0A97B5F3504185EB51C8FF315441A4703D0AB3F350410AD7A390043254411F85EB31B0F350419A9999C908325441A4703D5AADF3504185EB51880C3254411F85EB2190F350413D0AD78329325441EC51B85E93F3504148E17A842C325441E17A141E97F35041B81E857B29325441E17A149E99F35041B81E855B23325441B81E85FB9FF35041E17A142E1E3254410AD7A380A4F35041CDCCCC5C19325441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000002D737E084BF45041ED2E713FF5315441355561664DF450415E1CAD8CFA315441E8D3A5B74BF450410348C0D0FB315441B492CD484CF450419922F35DFE315441D5C5EB524DF45041FD5E6A1100325441E48D6C8D4EF45041C91D92A20032544114890BD250F45041706362FF023254412B8D9AF258F4504193399D9E02325441DCB195CA60F45041619BE1C4013254413EA24ABC6BF450413D34B3F4FF315441A71ABE3C6DF45041D4BB3F74FE31544139FAFB5167F4504129C33AB7F0315441CA20D46A5FF450419F6B6BFBF13154411C59A08E5EF450414BC1AE1EF2315441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>174396 - 3433660
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000061000000C3F5282CBFF350413D0AD723EB31544166666626BDF35041EC51B8AEEE3154413D0AD7A3BAF3504148E17A34F431544185EB5108B8F35041C3F5280CFB315441713D0A97B5F3504185EB51C8FF315441A4703D0AB3F350410AD7A390043254411F85EB31B0F350419A9999C908325441A4703D5AADF3504185EB51880C3254411F85EB2190F350413D0AD78329325441EC51B85E93F3504148E17A842C325441E17A141E97F35041B81E857B29325441E17A149E99F35041B81E855B23325441B81E85FB9FF35041E17A142E1E3254410AD7A380A4F35041CDCCCC5C19325441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000002D737E084BF45041ED2E713FF5315441355561664DF450415E1CAD8CFA315441E8D3A5B74BF450410348C0D0FB315441B492CD484CF450419922F35DFE315441D5C5EB524DF45041FD5E6A1100325441E48D6C8D4EF45041C91D92A20032544114890BD250F45041706362FF023254412B8D9AF258F4504193399D9E02325441DCB195CA60F45041619BE1C4013254413EA24ABC6BF450413D34B3F4FF315441A71ABE3C6DF45041D4BB3F74FE31544139FAFB5167F4504129C33AB7F0315441CA20D46A5FF450419F6B6BFBF13154411C59A08E5EF450414BC1AE1EF2315441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>174465 - 266661
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000000F0000003D0AD7C372F85041295C8F224E2C5441AE47E17A7BF85041F6285CEF4B2C54419A9999C97DF85041CDCCCCCC4B2C544114AE47317CF850415C8FC205452C5441666666967BF8504114AE47A1442C54417B14AE0748F8504185EB51E84E2C5441713D0A4748F850411F85EB21502C54410AD7A36043F8504100000020512C544114AE47513CF85041713D0A47512C5441EC51B87E3CF8504148E17A04562C5441713D0AC74FF850418FC2F5F8542C5441000000E054F85041EC51B8EE542C54415C8FC2555FF85041EC51B8EE532C5441333333D368F8504152B81E75512C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001000000060530EE8ABF8504159138BC6272C5441C6F97E87ABF850414B94179A222C5441F6285CFF9CF8504185EB51E8272C544185EB51B89BF8504166666606292C5441AE47E12A97F85041B81E852B222C5441E17A144E94F85041C3F528AC2C2C54413D0AD74392F8504148E17A54322C5441BA85CC3A92F850419259F968322C5441B785CC3A92F850419B59F968322C544122B29CCA93F85041DC655A7E312C544109FC401097F85041A2A3CD922F2C54411BA41B9B99F85041AE7512692E2C5441732432CC9AF8504103BA82DD2D2C5441F06020A3A0F85041043B63322C2C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>176737 - 1151451
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000250000009A99998919D75041000000F03B3854419A9999D91AD75041AE47E1EA3A3854413333339320D750418FC2F578233854416666662626D75041333333930A3854410AD7A32024D7504100000050093854415C8FC25520D7504152B81E7506385441713D0A571FD750415C8FC2B505385441F6285C1F1BD750415C8FC25502385441000000E01AD75041D7A3700D023854418FC2F50819D7504114AE47F1FF37544152B81E9518D750413D0AD773FF37544114AE47A112D7504185EB518805385441666666B60DD750411F85EBF1093854413D0AD7030BD75041295C8F420C385441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000350000009A9999D91AD75041AE47E1EA3A385441A55162851BD750416EF9632B38385441342C21F21BD75041D0650E6E36385441796176041CD75041CFC9FA22363854416220D98B1CD75041F6698CF833385441A702027A1DD750418CDA3C293038544108F371381ED750415D155C1D2D3854411C6D86121FD75041FF7F47A0293854413B1D6BCF1FD75041405CB99A2638544135A4037920D750414B2632E4233854413B72C4B421D75041AA87C66B1E38544109FF9ECA22D75041283CE79219385441FE19E83A23D750413DEA719D173854419AC80FAB23D7504143DC91A815385441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>177989 - 4163805
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000CDCCCC7C1929514148E17A14A92E5541CDCCCC8C1929514148E17AA4A62E5541CDCCCC4C1829514148E17AE4A12E5541CDCCCC7CFD28514148E17A14A02E5541CDCCCCBCFA28514148E17A24A02E55413D0AD723D128514133333313AB2E55410AD7A370D428514148E17AC4BA2E55417B14AE97D928514114AE4741D32E554133333303EC2851419A9999D9CD2E554152B81EC502295141F6285C6FC72E55415C8FC2450F2951419A999939C42E5541CDCCCC8C1129514148E17A94C32E5541CDCCCC6C1229514148E17A74BC2E5541CDCCCC7C1329514148E17AD4B82E5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000030000000BE07DDDDD6285141DCA3DF4CC62E5541831B7882D72851411A992B5BC92E5541A1B9525DD8285141B6BF486BCD2E55417B14AE97D928514114AE4741D32E5541AA887B2AE82851418EDA22FCCE2E5541E26C4D11E9285141EA23D1B6CE2E554165F92124EB285141EB0B0E1BCE2E5541324D6B4AEC2851410C3E86C5CD2E55413E7737BFED285141DA35705CCD2E554130F22655EF285141A7DB02EACC2E5541E5A3E025F028514139B22CAFCC2E5541A76DE581F12851416FC4124DCC2E554152B81EC502295141F6285C6FC72E5541F8882F06042951410444ED1CC72E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178315 - 2090126
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000D7A370CD5C345141666666E6292A5541F6285C8F5134514152B81E45292A55415C8FC2D547345141A4703D4A292A5541A4703D7A42345141333333D3292A554114AE476142345141EC51B82E2B2A554152B81EF52634514148E17A34292A5541AE47E1AA243451413D0AD7E3282A554148E17AA41E3451417B14AE672E2A5541666666D63E345141333333C3302A55418FC2F54849345141713D0AF7302A554148E17A7462345141A4703DEA312A5541C3F5288C69345141EC51B82E332A55415C8FC2656A345141A4703D7A2B2A5541D7A370CD5C345141666666E6292A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000C07A64005E345141916F040A2A2A5541B0A156DD61345141B61CC57C2A2A55414CB8D34A6534514118F296E22A2A55415C8FC2656A345141A4703D7A2B2A554185EB51386B345141EC51B8FE232A55413D0AD7D35834514100000020222A5541D7A370DD48345141E17A146E212A5541E17A14DE4734514133333363212A554185EB51A84634514148E17A34212A5541295C8F0246345141CDCCCC7C202A5541EC51B85E463451411F85EB611F2A55411F85EBE147345141EC51B8EE1D2A554185EB51084534514148E17A041E2A55411F85EB613434514185EB5138212A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178315 - 4617761
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000D7A370CD5C345141666666E6292A5541F6285C8F5134514152B81E45292A55415C8FC2D547345141A4703D4A292A5541A4703D7A42345141333333D3292A554114AE476142345141EC51B82E2B2A554152B81EF52634514148E17A34292A5541AE47E1AA243451413D0AD7E3282A554148E17AA41E3451417B14AE672E2A5541666666D63E345141333333C3302A55418FC2F54849345141713D0AF7302A554148E17A7462345141A4703DEA312A5541C3F5288C69345141EC51B82E332A55415C8FC2656A345141A4703D7A2B2A5541D7A370CD5C345141666666E6292A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000C07A64005E345141916F040A2A2A5541B0A156DD61345141B61CC57C2A2A55414CB8D34A6534514118F296E22A2A55415C8FC2656A345141A4703D7A2B2A554185EB51386B345141EC51B8FE232A55413D0AD7D35834514100000020222A5541D7A370DD48345141E17A146E212A5541E17A14DE4734514133333363212A554185EB51A84634514148E17A34212A5541295C8F0246345141CDCCCC7C202A5541EC51B85E463451411F85EB611F2A55411F85EBE147345141EC51B8EE1D2A554185EB51084534514148E17A041E2A55411F85EB613434514185EB5138212A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178315 - 34885
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000D7A370CD5C345141666666E6292A5541F6285C8F5134514152B81E45292A55415C8FC2D547345141A4703D4A292A5541A4703D7A42345141333333D3292A554114AE476142345141EC51B82E2B2A554152B81EF52634514148E17A34292A5541AE47E1AA243451413D0AD7E3282A554148E17AA41E3451417B14AE672E2A5541666666D63E345141333333C3302A55418FC2F54849345141713D0AF7302A554148E17A7462345141A4703DEA312A5541C3F5288C69345141EC51B82E332A55415C8FC2656A345141A4703D7A2B2A5541D7A370CD5C345141666666E6292A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000005C8FC2656A345141A4703D7A2B2A5541CDCCCC0C68345141C3F5281C2A2A5541000000405E34514152B81E15292A5541000000F05334514114AE4711282A554185EB51084B34514114AE47C1272A554185EB51A8463451419A999999272A554185EB5108413451419A999929292A5541C3F528DC3A34514152B81E65292A5541C3F5280C2E345141D7A3709D282A554185EB51C827345141EC51B85E272A5541576B44DF273451413F018553272A5541F3E516DF27345141EA7B8553272A5541AE47E1AA243451413D0AD7E3282A5541209C18BF27345141F2820B43292A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178315 - 58135
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000D7A370CD5C345141666666E6292A5541F6285C8F5134514152B81E45292A55415C8FC2D547345141A4703D4A292A5541A4703D7A42345141333333D3292A554114AE476142345141EC51B82E2B2A554152B81EF52634514148E17A34292A5541AE47E1AA243451413D0AD7E3282A554148E17AA41E3451417B14AE672E2A5541666666D63E345141333333C3302A55418FC2F54849345141713D0AF7302A554148E17A7462345141A4703DEA312A5541C3F5288C69345141EC51B82E332A55415C8FC2656A345141A4703D7A2B2A5541D7A370CD5C345141666666E6292A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000005C8FC2656A345141A4703D7A2B2A5541CDCCCC0C68345141C3F5281C2A2A5541000000405E34514152B81E15292A5541000000F05334514114AE4711282A554185EB51084B34514114AE47C1272A554185EB51A8463451419A999999272A554185EB5108413451419A999929292A5541C3F528DC3A34514152B81E65292A5541C3F5280C2E345141D7A3709D282A554185EB51C827345141EC51B85E272A5541576B44DF273451413F018553272A5541F3E516DF27345141EA7B8553272A5541AE47E1AA243451413D0AD7E3282A5541209C18BF27345141F2820B43292A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178351 - 1490885
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002D000000A4703D8A603451410AD7A3702E2B5541295C8FE26234514148E17AE42D2B5541A4703D4A643451410AD7A3B02F2B5541B81E855B6634514152B81EB5302B55417B14AED7693451413D0AD7232F2B5541AE47E1FA6A345141333333032E2B55413D0AD73366345141A4703DBA272B5541333333F3623451411F85EB71292B5541B81E856B5E3451419A999979222B554114AE47215C345141333333631E2B554114AE47A14D345141A4703D1A2F2B5541666666264B345141F6285CBF322B55411F85EBE14A3451418FC2F558342B554152B81E95483451418FC2F558342B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003600000017F48C74213451411ECE7507412B5541834CDD4D213451410E87F20C412B55416A536F5C21345141DF904028412B55419A99993923345141D7A370DD432B5541666666A627345141F6285CEF482B5541C3F528EC2F345141E17A14AE482B554114AE47213234514185EB51B8472B554152B81E3535345141A4703DFA482B55416666662640345141333333734D2B554100000020433451417B14AEC74F2B5541EC51B8AE473451418FC2F518502B5541B81E859B4B345141000000F04E2B55417B14AED75134514185EB5128492B5541CDCCCC9C653451418FC2F5B8432B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178351 - 3128988
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002D000000A4703D8A603451410AD7A3702E2B5541295C8FE26234514148E17AE42D2B5541A4703D4A643451410AD7A3B02F2B5541B81E855B6634514152B81EB5302B55417B14AED7693451413D0AD7232F2B5541AE47E1FA6A345141333333032E2B55413D0AD73366345141A4703DBA272B5541333333F3623451411F85EB71292B5541B81E856B5E3451419A999979222B554114AE47215C345141333333631E2B554114AE47A14D345141A4703D1A2F2B5541666666264B345141F6285CBF322B55411F85EBE14A3451418FC2F558342B554152B81E95483451418FC2F558342B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A000000D7A370CD49345141C3F5283C3A2B5541C2C2027A4D345141103D64FD392B55413C95580D52345141712239AF392B5541AF8BF5C361345141A4C4C6A2382B5541CBD5D099633451419EBB6B83382B5541F59748B664345141BDE16F70382B55412BC3CCAF68345141609F882C382B5541969849746A345141A851560E382B55413D0AD7B36E3451415C8FC2C5372B5541A4703DDA6D3451418FC2F538362B55415C8FC24573345141D7A3704D332B5541E17A144E73345141295C8F62312B5541295C8F3273345141C3F528CC2F2B554148E17AB4703451418FC2F558302B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178351 - 3515394
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002D000000A4703D8A603451410AD7A3702E2B5541295C8FE26234514148E17AE42D2B5541A4703D4A643451410AD7A3B02F2B5541B81E855B6634514152B81EB5302B55417B14AED7693451413D0AD7232F2B5541AE47E1FA6A345141333333032E2B55413D0AD73366345141A4703DBA272B5541333333F3623451411F85EB71292B5541B81E856B5E3451419A999979222B554114AE47215C345141333333631E2B554114AE47A14D345141A4703D1A2F2B5541666666264B345141F6285CBF322B55411F85EBE14A3451418FC2F558342B554152B81E95483451418FC2F558342B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A000000D7A370CD49345141C3F5283C3A2B5541C2C2027A4D345141103D64FD392B55413C95580D52345141712239AF392B5541AF8BF5C361345141A4C4C6A2382B5541CBD5D099633451419EBB6B83382B5541F59748B664345141BDE16F70382B55412BC3CCAF68345141609F882C382B5541969849746A345141A851560E382B55413D0AD7B36E3451415C8FC2C5372B5541A4703DDA6D3451418FC2F538362B55415C8FC24573345141D7A3704D332B5541E17A144E73345141295C8F62312B5541295C8F3273345141C3F528CC2F2B554148E17AB4703451418FC2F558302B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178351 - 3515627
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002D000000A4703D8A603451410AD7A3702E2B5541295C8FE26234514148E17AE42D2B5541A4703D4A643451410AD7A3B02F2B5541B81E855B6634514152B81EB5302B55417B14AED7693451413D0AD7232F2B5541AE47E1FA6A345141333333032E2B55413D0AD73366345141A4703DBA272B5541333333F3623451411F85EB71292B5541B81E856B5E3451419A999979222B554114AE47215C345141333333631E2B554114AE47A14D345141A4703D1A2F2B5541666666264B345141F6285CBF322B55411F85EBE14A3451418FC2F558342B554152B81E95483451418FC2F558342B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003600000017F48C74213451411ECE7507412B5541834CDD4D213451410E87F20C412B55416A536F5C21345141DF904028412B55419A99993923345141D7A370DD432B5541666666A627345141F6285CEF482B5541C3F528EC2F345141E17A14AE482B554114AE47213234514185EB51B8472B554152B81E3535345141A4703DFA482B55416666662640345141333333734D2B554100000020433451417B14AEC74F2B5541EC51B8AE473451418FC2F518502B5541B81E859B4B345141000000F04E2B55417B14AED75134514185EB5128492B5541CDCCCC9C653451418FC2F5B8432B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178607 - 197120
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000B90000003D0AD7530F2751410AD7A3E0862155419A99992910275141D7A3700D88215541B81E854B0F275141AE47E17A892155419A999989122751415C8FC2D58A215541AE47E1DA1127514185EB51588C21554152B81E8510275141EC51B84E8F215541B81E858B1027514100000070932155417B14AE9710275141713D0AC7962155410AD7A3800F275141333333439A215541000000E014275141F6285C4F9C215541713D0A37182751418FC2F5F89C215541713D0AB71B2751418FC2F5689D215541713D0A671E2751418FC2F5789D215541713D0A77212751418FC2F5E89D215541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004A000000713D0A57522751418FC2F588E32155415F087B65542751411354A229E6215541C3F5287C5827514148E17A74EA215541333333435E275141E17A148EE9215541A5460A2561275141B04BD9CBE9215541D9E10C4766275141D54758A8E82155419087EFB16827514183A790D5E7215541B8E5E71A6B275141CA17F6DBE8215541F7D163626C275141178597BAEA2155415E33C68A6E275141586EC4B6EB2155410D8B8028712751419A645A6CEB21554199B97ED8712751411D305B1FEB2155416FFC81E9732751418C2E10F1E921554109D42E4A75275141EF0DB47FE9215541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178607 - 382437
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000B90000003D0AD7530F2751410AD7A3E0862155419A99992910275141D7A3700D88215541B81E854B0F275141AE47E17A892155419A999989122751415C8FC2D58A215541AE47E1DA1127514185EB51588C21554152B81E8510275141EC51B84E8F215541B81E858B1027514100000070932155417B14AE9710275141713D0AC7962155410AD7A3800F275141333333439A215541000000E014275141F6285C4F9C215541713D0A37182751418FC2F5F89C215541713D0AB71B2751418FC2F5689D215541713D0A671E2751418FC2F5789D215541713D0A77212751418FC2F5E89D215541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004A000000713D0A57522751418FC2F588E32155415F087B65542751411354A229E6215541C3F5287C5827514148E17A74EA215541333333435E275141E17A148EE9215541A5460A2561275141B04BD9CBE9215541D9E10C4766275141D54758A8E82155419087EFB16827514183A790D5E7215541B8E5E71A6B275141CA17F6DBE8215541F7D163626C275141178597BAEA2155415E33C68A6E275141586EC4B6EB2155410D8B8028712751419A645A6CEB21554199B97ED8712751411D305B1FEB2155416FFC81E9732751418C2E10F1E921554109D42E4A75275141EF0DB47FE9215541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>292859 - 3497072
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000004A000000E17A143EE96D51418FC2F598DCA65441F6285C0FE96D5141295C8F22DDA65441295C8F82E86D51413D0AD7F3DCA65441EC51B86EE86D514152B81EE5DCA65441F6285C5FE86D5141F6285C3FDDA65441C3F5284CE86D5141EC51B8AEDDA654419A9999D9E76D514185EB5158E0A65441713D0AA7E76D51411F85EBF1E2A654410AD7A380E76D514114AE47F1E5A6544148E17A74E76D51410AD7A3B0E6A65441713D0A77E76D5141AE47E16AE7A65441D7A3708DE76D514185EB5198EEA65441A4703D5AEC6D5141EC51B8EEEEA654418FC2F528ED6D51413D0AD7F3E7A65441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000060000000E41C8576E76D51410DDF96F9C2A654413F250D30E76D51410EF719A9C0A65441CA6077D5E66D514199C448FEBDA6544185EB5158E66D514114AE47C1BAA65441000000C0E66D5141E17A14FEB8A65441EC51B81EE76D51411F85EB51B8A65441F6285C7FE76D5141333333E3B7A6544152B81E75E86D514148E17A64B7A654413D0AD7A3E96D5141C3F5282CB7A654417202ABCFE96D514183290451B6A65441295C8F02E96D5141A4703D1AB6A65441B81E857BE76D5141B81E858BB5A65441B07268B1E56D5141A69BC4C0B4A6544108AC1CFAE36D5141CDCCCC9CB3A65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178750 - 1489031
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000A4703DEA652551415C8FC2B5062B5541666666C66125514152B81E750C2B554114AE47915C2551410AD7A3B0132B5541B81E857B572551413D0AD7C3102B5541295C8FF253255141B81E859B152B5541333333434F2551415C8FC2A51C2B5541C3F5286C4B25514100000020222B55413D0AD7134825514114AE4751262B5541B81E853B412551415C8FC2652E2B5541CDCCCC0C40255141EC51B86E302B55410000009041255141D7A370BD312B5541713D0A5745255141B81E855B342B55418FC2F5484D255141C3F5289C382B554148E17AB45F255141D7A3702D242B5541 [...]
+</a>
+
+<b>
+01060000000200000001030000000100000013000000571B270E69255141B941D9F3082B55417B30A8D266255141BCB1BB5B072B5541A4703DEA652551415C8FC2B5062B5541666666C66125514152B81E750C2B554114AE47915C2551410AD7A3B0132B5541B81E857B572551413D0AD7C3102B5541295C8FF253255141B81E859B152B5541333333434F2551415C8FC2A51C2B5541C3F5286C4B25514100000020222B55413D0AD7134825514114AE4751262B5541B81E853B412551415C8FC2652E2B5541CDCCCC0C40255141EC51B86E302B55410000009041255141D7A370BD312B5541A5B898C2432551413B0C4643332B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>178750 - 3376754
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000A4703DEA652551415C8FC2B5062B5541666666C66125514152B81E750C2B554114AE47915C2551410AD7A3B0132B5541B81E857B572551413D0AD7C3102B5541295C8FF253255141B81E859B152B5541333333434F2551415C8FC2A51C2B5541C3F5286C4B25514100000020222B55413D0AD7134825514114AE4751262B5541B81E853B412551415C8FC2652E2B5541CDCCCC0C40255141EC51B86E302B55410000009041255141D7A370BD312B5541713D0A5745255141B81E855B342B55418FC2F5484D255141C3F5289C382B554148E17AB45F255141D7A3702D242B5541 [...]
+</a>
+
+<b>
+01060000000200000001030000000100000013000000571B270E69255141B941D9F3082B55417B30A8D266255141BCB1BB5B072B5541A4703DEA652551415C8FC2B5062B5541666666C66125514152B81E750C2B554114AE47915C2551410AD7A3B0132B5541B81E857B572551413D0AD7C3102B5541295C8FF253255141B81E859B152B5541333333434F2551415C8FC2A51C2B5541C3F5286C4B25514100000020222B55413D0AD7134825514114AE4751262B5541B81E853B412551415C8FC2652E2B5541CDCCCC0C40255141EC51B86E302B55410000009041255141D7A370BD312B5541A5B898C2432551413B0C4643332B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>179777 - 4168981
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000CDCCCC5C302D51413D0AD713032B5541EC51B86E262D5141C3F528AC032B55411F85EB011B2D51415C8FC2A5FB2A55413D0AD783042D51411F85EBE1062B5541CDCCCC0C0F2D5141C3F5289C152B5541AE47E13A212D5141713D0A072F2B55413D0AD723232D5141E17A14FE2D2B5541F6285C7F282D51417B14AE47282B5541F6285C0F2F2D5141F6285C5F222B5541A4703D6A342D514152B81EE51E2B5541F6285C4F412D5141AE47E1BA162B55417B14AE07442D514100000050142B55411F85EB01462D51415C8FC2B5102B55419A999919482D5141295C8F320A2B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000433F0909472D51412BB6DC820D2B5541D722400A3D2D51413E12A0BE022B5541DA917E8D3C2D5141D087CD5F022B554159A22D6A3C2D5141E8A7A361022B5541BB6E2595342D5141A274E6C9022B5541A7B6064E332D5141F41556E8022B55414C129ED42B2D514137545D9A032B55418159938E292D51415CE984D0032B554148E17AB4252D5141E9263150042B5541B4D373B6242D51416B904FCF032B554118DC06C51C2D5141D1DD9EE2FC2A5541BA490CF21A2D5141B81E854BFB2A5541B29DEF57122D5141A4703D5AFE2A55419CE58911032D5141763390D5042B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>179777 - 4168982
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000CDCCCC5C302D51413D0AD713032B5541EC51B86E262D5141C3F528AC032B55411F85EB011B2D51415C8FC2A5FB2A55413D0AD783042D51411F85EBE1062B5541CDCCCC0C0F2D5141C3F5289C152B5541AE47E13A212D5141713D0A072F2B55413D0AD723232D5141E17A14FE2D2B5541F6285C7F282D51417B14AE47282B5541F6285C0F2F2D5141F6285C5F222B5541A4703D6A342D514152B81EE51E2B5541F6285C4F412D5141AE47E1BA162B55417B14AE07442D514100000050142B55411F85EB01462D51415C8FC2B5102B55419A999919482D5141295C8F320A2B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000A7B6064E332D5141F41556E8022B5541BB6E2595342D5141A274E6C9022B554159A22D6A3C2D5141E8A7A361022B5541DA917E8D3C2D5141D087CD5F022B5541D722400A3D2D51413E12A0BE022B5541433F0909472D51412BB6DC820D2B55419A999919482D5141295C8F320A2B554166666636492D514152B81EA5052B554185EB51384B2D5141EC51B8DE012B5541AE47E18A4D2D514185EB51B8FE2A554148E17A744F2D5141AE47E13AFC2A554152B81ED54E2D5141333333C3FA2A55415C8FC2754D2D5141CDCCCCACF92A554114AE4711452D51415C8FC205F52A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>217399 - 3109934
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000007B14AEB76FC15041713D0AD78C065541295C8F426EC150410AD7A3008D065541D7A3708D6BC15041F6285CAF8D065541E17A147E75C15041A4703DBAA50655419A9999C97BC15041333333F3B4065541C3F5289C92C1504114AE4751AD065541000000F082C150419A999969870655413D0AD72377C15041EC51B88E8A065541CDCCCCCC74C1504152B81E958B0655417B14AEB76FC15041713D0AD78C065541
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000075BAFA2654C15041BFF1FD28A70655414A37953072C15041F2E52EBD9D065541D9B7943271C15041CDCD7D569B065541D7A3708D6BC15041F6285CAF8D065541D7A3702D5EC15041B81E850B910655418FC2F51858C15041B81E850B93065541EC51B81E54C150417B14AE1794065541C3F528EC4BC150411F85EB81950655410AD7A3C045C1504114AE47B1960655413D0AD7F348C150417B14AE379A0655413D0AD7E34DC15041D7A3703D9E0655418FC2F51850C15041C3F5286CA1065541295C8F8252C15041AE47E17AA406554175BAFA2654C15041BFF1FD28A7065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>217399 - 3283083
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000007B14AEB76FC15041713D0AD78C065541295C8F426EC150410AD7A3008D065541D7A3708D6BC15041F6285CAF8D065541E17A147E75C15041A4703DBAA50655419A9999C97BC15041333333F3B4065541C3F5289C92C1504114AE4751AD065541000000F082C150419A999969870655413D0AD72377C15041EC51B88E8A065541CDCCCCCC74C1504152B81E958B0655417B14AEB76FC15041713D0AD78C065541
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000075BAFA2654C15041BFF1FD28A70655414A37953072C15041F2E52EBD9D065541D9B7943271C15041CDCD7D569B065541D7A3708D6BC15041F6285CAF8D065541D7A3702D5EC15041B81E850B910655418FC2F51858C15041B81E850B93065541EC51B81E54C150417B14AE1794065541C3F528EC4BC150411F85EB81950655410AD7A3C045C1504114AE47B1960655413D0AD7F348C150417B14AE379A0655413D0AD7E34DC15041D7A3703D9E0655418FC2F51850C15041C3F5286CA1065541295C8F8252C15041AE47E17AA406554175BAFA2654C15041BFF1FD28A7065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918496 - 56969
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000030000004B00000066666626A79E50415C8FC265041F5441C3F5285CB39E504152B81E551E1F5441C3F5283CA69E5041295C8F82191F5441333333939B9E50410AD7A3A0151F5441F6285CBF8F9E50419A999949111F544166666646859E5041295C8F720D1F54418FC2F518749E5041F6285C1F091F5441D7A3702D699E50418FC2F598081F5441D7A3704D5F9E504100000020081F5441C3F528FC619E5041A4703D0A0C1F5441666666E6659E50419A9999790C1F5441295C8FC2649E5041E17A14CE111F544166666676609E5041D7A370ED131F5441AE47E1FA5F9E5041B81E854B1B1F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000002E57135BE59E5041EA7A8B96EC1E5441DF74A27AE49E5041913E9629EC1E5441A0AA7C78D69E5041A0E87011E91E5441871ECCB1CA9E5041B58CB38FE61E54415B4A4E07C09E504125374E7DE41E5441CBCBCECEAF9E5041DC4D9B12E41E544109705725AF9E50410C0F1A12E41E5441BC94008FAD9E5041D528E410E41E544146BA38EDA99E5041410D1F0EE41E5441FEE7D7EAA39E504144CA8909E41E544100000040989E50410AD7A300E41E544164360CAB999E504194386715E71E5441B4B025D59B9E504178693D25E81E54418FF9827DA29E50416B708FC7E81E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918496 - 141838
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000030000004B00000066666626A79E50415C8FC265041F5441C3F5285CB39E504152B81E551E1F5441C3F5283CA69E5041295C8F82191F5441333333939B9E50410AD7A3A0151F5441F6285CBF8F9E50419A999949111F544166666646859E5041295C8F720D1F54418FC2F518749E5041F6285C1F091F5441D7A3702D699E50418FC2F598081F5441D7A3704D5F9E504100000020081F5441C3F528FC619E5041A4703D0A0C1F5441666666E6659E50419A9999790C1F5441295C8FC2649E5041E17A14CE111F544166666676609E5041D7A370ED131F5441AE47E1FA5F9E5041B81E854B1B1F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000004AFCF2FBEA9E5041E86A0952EF1E5441A7F902EAE89E50417F74C550EE1E544124752B24E79E5041EC907274ED1E54419028385BE69E504136B5E412ED1E5441A7FF3243E59E5041DC28F48AEC1E5441DF74A27AE49E5041913E9629EC1E5441A0AA7C78D69E5041A0E87011E91E5441871ECCB1CA9E5041B58CB38FE61E54415B4A4E07C09E504125374E7DE41E5441D5CECECEAF9E5041DE4D9B12E41E54413C4FA141AD9E50419726A910E41E5441ACEBCAE4AC9E5041E6586210E41E544146BA38EDA99E5041410D1F0EE41E5441FEE7D7EAA39E504144CA8909E41E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918496 - 351924
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000030000004B00000066666626A79E50415C8FC265041F5441C3F5285CB39E504152B81E551E1F5441C3F5283CA69E5041295C8F82191F5441333333939B9E50410AD7A3A0151F5441F6285CBF8F9E50419A999949111F544166666646859E5041295C8F720D1F54418FC2F518749E5041F6285C1F091F5441D7A3702D699E50418FC2F598081F5441D7A3704D5F9E504100000020081F5441C3F528FC619E5041A4703D0A0C1F5441666666E6659E50419A9999790C1F5441295C8FC2649E5041E17A14CE111F544166666676609E5041D7A370ED131F5441AE47E1FA5F9E5041B81E854B1B1F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000004AFCF2FBEA9E5041E86A0952EF1E5441A7F902EAE89E50417F74C550EE1E544124752B24E79E5041EC907274ED1E54419028385BE69E504136B5E412ED1E5441A7FF3243E59E5041DC28F48AEC1E5441DF74A27AE49E5041913E9629EC1E5441A0AA7C78D69E5041A0E87011E91E5441871ECCB1CA9E5041B58CB38FE61E54415B4A4E07C09E504125374E7DE41E5441D5CECECEAF9E5041DE4D9B12E41E54413C4FA141AD9E50419726A910E41E5441ACEBCAE4AC9E5041E6586210E41E544146BA38EDA99E5041410D1F0EE41E5441FEE7D7EAA39E504144CA8909E41E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>967876 - 87036
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C000000EC51B89E68B950417B14AE872AF75441D7A3709D73B950417B14AE072EF75441333333B374B9504185EB51582DF75441713D0A0776B9504152B81E6523F75441CDCCCCFC76B95041295C8FC223F75441EC51B80E7CB95041CDCCCCBCFDF65441713D0A8774B95041333333C3FDF65441B81E859B67B950410AD7A3D0FDF65441D7A370DD63B950413D0AD7D3FDF65441D7A3704D5DB950415C8FC2F527F754419A9999E960B950417B14AEC728F75441EC51B89E68B950417B14AE872AF75441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000A23EE6497AB950414B34BB000BF754416BA4780E7CB95041095AAABEFDF6544103A0C56478B9504159FEE9BFFDF65441713D0A8774B95041333333C3FDF65441B81E859B67B950410AD7A3D0FDF65441445D34C865B950413D6A33D2FDF6544176B225E163B950417B3C06D5FDF65441F19537605DB95041417106FA27F754419A9999E960B950417B14AEC728F75441EC51B89E68B950417B14AE872AF75441F43B382669B95041A929D0B22AF75441A49011EE71B95041EAF05C7E2DF75441062A51A373B950411938F8032EF75441EB33ACBA74B95041D5674F202DF75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>967876 - 265500
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C000000EC51B89E68B950417B14AE872AF75441D7A3709D73B950417B14AE072EF75441333333B374B9504185EB51582DF75441713D0A0776B9504152B81E6523F75441CDCCCCFC76B95041295C8FC223F75441EC51B80E7CB95041CDCCCCBCFDF65441713D0A8774B95041333333C3FDF65441B81E859B67B950410AD7A3D0FDF65441D7A370DD63B950413D0AD7D3FDF65441D7A3704D5DB950415C8FC2F527F754419A9999E960B950417B14AEC728F75441EC51B89E68B950417B14AE872AF75441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000A23EE6497AB950414B34BB000BF754416BA4780E7CB95041095AAABEFDF6544103A0C56478B9504159FEE9BFFDF65441713D0A8774B95041333333C3FDF65441B81E859B67B950410AD7A3D0FDF65441445D34C865B950413D6A33D2FDF6544176B225E163B950417B3C06D5FDF65441F19537605DB95041417106FA27F754419A9999E960B950417B14AEC728F75441EC51B89E68B950417B14AE872AF75441F43B382669B95041A929D0B22AF75441A49011EE71B95041EAF05C7E2DF75441062A51A373B950411938F8032EF75441EB33ACBA74B95041D5674F202DF75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>218592 - 1632728
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C0000005C8FC29576B950415C8FC2C5CD4E554148E17AB478B950417B14AEB7CD4E55415C8FC25584B95041B81E856BCD4E55416666662691B950417B14AE17CD4E55417B14AEA78AB95041F6285C4FB14E5541E17A146E88B9504100000040B14E554148E17AA480B950418FC2F508B14E55416666665675B950419A9999B9B04E55419A99994971B95041D7A3705DBF4E554114AE47016FB95041E17A149EC74E5541C3F5283C6DB95041295C8F02CE4E55415C8FC29576B950415C8FC2C5CD4E5541
+</a>
+
+<b>
+010600000001000000010300000001000000080000000D16E4CA88B950415FB58042B14E5541606B64D588B950415AB56755B14E554159C7D9C288B95041D2F23051B54E5541D341FBA184B95041B2ABFD5CCD4E55411544E59084B95041433C026ACD4E55416666662691B950417B14AE17CD4E55417B14AEA78AB95041F6285C4FB14E55410D16E4CA88B950415FB58042B14E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>218592 - 5275187
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C0000005C8FC29576B950415C8FC2C5CD4E554148E17AB478B950417B14AEB7CD4E55415C8FC25584B95041B81E856BCD4E55416666662691B950417B14AE17CD4E55417B14AEA78AB95041F6285C4FB14E5541E17A146E88B9504100000040B14E554148E17AA480B950418FC2F508B14E55416666665675B950419A9999B9B04E55419A99994971B95041D7A3705DBF4E554114AE47016FB95041E17A149EC74E5541C3F5283C6DB95041295C8F02CE4E55415C8FC29576B950415C8FC2C5CD4E5541
+</a>
+
+<b>
+010600000001000000010300000001000000080000000D16E4CA88B950415FB58042B14E5541606B64D588B950415AB56755B14E554159C7D9C288B95041D2F23051B54E5541D341FBA184B95041B2ABFD5CCD4E55411544E59084B95041433C026ACD4E55416666662691B950417B14AE17CD4E55417B14AEA78AB95041F6285C4FB14E55410D16E4CA88B950415FB58042B14E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>218780 - 1631916
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000009000000C3F528ECD9B8504185EB51F8834D55419A999969E1B85041AE47E1EA734D55411F85EB61ECB85041295C8F525F4D5541295C8FC2E5B850419A999959644D55418FC2F518E2B850410AD7A330674D5541333333D3DFB85041CDCCCC1C694D554166666656D8B85041666666767B4D55413D0AD793D5B850419A999939824D5541C3F528ECD9B8504185EB51F8834D5541
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000001F85EBC1B3B85041713D0A97994D55411F85EB71B2B85041000000409A4D554133333373ABB8504100000010B94D5541333333F3A8B85041A4703D4AC94D5541A4703DDAA9B85041C3F5288CCA4D554148E17AE4B2B85041C3F5286CCC4D5541000000A0BAB85041333333D3C64D5541333333E3C6B85041F6285CEFBD4D5541713D0A37D0B85041E17A144EBC4D5541295C8FA2D1B85041CDCCCC2CBB4D5541D7A3701DDBB85041295C8FB2A24D5541F6285C7FE4B85041666666768A4D5541666666F6E3B8504148E17A14894D554152BBD4C7D9B8504113C6C2EC844D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>218780 - 5274395
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000009000000C3F528ECD9B8504185EB51F8834D55419A999969E1B85041AE47E1EA734D55411F85EB61ECB85041295C8F525F4D5541295C8FC2E5B850419A999959644D55418FC2F518E2B850410AD7A330674D5541333333D3DFB85041CDCCCC1C694D554166666656D8B85041666666767B4D55413D0AD793D5B850419A999939824D5541C3F528ECD9B8504185EB51F8834D5541
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000001F85EBC1B3B85041713D0A97994D55411F85EB71B2B85041000000409A4D554133333373ABB8504100000010B94D5541333333F3A8B85041A4703D4AC94D5541A4703DDAA9B85041C3F5288CCA4D554148E17AE4B2B85041C3F5286CCC4D5541000000A0BAB85041333333D3C64D5541333333E3C6B85041F6285CEFBD4D5541713D0A37D0B85041E17A144EBC4D5541295C8FA2D1B85041CDCCCC2CBB4D5541D7A3701DDBB85041295C8FB2A24D5541F6285C7FE4B85041666666768A4D5541666666F6E3B8504148E17A14894D554152BBD4C7D9B8504113C6C2EC844D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>219464 - 200565
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000090000001F85EB819EBC504148E17A14AD4D5541E17A149EA2BC5041D7A370ED9D4D554114AE47C1A7BC5041000000208B4D554152B81E05A7BC5041713D0A278A4D55413D0AD773A5BC504148E17A248A4D554100000040A0BC5041000000809D4D55418FC2F5C89BBC50417B14AE37AE4D5541E17A14EE9CBC504100000040AE4D55411F85EB819EBC504148E17A14AD4D5541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000005EADF1DB9BBC5041F95531DCA54D5541F2E5CDCC99BC504136EFF428AE4D55415BDDF5C89BBC504125B0AD37AE4D55412CC4943F9DBC504136A00DBDA84D554100EDFF3FA0BC50410F38FF7F9D4D55411D866939A1BC5041A539FCDF994D55418ACAD673A5BC50414DCE7B248A4D554110F015B9A3BC5041A936C5218A4D5541241DF768A3BC504133B047218A4D554169A7384DA0BC50411B766018954D554185EB51089EBC50419A9999199D4D55415EADF1DB9BBC5041F95531DCA54D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>184518 - 243456
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000EC51B80E9E17514148E17AA4933255410AD7A3D099175141C3F5286C96325541AE47E18A951751410AD7A300993255418FC2F588921751413D0AD7D39A3255411F85EBB19A17514166666646A6325541CDCCCC1CA01751418FC2F528A33255415C8FC2C5A5175141EC51B89EAA325541CDCCCC7CA7175141EC51B8FEAB3255417B14AEA7AA175141F6285CDFA9325541D7A3709DB3175141F6285CAFA332554152B81EB5B717514133333313A1325541C3F5286CBC175141D7A3703D9E325541B81E85CBBC17514185EB51C896325541EC51B8EEBD1751410000000093325541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006A0000001EF3A4479F175141469EB3DC84325541333333039F1751413D0AD7E384325541D7A3706D9E175141E17A14DE8432554114AE47819D17514152B81E05853255415C8FC2C59B1751413333336385325541295C8FD299175141333333E385325541856716A197175141E7C81FC5863255413333332397175141B81E85FB863255413D0AD7D395175141EC51B87E87325541B81E852B951751413D0AD7D387325541F6285CBF9317514152B81E8588325541C3F5284C911751415C8FC2758A3255410AD7A3B08F1751410AD7A3F08B3255417B14AEF78E175141A4703D7A8C325541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>184518 - 318335
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000EC51B80E9E17514148E17AA4933255410AD7A3D099175141C3F5286C96325541AE47E18A951751410AD7A300993255418FC2F588921751413D0AD7D39A3255411F85EBB19A17514166666646A6325541CDCCCC1CA01751418FC2F528A33255415C8FC2C5A5175141EC51B89EAA325541CDCCCC7CA7175141EC51B8FEAB3255417B14AEA7AA175141F6285CDFA9325541D7A3709DB3175141F6285CAFA332554152B81EB5B717514133333313A1325541C3F5286CBC175141D7A3703D9E325541B81E85CBBC17514185EB51C896325541EC51B8EEBD1751410000000093325541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006A0000001EF3A4479F175141469EB3DC84325541333333039F1751413D0AD7E384325541D7A3706D9E175141E17A14DE8432554114AE47819D17514152B81E05853255415C8FC2C59B1751413333336385325541295C8FD299175141333333E385325541856716A197175141E7C81FC5863255413333332397175141B81E85FB863255413D0AD7D395175141EC51B87E87325541B81E852B951751413D0AD7D387325541F6285CBF9317514152B81E8588325541C3F5284C911751415C8FC2758A3255410AD7A3B08F1751410AD7A3F08B3255417B14AEF78E175141A4703D7A8C325541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>187860 - 190677
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000500000052B81E55F2D25041C3F5284C289154410AD7A39007D3504148E17A14EE905441713D0A0703D3504152B81E25EB90544148E17A24EED25041A4703D6A2691544152B81E55F2D25041C3F5284C28915441
+</a>
+
+<b>
+010600000001000000010300000001000000080000007372020703D35041F3D53425EB90544148E17A24EED25041A4703D6A26915441AC4A1F55F2D250417C64274C289154415723FAAEFAD25041A2D45B66119154415F0DF26802D350411300F536FC905441E194A39007D350417DB67A14EE9054414A00983807D35041576487DBED9054417372020703D35041F3D53425EB905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>187860 - 385322
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000500000052B81E55F2D25041C3F5284C289154410AD7A39007D3504148E17A14EE905441713D0A0703D3504152B81E25EB90544148E17A24EED25041A4703D6A2691544152B81E55F2D25041C3F5284C28915441
+</a>
+
+<b>
+010600000001000000010300000001000000080000007372020703D35041F3D53425EB90544148E17A24EED25041A4703D6A26915441AC4A1F55F2D250417C64274C289154415723FAAEFAD25041A2D45B66119154415F0DF26802D350411300F536FC905441E194A39007D350417DB67A14EE9054414A00983807D35041576487DBED9054417372020703D35041F3D53425EB905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>188833 - 56059
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000600000052B81E8534E75041713D0AD72C2E5541E17A14FE40E75041F6285C1F202E5541EC51B89E3AE750411F85EBA11C2E5541E17A140E38E75041C3F5281C1B2E5541713D0A172CE7504114AE47B1262E554152B81E8534E75041713D0AD72C2E5541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000EC51B89E3AE750411F85EBA11C2E554124B9140E38E75041B81A291C1B2E55410331E01A2CE7504152C213B4262E5541242F65672CE7504115DAE0EB262E554132E7958F2CE750413CCE2F09272E5541FC75AD8B34E75041F4855AD02C2E55417D8C5ABA35E750410D61BB9B2B2E55410D65ABE240E750412C0D631D202E554161645F793EE75041329E46BE1E2E5541EC51B89E3AE750411F85EBA11C2E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189022 - 7822
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000051000000333333F36FE650417B14AE27992C5541B81E85FB6AE65041D7A3704D9C2C55410000008061E65041713D0AD7A02C554114AE47D15BE650415C8FC235A32C554148E17AF457E650411F85EB11A52C55416666667656E650418FC2F5C8A52C5541B81E856B54E65041D7A3700DA72C55415C8FC2A557E6504100000020AD2C55413D0AD7535AE65041C3F5286CB12C554114AE47D15CE65041B81E851BB12C55410000008061E650419A999919AE2C55413333335369E650419A999959A92C5541CDCCCCDC6CE65041E17A14EEA72C5541D7A3700D70E6504166666646A62C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000004F9D43E684E650415AE8839B892C5541CB4447E684E65041FFCAC59B892C5541852155E684E65041DFB9BF9C892C554192BB5FE684E65041E5DF7E9D892C5541133B4FE784E65041EF303AA6892C5541C0050AEA84E65041781F10BC892C5541B17ABDEA84E65041E5B012C3892C5541DA8D61EB84E6504159707BC9892C5541DA8D61EB84E65041958A3ACC892C5541C5238E0685E6504189ACDAC98A2C55415E58D90D85E65041D2A4FBD68A2C55413A54801085E6504191D0C1DB8A2C5541307DDC1F85E65041010ECCF28A2C5541CC78813E85E65041D99CBA238B2C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189022 - 59517
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000051000000333333F36FE650417B14AE27992C5541B81E85FB6AE65041D7A3704D9C2C55410000008061E65041713D0AD7A02C554114AE47D15BE650415C8FC235A32C554148E17AF457E650411F85EB11A52C55416666667656E650418FC2F5C8A52C5541B81E856B54E65041D7A3700DA72C55415C8FC2A557E6504100000020AD2C55413D0AD7535AE65041C3F5286CB12C554114AE47D15CE65041B81E851BB12C55410000008061E650419A999919AE2C55413333335369E650419A999959A92C5541CDCCCCDC6CE65041E17A14EEA72C5541D7A3700D70E6504166666646A62C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000004F9D43E684E650415AE8839B892C5541CB4447E684E65041FFCAC59B892C5541852155E684E65041DFB9BF9C892C554192BB5FE684E65041E5DF7E9D892C5541133B4FE784E65041EF303AA6892C5541C0050AEA84E65041781F10BC892C5541B17ABDEA84E65041E5B012C3892C5541DA8D61EB84E6504159707BC9892C5541DA8D61EB84E65041958A3ACC892C5541C5238E0685E6504189ACDAC98A2C55415E58D90D85E65041D2A4FBD68A2C55413A54801085E6504191D0C1DB8A2C5541307DDC1F85E65041010ECCF28A2C5541CC78813E85E65041D99CBA238B2C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189363 - 3043792
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000019000000EC51B8BEB5E450417B14AEA7F72C55413D0AD7D3B6E450418FC2F538F52C554152B81E95B3E45041E17A14EEEC2C5541B81E856BB1E4504185EB5158E72C55415C8FC2F5B1E45041EC51B84EE12C554185EB51F8B0E4504100000020E12C55418FC2F578ABE45041295C8FE2E72C5541F6285C6FA5E45041295C8FA2EF2C554152B81E15A4E45041295C8F82F32C5541A4703D5AA4E450410AD7A390F72C55418FC2F5B8A3E450417B14AEB7FA2C5541C3F5284CA0E45041C3F5287C002D55419A9999399EE450411F85EBD1032D554148E17AF49DE45041666666B6052D5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000220000003E169FED9AE45041BA5FCBA9162D55415C8FC245A3E45041D7A3702D192D55416AAD8A29A3E450418A09D4E8192D554129ACAEABA8E45041DF1899131B2D55414082E62DB1E4504162C4FAF91E2D55416696A00FB5E450413B4E7D821C2D55414BE32755BAE45041F6D01A54152D55415F2AE8B7C4E45041115F2BAF052D5541B5380937C3E45041358EA6CF022D5541538A58EAC4E4504130D04DB5FE2C5541DA3B88F2CCE45041EADEB6D6EC2C554190F17A4CD0E45041F886024BE52C5541835350D1D4E450417838A1B1DC2C55419F9B03D2D1E45041E2F026DFDA2C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189363 - 3287368
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000019000000EC51B8BEB5E450417B14AEA7F72C55413D0AD7D3B6E450418FC2F538F52C554152B81E95B3E45041E17A14EEEC2C5541B81E856BB1E4504185EB5158E72C55415C8FC2F5B1E45041EC51B84EE12C554185EB51F8B0E4504100000020E12C55418FC2F578ABE45041295C8FE2E72C5541F6285C6FA5E45041295C8FA2EF2C554152B81E15A4E45041295C8F82F32C5541A4703D5AA4E450410AD7A390F72C55418FC2F5B8A3E450417B14AEB7FA2C5541C3F5284CA0E45041C3F5287C002D55419A9999399EE450411F85EBD1032D554148E17AF49DE45041666666B6052D5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000220000003E169FED9AE45041BA5FCBA9162D55415C8FC245A3E45041D7A3702D192D55416AAD8A29A3E450418A09D4E8192D554129ACAEABA8E45041DF1899131B2D55414082E62DB1E4504162C4FAF91E2D55416696A00FB5E450413B4E7D821C2D55414BE32755BAE45041F6D01A54152D55415F2AE8B7C4E45041115F2BAF052D5541B5380937C3E45041358EA6CF022D5541538A58EAC4E4504130D04DB5FE2C5541DA3B88F2CCE45041EADEB6D6EC2C554190F17A4CD0E45041F886024BE52C5541835350D1D4E450417838A1B1DC2C55419F9B03D2D1E45041E2F026DFDA2C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189369 - 56451
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000CDCCCCDC67E65041D7A3701DD32C554148E17AC46EE65041CDCCCC5CCE2C55413333330376E650418FC2F518CA2C5541C3F528DC79E650413D0AD7E3C82C55419A9999D97CE65041F6285CCFC82C554114AE47917FE65041295C8F02C82C5541713D0AF77AE6504114AE47D1BD2C554185EB51887AE65041B81E85DBBC2C554148E17AB477E650411F85EBC1BE2C5541666666B66EE65041D7A3705DC52C5541C3F528EC67E65041EC51B85ECA2C55413D0AD78364E65041CDCCCC2CCD2C5541A4703D6A5FE6504185EB51E8D02C55417B14AE975CE650413D0AD763D32C5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000C3F528DC79E650413D0AD7E3C82C55417A0E5FBD7CE6504128831DD0C82C554105A2B3CA7EE65041C6E4043DC82C554114AE47917FE65041295C8F02C82C55419FF8E6017BE65041BEC455E9BD2C5541A0C3B1F27AE650413BC633F0BD2C55411C82E8867AE6504170A2BCE2BC2C554106A1241377E65041C58B7738BF2C5541301FF9E974E6504182B4ECCEC02C55411F59B41973E65041A9390F24C22C5541DA4978AF68E65041114129D5C92C5541975EA8AE64E65041769B8D09CD2C55413D0AD78364E65041CDCCCC2CCD2C55411EE9EF0A64E650414DC74885CD2C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189439 - 160711
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000C3F5282C52EB504114AE4741518D54416666668633EB50411F85EBB12F8D54410000001032EB5041CDCCCCAC318D544114AE474130EB504152B81E75348D544114AE47F14AEB5041F6285C1F548D54415C8FC2D54EEB50419A999949528D5441C3F5282C52EB504114AE4741518D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000CA35689645EB5041F7F83413588D5441A4703D5A46EB5041C3F5282C578D54410AD7A37047EB50418FC2F528568D54414EFB47B049EB50419D0218DA548D5441DB6547F14AEB504107F45B1F548D5441ED1B4E0549EB5041AF69A0D7518D5441CB71484130EB504189A01F75348D54413725ECB12FEB50413CA0EC41358D5441756567662EEB50411FA69869378D5441059F5C3F2CEB5041D918ECD1398D5441B48570FD44EB5041C6EEADC7588D5441CA35689645EB5041F7F83413588D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189439 - 330749
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000C3F5282C52EB504114AE4741518D54416666668633EB50411F85EBB12F8D54410000001032EB5041CDCCCCAC318D544114AE474130EB504152B81E75348D544114AE47F14AEB5041F6285C1F548D54415C8FC2D54EEB50419A999949528D5441C3F5282C52EB504114AE4741518D5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000CA35689645EB5041F7F83413588D5441A4703D5A46EB5041C3F5282C578D54410AD7A37047EB50418FC2F528568D54414EFB47B049EB50419D0218DA548D5441DB6547F14AEB504107F45B1F548D5441ED1B4E0549EB5041AF69A0D7518D5441CB71484130EB504189A01F75348D54413725ECB12FEB50413CA0EC41358D5441756567662EEB50411FA69869378D5441059F5C3F2CEB5041D918ECD1398D5441B48570FD44EB5041C6EEADC7588D5441CA35689645EB5041F7F83413588D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>190729 - 3098863
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B00000048E17AB435E55041E17A14BEE18F5441CDCCCC6C32E5504148E17A44DB8F5441AE47E19A17E5504152B81E55A68F5441713D0A1712E550418FC2F5B8AE8F5441EC51B81E11E5504114AE4701B08F54411F85EB010CE5504152B81EC5B68F54413D0AD7931DE55041A4703DAAD98F5441E17A14DE2BE55041C3F5280CF68F5441EC51B83E2DE550415C8FC2A5F38F5441CDCCCC1C30E550415C8FC295ED8F544148E17AB435E55041E17A14BEE18F5441
+</a>
+
+<b>
+01060000000100000001030000000100000005000000F138289F1CE55041284149C4D78F5441ADD26F0E23E55041B78EC7F2D38F5441D7CB5AD412E5504179E81995B48F54411114579B0DE550412F5240F2B98F5441F138289F1CE55041284149C4D78F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>190729 - 3453064
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B00000048E17AB435E55041E17A14BEE18F5441CDCCCC6C32E5504148E17A44DB8F5441AE47E19A17E5504152B81E55A68F5441713D0A1712E550418FC2F5B8AE8F5441EC51B81E11E5504114AE4701B08F54411F85EB010CE5504152B81EC5B68F54413D0AD7931DE55041A4703DAAD98F5441E17A14DE2BE55041C3F5280CF68F5441EC51B83E2DE550415C8FC2A5F38F5441CDCCCC1C30E550415C8FC295ED8F544148E17AB435E55041E17A14BEE18F5441
+</a>
+
+<b>
+01060000000100000001030000000100000005000000F138289F1CE55041284149C4D78F5441ADD26F0E23E55041B78EC7F2D38F5441D7CB5AD412E5504179E81995B48F54411114579B0DE550412F5240F2B98F5441F138289F1CE55041284149C4D78F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191097 - 2916421
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000065000000D7A370CDE662514133333383275B5441AE47E14AE7625141AE47E1BA255B54411F85EBB1E7625141D7A370CD255B544148E17A64EA6251418FC2F5281A5B544114AE47F1EB625141F6285C1F125B5441B81E85CBEF62514152B81EA5FF5A54411F85EBC1F162514100000080F75A5441E17A148EF262514152B81E25F45A5441E17A14FEF36251417B14AE77F05A544185EB51B8F7625141713D0AF7E95A5441AE47E19AFA62514114AE4761E55A54413D0AD763FC62514166666666E25A5441333333B3FF6251413D0AD773DD5A5441D7A3700D00635141666666E6DB5A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000AE1D0350C5625141A4FAF81DB15A544186B9883CB06251412CDB48CEB35A54417105C6BEA46251410D14FE4DB55A544110B2FA739A6251418AAF1EB4B65A5441D66D2E429362514176D5ECB3B75A5441B10394108B6251412A36E4E6B85A544168C7D3FA856251410925E3B0B95A5441666666E68562514152B81EC5B95A5441CDCCCC9C8562514114AE4731BA5A54415C8FC2158562514185EB51F8BA5A54411F85EB718462514166666676BC5A54418FC2F5D88362514152B81E55BE5A544185EB512883625141EC51B8DEC15A5441713D0AF78162514166666626C95A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191097 - 2916437
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000065000000D7A370CDE662514133333383275B5441AE47E14AE7625141AE47E1BA255B54411F85EBB1E7625141D7A370CD255B544148E17A64EA6251418FC2F5281A5B544114AE47F1EB625141F6285C1F125B5441B81E85CBEF62514152B81EA5FF5A54411F85EBC1F162514100000080F75A5441E17A148EF262514152B81E25F45A5441E17A14FEF36251417B14AE77F05A544185EB51B8F7625141713D0AF7E95A5441AE47E19AFA62514114AE4761E55A54413D0AD763FC62514166666666E25A5441333333B3FF6251413D0AD773DD5A5441D7A3700D00635141666666E6DB5A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001200000068C7D3FA856251410925E3B0B95A5441B10394108B6251412A36E4E6B85A5441D66D2E429362514176D5ECB3B75A544110B2FA739A6251418AAF1EB4B65A54417105C6BEA46251410D14FE4DB55A544186B9883CB06251412CDB48CEB35A5441AE1D0350C5625141A4FAF81DB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191097 - 3801228
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000065000000D7A370CDE662514133333383275B5441AE47E14AE7625141AE47E1BA255B54411F85EBB1E7625141D7A370CD255B544148E17A64EA6251418FC2F5281A5B544114AE47F1EB625141F6285C1F125B5441B81E85CBEF62514152B81EA5FF5A54411F85EBC1F162514100000080F75A5441E17A148EF262514152B81E25F45A5441E17A14FEF36251417B14AE77F05A544185EB51B8F7625141713D0AF7E95A5441AE47E19AFA62514114AE4761E55A54413D0AD763FC62514166666666E25A5441333333B3FF6251413D0AD773DD5A5441D7A3700D00635141666666E6DB5A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001200000068C7D3FA856251410925E3B0B95A5441B10394108B6251412A36E4E6B85A5441D66D2E429362514176D5ECB3B75A544110B2FA739A6251418AAF1EB4B65A54417105C6BEA46251410D14FE4DB55A544186B9883CB06251412CDB48CEB35A5441AE1D0350C5625141A4FAF81DB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191097 - 3802584
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000065000000D7A370CDE662514133333383275B5441AE47E14AE7625141AE47E1BA255B54411F85EBB1E7625141D7A370CD255B544148E17A64EA6251418FC2F5281A5B544114AE47F1EB625141F6285C1F125B5441B81E85CBEF62514152B81EA5FF5A54411F85EBC1F162514100000080F75A5441E17A148EF262514152B81E25F45A5441E17A14FEF36251417B14AE77F05A544185EB51B8F7625141713D0AF7E95A5441AE47E19AFA62514114AE4761E55A54413D0AD763FC62514166666666E25A5441333333B3FF6251413D0AD773DD5A5441D7A3700D00635141666666E6DB5A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000AE1D0350C5625141A4FAF81DB15A544186B9883CB06251412CDB48CEB35A54417105C6BEA46251410D14FE4DB55A544110B2FA739A6251418AAF1EB4B65A5441D66D2E429362514176D5ECB3B75A5441B10394108B6251412A36E4E6B85A544168C7D3FA856251410925E3B0B95A5441666666E68562514152B81EC5B95A5441CDCCCC9C8562514114AE4731BA5A54415C8FC2158562514185EB51F8BA5A54411F85EB718462514166666676BC5A54418FC2F5D88362514152B81E55BE5A544185EB512883625141EC51B8DEC15A5441713D0AF78162514166666626C95A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191144 - 995717
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000020000001400000085EB51A80A665141A4703D7A815D5441A4703D2AF0655141F6285C6F815D54417B14AEA7D36551410AD7A3C0815D544148E17AE4B365514152B81ED5815D544148E17A24B565514166666696705D5441AE47E15AB065514114AE47F1725D5441713D0A87AE6551418FC2F5F8735D544114AE4781AC6551410AD7A3D0755D5441666666A6AB6551413D0AD7A3795D54415C8FC275A6655141000000D08E5D5441A4703D7AAA6551417B14AE278F5D5441CDCCCC2CB365514148E17A84915D5441E17A148EB86551419A9999A9925D544152B81EC5BF655141CDCCCCFC955D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001100000079C9BEE4B365514108E075D1815D5441DB817AA3B265514128BDA2EF875D5441242E5164B265514178D97C4B8C5D5441471D0628B2655141A63BA53D915D5441CDCCCC2CB365514148E17A84915D5441E17A148EB86551419A9999A9925D544152B81EC5BF655141CDCCCCFC955D544166666676C76551415C8FC2D5955D5441000000C0C5655141333333C3A05D544133333313FC6551413D0AD7C3A05D5441D7A3701DFD65514152B81E459E5D5441666666F600665141666666D6955D544185EB51A80A665141A4703D7A815D5441A4703D2AF0655141F6285C6F815D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191144 - 3639031
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000020000001400000085EB51A80A665141A4703D7A815D5441A4703D2AF0655141F6285C6F815D54417B14AEA7D36551410AD7A3C0815D544148E17AE4B365514152B81ED5815D544148E17A24B565514166666696705D5441AE47E15AB065514114AE47F1725D5441713D0A87AE6551418FC2F5F8735D544114AE4781AC6551410AD7A3D0755D5441666666A6AB6551413D0AD7A3795D54415C8FC275A6655141000000D08E5D5441A4703D7AAA6551417B14AE278F5D5441CDCCCC2CB365514148E17A84915D5441E17A148EB86551419A9999A9925D544152B81EC5BF655141CDCCCCFC955D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001100000079C9BEE4B365514108E075D1815D5441DB817AA3B265514128BDA2EF875D5441242E5164B265514178D97C4B8C5D5441471D0628B2655141A63BA53D915D5441CDCCCC2CB365514148E17A84915D5441E17A148EB86551419A9999A9925D544152B81EC5BF655141CDCCCCFC955D544166666676C76551415C8FC2D5955D5441000000C0C5655141333333C3A05D544133333313FC6551413D0AD7C3A05D5441D7A3701DFD65514152B81E459E5D5441666666F600665141666666D6955D544185EB51A80A665141A4703D7A815D5441A4703D2AF0655141F6285C6F815D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191269 - 48543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D0000008FC2F558CF6351418FC2F508C15B5441EC51B84ED0635141295C8FE2C25B5441295C8FB2D2635141B81E857BC75B5441A4703D5AD563514185EB5198CC5B5441713D0AC7CF63514100000080D15B54419A999909D3635141CDCCCC5CD35B5441AE47E1AAD563514133333343D55B54411F85EB81D9635141CDCCCCBCD85B5441CDCCCC3CDC63514114AE47D1DB5B5441713D0A47DE635141F6285C8FDE5B54419A9999D9E1635141D7A3701DE45B544152B81EB5E4635141CDCCCCECE75B5441000000D0E663514133333343EA5B54419A999929EB635141A4703D0AED5B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000008EA01EF5DF6351414DF11A2CE15B54412D3B8809E0635141CD68D84BE15B5441A50ED998E06351414418B12AE25B54417E9102BBEF63514160A907A1D55B5441440E7530EF635141EBA2EC8BD45B54411A0DC628EF6351418ECE5392D45B5441C4B7F033EF635141AC53BFA3D45B544195B00ED9E2635141E2F55BF3DE5B544135E569CAE2635141CCEFF5E0DE5B54414EC456CAE26351418DE005E1DE5B54418EA01EF5DF6351414DF11A2CE15B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191269 - 84107
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D0000008FC2F558CF6351418FC2F508C15B5441EC51B84ED0635141295C8FE2C25B5441295C8FB2D2635141B81E857BC75B5441A4703D5AD563514185EB5198CC5B5441713D0AC7CF63514100000080D15B54419A999909D3635141CDCCCC5CD35B5441AE47E1AAD563514133333343D55B54411F85EB81D9635141CDCCCCBCD85B5441CDCCCC3CDC63514114AE47D1DB5B5441713D0A47DE635141F6285C8FDE5B54419A9999D9E1635141D7A3701DE45B544152B81EB5E4635141CDCCCCECE75B5441000000D0E663514133333343EA5B54419A999929EB635141A4703D0AED5B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000008EA01EF5DF6351414DF11A2CE15B54412D3B8809E0635141CD68D84BE15B5441A50ED998E06351414418B12AE25B54417E9102BBEF63514160A907A1D55B5441440E7530EF635141EBA2EC8BD45B54411A0DC628EF6351418ECE5392D45B5441C4B7F033EF635141AC53BFA3D45B544195B00ED9E2635141E2F55BF3DE5B544135E569CAE2635141CCEFF5E0DE5B54414EC456CAE26351418DE005E1DE5B54418EA01EF5DF6351414DF11A2CE15B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191347 - 53315
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000006200000000000050BD61514114AE47C1DA5C5441C3F528CCB761514100000040D75C5441713D0A57B361514152B81E35D55C54411F85EB81B0615141D7A3700DD45C5441F6285C8FAE61514114AE4721D55C544148E17A24AC61514152B81E55D65C544166666696A9615141AE47E14AD65C5441AE47E16AA16151413D0AD793CD5C54418FC2F5889D6151415C8FC225C95C5441D7A3703D9861514114AE47C1C35C5441EC51B8EE94615141B81E85BBC05C5441C3F5280C92615141295C8FD2BD5C5441295C8FE28F61514152B81E25BA5C5441A4703D2A8E615141000000A0B35C5441 [...]
+</a>
+
+<b>
+0106000000020000000103000000010000001A000000F9BC5ECFBA615141D86E64CBF85C5441C6839056BB61514191F3F4AAF75C5441BBACDC6ABB6151412F4FDD6CF75C544130F7C570BB6151412CFBC75AF75C54411A166573BB6151415CF2C252F75C5441E2665582BB615141A2EE0F25F75C5441786F5A99B96151416C2C7A7FF75C5441C3F528DCB561514133333363F85C54414736105DB5615141F3DFE86FF85C54411D2B59DFB3615141ADA6A7C3F85C54414BCF0F8CB3615141C4F403DBF85C5441CD278AF0B36151416F203D33FB5C54410B0FAE7CB4615141E710CEFFFD5C5441253B6A38B5615141A98F8590025D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>126070 - 427396
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000120000000AD7A3900CBE504114AE47313E465541EC51B88EFDBD5041B81E85DB4246554185EB5138ECBD5041E17A14DE48465541CDCCCC3CE6BD5041B81E85AB4A46554133333393E6BD5041EC51B83E4C4655410AD7A390E5BD5041CDCCCC1C514655417B14AED7E0BD5041F6285C1F59465541713D0A2701BE50417B14AEE74A465541D7A370CD1FBE504185EB51E8454655418FC2F5485BBE5041F6285CAF44465541B81E852B5ABE5041C3F5283C3F46554148E17A045ABE5041B81E852B3E4655419A99996951BE5041E17A145E3C46554185EB51F843BE5041666666A63A465541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000D3BEA17908BE504135403D643F465541789B9633FFBD5041F1A6B4EB41465541251364A0F4BD504166E2F13545465541641F8722E6BD5041AB07694D4A465541AB9690E7E5BD504179A4A4854C46554117BF8CE6F2BD5041E10D5EB9474655410194B49EFDBD5041E61C12FD43465541A43637FF06BE5041EEA4121741465541274E90FF0EBE50411D32C8B53E465541730CC6D319BE504173F0AACE3C46554176F1A70F26BE5041D43FA44C3B4655414AF4EA8334BE504111EC5CE53A4655410988854A40BE5041863ECC9F3B465541EFD09D514ABE5041B2459BC53C465541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>128236 - 3174384
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000EC51B89E35BC504148E17A44BB4B5541F6285C9F4BBC5041A4703D8AB64B55419A9999894CBC504185EB5168B54B5541EC51B84E4CBC5041295C8F02AB4B5541333333234CBC5041D7A370FDA04B554148E17AE43DBC504114AE4701AB4B5541E17A14EE2FBC5041D7A3707DB44B55413D0AD7D323BC5041AE47E13ABC4B55413D0AD7C31FBC5041C3F5283CBF4B55419A99990920BC5041A4703DEABF4B5541EC51B89E35BC504148E17A44BB4B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000300C396D42BC5041802737D1A74B5541D1C2F6C13EBC5041639E9065AA4B5541EC00C4F942BC5041C7EA7FB6A94B55416F5D39914ABC50418FAF583EA84B55418717E5B04ABC50417940D985B44B554138B9E3B74ABC504134317C61B64B554108FCC64A4BBC50412FFB738BB64B554125CAFF724CBC5041072D3B63B54B55413D0D56034CBC50414633E022A14B55418A9F12044CBC504189965D22A14B5541898919034CBC50415EF2E2F4A04B5541973BC5B446BC50412295FCCEA44B5541300C396D42BC5041802737D1A74B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>128236 - 5277894
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000EC51B89E35BC504148E17A44BB4B5541F6285C9F4BBC5041A4703D8AB64B55419A9999894CBC504185EB5168B54B5541EC51B84E4CBC5041295C8F02AB4B5541333333234CBC5041D7A370FDA04B554148E17AE43DBC504114AE4701AB4B5541E17A14EE2FBC5041D7A3707DB44B55413D0AD7D323BC5041AE47E13ABC4B55413D0AD7C31FBC5041C3F5283CBF4B55419A99990920BC5041A4703DEABF4B5541EC51B89E35BC504148E17A44BB4B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000300C396D42BC5041802737D1A74B5541D1C2F6C13EBC5041639E9065AA4B5541EC00C4F942BC5041C7EA7FB6A94B55416F5D39914ABC50418FAF583EA84B55418717E5B04ABC50417940D985B44B554138B9E3B74ABC504134317C61B64B554108FCC64A4BBC50412FFB738BB64B554125CAFF724CBC5041072D3B63B54B55413D0D56034CBC50414633E022A14B55418A9F12044CBC504189965D22A14B5541898919034CBC50415EF2E2F4A04B5541973BC5B446BC50412295FCCEA44B5541300C396D42BC5041802737D1A74B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>128277 - 56402
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000004000000010300000001000000050000005C8FC2C5D6BD5041713D0A27624A5541E17A142EB8BD504100000080654A5541666666D6B7BD504148E17AA4694A55415C8FC205D7BD50417B14AE17664A55415C8FC2C5D6BD5041713D0A27624A5541010300000001000000090000000AD7A370B9BD5041B81E85DB564A5541295C8F62B9BD5041D7A3704D574A5541EC51B86EB8BD5041EC51B80E624A554148E17A94D6BD504114AE47A15E4A554166666636D6BD5041C3F5284C574A554148E17AE4D5BD5041000000F0534A5541666666B6D5BD50411F85EB01514A55411F85EB61BDBD50411F85EBD1534A55410AD7A3 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D1EA0EA0B8BD5041A4551C09624A55417336B9F4C4BD5041FEE739A2604A554126034492D6BD5041D45119755E4A5541AC502F67D6BD5041668D88195B4A5541EE2F0321D6BD5041D439976B564A554148E17AE4D5BD5041000000F0534A5541F05965BBD5BD504164013E53514A554174503DB4D5BD504147518B05514A5541A6D4BA7BBDBD5041F9A506D6534A5541ABFE236FB9BD5041CDC6A6E7564A55415E16346EB9BD504185D83BEF564A55415916126EB9BD5041F5EF4EF0564A5541D1EA0EA0B8BD5041A4551C09624A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>128767 - 383183
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000006000000C30000000AD7A380709D5041295C8F32D252554148E17A64719D5041333333B3C85255413D0AD753719D5041C3F5288CC7525541A4703D7A649D5041AE47E16AC55255417B14AE37679D5041295C8F92B65255418FC2F558749D50418FC2F5A8BA52554185EB5158829D5041F6285C0FBF52554152B81EB5849D504185EB5128B8525541666666A6869D50413D0AD7D3B1525541000000D08B9D5041C3F528ACA8525541D7A370FD949D5041A4703DAA975255417B14AE87999D504114AE472199525541666666869A9D5041D7A370CD965255413D0AD7939B9D5041A4703D3A97525541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006B000000DBDA0C32DC9C50412883E55334525541BBFEF06BDB9C5041CFB6C16835525541D6323E5CF19C5041C423B36437525541487AA617F49C5041B361E8C527525541E817446EF49C50413522DCE025525541895A5CB3F49C5041479D6F4F23525541A01A2D3DF79C50411ECFFC1E11525541ECC6D807F99C5041204CA127065255413D37E35DFB9C50413F384040F951554117F863AAFE9C5041B49786BAE5515541E9948DCCFF9C50416FB9DB18DF51554105A45C11019D504186849AE0CC51554177158EFF019D50414648B89EBC515541C3F5287C029D5041000000B0B7515541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>129848 - 1630647
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000713D0AD791BE5041A4703D0A31475541B81E85DB83BE504185EB51A833475541EC51B88E8ABE50418FC2F5B84D475541295C8F6290BE50415C8FC26564475541CDCCCC1C9CBE504185EB51F858475541C3F5280CA3BE50419A99992952475541295C8FC29EBE5041F6285C7F41475541000000209ABE5041CDCCCC7C2F475541713D0AD791BE5041A4703D0A31475541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000243D93C3A2BE5041C3AB780F51475541295C8FC29EBE5041F6285C7F41475541000000209ABE5041CDCCCC7C2F475541713D0AD791BE5041A4703D0A31475541B81E85DB83BE504185EB51A833475541EC51B88E8ABE50418FC2F5B84D47554104D39F2290BE50417EECFB6C63475541ECC2660790BE504179B7C1F8624755413CE1481290BE5041B21A5AEE62475541ECC2660790BE5041C4AF019A62475541B092AA7190BE5041837383366247554141EF362892BE5041128DA1EF60475541243D93C3A2BE5041C3AB780F51475541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>129848 - 5272592
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000713D0AD791BE5041A4703D0A31475541B81E85DB83BE504185EB51A833475541EC51B88E8ABE50418FC2F5B84D475541295C8F6290BE50415C8FC26564475541CDCCCC1C9CBE504185EB51F858475541C3F5280CA3BE50419A99992952475541295C8FC29EBE5041F6285C7F41475541000000209ABE5041CDCCCC7C2F475541713D0AD791BE5041A4703D0A31475541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000243D93C3A2BE5041C3AB780F51475541295C8FC29EBE5041F6285C7F41475541000000209ABE5041CDCCCC7C2F475541713D0AD791BE5041A4703D0A31475541B81E85DB83BE504185EB51A833475541EC51B88E8ABE50418FC2F5B84D47554104D39F2290BE50417EECFB6C63475541ECC2660790BE504179B7C1F8624755413CE1481290BE5041B21A5AEE62475541ECC2660790BE5041C4AF019A62475541B092AA7190BE5041837383366247554141EF362892BE5041128DA1EF60475541243D93C3A2BE5041C3AB780F51475541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>129881 - 1630222
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000009000000C3F5282C96BE50417B14AE9759485541AE47E14A98BE50410AD7A33078485541AE47E1CA98BE5041A4703DBA784855419A999969ADBE5041F6285C8F7B485541EC51B8FEAABE5041713D0A7759485541000000F0A8BE5041333333733C4855419A99996995BE5041000000203B48554152B81E1594BE5041AE47E10A3B485541C3F5282C96BE50417B14AE9759485541
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000001C6EC99796BE504152CBB360554855411C3B9C2295BE50415DB4981B3B485541D4049A3D95BE5041B851451D3B485541C9FD4A2095BE5041E53CB2163B48554152B81E1594BE5041AE47E10A3B48554154F1FC7294BE5041C8A6C9D74048554125A0C1AC94BE50419CD8018D434855417810402496BE50416DB8FEFC58485541CB80BE9B97BE5041401B6FE870485541AE47E14A98BE50410AD7A33078485541AE47E1CA98BE5041A4703DBA784855414D4278D998BE5041DF4CE73D784855411C6EC99796BE504152CBB36055485541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>129881 - 3172855
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000009000000C3F5282C96BE50417B14AE9759485541AE47E14A98BE50410AD7A33078485541AE47E1CA98BE5041A4703DBA784855419A999969ADBE5041F6285C8F7B485541EC51B8FEAABE5041713D0A7759485541000000F0A8BE5041333333733C4855419A99996995BE5041000000203B48554152B81E1594BE5041AE47E10A3B485541C3F5282C96BE50417B14AE9759485541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000D3049A3D95BE5041B851451D3B4855411C3B9C2295BE50415DB4981B3B4855410693135D98BE50410AEC06BC704855414D4278D998BE5041DF4CE73D78485541143AB9D398BE50410BB1DF6E784855414D4278D998BE5041EB0153CE784855419A999969ADBE5041F6285C8F7B485541EC51B8FEAABE5041713D0A7759485541000000F0A8BE5041333333733C4855419A99996995BE5041000000203B485541D3049A3D95BE5041B851451D3B485541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>129881 - 3562421
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000009000000C3F5282C96BE50417B14AE9759485541AE47E14A98BE50410AD7A33078485541AE47E1CA98BE5041A4703DBA784855419A999969ADBE5041F6285C8F7B485541EC51B8FEAABE5041713D0A7759485541000000F0A8BE5041333333733C4855419A99996995BE5041000000203B48554152B81E1594BE5041AE47E10A3B485541C3F5282C96BE50417B14AE9759485541
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000001C6EC99796BE504152CBB360554855411C3B9C2295BE50415DB4981B3B485541D4049A3D95BE5041B851451D3B485541C9FD4A2095BE5041E53CB2163B48554152B81E1594BE5041AE47E10A3B48554154F1FC7294BE5041C8A6C9D74048554125A0C1AC94BE50419CD8018D434855417810402496BE50416DB8FEFC58485541CB80BE9B97BE5041401B6FE870485541AE47E14A98BE50410AD7A33078485541AE47E1CA98BE5041A4703DBA784855414D4278D998BE5041DF4CE73D784855411C6EC99796BE504152CBB36055485541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>129881 - 3562424
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000009000000C3F5282C96BE50417B14AE9759485541AE47E14A98BE50410AD7A33078485541AE47E1CA98BE5041A4703DBA784855419A999969ADBE5041F6285C8F7B485541EC51B8FEAABE5041713D0A7759485541000000F0A8BE5041333333733C4855419A99996995BE5041000000203B48554152B81E1594BE5041AE47E10A3B485541C3F5282C96BE50417B14AE9759485541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000D3049A3D95BE5041B851451D3B4855411C3B9C2295BE50415DB4981B3B4855410693135D98BE50410AEC06BC704855414D4278D998BE5041DF4CE73D78485541143AB9D398BE50410BB1DF6E784855414D4278D998BE5041EB0153CE784855419A999969ADBE5041F6285C8F7B485541EC51B8FEAABE5041713D0A7759485541000000F0A8BE5041333333733C4855419A99996995BE5041000000203B485541D3049A3D95BE5041B851451D3B485541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>414 - 2975038
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E00000014AE4721856850411F85EB914E3255410AD7A300886850413D0AD7933E32554185EB51A88A6850410AD7A3D02F325541AE47E15A7F685041A4703DDA32325541295C8F0278685041C3F528FC343255418FC2F5A8616850419A9999793B325541C3F5284C5E685041000000703C3255415C8FC2C559685041000000A05532554114AE47D154685041E17A142E71325541A4703D3A6268504114AE47B1683255415C8FC25570685041295C8FB25F3255419A9999297268504185EB51885E325541713D0A778268504114AE47615D32554114AE4721856850411F85EB914E325541
+</a>
+
+<b>
+010600000001000000010300000001000000070000002136520C83685041ED1728DC31325541315311AF7F685041110EE2E440325541FF87F7F080685041E36B3377413255413C4C442287685041AC2410C3303255419BC2C211876850412CBD7FC730325541DED34519836850410E09ADD8313255412136520C83685041ED1728DC31325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>414 - 3654744
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E00000014AE4721856850411F85EB914E3255410AD7A300886850413D0AD7933E32554185EB51A88A6850410AD7A3D02F325541AE47E15A7F685041A4703DDA32325541295C8F0278685041C3F528FC343255418FC2F5A8616850419A9999793B325541C3F5284C5E685041000000703C3255415C8FC2C559685041000000A05532554114AE47D154685041E17A142E71325541A4703D3A6268504114AE47B1683255415C8FC25570685041295C8FB25F3255419A9999297268504185EB51885E325541713D0A778268504114AE47615D32554114AE4721856850411F85EB914E325541
+</a>
+
+<b>
+010600000001000000010300000001000000070000002136520C83685041ED1728DC31325541315311AF7F685041110EE2E440325541FF87F7F080685041E36B3377413255413C4C442287685041AC2410C3303255419BC2C211876850412CBD7FC730325541DED34519836850410E09ADD8313255412136520C83685041ED1728DC31325541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>880 - 2975626
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000E17A147E576950413D0AD7D34A2C55413D0AD7531E695041C3F5282C5B2C554114AE47311F69504152B81E955E2C554133333303246950417B14AE57672C5541713D0A6725695041E17A14BE672C55411F85EBF138695041F6285CAF5D2C5541333333C3486950413D0AD783562C5541C3F5281C586950413D0AD7834F2C55418FC2F5A858695041713D0A274E2C5541E17A147E576950413D0AD7D34A2C5541
+</a>
+
+<b>
+010600000001000000010300000001000000060000005F9A1A8F22695041C9216CB3642C55411A94BBFA43695041BD4B3F65552C554128356DCA42695041377CEEA6532C5541E48884C73F695041CAECF034542C5541B7156C3E21695041B11F874F622C55415F9A1A8F22695041C9216CB3642C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>880 - 3659069
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000E17A147E576950413D0AD7D34A2C55413D0AD7531E695041C3F5282C5B2C554114AE47311F69504152B81E955E2C554133333303246950417B14AE57672C5541713D0A6725695041E17A14BE672C55411F85EBF138695041F6285CAF5D2C5541333333C3486950413D0AD783562C5541C3F5281C586950413D0AD7834F2C55418FC2F5A858695041713D0A274E2C5541E17A147E576950413D0AD7D34A2C5541
+</a>
+
+<b>
+010600000001000000010300000001000000060000005F9A1A8F22695041C9216CB3642C55411A94BBFA43695041BD4B3F65552C554128356DCA42695041377CEEA6532C5541E48884C73F695041CAECF034542C5541B7156C3E21695041B11F874F622C55415F9A1A8F22695041C9216CB3642C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>4283 - 3125175
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A000000A4703DBAFC7350418FC2F5A8DFFF5441CDCCCC7CFD7350413D0AD7B3DAFF54417B14AE970174504100000090DBFF544114AE4731047450410AD7A390D5FF5441B81E856B0674504114AE4761D0FF54410AD7A3200874504166666656CDFF54419A9999090B7450417B14AEA7C9FF54417B14AEB70E7450410AD7A360C5FF54418FC2F5681274504133333343C1FF5441F6285C0F1674504114AE4771BDFF5441AE47E18A16745041000000F0BCFF544185EB51480A745041D7A3706DB2FF5441A4703D1A03745041EC51B8DEC0FF544152B81EC50174504166666626C3FF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000009A9999090B7450417B14AEA7C9FF54410AD7A3200874504166666656CDFF5441B81E856B0674504114AE4761D0FF544114AE4731047450410AD7A390D5FF54417B14AE970174504100000090DBFF5441CDCCCC7CFD7350413D0AD7B3DAFF5441024E4C8BFC7350417D96887DE1FF54411F40EDC2FB7350412753A244E9FF54411FE76A38FB7350413E8705A3EEFF544185EB51F8FA735041F6285C1FF1FF5441B81E85DBFA735041E17A145EF3FF5441F6285CCFFA735041EC51B84EF4FF544114AE47C1FA73504148E17A84F6FF544185EB51B8FA735041713D0AF7F7FF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>4283 - 5311234
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A000000A4703DBAFC7350418FC2F5A8DFFF5441CDCCCC7CFD7350413D0AD7B3DAFF54417B14AE970174504100000090DBFF544114AE4731047450410AD7A390D5FF5441B81E856B0674504114AE4761D0FF54410AD7A3200874504166666656CDFF54419A9999090B7450417B14AEA7C9FF54417B14AEB70E7450410AD7A360C5FF54418FC2F5681274504133333343C1FF5441F6285C0F1674504114AE4771BDFF5441AE47E18A16745041000000F0BCFF544185EB51480A745041D7A3706DB2FF5441A4703D1A03745041EC51B8DEC0FF544152B81EC50174504166666626C3FF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000009A9999090B7450417B14AEA7C9FF54410AD7A3200874504166666656CDFF5441B81E856B0674504114AE4761D0FF544114AE4731047450410AD7A390D5FF54417B14AE970174504100000090DBFF5441CDCCCC7CFD7350413D0AD7B3DAFF5441024E4C8BFC7350417D96887DE1FF54411F40EDC2FB7350412753A244E9FF54411FE76A38FB7350413E8705A3EEFF544185EB51F8FA735041F6285C1FF1FF5441B81E85DBFA735041E17A145EF3FF5441F6285CCFFA735041EC51B84EF4FF544114AE47C1FA73504148E17A84F6FF544185EB51B8FA735041713D0AF7F7FF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>4291 - 1686462
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000200000015000000E17A144E61645041A4703D7ACD0455417B14AE775C645041AE47E1EADA045541A4703D9A506450418FC2F588D70455410AD7A3804C6450418FC2F5C8E2045541666666E64464504152B81E35E004554114AE4711396450418FC2F548DC04554185EB51382B64504148E17A2403055541E17A149E3E645041A4703DBA090555415C8FC2654A645041A4703DBA0D05554152B81E5557645041EC51B81E120555411F85EBC1636450419A999929EF045541C3F5289C69645041333333B3DE0455418FC2F5386F6450410AD7A3B0CE045541B81E85FB686450415C8FC215CD045541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000005C8FC2654A645041A4703DBA0D05554152B81E5557645041EC51B81E120555411F85EBC1636450419A999929EF045541C3F5289C69645041333333B3DE0455418FC2F5386F6450410AD7A3B0CE045541B81E85FB686450415C8FC215CD04554152B81EC56864504148E17A74D30455410AD7A3C063645041C3F5289CD20455411F85EB41646450410AD7A380D0045541A4703D9A646450419A9999E9CE0455418FC2F5A864645041E17A14BECD0455413D0AD7036364504133333393CD045541E17A144E61645041A4703D7ACD0455417B14AE775C645041AE47E1EADA045541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>4291 - 3402280
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000200000015000000E17A144E61645041A4703D7ACD0455417B14AE775C645041AE47E1EADA045541A4703D9A506450418FC2F588D70455410AD7A3804C6450418FC2F5C8E2045541666666E64464504152B81E35E004554114AE4711396450418FC2F548DC04554185EB51382B64504148E17A2403055541E17A149E3E645041A4703DBA090555415C8FC2654A645041A4703DBA0D05554152B81E5557645041EC51B81E120555411F85EBC1636450419A999929EF045541C3F5289C69645041333333B3DE0455418FC2F5386F6450410AD7A3B0CE045541B81E85FB686450415C8FC215CD045541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000005C8FC2654A645041A4703DBA0D05554152B81E5557645041EC51B81E120555411F85EBC1636450419A999929EF045541C3F5289C69645041333333B3DE0455418FC2F5386F6450410AD7A3B0CE045541B81E85FB686450415C8FC215CD04554152B81EC56864504148E17A74D30455410AD7A3C063645041C3F5289CD20455411F85EB41646450410AD7A380D0045541A4703D9A646450419A9999E9CE0455418FC2F5A864645041E17A14BECD0455413D0AD7036364504133333393CD045541E17A144E61645041A4703D7ACD0455417B14AE775C645041AE47E1EADA045541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35801 - 2959918
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000011000000C3F5285C608C5041C3F5284C76065541EC51B8BE528C5041F6285CEF7D0655411F85EB81528C5041333333337F06554166666636588C5041A4703D2A86065541333333D35F8C5041C3F5288C8B06554148E17AB4608C5041B81E852B8C065541EC51B8CE5F8C504152B81E758F06554114AE4771608C5041B81E85DB900655417B14AE57688C5041A4703DAA9406554100000030768C5041A4703D4A9A0655410AD7A370778C504185EB51B899065541EC51B8DE7C8C50410AD7A3108A0655417B14AE47828C50419A9999797A065541CDCCCCBC818C50418FC2F50879065541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000C2B3BF19748C504156B0EBB596065541737BD6F0758C50411CEB00539706554137B24608788C504109F12403980655410D3CEB27788C504175A0EAA79706554174915E5F7C8C5041408DCC7F8B06554127327A33818C50417F8C88957D0655417B14AE47828C50419A9999797A065541CDCCCCBC818C50418FC2F508790655415AB36D80788C5041A7B22DC673065541EC51B89E6F8C5041713D0AB76E06554114AE47E16D8C504152B81EB56E065541EA044C125E8C50413A98CE94770655413C7459B2548C5041CB3716D77C065541EC51B8BE528C5041F6285CEF7D065541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35801 - 3620000
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000011000000C3F5285C608C5041C3F5284C76065541EC51B8BE528C5041F6285CEF7D0655411F85EB81528C5041333333337F06554166666636588C5041A4703D2A86065541333333D35F8C5041C3F5288C8B06554148E17AB4608C5041B81E852B8C065541EC51B8CE5F8C504152B81E758F06554114AE4771608C5041B81E85DB900655417B14AE57688C5041A4703DAA9406554100000030768C5041A4703D4A9A0655410AD7A370778C504185EB51B899065541EC51B8DE7C8C50410AD7A3108A0655417B14AE47828C50419A9999797A065541CDCCCCBC818C50418FC2F50879065541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000C2B3BF19748C504156B0EBB596065541737BD6F0758C50411CEB00539706554137B24608788C504109F12403980655410D3CEB27788C504175A0EAA79706554174915E5F7C8C5041408DCC7F8B06554127327A33818C50417F8C88957D0655417B14AE47828C50419A9999797A065541CDCCCCBC818C50418FC2F508790655415AB36D80788C5041A7B22DC673065541EC51B89E6F8C5041713D0AB76E06554114AE47E16D8C504152B81EB56E065541EA044C125E8C50413A98CE94770655413C7459B2548C5041CB3716D77C065541EC51B8BE528C5041F6285CEF7D065541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35849 - 3106543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000AE47E16A308E50417B14AE17C60855415C8FC275308E50415C8FC2E5CA0855419A999979308E5041CDCCCC2CCD08554152B81E85308E50411F85EB11D3085541D7A3708D308E504185EB5148D6085541295C8FA2308E5041713D0A47E0085541333333834E8E50413D0AD7A3E4085541D7A3702D6F8E50410AD7A370E90855413D0AD7036E8E5041AE47E14ADF08554148E17AA46D8E50415C8FC205DC0855415C8FC2F56C8E50419A999909D60855411F85EBB16C8E5041A4703DBAD3085541333333236C8E504185EB51D8CE08554185EB51E84C8E504148E17A44CA085541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000009E0BBF794D8E5041D5B1CB59CA0855410C148A79428E5041B750D5B3C808554199BD1259378E5041B1CAAC1BC7085541AE47E16A308E50417B14AE17C6085541969BCD77308E5041F9A4FA1BCC08554149AC8485308E50415C2E4939D3085541A50EA896308E504181E3E8A4DA085541A8D85F67348E50419DA7D02FDB085541E6C04DB83D8E5041B0BEFD82DC0855411A4CD287488E504118E3930CDE085541555C752B498E504151CFBB80DB08554116915F874A8E504102A6D216D60855419E0BBF794D8E5041D5B1CB59CA085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35849 - 3310590
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000AE47E16A308E50417B14AE17C60855415C8FC275308E50415C8FC2E5CA0855419A999979308E5041CDCCCC2CCD08554152B81E85308E50411F85EB11D3085541D7A3708D308E504185EB5148D6085541295C8FA2308E5041713D0A47E0085541333333834E8E50413D0AD7A3E4085541D7A3702D6F8E50410AD7A370E90855413D0AD7036E8E5041AE47E14ADF08554148E17AA46D8E50415C8FC205DC0855415C8FC2F56C8E50419A999909D60855411F85EBB16C8E5041A4703DBAD3085541333333236C8E504185EB51D8CE08554185EB51E84C8E504148E17A44CA085541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000009E0BBF794D8E5041D5B1CB59CA0855410C148A79428E5041B750D5B3C808554199BD1259378E5041B1CAAC1BC7085541AE47E16A308E50417B14AE17C6085541969BCD77308E5041F9A4FA1BCC08554149AC8485308E50415C2E4939D3085541A50EA896308E504181E3E8A4DA085541A8D85F67348E50419DA7D02FDB085541E6C04DB83D8E5041B0BEFD82DC0855411A4CD287488E504118E3930CDE085541555C752B498E504151CFBB80DB08554116915F874A8E504102A6D216D60855419E0BBF794D8E5041D5B1CB59CA085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>36041 - 3160132
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000A4703D3A9E8A50417B14AE775103554148E17AD49D8A504148E17AA454035541A4703D2A9D8A5041A4703DFA59035541E17A148E9E8A5041AE47E15A690355415C8FC2859F8A5041EC51B8BE6803554152B81E65A38A5041D7A370DD750355410AD7A3A0A18A5041AE47E14A770355419A9999E9A28A5041D7A3701D7D035541295C8FF2AA8A50410AD7A3A08F03554152B81EE5AF8A50410AD7A3309C03554185EB5148B38A5041B81E85CBA403554166666696B88A50413D0AD723A60355415C8FC265B48A50417B14AE779A03554133333393B28A50417B14AE5795035541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000009A9999E9A28A5041D7A3701D7D035541295C8FF2AA8A50410AD7A3A08F035541CAA9B69CB28A5041BF70A31BA3035541216883FCB68A5041952DD8B4A10355418B154401B58A504184AD40489C03554149E68A88B28A504121F65131950355411A8421ACAF8A5041F6DA25FB8A0355419E710E76AF8A504102EBCF358A035541FA442041AB8A50415D909C6C7C035541BED0EED9A78A504103FAAA717103554165F8F947A68A50416F75B32B6C03554112FFA0E0A58A5041918401B66A035541165BCED1A48A504190943C516603554117BFC613A48A504147935E8063035541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>36041 - 3298375
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000A4703D3A9E8A50417B14AE775103554148E17AD49D8A504148E17AA454035541A4703D2A9D8A5041A4703DFA59035541E17A148E9E8A5041AE47E15A690355415C8FC2859F8A5041EC51B8BE6803554152B81E65A38A5041D7A370DD750355410AD7A3A0A18A5041AE47E14A770355419A9999E9A28A5041D7A3701D7D035541295C8FF2AA8A50410AD7A3A08F03554152B81EE5AF8A50410AD7A3309C03554185EB5148B38A5041B81E85CBA403554166666696B88A50413D0AD723A60355415C8FC265B48A50417B14AE779A03554133333393B28A50417B14AE5795035541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000009A9999E9A28A5041D7A3701D7D035541295C8FF2AA8A50410AD7A3A08F035541CAA9B69CB28A5041BF70A31BA3035541216883FCB68A5041952DD8B4A10355418B154401B58A504184AD40489C03554149E68A88B28A504121F65131950355411A8421ACAF8A5041F6DA25FB8A0355419E710E76AF8A504102EBCF358A035541FA442041AB8A50415D909C6C7C035541BED0EED9A78A504103FAAA717103554165F8F947A68A50416F75B32B6C03554112FFA0E0A58A5041918401B66A035541165BCED1A48A504190943C516603554117BFC613A48A504147935E8063035541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37014 - 2913804
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000180000005C8FC265899F50419A9999C9FD145541CDCCCC1C8F9F5041333333E3FF1455410AD7A3F0939F504152B81EC50015554114AE4751A79F50411F85EBB102155541F6285CDFA79F5041F6285C7F01155541C3F5283C7B9F504133333373F51455410AD7A3607A9F50419A9999F9F514554185EB51A8789F5041AE47E18AF5145541A4703DBA739F504148E17A44F4145541AE47E1EA6F9F5041B81E859BF2145541E17A140E679F504185EB5198EF14554148E17A14609F5041AE47E14AED145541B81E850B559F50415C8FC255E8145541F6285C1F4F9F5041295C8FF2E6145541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000D7A3706D9A9F50418FC2F588131555413D0AD753AA9F50418FC2F5080515554114AE4751A79F50411F85EBB102155541F92002C1A29F5041448DDC3D02155541F4EA3E5C999F504113B2F74E01155541BEC131EE919F5041FE681367001555415726C7D38E9F504186BB9AEAFF14554144A61CC5899F5041CB2FA3ECFD14554152142BB97B9F5041E5D0D93EFA1455414F2E3C95789F5041C632388DF9145541F79A99E9789F50417EE131A2F81455414E3D4C5C689F50415BFFE298F31455415C930B84609F5041E8E48515F11455415F219FE2599F5041399371EDED145541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37014 - 3800659
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000180000005C8FC265899F50419A9999C9FD145541CDCCCC1C8F9F5041333333E3FF1455410AD7A3F0939F504152B81EC50015554114AE4751A79F50411F85EBB102155541F6285CDFA79F5041F6285C7F01155541C3F5283C7B9F504133333373F51455410AD7A3607A9F50419A9999F9F514554185EB51A8789F5041AE47E18AF5145541A4703DBA739F504148E17A44F4145541AE47E1EA6F9F5041B81E859BF2145541E17A140E679F504185EB5198EF14554148E17A14609F5041AE47E14AED145541B81E850B559F50415C8FC255E8145541F6285C1F4F9F5041295C8FF2E6145541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000D7A3706D9A9F50418FC2F588131555413D0AD753AA9F50418FC2F5080515554114AE4751A79F50411F85EBB102155541F92002C1A29F5041448DDC3D02155541F4EA3E5C999F504113B2F74E01155541BEC131EE919F5041FE681367001555415726C7D38E9F504186BB9AEAFF14554144A61CC5899F5041CB2FA3ECFD14554152142BB97B9F5041E5D0D93EFA1455414F2E3C95789F5041C632388DF9145541F79A99E9789F50417EE131A2F81455414E3D4C5C689F50415BFFE298F31455415C930B84609F5041E8E48515F11455415F219FE2599F5041399371EDED145541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37200 - 2998217
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B00000014AE4741259F5041C3F5282CD0105541AE47E16A0B9F504185EB51E8CB105541295C8F52EF9E504152B81E35C71055419A999959EE9E5041CDCCCCDCC810554152B81E85ED9E50417B14AE47CA1055418FC2F518F29E504185EB5148CC1055418FC2F5B8F69E5041666666F6CC1055410AD7A350FC9E5041295C8FF2CE10554148E17AE4029F5041E17A145ED2105541B81E85AB249F504133333303D610554114AE4741259F5041C3F5282CD0105541
+</a>
+
+<b>
+01060000000100000001030000000100000017000000FBD9993AEE9E50417BBB26D4C810554152B81E85ED9E50417B14AE47CA1055418FC2F518F29E504185EB5148CC1055418FC2F5B8F69E5041666666F6CC1055410AD7A350FC9E5041295C8FF2CE105541FD21EB46019F504111000C87D110554148E17AE4029F5041E17A145ED210554167F7360F079F5041AC8C31D1D210554107FA0D7D059F5041B5B76BE7D1105541A9D4DD24049F5041370012D4D0105541E3DC0C99029F504100892F39D0105541FD521252019F504141AD82AFCF105541B0F676D7FF9E5041D9DAE17BCF105541FAC73A29FE9E50413A915EADCE105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37200 - 3379511
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B00000014AE4741259F5041C3F5282CD0105541AE47E16A0B9F504185EB51E8CB105541295C8F52EF9E504152B81E35C71055419A999959EE9E5041CDCCCCDCC810554152B81E85ED9E50417B14AE47CA1055418FC2F518F29E504185EB5148CC1055418FC2F5B8F69E5041666666F6CC1055410AD7A350FC9E5041295C8FF2CE10554148E17AE4029F5041E17A145ED2105541B81E85AB249F504133333303D610554114AE4741259F5041C3F5282CD0105541
+</a>
+
+<b>
+01060000000100000001030000000100000017000000FBD9993AEE9E50417BBB26D4C810554152B81E85ED9E50417B14AE47CA1055418FC2F518F29E504185EB5148CC1055418FC2F5B8F69E5041666666F6CC1055410AD7A350FC9E5041295C8FF2CE105541FD21EB46019F504111000C87D110554148E17AE4029F5041E17A145ED210554167F7360F079F5041AC8C31D1D210554107FA0D7D059F5041B5B76BE7D1105541A9D4DD24049F5041370012D4D0105541E3DC0C99029F504100892F39D0105541FD521252019F504141AD82AFCF105541B0F676D7FF9E5041D9DAE17BCF105541FAC73A29FE9E50413A915EADCE105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37234 - 3073768
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000E000000F6285C1FBE9F50410AD7A39000115541B81E852BB99F5041F6285CEFFD1055419A9999E9AE9F5041000000602F1155418FC2F548B49F50413D0AD72330115541000000E0B99F5041F6285CEF30115541C3F528DCBB9F504185EB5138311155415C8FC2D5D39F504114AE47A134115541AE47E15AD79F504114AE472135115541C3F5281CE09F5041666666E60A11554152B81EA5D59F5041AE47E1DA0B115541295C8FA2CA9F504152B81E350711554185EB5128C59F5041C3F5284C041155410AD7A350C39F50411F85EB5103115541F6285C1FBE9F50410AD7A39000115541
+</a>
+
+<b>
+0106000000010000000103000000010000001800000093B4292BB99F5041ADC414F1FD10554117A335D6B09F50415566AD192611554185152B4AB09F5041BD0BA9BC28115541FC8BE9F7AF9F5041BC0320492A115541C79563EAAE9F50411368445F2F1155412381B951B49F5041322416253011554108498295B89F5041FFAE5BC0301155413EB251EABD9F5041A3092883311155413C6B6AAAC59F50414C7F5B9D321155410AD9906CCC9F504123727093331155418BBBE66DD49F50414317E4B6341155411053A05ED79F504173F9CF21351155411D24AB19E09F50411877D6E40A115541457E1E18D99F504188EF4C8A0B115541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37234 - 3370448
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000E000000F6285C1FBE9F50410AD7A39000115541B81E852BB99F5041F6285CEFFD1055419A9999E9AE9F5041000000602F1155418FC2F548B49F50413D0AD72330115541000000E0B99F5041F6285CEF30115541C3F528DCBB9F504185EB5138311155415C8FC2D5D39F504114AE47A134115541AE47E15AD79F504114AE472135115541C3F5281CE09F5041666666E60A11554152B81EA5D59F5041AE47E1DA0B115541295C8FA2CA9F504152B81E350711554185EB5128C59F5041C3F5284C041155410AD7A350C39F50411F85EB5103115541F6285C1FBE9F50410AD7A39000115541
+</a>
+
+<b>
+0106000000010000000103000000010000001800000093B4292BB99F5041ADC414F1FD10554117A335D6B09F50415566AD192611554185152B4AB09F5041BD0BA9BC28115541FC8BE9F7AF9F5041BC0320492A115541C79563EAAE9F50411368445F2F1155412381B951B49F5041322416253011554108498295B89F5041FFAE5BC0301155413EB251EABD9F5041A3092883311155413C6B6AAAC59F50414C7F5B9D321155410AD9906CCC9F504123727093331155418BBBE66DD49F50414317E4B6341155411053A05ED79F504173F9CF21351155411D24AB19E09F50411877D6E40A115541457E1E18D99F504188EF4C8A0B115541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37397 - 1732632
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000120000003D0AD763E5A150418FC2F5982BF7544152B81E65E5A15041A4703D8A2AF7544152B81E85E4A15041EC51B8EE29F754415C8FC245DAA1504114AE47512EF75441713D0A57CAA15041295C8F2235F75441D7A3701DC6A15041B81E85BB36F7544148E17A24BCA15041666666863BF75441C3F5286CB7A150419A99998975F754411F85EB41BEA15041EC51B89E75F75441CDCCCC9CD4A15041000000E073F754415C8FC265D7A1504185EB51A873F75441A4703D5AD9A1504114AE478173F75441EC51B80EDCA150417B14AE3767F7544133333383DEA150419A9999E95AF75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000ECDE4ACFE4A1504122D2C9BE36F7544137203963DAA15041F68086A645F754410DFD68DFD7A15041180BEE2E73F7544178DABBBED7A15041B32C61A173F75441777486BDD7A15041722D78B673F75441A4703D5AD9A1504114AE478173F75441EC51B80EDCA150417B14AE3767F7544133333383DEA150419A9999E95AF754419A999959E2A150413D0AD77347F75441E17A148EE4A150419A99994939F75441ECDE4ACFE4A1504122D2C9BE36F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>37397 - 3481885
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000120000003D0AD763E5A150418FC2F5982BF7544152B81E65E5A15041A4703D8A2AF7544152B81E85E4A15041EC51B8EE29F754415C8FC245DAA1504114AE47512EF75441713D0A57CAA15041295C8F2235F75441D7A3701DC6A15041B81E85BB36F7544148E17A24BCA15041666666863BF75441C3F5286CB7A150419A99998975F754411F85EB41BEA15041EC51B89E75F75441CDCCCC9CD4A15041000000E073F754415C8FC265D7A1504185EB51A873F75441A4703D5AD9A1504114AE478173F75441EC51B80EDCA150417B14AE3767F7544133333383DEA150419A9999E95AF75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000ECDE4ACFE4A1504122D2C9BE36F7544137203963DAA15041F68086A645F754410DFD68DFD7A15041180BEE2E73F7544178DABBBED7A15041B32C61A173F75441777486BDD7A15041722D78B673F75441A4703D5AD9A1504114AE478173F75441EC51B80EDCA150417B14AE3767F7544133333383DEA150419A9999E95AF754419A999959E2A150413D0AD77347F75441E17A148EE4A150419A99994939F75441ECDE4ACFE4A1504122D2C9BE36F75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>38230 - 193329
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F000000CDCCCCFCCD855041EC51B81EB0055541C3F5285CD48550415C8FC2A5B3055541C3F528BCD685504114AE4711B40555410AD7A330D985504185EB5168B30555410AD7A360DA855041333333A3B1055541B81E850BD1855041B81E858BA9055541D7A3704DC7855041713D0A17A1055541F6285C9FB6855041333333A392055541AE47E1FAB38550418FC2F528900555418FC2F558AE85504114AE476198055541713D0AC7B0855041CDCCCCDC99055541A4703D8ABB85504152B81E35A10555411F85EB81C685504148E17A24A905554133333383CB855041C3F5285CAF055541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000AD55EC81C68550415CE47B24A9055541461EF994C9855041A5EC33F6AC05554104513283CB855041C8DC275CAF055541B9F9CCFCCD8550414635B81EB005554155FD830BD18550419323848BA90555419A207F9BCC855041B11BA0B1A5055541A7F2704DC7855041B0FA0A17A105554138606D57BE8550415A81605399055541F6285C9FB6855041333333A392055541AE47E1FAB38550418FC2F528900555412940F658AE855041C6F646619805554156F7AD6FAF855041FB65520B99055541713D0AC7B0855041CDCCCCDC99055541A4703D8ABB85504152B81E35A1055541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>38230 - 432384
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F000000CDCCCCFCCD855041EC51B81EB0055541C3F5285CD48550415C8FC2A5B3055541C3F528BCD685504114AE4711B40555410AD7A330D985504185EB5168B30555410AD7A360DA855041333333A3B1055541B81E850BD1855041B81E858BA9055541D7A3704DC7855041713D0A17A1055541F6285C9FB6855041333333A392055541AE47E1FAB38550418FC2F528900555418FC2F558AE85504114AE476198055541713D0AC7B0855041CDCCCCDC99055541A4703D8ABB85504152B81E35A10555411F85EB81C685504148E17A24A905554133333383CB855041C3F5285CAF055541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000AD55EC81C68550415CE47B24A9055541461EF994C9855041A5EC33F6AC05554104513283CB855041C8DC275CAF055541B9F9CCFCCD8550414635B81EB005554155FD830BD18550419323848BA90555419A207F9BCC855041B11BA0B1A5055541A7F2704DC7855041B0FA0A17A105554138606D57BE8550415A81605399055541F6285C9FB6855041333333A392055541AE47E1FAB38550418FC2F528900555412940F658AE855041C6F646619805554156F7AD6FAF855041FB65520B99055541713D0AC7B0855041CDCCCCDC99055541A4703D8ABB85504152B81E35A1055541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>38460 - 3173465
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D0000008FC2F5084EA050418FC2F5F8941B5541713D0A974EA05041713D0AD79B1B5541E17A14AE4EA05041AE47E1DAAB1B5541F6285CFF4DA05041AE47E12AB71B5541333333F34DA05041CDCCCCACC31B5541E17A14AE4EA05041D7A3703DCE1B5541666666B64FA05041713D0AF7CE1B55413333339357A05041333333C3CC1B55418FC2F55863A0504100000010891B5541C3F5283C5DA050410AD7A3108D1B5541713D0A3759A050415C8FC2F58E1B5541E17A14DE4EA050411F85EB91931B55418FC2F5084EA050418FC2F5F8941B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000E55E4C9D4EA05041717EAC30A01B5541E00D59C14FA050416A6C3A14A01B55419BEE414152A05041331CE0D59F1B5541F954DD9853A05041F00AC076911B55414C82B6E04EA05041513ABF90931B55418FBA55CE4EA050419D1072AC931B5541362B1D0A4EA05041DD1604F7941B55417A44B80A4EA050417048BC0E951B55416D1D91524EA05041B40EC387981B55410EA601964EA050414A3840CA9B1B5541E55E4C9D4EA05041717EAC30A01B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>38460 - 3376885
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D0000008FC2F5084EA050418FC2F5F8941B5541713D0A974EA05041713D0AD79B1B5541E17A14AE4EA05041AE47E1DAAB1B5541F6285CFF4DA05041AE47E12AB71B5541333333F34DA05041CDCCCCACC31B5541E17A14AE4EA05041D7A3703DCE1B5541666666B64FA05041713D0AF7CE1B55413333339357A05041333333C3CC1B55418FC2F55863A0504100000010891B5541C3F5283C5DA050410AD7A3108D1B5541713D0A3759A050415C8FC2F58E1B5541E17A14DE4EA050411F85EB91931B55418FC2F5084EA050418FC2F5F8941B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000E55E4C9D4EA05041717EAC30A01B5541E00D59C14FA050416A6C3A14A01B55419BEE414152A05041331CE0D59F1B5541F954DD9853A05041F00AC076911B55414C82B6E04EA05041513ABF90931B55418FBA55CE4EA050419D1072AC931B5541362B1D0A4EA05041DD1604F7941B55417A44B80A4EA050417048BC0E951B55416D1D91524EA05041B40EC387981B55410EA601964EA050414A3840CA9B1B5541E55E4C9D4EA05041717EAC30A01B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>42715 - 2986107
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000014000000000000C00DCB5041C3F5288CFA3155411F85EB2103CB5041D7A370CDF83155419A999979FFCA5041A4703D3AF9315541333333A3FDCA5041666666F6F93155417B14AE37FBCA5041295C8F62FB315541D7A370CDF3CA5041CDCCCCBC00325541C3F528DCEECA50411F85EBE103325541295C8FF2F0CA5041F6285C9F043255410AD7A3D0F5CA50419A999919063255410AD7A310FBCA50417B14AE7707325541295C8F9201CB504114AE47F108325541C3F5288C06CB5041D7A370ED09325541C3F528AC0CCB50413D0AD7130B325541666666760FCB50415C8FC2750B325541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000EC51B86E23CB50411F85EBA116325541AE47E18A26CB504166666636153255419A99997927CB5041C3F5286C13325541F840BCF025CB5041ECC01BFA0A325541C0A00BF51FCB50414BA9AB520B325541C14336F118CB504179B6196A0B3255412AD1B23813CB5041B2C3A5870B325541FA4BB8FC0ECB50418B3A613B0C325541670EFCD00ACB5041E354BD730C325541252E451B06CB504192E17B520C325541A7D8072604CB5041DE3A7DED0B325541E17A14BEFBCA5041AE47E1DA0A3255418FC2F518F9CA5041CDCCCC8C0A325541B81E853BFFCA5041AE47E13A0E325541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>42715 - 3701702
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000014000000000000C00DCB5041C3F5288CFA3155411F85EB2103CB5041D7A370CDF83155419A999979FFCA5041A4703D3AF9315541333333A3FDCA5041666666F6F93155417B14AE37FBCA5041295C8F62FB315541D7A370CDF3CA5041CDCCCCBC00325541C3F528DCEECA50411F85EBE103325541295C8FF2F0CA5041F6285C9F043255410AD7A3D0F5CA50419A999919063255410AD7A310FBCA50417B14AE7707325541295C8F9201CB504114AE47F108325541C3F5288C06CB5041D7A370ED09325541C3F528AC0CCB50413D0AD7130B325541666666760FCB50415C8FC2750B325541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000EC51B86E23CB50411F85EBA116325541AE47E18A26CB504166666636153255419A99997927CB5041C3F5286C13325541F840BCF025CB5041ECC01BFA0A325541C0A00BF51FCB50414BA9AB520B325541C14336F118CB504179B6196A0B3255412AD1B23813CB5041B2C3A5870B325541FA4BB8FC0ECB50418B3A613B0C325541670EFCD00ACB5041E354BD730C325541252E451B06CB504192E17B520C325541A7D8072604CB5041DE3A7DED0B325541E17A14BEFBCA5041AE47E1DA0A3255418FC2F518F9CA5041CDCCCC8C0A325541B81E853BFFCA5041AE47E13A0E325541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>42715 - 45009
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000014000000000000C00DCB5041C3F5288CFA3155411F85EB2103CB5041D7A370CDF83155419A999979FFCA5041A4703D3AF9315541333333A3FDCA5041666666F6F93155417B14AE37FBCA5041295C8F62FB315541D7A370CDF3CA5041CDCCCCBC00325541C3F528DCEECA50411F85EBE103325541295C8FF2F0CA5041F6285C9F043255410AD7A3D0F5CA50419A999919063255410AD7A310FBCA50417B14AE7707325541295C8F9201CB504114AE47F108325541C3F5288C06CB5041D7A370ED09325541C3F528AC0CCB50413D0AD7130B325541666666760FCB50415C8FC2750B325541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A7D8072604CB5041DE3A7DED0B325541A2FEC84604CB50412054B12A0E3255410B8FE45807CB50411B2EF0090E325541EC9846B40ECB50412054B12A0E325541B7BE214B15CB504123C1501A0E32554138ECE55219CB504123C1501A0E325541E953FB451FCB50411B2EF0090E325541C758B92E26CB50411B2EF0090E3255412F2DD47026CB50417D124A1D0F325541DD9242B126CB5041281DA11D0F325541F840BCF025CB5041ECC01BFA0A325541C0A00BF51FCB50414BA9AB520B325541C14336F118CB504179B6196A0B3255412AD1B23813CB5041B2C3A5870B325541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>42715 - 79822
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000014000000000000C00DCB5041C3F5288CFA3155411F85EB2103CB5041D7A370CDF83155419A999979FFCA5041A4703D3AF9315541333333A3FDCA5041666666F6F93155417B14AE37FBCA5041295C8F62FB315541D7A370CDF3CA5041CDCCCCBC00325541C3F528DCEECA50411F85EBE103325541295C8FF2F0CA5041F6285C9F043255410AD7A3D0F5CA50419A999919063255410AD7A310FBCA50417B14AE7707325541295C8F9201CB504114AE47F108325541C3F5288C06CB5041D7A370ED09325541C3F528AC0CCB50413D0AD7130B325541666666760FCB50415C8FC2750B325541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A7D8072604CB5041DE3A7DED0B325541A2FEC84604CB50412054B12A0E3255410B8FE45807CB50411B2EF0090E325541EC9846B40ECB50412054B12A0E325541B7BE214B15CB504123C1501A0E32554138ECE55219CB504123C1501A0E325541E953FB451FCB50411B2EF0090E325541C758B92E26CB50411B2EF0090E3255412F2DD47026CB50417D124A1D0F325541DD9242B126CB5041281DA11D0F325541F840BCF025CB5041ECC01BFA0A325541C0A00BF51FCB50414BA9AB520B325541C14336F118CB504179B6196A0B3255412AD1B23813CB5041B2C3A5870B325541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>42823 - 4307920
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000015000000EC51B89E53C65041B81E85AB5133554152B81E2554C65041713D0A1754335541AE47E1BA62C650410AD7A3E062335541EC51B87E6BC650413D0AD7C36B3355413333330376C65041E17A146E76335541EC51B84E77C65041A4703DDA75335541EC51B89E84C65041E17A14EE6F3355417B14AE4788C65041D7A3709D6C335541A4703DBA88C6504185EB51D85F335541666666F691C65041E17A142E513355411F85EB0196C65041295C8F1245335541713D0A8797C65041666666F63C335541F6285C2F96C65041713D0AC739335541C3F5287C8AC650419A9999D933335541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000EC51B89E53C65041B81E85AB51335541BF14481F55C65041B104900C55335541BFC98A7C5AC65041D61E9C1D61335541240717E96AC65041D84F19F26C335541EE7C3F256CC65041AAF1D2D56D3355412E0E292E74C65041D962769274335541C330BE1975C65041A74745837533554111D2CD1477C65041A6121EE174335541670583727FC65041B466383472335541EC51B89E84C65041E17A14EE6F3355417B14AE4788C65041D7A3709D6C335541A4703DBA88C6504185EB51D85F335541666666F691C65041E17A142E513355411F85EB0196C65041295C8F1245335541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72228 - 132443
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000180000000000005037C4504152B81E156C305541713D0A5731C45041A4703D8A673055410AD7A3801EC45041AE47E13A59305541A4703DCA0BC45041333333034B305541713D0A77FFC35041666666A641305541000000C0F8C35041C3F5288C3C3055419A999959DBC35041295C8FD2603055418FC2F5C8E3C35041CDCCCCCC63305541E17A147EE6C3504114AE47C16430554114AE4731F5C35041EC51B82E6F305541333333D306C45041000000B07B3055417B14AEE719C450417B14AE3789305541713D0A971DC450415C8FC2D58B3055413D0AD77331C45041EC51B8EE99305541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000090000009A999959DBC35041295C8FD26030554172F55B64DFC35041E895363662305541048161F3FBC35041CD96C7FA3E3055417A9375E5FBC35041447B33F03E3055415CF3802CFBC3504149DFA8633E3055415583B4F1FAC350418109FB363E3055418362B1D0F8C35041F300B9D43C305541BE05C42BE4C35041743A56F0553055419A999959DBC35041295C8FD260305541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72228 - 143144
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000180000000000005037C4504152B81E156C305541713D0A5731C45041A4703D8A673055410AD7A3801EC45041AE47E13A59305541A4703DCA0BC45041333333034B305541713D0A77FFC35041666666A641305541000000C0F8C35041C3F5288C3C3055419A999959DBC35041295C8FD2603055418FC2F5C8E3C35041CDCCCCCC63305541E17A147EE6C3504114AE47C16430554114AE4731F5C35041EC51B82E6F305541333333D306C45041000000B07B3055417B14AEE719C450417B14AE3789305541713D0A971DC450415C8FC2D58B3055413D0AD77331C45041EC51B8EE99305541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000094628FFE03C4504167403617453055413F5D203CFCC3504140FDAC3E3F3055412C89AEABDFC350416EC7FE3E62305541694D16ACE3C35041E6A99BC2633055418FC2F5C8E3C35041CDCCCCCC63305541E17A147EE6C3504114AE47C16430554121F604B6E6C3504193F7F5E864305541BA7D091DE7C3504119C3F00F653055415B28F5A11EC4504117872E168C3055418C9FA5EF37C45041E3E67A8E6C3055410000005037C4504152B81E156C305541713D0A5731C45041A4703D8A673055410AD7A3801EC45041AE47E13A59305541A4703DCA0BC45041333333034B305541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72228 - 244662
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000180000000000005037C4504152B81E156C305541713D0A5731C45041A4703D8A673055410AD7A3801EC45041AE47E13A59305541A4703DCA0BC45041333333034B305541713D0A77FFC35041666666A641305541000000C0F8C35041C3F5288C3C3055419A999959DBC35041295C8FD2603055418FC2F5C8E3C35041CDCCCCCC63305541E17A147EE6C3504114AE47C16430554114AE4731F5C35041EC51B82E6F305541333333D306C45041000000B07B3055417B14AEE719C450417B14AE3789305541713D0A971DC450415C8FC2D58B3055413D0AD77331C45041EC51B8EE99305541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000006E65DD0329C4504140414837613055411F1FD24326C4504133A373205F3055410AD7A3801EC45041AE47E13A593055413AE6D9900FC45041662C9EE14D3055410A0F5F3008C450419298EA46483055418C8E82EFFBC35041D5188EFF3E3055419C3A0C8EEFC35041A7B00B484E305541C8554697E3C35041EF23B3175D30554132FDE261DFC35041B751F33E623055418FC2F5C8E3C35041CDCCCCCC63305541E17A147EE6C3504114AE47C164305541BE16745EF1C35041DDBF62786C30554114AE4731F5C35041EC51B82E6F305541D6F5297004C45041EBF1A6FE79305541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72228 - 331394
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000180000000000005037C4504152B81E156C305541713D0A5731C45041A4703D8A673055410AD7A3801EC45041AE47E13A59305541A4703DCA0BC45041333333034B305541713D0A77FFC35041666666A641305541000000C0F8C35041C3F5288C3C3055419A999959DBC35041295C8FD2603055418FC2F5C8E3C35041CDCCCCCC63305541E17A147EE6C3504114AE47C16430554114AE4731F5C35041EC51B82E6F305541333333D306C45041000000B07B3055417B14AEE719C450417B14AE3789305541713D0A971DC450415C8FC2D58B3055413D0AD77331C45041EC51B8EE99305541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000090000009A999959DBC35041295C8FD26030554172F55B64DFC35041E895363662305541048161F3FBC35041CD96C7FA3E3055417A9375E5FBC35041447B33F03E3055415CF3802CFBC3504149DFA8633E3055415583B4F1FAC350418109FB363E3055418362B1D0F8C35041F300B9D43C305541BE05C42BE4C35041743A56F0553055419A999959DBC35041295C8FD260305541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72228 - 347851
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000180000000000005037C4504152B81E156C305541713D0A5731C45041A4703D8A673055410AD7A3801EC45041AE47E13A59305541A4703DCA0BC45041333333034B305541713D0A77FFC35041666666A641305541000000C0F8C35041C3F5288C3C3055419A999959DBC35041295C8FD2603055418FC2F5C8E3C35041CDCCCCCC63305541E17A147EE6C3504114AE47C16430554114AE4731F5C35041EC51B82E6F305541333333D306C45041000000B07B3055417B14AEE719C450417B14AE3789305541713D0A971DC450415C8FC2D58B3055413D0AD77331C45041EC51B8EE99305541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000006E65DD0329C4504140414837613055411F1FD24326C4504133A373205F3055410AD7A3801EC45041AE47E13A593055413AE6D9900FC45041662C9EE14D3055410A0F5F3008C450419298EA46483055418C8E82EFFBC35041D5188EFF3E3055419C3A0C8EEFC35041A7B00B484E305541C8554697E3C35041EF23B3175D30554132FDE261DFC35041B751F33E623055418FC2F5C8E3C35041CDCCCCCC63305541E17A147EE6C3504114AE47C164305541BE16745EF1C35041DDBF62786C30554114AE4731F5C35041EC51B82E6F305541D6F5297004C45041EBF1A6FE79305541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72421 - 3549809
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000D0000007B14AEB7B6C55041D7A3701D54305541AE47E11AB3C550411F85EBC154305541295C8F62B7C55041E17A146E6A305541C3F5287CC2C5504114AE477167305541295C8F72C3C550410AD7A3706730554166666616DFC5504133333383683055418FC2F568F3C550419A9999996A3055417B14AEA7F6C55041A4703DCA4F3055413D0AD723F0C550413D0AD7D350305541B81E85BBE8C5504148E17A945130554152B81EE5CEC550419A99999952305541666666F6BCC550417B14AE47533055417B14AEB7B6C55041D7A3701D54305541
+</a>
+
+<b>
+01060000000100000001030000000100000018000000F74A26BFB8C55041465DECC66A30554156E8C5EBC2C550419757AC9A67305541295C8F72C3C550410AD7A37067305541AF5D2C1EDAC550411BA0D5516830554166666616DFC55041333333836830554108958117E0C55041EEF4A6A768305541501D87D6ECC55041949146346A305541342CE5B3F3C550415F6A7AF76A305541094258D3F3C550410712C4FE69305541A1FED167F5C550417DFF0D805D3055415E5D072BF7C55041A6B4AEB34F305541FD2D8573E8C55041E98652975130554131B8839DD9C550417316422D52305541F552E43BCFC5504191A92C9652305541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72443 - 2363227
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B0000001F85EB1133C55041F6285C7F4331554152B81E352FC55041666666E6403155411F85EB812AC550415C8FC2A55E3155415C8FC24549C550413D0AD723673155410AD7A32067C5504114AE47316F315541A4703D6A69C550416666661646315541D7A370BD42C55041B81E853B40315541295C8FB241C5504148E17A14413155415C8FC22541C55041EC51B8FE4A3155416666662640C550410AD7A3F04A3155411F85EB1133C55041F6285C7F43315541
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000068301B812AC55041029F7EA95E3155413333336328C55041EC51B80E6C31554123E9770D46C55041405A697B743155411F85EB5166C5504152B81EA57D315541CBBC862067C550415F8D50336F315541DD2E6A4E61C550410641B0A06D3155413777CBF25FC550417D14C3426D31554139DC415760C55041512EAC5C6D315541420DBA2D4DC550414D258D3168315541029D2AD136C550410FB1A40B623155415E4141E834C55041BB9FAE8461315541317F43BE33C55041C86A69336131554168301B812AC55041029F7EA95E315541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>72443 - 4817792
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B0000001F85EB1133C55041F6285C7F4331554152B81E352FC55041666666E6403155411F85EB812AC550415C8FC2A55E3155415C8FC24549C550413D0AD723673155410AD7A32067C5504114AE47316F315541A4703D6A69C550416666661646315541D7A370BD42C55041B81E853B40315541295C8FB241C5504148E17A14413155415C8FC22541C55041EC51B8FE4A3155416666662640C550410AD7A3F04A3155411F85EB1133C55041F6285C7F43315541
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000068301B812AC55041029F7EA95E3155413333336328C55041EC51B80E6C31554123E9770D46C55041405A697B743155411F85EB5166C5504152B81EA57D315541CBBC862067C550415F8D50336F315541DD2E6A4E61C550410641B0A06D3155413777CBF25FC550417D14C3426D31554139DC415760C55041512EAC5C6D315541420DBA2D4DC550414D258D3168315541029D2AD136C550410FB1A40B623155415E4141E834C55041BB9FAE8461315541317F43BE33C55041C86A69336131554168301B812AC55041029F7EA95E315541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>73583 - 87044
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000B81E85BBDDC050419A9999E95D345541A4703D5ADCC05041A4703DEA5E3455417B14AED7DAC0504185EB5188623455418FC2F528DBC050413D0AD763673455418FC2F5D8E0C05041000000306D3455413D0AD7A3E6C05041000000C071345541295C8FC2F0C05041713D0AB777345541D7A370CDFFC050417B14AE2782345541295C8F4203C150419A9999597C345541EC51B83EF8C0504148E17A94753455413D0AD743EDC050410AD7A3C06D3455417B14AE97E8C05041333333A369345541AE47E1FAE3C050410AD7A34065345541B81E85BBDDC050419A9999E95D345541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000005747068FF6C05041E642618D703455411F85EB61EFC050410AD7A3206B345541B81E85CBE7C0504152B81EE563345541AE47E15AE4C05041000000A05F345541C3F5280CE1C05041F6285C9F5B345541E14839C5E0C05041332FACC05B3455413250C2E5DDC0504153D25E155E345541E11F5D1DE0C05041344D16B6603455416B69CB37E0C050411DCF23D5603455416E637BA6E2C050414973B7B063345541E97E50DBE2C0504144B1C9EE63345541CED5F343E9C05041B0F2EA3A6A3455417862B38DE9C05041A0E1DD7B6A34554103FB3B95E9C05041D45D80826A345541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>73583 - 330732
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000B81E85BBDDC050419A9999E95D345541A4703D5ADCC05041A4703DEA5E3455417B14AED7DAC0504185EB5188623455418FC2F528DBC050413D0AD763673455418FC2F5D8E0C05041000000306D3455413D0AD7A3E6C05041000000C071345541295C8FC2F0C05041713D0AB777345541D7A370CDFFC050417B14AE2782345541295C8F4203C150419A9999597C345541EC51B83EF8C0504148E17A94753455413D0AD743EDC050410AD7A3C06D3455417B14AE97E8C05041333333A369345541AE47E1FAE3C050410AD7A34065345541B81E85BBDDC050419A9999E95D345541
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000005747068FF6C05041E642618D703455411F85EB61EFC050410AD7A3206B345541B81E85CBE7C0504152B81EE563345541AE47E15AE4C05041000000A05F345541C3F5280CE1C05041F6285C9F5B345541E14839C5E0C05041332FACC05B3455413250C2E5DDC0504153D25E155E345541E11F5D1DE0C05041344D16B6603455416B69CB37E0C050411DCF23D5603455416E637BA6E2C050414973B7B063345541E97E50DBE2C0504144B1C9EE63345541CED5F343E9C05041B0F2EA3A6A3455417862B38DE9C05041A0E1DD7B6A34554103FB3B95E9C05041D45D80826A345541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>75176 - 131675
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000295C8F528DCD50418FC2F5F81A345541B81E85FB8DCD50411F85EB411C3455415C8FC2F5ABCD50418FC2F5782734554152B81E95BCCD5041333333933A34554148E17A04BECD5041B81E850B3C3455415C8FC205C0CD50417B14AE073F3455411F85EBF1C9CD50418FC2F5F83734554100000080D8CD5041E17A149E2D34554148E17A44DACD5041EC51B87E2B345541F6285CDFDBCD5041C3F5286C28345541F6285CBFDCCD5041EC51B81E25345541F6285CAFDCCD5041333333B321345541A4703D6AD8CD5041000000A001345541AE47E1DAD6CD5041EC51B89E10345541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000295C8F528DCD50418FC2F5F81A345541B81E85FB8DCD50411F85EB411C3455415C8FC2F5ABCD50418FC2F5782734554152B81E95BCCD5041333333933A34554114BFD8E8BDCD50414D7236EF3B34554132B08AA3D5CD50418EE909092B345541C2D0D7D9D6CD5041C79F68A6293455412D930219D8CD5041D8BF63D927345541B0B0DCA6D8CD5041798A430B2534554126CB438CD8CD5041161DE2C921345541399B8C55D7CD5041AE328D7A1734554116D5CB91D6CD5041F2C2C84F17345541C59DC1EBCBCD5041A858149F153455418FC2F568CBCD50418FC2F59815345541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>75176 - 284128
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000295C8F528DCD50418FC2F5F81A345541B81E85FB8DCD50411F85EB411C3455415C8FC2F5ABCD50418FC2F5782734554152B81E95BCCD5041333333933A34554148E17A04BECD5041B81E850B3C3455415C8FC205C0CD50417B14AE073F3455411F85EBF1C9CD50418FC2F5F83734554100000080D8CD5041E17A149E2D34554148E17A44DACD5041EC51B87E2B345541F6285CDFDBCD5041C3F5286C28345541F6285CBFDCCD5041EC51B81E25345541F6285CAFDCCD5041333333B321345541A4703D6AD8CD5041000000A001345541AE47E1DAD6CD5041EC51B89E10345541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000295C8F528DCD50418FC2F5F81A345541B81E85FB8DCD50411F85EB411C3455415C8FC2F5ABCD50418FC2F5782734554152B81E95BCCD5041333333933A34554114BFD8E8BDCD50414D7236EF3B34554132B08AA3D5CD50418EE909092B345541C2D0D7D9D6CD5041C79F68A6293455412D930219D8CD5041D8BF63D927345541B0B0DCA6D8CD5041798A430B2534554126CB438CD8CD5041161DE2C921345541399B8C55D7CD5041AE328D7A1734554116D5CB91D6CD5041F2C2C84F17345541C59DC1EBCBCD5041A858149F153455418FC2F568CBCD50418FC2F59815345541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>75266 - 6679
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000011000000B81E85FBD3CC5041EC51B84E4C3455415C8FC285CDCC504114AE47514F345541EC51B85EAECC5041D7A370DD5F345541E17A146EACCC50415C8FC2B56534554114AE47D1A0CC5041AE47E12A6B34554166666656A0CC50417B14AEB773345541B81E859B9DCC50410AD7A3A082345541C3F528FC9DCC5041A4703DBA87345541A4703D4AA0CC50411F85EB918F3455410AD7A390A0CC5041AE47E16A933455419A999969B4CC5041295C8F728A3455410AD7A3C0C7CC504148E17AB4813455417B14AE17DBCC5041666666F6783455417B14AEA7D9CC50419A99998966345541 [...]
+</a>
+
+<b>
+010600000002000000010300000001000000180000007B14AEA7D9CC50419A999989663455417A67D969D8CC5041E362166B563455416EB4AF44D8CC50418EDB3B1055345541131820B0D7CC504128EC6ABE53345541EC51B8FED5CC504185EB5158503455416EB7D87AD5CC5041B57B425B4F345541B15BD5A0CACC5041C8381E265534554108985671C3CC5041563D2DF658345541D8D15C06B6CC5041CBF1D1C75F3455415BF6CC7FAFCC5041A053915F63345541848AE46FACCC504188654CB065345541E17A146EACCC50415C8FC2B56534554114AE47D1A0CC5041AE47E12A6B34554166666656A0CC50417B14AEB773345541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242127 - 146230
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000030000007200000085EB51885ED85041A4703DDAC02055415C8FC2C55ED85041AE47E1CABE2055417B14AE475FD850418FC2F518BE205541295C8F5260D850418FC2F528BD20554114AE478160D8504100000080BC205541E17A141E60D85041C3F5282CBC20554148E17A445FD85041A4703DFABB2055410AD7A3905ED850415C8FC285BB205541EC51B8CE5DD850417B14AEF7BB205541333333B35CD8504152B81E45BC205541295C8F025BD850410AD7A390BB2055410AD7A3D059D850411F85EB41BC2055413D0AD77358D8504114AE4731BC2055416666668657D85041E17A149EBB205541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000AB6F7CB750D85041B63B15C99D2055410AD7A3B050D85041D7A3704D9D2055412BEA80B250D85041968A064B9D2055412D505EB250D85041A11F9B479D205541215C01FD52D85041E83127539A20554114AE47D158D850415C8FC2C5922055419506A5C957D850415B227AB68F205541F3C0B00753D8504184A1290A8D205541F6285CEF49D85041713D0AF78720554183C8DD0645D850415A0940218F205541FA2A34E748D85041BE9E66C9942055414DFA885049D8504136CA8B619520554113F0554C4AD850412887F97698205541666666F64AD85041C3F5287C9A205541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242127 - 299104
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000030000007200000085EB51885ED85041A4703DDAC02055415C8FC2C55ED85041AE47E1CABE2055417B14AE475FD850418FC2F518BE205541295C8F5260D850418FC2F528BD20554114AE478160D8504100000080BC205541E17A141E60D85041C3F5282CBC20554148E17A445FD85041A4703DFABB2055410AD7A3905ED850415C8FC285BB205541EC51B8CE5DD850417B14AEF7BB205541333333B35CD8504152B81E45BC205541295C8F025BD850410AD7A390BB2055410AD7A3D059D850411F85EB41BC2055413D0AD77358D8504114AE4731BC2055416666668657D85041E17A149EBB205541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000AB6F7CB750D85041B63B15C99D2055410AD7A3B050D85041D7A3704D9D2055412BEA80B250D85041968A064B9D2055412D505EB250D85041A11F9B479D205541215C01FD52D85041E83127539A20554114AE47D158D850415C8FC2C5922055419506A5C957D850415B227AB68F205541F3C0B00753D8504184A1290A8D205541F6285CEF49D85041713D0AF78720554183C8DD0645D850415A0940218F205541FA2A34E748D85041BE9E66C9942055414DFA885049D8504136CA8B619520554113F0554C4AD850412887F97698205541666666F64AD85041C3F5287C9A205541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242168 - 1419666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001E000000AE47E13A050751413D0AD703ACFE5441C3F528BCF5065141EC51B8FEAAFE54419A9999A9F5065141E17A14EEC5FE54415C8FC2A5F60651415C8FC215C7FE5441C3F5283C1907514133333383CCFE54415C8FC25520075141E17A148ECDFE5441E17A14FE2407514133333363CEFE54415C8FC2653A075141295C8FC2D4FE54419A9999C94107514148E17A14D5FE5441CDCCCCDC47075141AE47E1AAD6FE54418FC2F5584C0751410AD7A3A0C9FE5441E17A143E710751410AD7A370D6FE544185EB514871075141CDCCCC9CD4FE54418FC2F5F87107514166666656CFFE5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002100000050F958582B07514125815B47D0FE54415C8FC2653A075141295C8FC2D4FE54419A9999C94107514148E17A14D5FE5441CDCCCCDC47075141AE47E1AAD6FE54418FC2F5584C0751410AD7A3A0C9FE5441E17A143E710751410AD7A370D6FE544185EB514871075141CDCCCC9CD4FE54418FC2F5F87107514166666656CFFE5441CDCCCCAC730751417B14AE37CAFE54413D0AD74374075141CDCCCC1CC9FE544166666606630751410AD7A360C1FE5441E17A140E53075141713D0A37BAFE5441F6285C0F500751415C8FC235BDFE544114AE479148075141D7A3704DC0FE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>242168 - 3394195
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001E000000AE47E13A050751413D0AD703ACFE5441C3F528BCF5065141EC51B8FEAAFE54419A9999A9F5065141E17A14EEC5FE54415C8FC2A5F60651415C8FC215C7FE5441C3F5283C1907514133333383CCFE54415C8FC25520075141E17A148ECDFE5441E17A14FE2407514133333363CEFE54415C8FC2653A075141295C8FC2D4FE54419A9999C94107514148E17A14D5FE5441CDCCCCDC47075141AE47E1AAD6FE54418FC2F5584C0751410AD7A3A0C9FE5441E17A143E710751410AD7A370D6FE544185EB514871075141CDCCCC9CD4FE54418FC2F5F87107514166666656CFFE5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002100000050F958582B07514125815B47D0FE54415C8FC2653A075141295C8FC2D4FE54419A9999C94107514148E17A14D5FE5441CDCCCCDC47075141AE47E1AAD6FE54418FC2F5584C0751410AD7A3A0C9FE5441E17A143E710751410AD7A370D6FE544185EB514871075141CDCCCC9CD4FE54418FC2F5F87107514166666656CFFE5441CDCCCCAC730751417B14AE37CAFE54413D0AD74374075141CDCCCC1CC9FE544166666606630751410AD7A360C1FE5441E17A140E53075141713D0A37BAFE5441F6285C0F500751415C8FC235BDFE544114AE479148075141D7A3704DC0FE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>94631 - 198349
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000B81E85ABBC9450418FC2F588DC3455415C8FC245C09450415C8FC295DF345541295C8FB2C294504133333303E0345541A4703D7AC4945041B81E852BE034554185EB5198C594504152B81E45E03455415C8FC295C6945041B81E855BE03455415C8FC295C79450411F85EB71E0345541CDCCCC2CC8945041F6285C7FD9345541AE47E1DABC94504185EB5178D8345541B81E85ABBC9450418FC2F588DC345541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000000E6FCD25C8945041B764643BD934554187DF40D7BC945041A7E41BB5D8345541D3052938BC945041CD197782DD34554109C9385FC094504132A63F9ADF345541333EC288C1945041F875B3CEDF3455411DFEDCBDC294504139173304E03455417835C032C394504123F08A0EE03455418377ACDCC39450414BFA931DE03455416F965A95C7945041515EB55BE03455412369BE98C7945041B7DAC84EE0345541CDCCCC2CC8945041F6285C7FD93455410E6FCD25C8945041B764643BD9345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>94631 - 355633
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000B81E85ABBC9450418FC2F588DC3455415C8FC245C09450415C8FC295DF345541295C8FB2C294504133333303E0345541A4703D7AC4945041B81E852BE034554185EB5198C594504152B81E45E03455415C8FC295C6945041B81E855BE03455415C8FC295C79450411F85EB71E0345541CDCCCC2CC8945041F6285C7FD9345541AE47E1DABC94504185EB5178D8345541B81E85ABBC9450418FC2F588DC345541
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000000E6FCD25C8945041B764643BD934554187DF40D7BC945041A7E41BB5D8345541D3052938BC945041CD197782DD34554109C9385FC094504132A63F9ADF345541333EC288C1945041F875B3CEDF3455411DFEDCBDC294504139173304E03455417835C032C394504123F08A0EE03455418377ACDCC39450414BFA931DE03455416F965A95C7945041515EB55BE03455412369BE98C7945041B7DAC84EE0345541CDCCCC2CC8945041F6285C7FD93455410E6FCD25C8945041B764643BD9345541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>97481 - 1611805
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001500000052B81EF5649E5041EC51B87E553B5541D7A370DD5B9E50419A9999C9673B554166666606549E504100000080753B5541AE47E1FA3F9E5041D7A3707D983B5541F6285C3F409E5041D7A370DD993B5541AE47E1EA4F9E5041666666C6A33B5541E17A143E659E5041295C8F42B13B554152B81EA5669E50419A9999F9B03B554166666626819E5041713D0A57893B55415C8FC235819E50413D0AD7A3873B5541D7A370DD7F9E504100000040853B5541EC51B89E7D9E504152B81E557F3B5541000000D07B9E5041AE47E14A793B5541B81E852B779E5041CDCCCC8C663B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000003FBEE1557D9E50410E32EE97893B554161AE4ADD7F9E5041166D2E438B3B554197BF2719809E504179A7A9E98A3B554166666626819E5041713D0A57893B55415C8FC235819E50413D0AD7A3873B5541D7A370DD7F9E504100000040853B5541EC51B89E7D9E504152B81E557F3B5541000000D07B9E5041AE47E14A793B5541B81E852B779E5041CDCCCC8C663B554133333393759E504152B81E15623B5541A4703D1A759E50413D0AD7C3603B5541295C8FB2729E5041E17A140E5B3B55418FC2F5F86F9E5041B81E858B553B55411F85EBF16C9E504148E17A24503B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>97481 - 3160737
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001500000052B81EF5649E5041EC51B87E553B5541D7A370DD5B9E50419A9999C9673B554166666606549E504100000080753B5541AE47E1FA3F9E5041D7A3707D983B5541F6285C3F409E5041D7A370DD993B5541AE47E1EA4F9E5041666666C6A33B5541E17A143E659E5041295C8F42B13B554152B81EA5669E50419A9999F9B03B554166666626819E5041713D0A57893B55415C8FC235819E50413D0AD7A3873B5541D7A370DD7F9E504100000040853B5541EC51B89E7D9E504152B81E557F3B5541000000D07B9E5041AE47E14A793B5541B81E852B779E5041CDCCCC8C663B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000500000083DD2F327B9E504168A2503E923B554165AE4ADD7F9E5041186D2E438B3B55413FBEE1557D9E50410E32EE97893B5541FF0AC327799E504134114B04913B554183DD2F327B9E504168A2503E923B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>97481 - 3192317
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001500000052B81EF5649E5041EC51B87E553B5541D7A370DD5B9E50419A9999C9673B554166666606549E504100000080753B5541AE47E1FA3F9E5041D7A3707D983B5541F6285C3F409E5041D7A370DD993B5541AE47E1EA4F9E5041666666C6A33B5541E17A143E659E5041295C8F42B13B554152B81EA5669E50419A9999F9B03B554166666626819E5041713D0A57893B55415C8FC235819E50413D0AD7A3873B5541D7A370DD7F9E504100000040853B5541EC51B89E7D9E504152B81E557F3B5541000000D07B9E5041AE47E14A793B5541B81E852B779E5041CDCCCC8C663B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000500000083DD2F327B9E504168A2503E923B554165AE4ADD7F9E5041186D2E438B3B55413FBEE1557D9E50410E32EE97893B5541FF0AC327799E504134114B04913B554183DD2F327B9E504168A2503E923B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>97481 - 3335585
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001500000052B81EF5649E5041EC51B87E553B5541D7A370DD5B9E50419A9999C9673B554166666606549E504100000080753B5541AE47E1FA3F9E5041D7A3707D983B5541F6285C3F409E5041D7A370DD993B5541AE47E1EA4F9E5041666666C6A33B5541E17A143E659E5041295C8F42B13B554152B81EA5669E50419A9999F9B03B554166666626819E5041713D0A57893B55415C8FC235819E50413D0AD7A3873B5541D7A370DD7F9E504100000040853B5541EC51B89E7D9E504152B81E557F3B5541000000D07B9E5041AE47E14A793B5541B81E852B779E5041CDCCCC8C663B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000003FBEE1557D9E50410E32EE97893B554161AE4ADD7F9E5041166D2E438B3B554197BF2719809E504179A7A9E98A3B554166666626819E5041713D0A57893B55415C8FC235819E50413D0AD7A3873B5541D7A370DD7F9E504100000040853B5541EC51B89E7D9E504152B81E557F3B5541000000D07B9E5041AE47E14A793B5541B81E852B779E5041CDCCCC8C663B554133333393759E504152B81E15623B5541A4703D1A759E50413D0AD7C3603B5541295C8FB2729E5041E17A140E5B3B55418FC2F5F86F9E5041B81E858B553B55411F85EBF16C9E504148E17A24503B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>97789 - 3690270
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000005A0000009A99991947A35041F6285C0F5F385541E17A14DE46A350413D0AD7735E3855415C8FC2A546A350410AD7A3E05D3855410AD7A3203FA35041EC51B8FE603855418FC2F5983EA3504185EB51486138554114AE47513DA35041A4703DFA6138554114AE47C13BA35041295C8FD2623855411F85EBC139A3504185EB51E8633855410AD7A38038A350416666669664385541EC51B8BE37A35041F6285CFF6438554114AE475137A35041AE47E13A653855411F85EB7136A350413D0AD7B3653855418FC2F5982DA35041CDCCCC7C6A385541AE47E1EA2DA35041C3F5289C6C385541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002300000085EB518853A350413D0AD79384385541C3F5283C59A35041F6285CEF83385541333333735BA350413D0AD7538538554148E17A145FA35041C3F5289C873855410AD7A37063A35041A4703D5A8A385541E17A14CE64A3504114AE47B1873855419A99995966A35041713D0A4783385541295C8F6269A35041E17A140E7B3855415C8FC2A56AA35041B81E852B783855415C8FC2156DA35041EC51B86E74385541CC20F1B27CA35041E78070CC58385541716915EC6FA3504108539D2656385541AF6F4F836EA35041EC8B02FA553855418089009A68A35041A782831456385541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>905276 - 59579
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000A0000007B14AEA789DC5041AE47E13A6B235541295C8FD288DC50417B14AEF76A235541D7A3701D7DDC5041F6285C0F832355419A99990983DC50415C8FC26586235541295C8F8282DC5041EC51B8CE8623554148E17A8486DC5041F6285CFF8823554185EB515896DC50415C8FC245732355410AD7A39094DC5041AE47E1CA71235541EC51B8DE8FDC5041F6285C7F6E2355417B14AEA789DC5041AE47E13A6B235541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000C2A57D1D7DDC50416D64410F83235541532CFB507DDC504134A9672C832355419A99990983DC50415C8FC26586235541619CC70683DC504118BAF367862355413F41930A83DC504134CA196A86235541B146588682DC50410203D9CE862355417662848786DC5041DBF230FB8823554169AC7D9787DC50419183E08587235541DE2FF50B89DC504134FB9F8685235541E4C596788EDC5041201493147E2355417F60944F96DC504171075C477323554162ADC68E94DC5041F86692C971235541F6284FB293DC50415A8FD82E71235541229C11E38FDC504104EEF18B6E235541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>180179 - 1741516
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A00000048E17A9468A750418FC2F5284E1655416666666668A7504152B81E154E165541F6285C7F5AA7504133333313491655410AD7A3C042A75041C3F5280C38165541F6285CDF34A75041AE47E1EA311655411F85EB9133A75041F6285C6F32165541C3F5284C2CA7504152B81EA543165541B81E85BB28A75041D7A3704D4B165541713D0A2724A75041713D0AB752165541713D0AD71AA750413D0AD7836B165541C3F5287C1BA7504185EB51786C1655419A99997939A750419A9999F96C165541295C8FA235A75041F6285C8F7D1655417B14AE772EA750415C8FC27593165541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000250000008D06320252A7504140C9D3FC421655416FE920F851A750416688A3124316554114AE47C142A7504152B81E0538165541F6285CDF34A75041AE47E1EA311655411F85EB9133A75041F6285C6F32165541295C8FD230A75041295C8F4238165541C3F5284C2CA7504152B81EA5431655415F3BF4E429A7504173CC8FCE48165541B81E85BB28A75041D7A3704D4B165541A02F4DFF27A75041DBEA0F7E4C165541D351CB3A27A75041986F19BC4D165541713D0A2724A75041713D0AB752165541713D0AD71AA750413D0AD7836B1655410C51E6D01BA750419936BF796C165541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>180179 - 3403417
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A00000048E17A9468A750418FC2F5284E1655416666666668A7504152B81E154E165541F6285C7F5AA7504133333313491655410AD7A3C042A75041C3F5280C38165541F6285CDF34A75041AE47E1EA311655411F85EB9133A75041F6285C6F32165541C3F5284C2CA7504152B81EA543165541B81E85BB28A75041D7A3704D4B165541713D0A2724A75041713D0AB752165541713D0AD71AA750413D0AD7836B165541C3F5287C1BA7504185EB51786C1655419A99997939A750419A9999F96C165541295C8FA235A75041F6285C8F7D1655417B14AE772EA750415C8FC27593165541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000250000008D06320252A7504140C9D3FC421655416FE920F851A750416688A3124316554114AE47C142A7504152B81E0538165541F6285CDF34A75041AE47E1EA311655411F85EB9133A75041F6285C6F32165541295C8FD230A75041295C8F4238165541C3F5284C2CA7504152B81EA5431655415F3BF4E429A7504173CC8FCE48165541B81E85BB28A75041D7A3704D4B165541A02F4DFF27A75041DBEA0F7E4C165541D351CB3A27A75041986F19BC4D165541713D0A2724A75041713D0AB752165541713D0AD71AA750413D0AD7836B1655410C51E6D01BA750419936BF796C165541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>182432 - 2913192
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F5282C0E9A50416666668606FD5441F6285C6F0B9A504152B81E55C8FC544152B81E05099A50416666667691FC5441D7A3706DE89950413D0AD7739EFC544148E17AF4E49950418FC2F5B89FFC5441A4703D3AE2995041C3F5281CA0FC5441CDCCCC8CDD995041AE47E19AA1FC54419A9999F9D8995041295C8F42A1FC5441B81E85CBD7995041AE47E16AA2FC54417B14AE07D9995041000000E0B7FC544114AE4761CD995041E17A148EB8FC54415C8FC2C5CD9950415C8FC2B5C1FC544100000000CE995041F6285CDFC5FC54410AD7A390CE9950415C8FC245C7FC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C3F5282C0E9A50416666668606FD5441B1843E80169A50418F78013C06FD5441DDF22E4A169A50411D22896302FD54419138B540139A5041DAC76D3DC6FC54413ABC967E109A504119F78D9C8FFC5441F036CA71109A50417F21F9CD8EFC544148E17AF40F9A5041AE47E1DA8EFC54415CB3FC0D0E9A5041032746778FFC5441DBB2CB05099A50418B6A367691FC544122830B21099A5041FF82DEF093FC5441F86254C1099A50415BCE9D2AA2FC544152A81F3D0A9A5041733A4727ADFC54415C9B60850A9A5041F91BEB90B3FC5441019AFAF20A9A5041D8B01E4BBDFC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>221475 - 5296217
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000012000000AE47E16AD23F51418FC2F518D7A954418FC2F568D33F5141CDCCCC7CD6A9544148E17A84D43F5141E17A14DED4A95441E17A14FED43F51418FC2F5C8CEA954415C8FC2C5D53F514133333303C7A95441EC51B82ED63F51415C8FC295C3A95441A4703D3AD63F5141CDCCCC6CC0A954413D0AD713D63F5141D7A3703DBDA954411F85EB91D53F51417B14AE37BAA954413D0AD743D43F5141333333F3B6A95441C3F5284CD33F5141AE47E11AB4A95441E17A143ED23F51410AD7A390B1A954419A9999A9D03F5141E17A14AEAEA9544185EB5138BC3F51413D0AD7E3ACA95441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000027000000A1C95C53703F51418489D0D3CDA954415075C6A8753F5141AB02104BCEA9544116D0C1BB7F3F514183AE9B52CFA95441D213EFFB8A3F5141E878FA6CD0A954413C90A1259D3F51413C191F0BD2A954416A8A43B1B23F5141CB3390F4D3A9544156EF68F5CA3F51419BC84D29D6A9544143A23A2AD23F514116BDE6BFD6A954412F7800AED23F514167616D87D6A95441CBA93F6AD33F5141F36CD4F0D5A95441A355CB71D43F5141DD46FC9DD4A954412A5DD0B1D53F5141A50E36C7C8A95441D8B849EAD53F5141FAD14EB4C3A954418714C322D63F5141477E99CEBFA95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>649536 - 1305857
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000004F0000005C8FC23557545141C3F5282C58E154415C8FC225545451410AD7A30057E154419A9999894E545141E17A14EE5DE15441713D0A574A545141713D0A3759E15441713D0A87495451410000003057E154418FC2F5B8495451415C8FC23550E154417B14AEE7475451415C8FC2154EE154417B14AEE747545141D7A370ED48E15441AE47E15A49545141000000603EE154418FC2F5084B5451410000003037E15441F6285C4F4C54514185EB512831E15441666666964D5451419A9999B92AE154413D0AD7834E5451411F85EBE123E154415C8FC2354F54514148E17AF41AE15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000250000007E9131C436545141671C3A6B75E15441FF0B8BA236545141FDB4753E74E154417549D53936545141FF5E47CB73E154412D79357B35545141A103807E73E15441FC8B13C633545141F0D7012373E15441C42DD2DE2D54514111486FE372E1544176C86C5F27545141A60A6F5B72E15441285F6E7A23545141480CB0A871E154418FC2F5081D54514114AE476186E15441E17A14BE1B545141E17A145E8DE15441D7A370AD1B5451418FC2F57895E15441CDCCCC4C1C545141AE47E12A9BE15441C3F528BC1D545141713D0A87A1E154410AD7A3901F5451419A999959A7E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>649536 - 3436032
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000004F0000005C8FC23557545141C3F5282C58E154415C8FC225545451410AD7A30057E154419A9999894E545141E17A14EE5DE15441713D0A574A545141713D0A3759E15441713D0A87495451410000003057E154418FC2F5B8495451415C8FC23550E154417B14AEE7475451415C8FC2154EE154417B14AEE747545141D7A370ED48E15441AE47E15A49545141000000603EE154418FC2F5084B5451410000003037E15441F6285C4F4C54514185EB512831E15441666666964D5451419A9999B92AE154413D0AD7834E5451411F85EBE123E154415C8FC2354F54514148E17AF41AE15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000250000007E9131C436545141671C3A6B75E15441FF0B8BA236545141FDB4753E74E154417549D53936545141FF5E47CB73E154412D79357B35545141A103807E73E15441FC8B13C633545141F0D7012373E15441C42DD2DE2D54514111486FE372E1544176C86C5F27545141A60A6F5B72E15441285F6E7A23545141480CB0A871E154418FC2F5081D54514114AE476186E15441E17A14BE1B545141E17A145E8DE15441D7A370AD1B5451418FC2F57895E15441CDCCCC4C1C545141AE47E12A9BE15441C3F528BC1D545141713D0A87A1E154410AD7A3901F5451419A999959A7E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>224518 - 56258
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D000000EC51B84E0DC850411F85EB214B5D5441713D0A3709C850417B14AE17535D5441C3F5286C09C85041F6285CDF535D5441E17A14DE09C85041B81E859B545D544185EB51C80EC850415C8FC2455C5D5441000000F010C8504114AE4721605D5441D7A370DD12C85041AE47E1FA675D54411F85EB8117C85041000000206E5D54413D0AD7A329C85041E17A147E685D5441B81E850B48C850419A9999095F5D5441666666A645C8504148E17A54555D54410000004043C850418FC2F5A84B5D5441CDCCCCFC40C85041CDCCCC7C425D5441D7A370BD3CC85041AE47E1EA415D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000333333230DC850419A9999D9455D54414B53B1310DC85041184AF09B475D5441052DEA340DC850413C4E0F00485D544104A43B440DC85041E50E0DDC495D5441EC51B84E0DC850411F85EB214B5D54418721EE220DC85041CF9317774B5D5441C55F17000DC850410BC0DABA4B5D54413D8842D80AC8504109AB2DEC4F5D54419DDCDAC00AC850415C98B319505D54410EA0BA7B0AC85041522727A0505D5441EBF293A409C850414F5BA042525D5441713D0A3709C850417B14AE17535D5441B707843F09C8504146668A37535D5441C3F5286C09C85041F6285CDF535D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975159 - 1759254
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000200000008000000EAFB60066DDC5041D41B89A68B7F5441BBF6E21787DC504142216F5A907F54415D84AE7F8DDC50410502DF7F917F54412294DB938EDC50412AB3FD1A8C7F54414EC8B9C48DDC50413D9EAFC48B7F54412394DB938EDC5041C798C434897F54419B67252B70DC5041E6EB68F2837F5441EAFB60066DDC5041D41B89A68B7F54410E000000495DE3A671DC504178693DF8857F5441014FA81781DC5041FB2A1D43887F5441B044669382DC5041F4CCA265887F54416AC75BDB83DC5041D325FC00897F544154ADEC4284DC5041B27E559C897F544166989EEC83DC50419C64E603 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000000800000090A5DF066DDC5041CD7E59A58B7F5441BBF6E21787DC504140216F5A907F54416284AE7F8DDC50410402DF7F917F54412594DB938EDC504129B3FD1A8C7F54414EC8B9C48DDC50413E9EAFC48B7F54412594DB938EDC5041CC98C434897F54419967252B70DC5041E7EB68F2837F544190A5DF066DDC5041CD7E59A58B7F54410E000000485DE3A671DC504178693DF8857F5441FF4EA81781DC5041FE2A1D43887F5441AE44669382DC5041F4CCA265887F544167C75BDB83DC5041D625FC00897F544152ADEC4284DC5041AD7E559C897F544167989EEC83DC50419964E603 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975159 - 4398340
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000200000008000000EAFB60066DDC5041D41B89A68B7F5441BBF6E21787DC504142216F5A907F54415D84AE7F8DDC50410502DF7F917F54412294DB938EDC50412AB3FD1A8C7F54414EC8B9C48DDC50413D9EAFC48B7F54412394DB938EDC5041C798C434897F54419B67252B70DC5041E6EB68F2837F5441EAFB60066DDC5041D41B89A68B7F54410E000000495DE3A671DC504178693DF8857F5441014FA81781DC5041FB2A1D43887F5441B044669382DC5041F4CCA265887F54416AC75BDB83DC5041D325FC00897F544154ADEC4284DC5041B27E559C897F544166989EEC83DC50419C64E603 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000000800000090A5DF066DDC5041CD7E59A58B7F5441BBF6E21787DC504140216F5A907F54416284AE7F8DDC50410402DF7F917F54412594DB938EDC504129B3FD1A8C7F54414EC8B9C48DDC50413E9EAFC48B7F54412594DB938EDC5041CC98C434897F54419967252B70DC5041E7EB68F2837F544190A5DF066DDC5041CD7E59A58B7F54410E000000485DE3A671DC504178693DF8857F5441FF4EA81781DC5041FE2A1D43887F5441AE44669382DC5041F4CCA265887F544167C75BDB83DC5041D625FC00897F544152ADEC4284DC5041AD7E559C897F544167989EEC83DC50419964E603 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>224927 - 249885
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81EC5BAFB504185EB51B83A8954410AD7A370B8FB5041295C8FB239895441EC51B8EEB8FB50415C8FC225358954419A999999B5FB5041E17A144E358954413D0AD7C3BBFB50418FC2F5A86D89544152B81EF5BCFB5041AE47E1FA6C89544148E17AB4BFFB5041CDCCCC8C6B895441000000B0BFFB5041D7A370ED69895441C3F528BCC2FB5041B81E857B6989544152B81EC5BAFB504185EB51B83A895441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000000000B0BFFB5041D7A370ED6989544175413AB1C0FB50412019E1C7698954413FF20FBAC2FB50417B003A6F69895441444C4523BDFB50411D93079F48895441F6F7F4ECBCFB50418F48276047895441E8DB4383BCFB5041460BA3F34489544195BE1EC5BAFB50414B1052B83A895441AC1E59A0B9FB504188F2D6373A8954410AD7A370B8FB5041295C8FB23989544128F469CEB8FB50414EFD385036895441A3DF07D8B8FB5041675960F735895441D79D6FE4B8FB504173FFC484358954418D4BB8EEB8FB50413BCAC22535895441CA219A99B5FB50412843154E35895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>224927 - 304509
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81EC5BAFB504185EB51B83A8954410AD7A370B8FB5041295C8FB239895441EC51B8EEB8FB50415C8FC225358954419A999999B5FB5041E17A144E358954413D0AD7C3BBFB50418FC2F5A86D89544152B81EF5BCFB5041AE47E1FA6C89544148E17AB4BFFB5041CDCCCC8C6B895441000000B0BFFB5041D7A370ED69895441C3F528BCC2FB5041B81E857B6989544152B81EC5BAFB504185EB51B83A895441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000000000B0BFFB5041D7A370ED6989544175413AB1C0FB50412019E1C7698954413FF20FBAC2FB50417B003A6F69895441444C4523BDFB50411D93079F48895441F6F7F4ECBCFB50418F48276047895441E8DB4383BCFB5041460BA3F34489544195BE1EC5BAFB50414B1052B83A895441AC1E59A0B9FB504188F2D6373A8954410AD7A370B8FB5041295C8FB23989544128F469CEB8FB50414EFD385036895441A3DF07D8B8FB5041675960F735895441D79D6FE4B8FB504173FFC484358954418D4BB8EEB8FB50413BCAC22535895441CA219A99B5FB50412843154E35895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>227494 - 247231
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000020000000D7A370EDB8185141EC51B8DECB0D5541713D0A37B718514133333353C70D55418FC2F5E8B5185141F6285C4FC40D554148E17AF4B4185141CDCCCC5CC10D5541D7A3701DB31851417B14AEB7BD0D55418FC2F548B2185141E17A14BEBA0D554100000090B1185141666666C6BA0D5541C3F5289CB0185141295C8FF2BA0D55415C8FC255AE185141A4703D2ABB0D55418FC2F5A8AD185141B81E85ABBB0D554148E17AE4AC1851410AD7A380BC0D554166666666AC185141F6285C6FBE0D55411F85EB91AC185141C3F5289CBF0D554148E17AF4AC1851411F85EBD1C00D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000D7A370EDB8185141EC51B8DECB0D55418DCA0379B8185141F4D0B9A9CA0D5541D3C5433DB8185141BCF5250BCA0D55419C91559EB71851413E2E5865C80D55412F8ECC80B71851410724F516C80D5541FE90C2F9B51851417B812C76C40D55418FC2F5E8B5185141F6285C4FC40D55412EBCF631B51851414817901AC20D55417D406A0CB5185141613EACA6C10D554139FB65E5B41851419571EC3EC10D55412A23D9C2B418514103007BFAC00D55416AE8945AB3185141E4E1CC30BE0D5541E26D1D4AB3185141601C2E10BE0D5541D7A3701DB31851417B14AEB7BD0D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>227494 - 264867
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000020000000D7A370EDB8185141EC51B8DECB0D5541713D0A37B718514133333353C70D55418FC2F5E8B5185141F6285C4FC40D554148E17AF4B4185141CDCCCC5CC10D5541D7A3701DB31851417B14AEB7BD0D55418FC2F548B2185141E17A14BEBA0D554100000090B1185141666666C6BA0D5541C3F5289CB0185141295C8FF2BA0D55415C8FC255AE185141A4703D2ABB0D55418FC2F5A8AD185141B81E85ABBB0D554148E17AE4AC1851410AD7A380BC0D554166666666AC185141F6285C6FBE0D55411F85EB91AC185141C3F5289CBF0D554148E17AF4AC1851411F85EBD1C00D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000D7A370EDB8185141EC51B8DECB0D55418DCA0379B8185141F4D0B9A9CA0D5541D3C5433DB8185141BCF5250BCA0D55419C91559EB71851413E2E5865C80D55412F8ECC80B71851410724F516C80D5541FE90C2F9B51851417B812C76C40D55418FC2F5E8B5185141F6285C4FC40D55412EBCF631B51851414817901AC20D55417D406A0CB5185141613EACA6C10D554139FB65E5B41851419571EC3EC10D55412A23D9C2B418514103007BFAC00D55416AE8945AB3185141E4E1CC30BE0D5541E26D1D4AB3185141601C2E10BE0D5541D7A3701DB31851417B14AEB7BD0D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>227496 - 247232
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000017000000E17A141ED71851411F85EB81DD0D55418FC2F5A8D61851415C8FC295DC0D55419A999979D41851419A9999D9DD0D5541F6285C1FD218514152B81E85DE0D5541A4703D1ACD185141E17A14BEE00D5541CDCCCC7CCA1851417B14AE17E20D5541F6285C2FC9185141B81E859BE20D554133333393C7185141EC51B83EE30D5541D7A3704DCC1851413D0AD773EA0D5541C3F528DCCF185141D7A3708DF30D5541E17A14AED71851418FC2F588070E5541EC51B8FED7185141C3F5286C0A0E5541C3F528FCD91851419A9999D90C0E55417B14AEA7DE185141713D0A470F0E5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000024000000BD3E8883DE1851417C0740340F0E554164149327E6185141287B128E0F0E5541CCBFAC2BEB185141604E4AD30E0E554166666646EA1851418FC2F5180C0E55413BC2E105EA1851414E391E540B0E55411F85EBE1E9185141666666E60A0E5541E6264A9FE71851414D5974EF030E554158C707ABE618514181D5DEFE000E5541CDCCCCCCE5185141295C8F52FE0D5541255D4B85E51851411FAC5B76FD0D5541E3289E4CE4185141D6430FC3F90D554120101DA9E2185141E55044E1F50D55416D4A2AD3DF18514132898729EF0D55414DA01144DA185141CDDB1CE4E30D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>227496 - 264926
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000017000000E17A141ED71851411F85EB81DD0D55418FC2F5A8D61851415C8FC295DC0D55419A999979D41851419A9999D9DD0D5541F6285C1FD218514152B81E85DE0D5541A4703D1ACD185141E17A14BEE00D5541CDCCCC7CCA1851417B14AE17E20D5541F6285C2FC9185141B81E859BE20D554133333393C7185141EC51B83EE30D5541D7A3704DCC1851413D0AD773EA0D5541C3F528DCCF185141D7A3708DF30D5541E17A14AED71851418FC2F588070E5541EC51B8FED7185141C3F5286C0A0E5541C3F528FCD91851419A9999D90C0E55417B14AEA7DE185141713D0A470F0E5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000024000000BD3E8883DE1851417C0740340F0E554164149327E6185141287B128E0F0E5541CCBFAC2BEB185141604E4AD30E0E554166666646EA1851418FC2F5180C0E55413BC2E105EA1851414E391E540B0E55411F85EBE1E9185141666666E60A0E5541E6264A9FE71851414D5974EF030E554158C707ABE618514181D5DEFE000E5541CDCCCCCCE5185141295C8F52FE0D5541255D4B85E51851411FAC5B76FD0D5541E3289E4CE4185141D6430FC3F90D554120101DA9E2185141E55044E1F50D55416D4A2AD3DF18514132898729EF0D55414DA01144DA185141CDDB1CE4E30D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>228418 - 58889
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000026000000D7A370EDD6D95041D7A3708D4DC15441E17A149EDBD9504148E17AD442C15441713D0A27D5D95041000000C03CC15441AE47E13AD1D9504185EB51D839C15441F6285CCFCFD950419A99991939C15441C3F5281CCDD95041EC51B8AE37C15441666666D6C8D950411F85EBF135C15441B81E85CBBFD95041B81E859B33C154415C8FC2B5B6D950413D0AD7D331C154413D0AD793ADD950418FC2F58830C1544148E17A34A4D95041CDCCCCEC2FC154417B14AEE799D950410AD7A3B02FC1544152B81ED58CD950415C8FC2E530C154415C8FC26585D95041E17A14BE31C15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000380000003D0AD793ADD950418FC2F58830C154417E369F8AA6D950415DBFBA1330C1544148E17A34A4D95041CDCCCCEC2FC154417B14AEE799D950410AD7A3B02FC1544108BCF2EC94D9504161E5622630C1544152B81ED58CD950415C8FC2E530C15441E97F714887D95041CBE4388731C15441E5C4721580D95041D90FDA5832C15441F6285CDF7AD950410AD7A3F032C154418E3D76F570D95041BD034B4A34C154417B14AED76FD9504114AE477134C15441CCCCA8AC68D95041AC84BBFC35C15441F6285CBF66D95041713D0A6736C1544114AE472161D950410AD7A30038C15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>229448 - 262501
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000A000000C3F5281C93A55041C3F528FC016854410000005092A55041EC51B89E03685441E17A145EBFA5504114AE474106685441EC51B87EBFA55041EC51B8DEFC675441F6285C4FBBA55041AE47E10ADA675441EC51B8FEB3A550417B14AE67DF6754419A9999F9ABA55041C3F528ACEB675441295C8FC2A8A55041333333D3EE675441B81E852B9BA55041A4703DDAFA675441C3F5281C93A55041C3F528FC01685441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000E2E9968BBCA55041A5628952E4675441F6285C4FBBA55041AE47E10ADA67544158CA118EBAA550410EF39398DA6754414538B9FEB3A550418906AF67DF675441C0F29AF9ABA55041E07B28ACEB675441F94D1D92AAA55041C336A80CED675441295C8FC2A8A55041333333D3EE6754410FBB842B9BA55041D5C83DDAFA67544193D1B77EBFA5504184E5B8DEFC675441E2E9968BBCA55041A5628952E4675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>230175 - 1151957
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003B000000A4703D0A40F750418FC2F5681B2E5441D7A3705D4EF750413D0AD7C31A2E54418FC2F5985AF75041713D0A371A2E5441C3F5281C65F75041B81E855B1A2E54417B14AE4763F750417B14AEC7182E544114AE47A160F75041D7A3700D172E5441D7A370BD5DF75041AE47E12A152E5441D7A3707D5CF750417B14AE57142E5441000000B05BF7504152B81ED5132E54417B14AE475AF750418FC2F5D8122E54411F85EB0159F750411F85EBE1112E544185EB51C853F75041333333830C2E5441E17A149E50F75041A4703D9A082E544152B81EE54FF750413D0AD793072E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000003D3B453733F75041A56C93D6FF2D5441BDA61AA92EF750411B8E4CB4F92D544114D537572DF75041096253EDF72D5441000000A020F75041E17A14CEE62D544148E17AA41CF75041A4703DDAE72D5441DC66A89C1BF75041058C8D66E92D5441E501448419F750411396264CEB2D54418B555D1C18F750417293CBD8EC2D5441A4703DCA16F75041D7A3704DEE2D5441B836C3C517F750419EF6D163EE2D5441DA51FFF819F75041B3BAAF73EE2D5441B5D3E0E41CF75041A85B6E68EE2D5441D271549D1DF75041445C6B42EF2D54414840BB4F1DF750413199EAD3EF2D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>230175 - 5261197
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003B000000A4703D0A40F750418FC2F5681B2E5441D7A3705D4EF750413D0AD7C31A2E54418FC2F5985AF75041713D0A371A2E5441C3F5281C65F75041B81E855B1A2E54417B14AE4763F750417B14AEC7182E544114AE47A160F75041D7A3700D172E5441D7A370BD5DF75041AE47E12A152E5441D7A3707D5CF750417B14AE57142E5441000000B05BF7504152B81ED5132E54417B14AE475AF750418FC2F5D8122E54411F85EB0159F750411F85EBE1112E544185EB51C853F75041333333830C2E5441E17A149E50F75041A4703D9A082E544152B81EE54FF750413D0AD793072E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000003D3B453733F75041A56C93D6FF2D5441BDA61AA92EF750411B8E4CB4F92D544114D537572DF75041096253EDF72D5441000000A020F75041E17A14CEE62D544148E17AA41CF75041A4703DDAE72D5441DC66A89C1BF75041058C8D66E92D5441E501448419F750411396264CEB2D54418B555D1C18F750417293CBD8EC2D5441A4703DCA16F75041D7A3704DEE2D5441B836C3C517F750419EF6D163EE2D5441DA51FFF819F75041B3BAAF73EE2D5441B5D3E0E41CF75041A85B6E68EE2D5441D271549D1DF75041445C6B42EF2D54414840BB4F1DF750413199EAD3EF2D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>230526 - 1005667
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000090000000103000000010000006000000085EB51488FFE50411F85EB713B295441AE47E15A8EFE504152B81E653A295441000000008EFE50413D0AD7C3392954415C8FC2458DFE5041EC51B84E392954415C8FC2958CFE5041AE47E13A39295441CDCCCC5C8BFE5041EC51B84E39295441A4703D9A89FE5041666666A63929544185EB515887FE50415C8FC2253A2954418FC2F57885FE504152B81EA53A29544114AE47F183FE5041A4703D1A3B295441CDCCCCFC82FE5041D7A370AD3B2954419A99996982FE504185EB51983C29544152B81E2582FE5041EC51B81E3F295441E17A14AE82FE50419A99990940295441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000110000000AD7A36041FE5041666666A61829544114AE47F141FE5041EC51B83E1B295441333333A342FE5041333333331E2954418F3298134BFE5041EBB7CF271C295441B086BEAA5BFE50413980ACF517295441CDCCCC6C66FE5041C3F5284C152954418FC2F5A865FE5041AE47E12A122954415C8FC21565FE504114AE47D10F2954417B14AED764FE504114AE47D10E295441B81E856B64FE50418FC2F5180D2954418FC2F5D85DFE5041B81E85AB0E295441333333135AFE50417B14AE870F29544114AE478155FE504148E17AC410295441666666164CFE5041C3F5281C13295441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>230526 - 3332578
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000090000000103000000010000006000000085EB51488FFE50411F85EB713B295441AE47E15A8EFE504152B81E653A295441000000008EFE50413D0AD7C3392954415C8FC2458DFE5041EC51B84E392954415C8FC2958CFE5041AE47E13A39295441CDCCCC5C8BFE5041EC51B84E39295441A4703D9A89FE5041666666A63929544185EB515887FE50415C8FC2253A2954418FC2F57885FE504152B81EA53A29544114AE47F183FE5041A4703D1A3B295441CDCCCCFC82FE5041D7A370AD3B2954419A99996982FE504185EB51983C29544152B81E2582FE5041EC51B81E3F295441E17A14AE82FE50419A99990940295441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000110000000AD7A36041FE5041666666A61829544114AE47F141FE5041EC51B83E1B295441333333A342FE5041333333331E2954418F3298134BFE5041EBB7CF271C295441B086BEAA5BFE50413980ACF517295441CDCCCC6C66FE5041C3F5284C152954418FC2F5A865FE5041AE47E12A122954415C8FC21565FE504114AE47D10F2954417B14AED764FE504114AE47D10E295441B81E856B64FE50418FC2F5180D2954418FC2F5D85DFE5041B81E85AB0E295441333333135AFE50417B14AE870F29544114AE478155FE504148E17AC410295441666666164CFE5041C3F5281C13295441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>877892 - 28656
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000007000000E17A14FEE8A25041F6285CDFCEF55441D7A370CDE0A25041EC51B81EE9F5544185EB51C8EDA250415C8FC2A5EBF55441B81E85EBF2A25041C3F5284CD1F5544185EB51F8F5A25041E17A144EB9F55441AE47E17AEBA2504185EB5188B6F55441E17A14FEE8A25041F6285CDFCEF55441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000EDB9B0FDE7A2504155210B15D2F55441C1E4AF6AE6A25041CFAAB38BD7F554417AD2DDD0E3A2504137669EFFDFF554413E6DD19FE7A2504148A4E89DD6F5544190FD4CF2E9A25041E377EA4CD0F554412182C198EAA25041A7E3C16BCDF554410C866E27EBA250413CC80685C9F55441B306363FEBA25041BBB0F82CC6F55441938C3915ECA25041AB452AF1B6F55441A9888C86EBA25041AB452AF1B6F55441CE7AE1C2E9A250411DE0AD59C7F55441553885AAE9A25041C0340B48C8F55441F3FA2E93E9A2504198D62B90CBF55441B077491CE9A250417CEB1B89CEF55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>873264 - 1362186
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B000000BE0D2DB03F405141710C45EE5BE5544150BC81EB32405141207AD77F5BE55441B24AC6B11E40514180FE588560E55441CBB5E9B3064051419AC31A6166E55441A456DFAD074051418DF23F8977E554410277FF180840514111726AFA76E554414D2B51641F405141F34847846CE55441704906FC414051410BAAA7C56DE554417B065B5263405141E54A9DBF6EE55441B76264FF5E405141C122256765E554419CC552E35E4051413138D04565E55441D198074B6040514187D0468668E55441423D88765E40514146B69FC464E554413F0635205D405141F2E41C2E63E55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C00D2DB03F4051416F0C45EE5BE554414DBC81EB32405141257AD77F5BE55441B24AC6B11E4051417FFE588560E55441C6B5E9B3064051419BC31A6166E55441A856DFAD0740514189F23F8977E554410477FF18084051410F726AFA76E554414C2B51641F405141F54847846CE55441704906FC4140514108AAA7C56DE5544176065B5263405141EA4A9DBF6EE55441B66264FF5E405141C422256765E55441A0C552E35E4051413138D04565E55441D198074B6040514189D0468668E55441463D88765E40514149B69FC464E554413C0635205D405141F3E41C2E63E55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>873264 - 4082440
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B000000BE0D2DB03F405141710C45EE5BE5544150BC81EB32405141207AD77F5BE55441B24AC6B11E40514180FE588560E55441CBB5E9B3064051419AC31A6166E55441A456DFAD074051418DF23F8977E554410277FF180840514111726AFA76E554414D2B51641F405141F34847846CE55441704906FC414051410BAAA7C56DE554417B065B5263405141E54A9DBF6EE55441B76264FF5E405141C122256765E554419CC552E35E4051413138D04565E55441D198074B6040514187D0468668E55441423D88765E40514146B69FC464E554413F0635205D405141F2E41C2E63E55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C00D2DB03F4051416F0C45EE5BE554414DBC81EB32405141257AD77F5BE55441B24AC6B11E4051417FFE588560E55441C6B5E9B3064051419BC31A6166E55441A856DFAD0740514189F23F8977E554410477FF18084051410F726AFA76E554414C2B51641F405141F54847846CE55441704906FC4140514108AAA7C56DE5544176065B5263405141EA4A9DBF6EE55441B66264FF5E405141C422256765E55441A0C552E35E4051413138D04565E55441D198074B6040514189D0468668E55441463D88765E40514149B69FC464E554413C0635205D405141F3E41C2E63E55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>905542 - 2966542
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000000000E037BD5041713D0A37F3125541713D0AA72ABD504100000010F8125541D7A3706D28BD50411F85EB01FB125541E17A144E27BD5041D7A3707DFC125541666666461BBD5041F6285CEFFC1255413D0AD7331ABD5041AE47E10A07135541713D0AD725BD5041B81E855B0A1355413D0AD7332BBD5041AE47E10A0A135541A4703DBA34BD504152B81E950C1355411F85EBB136BD5041295C8FE20D13554185EB51983BBD504100000030141355417B14AE6754BD5041333333D3121355418FC2F5485FBD5041A4703D1A121355417B14AE6768BD50415C8FC2350B135541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E00000051FA22383ABD5041043A1237FA12554130C4370B41BD5041938FDEB1F812554127848CCC44BD5041A53AAA79F71255411294791C46BD5041822F4B0CF7125541321C6FA047BD5041C5C7ABDAF612554193A8561349BD50419BD03AABF61255414FAB782F50BD5041CB0B6CC2F51255415DCC035455BD5041C261176CF5125541FF511A4457BD5041249C8F4BF5125541A879DC615BBD5041E96EA3A5F41255419E88C16761BD50411ACEA488F312554133113BA867BD5041C891239BF21255413637D4F467BD5041A3994704F6125541BCBC5D6568BD5041B4B53146F9125541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>905542 - 3506861
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000000000E037BD5041713D0A37F3125541713D0AA72ABD504100000010F8125541D7A3706D28BD50411F85EB01FB125541E17A144E27BD5041D7A3707DFC125541666666461BBD5041F6285CEFFC1255413D0AD7331ABD5041AE47E10A07135541713D0AD725BD5041B81E855B0A1355413D0AD7332BBD5041AE47E10A0A135541A4703DBA34BD504152B81E950C1355411F85EBB136BD5041295C8FE20D13554185EB51983BBD504100000030141355417B14AE6754BD5041333333D3121355418FC2F5485FBD5041A4703D1A121355417B14AE6768BD50415C8FC2350B135541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E00000051FA22383ABD5041043A1237FA12554130C4370B41BD5041938FDEB1F812554127848CCC44BD5041A53AAA79F71255411294791C46BD5041822F4B0CF7125541321C6FA047BD5041C5C7ABDAF612554193A8561349BD50419BD03AABF61255414FAB782F50BD5041CB0B6CC2F51255415DCC035455BD5041C261176CF5125541FF511A4457BD5041249C8F4BF5125541A879DC615BBD5041E96EA3A5F41255419E88C16761BD50411ACEA488F312554133113BA867BD5041C891239BF21255413637D4F467BD5041A3994704F6125541BCBC5D6568BD5041B4B53146F9125541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>601743 - 1610062
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002E00000066666636E05B50413D0AD74386265541A4703DAAE45B50411F85EBB181265541C3F5289CED5B504114AE47717B265541000000A0F65B5041E17A14BE7726554152B81E25FE5B50417B14AE9775265541C3F5288C115C5041000000C073265541E17A143E145C5041000000506B265541A4703D9A125C5041000000606A265541666666B6145C5041000000B06526554148E17A641B5C50419A9999D9682655410AD7A3601F5C50413D0AD7C3602655413D0AD773205C50415C8FC2655C265541D7A3705D1C5C50415C8FC2455B2655410AD7A310185C50418FC2F59859265541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000B5DA507ADF5B50418558D0AA85265541B955BB1AE25B50410BAB69228326554162DF8748E45B50419A316038812655415A768038EC5B504158B51AD47A265541AD085C7DF35B50418A4A4EA5742655419FDBE73BF95B504194073912702655411795F43FFF5B50419D8EA0396B265541925A3A3F065C5041EAEC0ED06426554179BF499E0C5C5041597294C65E2655417AD04606145C5041AF6BACE957265541333333A3115C5041AE47E1EA5626554114AE47B10E5C5041E17A147E552655414E348E0E0A5C504196CBD6565A26554105502F4B055C5041AAAD5F4F5F265541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888700 - 368017
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000033000000CFFFF425B0D35041A9A9AB578E2B5441BA2292F4B4D350416B911EF18D2B544164887BA7CED35041F7152DF38B2B5441E3D93932CDD35041E8BC1FAF802B544149F80AE8CAD350410CC889DA742B54419588FCC9CBD35041188A4D186E2B5441D3A08930CCD35041D0C2DCAF682B5441F22CD063CCD3504162D059AE642B544156706F63CBD350418F9A37AD612B54411FF7AD62C9D350411A09E9455F2B54416C4DD294C6D350415FC041125E2B5441FD5A4F93C2D350414034FBDE5D2B54415BFF222DC3D350412D67B049692B54413C73DCF9C2D3504141C5774D732B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000D7A3708D9FD35041C3F5283C802B5441713D0A87A2D3504133333333842B5441CDCCCC9CA3D350417B14AE77862B5441AE47E19AA4D3504133333373882B54419A9999F9A5D35041A4703D1A8A2B54419A999949A8D3504152B81EB58B2B54415C8FC2C5ACD35041D7A3701D8E2B54413D0AD733AFD35041666666468F2B5441B81E851BB0D35041C3F5284C8E2B54413D0AD7A3A8D3504185EB51E8802B544166666656A5D3504114AE47317B2B54411F85EB11A4D350413D0AD7B3772B54418FC2F5A8A1D35041EC51B8BE722B5441CDCCCC3C9DD35041666666F6682B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888700 - 1152515
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000033000000CFFFF425B0D35041A9A9AB578E2B5441BA2292F4B4D350416B911EF18D2B544164887BA7CED35041F7152DF38B2B5441E3D93932CDD35041E8BC1FAF802B544149F80AE8CAD350410CC889DA742B54419588FCC9CBD35041188A4D186E2B5441D3A08930CCD35041D0C2DCAF682B5441F22CD063CCD3504162D059AE642B544156706F63CBD350418F9A37AD612B54411FF7AD62C9D350411A09E9455F2B54416C4DD294C6D350415FC041125E2B5441FD5A4F93C2D350414034FBDE5D2B54415BFF222DC3D350412D67B049692B54413C73DCF9C2D3504141C5774D732B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000D7A3708D9FD35041C3F5283C802B5441713D0A87A2D3504133333333842B5441CDCCCC9CA3D350417B14AE77862B5441AE47E19AA4D3504133333373882B54419A9999F9A5D35041A4703D1A8A2B54419A999949A8D3504152B81EB58B2B54415C8FC2C5ACD35041D7A3701D8E2B54413D0AD733AFD35041666666468F2B5441B81E851BB0D35041C3F5284C8E2B54413D0AD7A3A8D3504185EB51E8802B544166666656A5D3504114AE47317B2B54411F85EB11A4D350413D0AD7B3772B54418FC2F5A8A1D35041EC51B8BE722B5441CDCCCC3C9DD35041666666F6682B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888700 - 3946341
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000033000000CFFFF425B0D35041A9A9AB578E2B5441BA2292F4B4D350416B911EF18D2B544164887BA7CED35041F7152DF38B2B5441E3D93932CDD35041E8BC1FAF802B544149F80AE8CAD350410CC889DA742B54419588FCC9CBD35041188A4D186E2B5441D3A08930CCD35041D0C2DCAF682B5441F22CD063CCD3504162D059AE642B544156706F63CBD350418F9A37AD612B54411FF7AD62C9D350411A09E9455F2B54416C4DD294C6D350415FC041125E2B5441FD5A4F93C2D350414034FBDE5D2B54415BFF222DC3D350412D67B049692B54413C73DCF9C2D3504141C5774D732B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000D7A3708D9FD35041C3F5283C802B5441713D0A87A2D3504133333333842B5441CDCCCC9CA3D350417B14AE77862B5441AE47E19AA4D3504133333373882B54419A9999F9A5D35041A4703D1A8A2B54419A999949A8D3504152B81EB58B2B54415C8FC2C5ACD35041D7A3701D8E2B54413D0AD733AFD35041666666468F2B5441B81E851BB0D35041C3F5284C8E2B54413D0AD7A3A8D3504185EB51E8802B544166666656A5D3504114AE47317B2B54411F85EB11A4D350413D0AD7B3772B54418FC2F5A8A1D35041EC51B8BE722B5441CDCCCC3C9DD35041666666F6682B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>422869 - 401176
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000170000004C810CAB9A60504155E051F3212B5541216E292594605041C8B293D2212B55415A271C118E605041F8427EF3212B554144969731806050411F09A11A222B55415C3D708A816050414BB0BF40222B5541FCF89FA080605041534A2846222B5541F090E38A7B6050415AB99D71222B55415DCC0E626B6050415CEBC6E11F2B55419A78E41D69605041C0930FD01D2B554185EB51D85C605041A4703DFA1B2B5541666666865A60504185EB51381D2B55410AD7A3705A6050419A9999591F2B5541AF224D5E6E605041DCFA5A8C222B5541F6285C4F6D6050418FC2F598292B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000333333D38A60504185EB5198152B5541B81E857B8460504185EB5178152B55410AD7A33080605041333333C3142B55418FC2F5887A605041D7A3709D122B55418FC2F5587160504185EB51080E2B5541B81E85BB70605041B81E855B0F2B554152B81EE56F605041F6285C3F112B55417B14AED765605041333333530D2B554185EB51A86460504152B81E85142B5541AE47E19A68605041CDCCCC4C152B554185EB511868605041CDCCCC6C172B554152B81E2565605041D7A370AD162B5541A4703DFA60605041EC51B83E162B55418FC2F5E85D605041A4703D2A162B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>422869 - 1606659
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000170000004C810CAB9A60504155E051F3212B5541216E292594605041C8B293D2212B55415A271C118E605041F8427EF3212B554144969731806050411F09A11A222B55415C3D708A816050414BB0BF40222B5541FCF89FA080605041534A2846222B5541F090E38A7B6050415AB99D71222B55415DCC0E626B6050415CEBC6E11F2B55419A78E41D69605041C0930FD01D2B554185EB51D85C605041A4703DFA1B2B5541666666865A60504185EB51381D2B55410AD7A3705A6050419A9999591F2B5541AF224D5E6E605041DCFA5A8C222B5541F6285C4F6D6050418FC2F598292B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000333333D38A60504185EB5198152B5541B81E857B8460504185EB5178152B55410AD7A33080605041333333C3142B55418FC2F5887A605041D7A3709D122B55418FC2F5587160504185EB51080E2B5541B81E85BB70605041B81E855B0F2B554152B81EE56F605041F6285C3F112B55417B14AED765605041333333530D2B554185EB51A86460504152B81E85142B5541AE47E19A68605041CDCCCC4C152B554185EB511868605041CDCCCC6C172B554152B81E2565605041D7A370AD162B5541A4703DFA60605041EC51B83E162B55418FC2F5E85D605041A4703D2A162B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>422869 - 4269115
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000170000004C810CAB9A60504155E051F3212B5541216E292594605041C8B293D2212B55415A271C118E605041F8427EF3212B554144969731806050411F09A11A222B55415C3D708A816050414BB0BF40222B5541FCF89FA080605041534A2846222B5541F090E38A7B6050415AB99D71222B55415DCC0E626B6050415CEBC6E11F2B55419A78E41D69605041C0930FD01D2B554185EB51D85C605041A4703DFA1B2B5541666666865A60504185EB51381D2B55410AD7A3705A6050419A9999591F2B5541AF224D5E6E605041DCFA5A8C222B5541F6285C4F6D6050418FC2F598292B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000333333D38A60504185EB5198152B5541B81E857B8460504185EB5178152B55410AD7A33080605041333333C3142B55418FC2F5887A605041D7A3709D122B55418FC2F5587160504185EB51080E2B5541B81E85BB70605041B81E855B0F2B554152B81EE56F605041F6285C3F112B55417B14AED765605041333333530D2B554185EB51A86460504152B81E85142B5541AE47E19A68605041CDCCCC4C152B554185EB511868605041CDCCCC6C172B554152B81E2565605041D7A370AD162B5541A4703DFA60605041EC51B83E162B55418FC2F5E85D605041A4703D2A162B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>878156 - 1557734
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000666666D64BA350413D0AD783DAF65441F6285C5F4DA350413D0AD773CDF65441B81E85DB44A350419A999979CCF65441AE47E1AA43A350419A999949CCF6544148E17AC43FA35041A4703DFAEBF654417B14AE5749A350418FC2F598EDF65441666666D64BA350413D0AD783DAF65441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000E6285C5F4DA350413B0AD773CDF65441B81E85DB44A350419A999979CCF65441AE47E1AA43A350419A999949CCF6544148E17AC43FA35041A4703DFAEBF654418D0D6E4D49A350419ECC3997EDF6544163D0D54849A3504111BA81BBEDF654417B14AE5749A350418FC2F598EDF65441AE47E1BA5BA3504152B81EC5F0F6544185EB513860A350418FC2F518D0F65441D7A370AD5AA350415C8FC235CFF65441E6285C5F4DA350413B0AD773CDF65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>878156 - 3509314
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000666666D64BA350413D0AD783DAF65441F6285C5F4DA350413D0AD773CDF65441B81E85DB44A350419A999979CCF65441AE47E1AA43A350419A999949CCF6544148E17AC43FA35041A4703DFAEBF654417B14AE5749A350418FC2F598EDF65441666666D64BA350413D0AD783DAF65441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000E6285C5F4DA350413B0AD773CDF65441B81E85DB44A350419A999979CCF65441AE47E1AA43A350419A999949CCF6544148E17AC43FA35041A4703DFAEBF654418D0D6E4D49A350419ECC3997EDF6544163D0D54849A3504111BA81BBEDF654417B14AE5749A350418FC2F598EDF65441AE47E1BA5BA3504152B81EC5F0F6544185EB513860A350418FC2F518D0F65441D7A370AD5AA350415C8FC235CFF65441E6285C5F4DA350413B0AD773CDF65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>905855 - 954901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000200000015000000295C8F021FDA5041B81E853B063455419A9999F923DA5041CDCCCC8C0A3455418FC2F53829DA50413D0AD703113455413D0AD7A32DDA5041713D0AA719345541AE47E13A34DA50410000008020345541AE47E1DA36DA50413D0AD72321345541EC51B8DE3CDA504152B81EA51E345541D7A370FD41DA5041CDCCCC4C1D3455413D0AD7A344DA5041A4703D6A1D345541666666A645DA5041713D0A971B345541A4703D9A4EDA504152B81E650B345541C3F528BC4FDA504114AE47D108345541666666864BDA504185EB5128073455415C8FC21546DA5041A4703DBA04345541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A19D558340DA50418973DF10013455415287564541DA50419FDD16AE01345541FD0DC64144DA50419E7FB795033455415846B26444DA504112BE8BAB03345541EF37691F45DA5041FF5241200434554150D6801746DA504143A1E1AA0434554104C5D5404BDA504141F63E0907345541065CA04D4BDA50413DB1F50E07345541CA6EFC6E4BDA5041BD77DC1D0734554161FB7DBD4FDA5041DF8424BA08345541F8611FC64FDA5041B1B7E1A8083455416C6CCCA051DA5041B7D3F68B04345541FE7304FA52DA504184C486D901345541C9E915B555DA504104A8F4CAFC335541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454165 - 367124
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000004A0000008772598481AE5041791E613CE0D65441CE932C8181AE5041D68DF73DE0D65441B81E85CB80AE5041D7A3703DE1D65441EC51B86E7FAE5041C3F5289CE5D654413D0AD7737FAE50411F85EBE1EAD6544114AE470182AE504185EB5118ECD6544114AE47C17EAE5041C3F5281CEFD6544148E17AE47BAE5041B81E85CBF1D654418FC2F55886AE504152B81EC5FED65441295C8F2278AE5041713D0A3701D75441713D0A5774AE50410000005002D75441295C8F4279AE504152B81E1506D7544114AE47917FAE50417B14AE1705D75441C3F5287C89AE5041713D0A5706D75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001600000052B81E4592AE504185EB5178EBD654413D0AD7E396AE5041A4703DEAEDD654414BE7C3AB9BAE50414A65488BEED6544157AE79349EAE5041020EA3E0EED654419FD70A57A7AE5041A76066A6EED65441304B586DA7AE5041B4BF9AA6EED654413DFF6A3DA9AE5041CBE9DBAAEED654410643E54AA9AE5041718BFBAAEED65441FD499DDCA9AE5041CD8A51ACEED65441421F7FE7A9AE504110156BACEED6544105A98EE2AAAE50414850B8AEEED65441469D56BDACAE504175CC7953E7D654410EBEAEA4ADAE50417BCFD4BDE3D65441CF9BCC8CAEAE50419A7A1F25E0D65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955638 - 236416
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000004000000B70000000AD7A3A003AB504166666666D30B54413D0AD78304AB5041D7A3706DD20B5441EC51B86E04AB50410AD7A300CF0B5441B81E851B05AB50415C8FC225CC0B5441CDCCCCDC06AB50419A9999E9C80B544152B81ED506AB5041F6285CFFC60B5441E17A14BE04AB50411F85EBD1C50B5441666666A602AB5041713D0A57C40B54415C8FC23500AB5041713D0A07C10B54410AD7A360FDAA5041333333C3BE0B54411F85EB11FBAA5041EC51B87EBC0B5441B81E85ABF7AA504166666646BB0B544185EB5168F6AA504185EB51F8BA0B544114AE47A1F4AA50413D0AD783BB0B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001100000066666686DDAA504114AE4791030C544184999989DCAA50417C6666B6FD0B54414DCACD18D5AA50411943645EFD0B5441D1CCCCCCD4AA5041AE47E15AFD0B54411FAE4771CCAA50415DE17AD4FE0B54417B1682FEC5AA50419AA82D14000C54411A8FED59C6AA504122F4F95E000C5441C1F3BF3DC9AA50416B26E3D0010C5441E73B15CACAAA5041DE74499A040C5441D100E2B7CBAA50415605F4B2070C5441AF164ED2CBAA5041CE0B05F0080C5441F553D694CBAA5041089BD3600A0C544120576E4CCDAA5041231F6FC8090C54418C4FBE50D1AA50414CD3F363080C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888917 - 354166
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000033000000F6285C6FECB55041000000E02C2854418FC2F598EDB5504185EB51282D2854413D0AD773EFB55041CDCCCC4C282854419A999929F0B550417B14AE572528544114AE47A1EFB550410AD7A3002228544114AE4751ECB5504114AE47C11A28544152B81E85E6B55041A4703D8A132854410AD7A3A0E4B55041AE47E14A112854415C8FC2C5DEB550419A9999A909285441F6285C5FDCB55041000000400628544114AE47E1DAB5504148E17A14042854418FC2F5C8D8B55041CDCCCC5CFD275441713D0AC7CCB550416666662600285441A4703D9ACAB55041A4703DDA08285441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C00000096B4A0769EB55041DC1593B1182854419E8DA8829CB55041AF3B250D162854411C8111A09CB5504135089636142854414A5B7F449FB5504145D406601228544119505ADAA1B55041FAA6DC07112854410361612BA2B55041406629C3102854419AF5F97BA2B550411A13C7800F2854417835EDE8A1B55041FE2CF5450F285441DD5BB290A1B5504121ECCE8C0D285441D043318CA1B55041A5C235250D285441D5684973A1B55041F31161E80A285441896D3D56A1B550414E8A412F08285441239CB92FA1B5504150E2D4CF07285441FE015E12A0B550411B834A4705285441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>874571 - 2348678
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000004F1ED8EBF35E51418329A6D128AF544184F23C40F75E51413E502B8627AF544104B37785FC5E51416D31C26C25AF544199078065085F514192EBC17820AF54416CEADDA50C5F514175D1838D1EAF5441A4456A8F155F5141C1F78D311AAF54415869F6AB1A5F514179FBDFCD16AF544129D6632A135F5141E1B1160D13AF5441F7DECC59105F5141F8A170F40FAF5441F9104F010E5F5141A5DB939C10AF5441D643E2050D5F5141CC47430D0EAF54418B77CD310C5F5141B6FCFDCC0AAF5441B02E2228015F5141987B58DE0EAF5441DF6727CCF25E51410A8B44CA12AF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000003D0AD743EF5E514148E17AD413AF5441F6285C9FEC5E514114AE47C114AF544100000070EB5E51411F85EB2115AF54415C8FC255EE5E5141F6285C6F1DAF5441E17A147EF05E514148E17A6422AF5441AE47E1AAF55E5141B81E856B20AF544114AE4781FA5E5141D7A370AD1EAF5441713D0A17005F514114AE47811CAF5441333333C3075F51410AD7A36019AF54419A9999C9095F514148E17A8418AF54410AD7A3D00C5F51413D0AD7F316AF5441F6285C4F0E5F5141F6285C1F16AF5441AE47E1EA0F5F51413D0AD71315AF54417B14AE07115F5141C3F5285C14AF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>874571 - 5167512
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000004F1ED8EBF35E51418329A6D128AF544184F23C40F75E51413E502B8627AF544104B37785FC5E51416D31C26C25AF544199078065085F514192EBC17820AF54416CEADDA50C5F514175D1838D1EAF5441A4456A8F155F5141C1F78D311AAF54415869F6AB1A5F514179FBDFCD16AF544129D6632A135F5141E1B1160D13AF5441F7DECC59105F5141F8A170F40FAF5441F9104F010E5F5141A5DB939C10AF5441D643E2050D5F5141CC47430D0EAF54418B77CD310C5F5141B6FCFDCC0AAF5441B02E2228015F5141987B58DE0EAF5441DF6727CCF25E51410A8B44CA12AF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000003D0AD743EF5E514148E17AD413AF5441F6285C9FEC5E514114AE47C114AF544100000070EB5E51411F85EB2115AF54415C8FC255EE5E5141F6285C6F1DAF5441E17A147EF05E514148E17A6422AF5441AE47E1AAF55E5141B81E856B20AF544114AE4781FA5E5141D7A370AD1EAF5441713D0A17005F514114AE47811CAF5441333333C3075F51410AD7A36019AF54419A9999C9095F514148E17A8418AF54410AD7A3D00C5F51413D0AD7F316AF5441F6285C4F0E5F5141F6285C1F16AF5441AE47E1EA0F5F51413D0AD71315AF54417B14AE07115F5141C3F5285C14AF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889155 - 1000276
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000033000000EC51B88EB06B51419A9999093334544152B81E15B16B5141E17A149E34345441D7A3704DB26B5141CDCCCCDC3634544152B81EB5B46B514152B81EA53A34544185EB51B8B56B51418FC2F5B837345441CDCCCC1CB86B5141E17A141E353454418FC2F5D8BC6B5141000000B0303454413D0AD7A3C06B5141D7A370BD2D3454419A999909C56B5141F6285CBF2A34544133333323D66B5141F6285CDF20345441AE47E1EAE16B514166666666193454419A999939E86B5141EC51B8DE153454413D0AD7F3F36B51413333337312345441F6285CCFF56B5141F6285C9F11345441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005F00000019D4BA90B66B514114A1120BF8335441C901082EB86B5141BF100857F6335441E8FBF013B96B5141A444C041F5335441B2D7D8A8BA6B5141311F564AF333544139D7EBC0BB6B514152931FEEF133544198E62C78BD6B51412EF100CCEF33544114AE4751BE6B5141E17A14BEEE335441604B91F0BE6B51411002F576EE3354412CBAB858BE6B51412FEB1ED0EC33544138C55ADFBC6B5141C90E2E39EC33544101B9FB5EBA6B51412D5FCE6AEC335441137F8FFAB46B514101C98626ED3354419CEC803EAE6B5141ED12FA10EE3354418DC86B40A86B514157439576EE335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889155 - 3809084
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000033000000EC51B88EB06B51419A9999093334544152B81E15B16B5141E17A149E34345441D7A3704DB26B5141CDCCCCDC3634544152B81EB5B46B514152B81EA53A34544185EB51B8B56B51418FC2F5B837345441CDCCCC1CB86B5141E17A141E353454418FC2F5D8BC6B5141000000B0303454413D0AD7A3C06B5141D7A370BD2D3454419A999909C56B5141F6285CBF2A34544133333323D66B5141F6285CDF20345441AE47E1EAE16B514166666666193454419A999939E86B5141EC51B8DE153454413D0AD7F3F36B51413333337312345441F6285CCFF56B5141F6285C9F11345441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005F00000019D4BA90B66B514114A1120BF8335441C901082EB86B5141BF100857F6335441E8FBF013B96B5141A444C041F5335441B2D7D8A8BA6B5141311F564AF333544139D7EBC0BB6B514152931FEEF133544198E62C78BD6B51412EF100CCEF33544114AE4751BE6B5141E17A14BEEE335441604B91F0BE6B51411002F576EE3354412CBAB858BE6B51412FEB1ED0EC33544138C55ADFBC6B5141C90E2E39EC33544101B9FB5EBA6B51412D5FCE6AEC335441137F8FFAB46B514101C98626ED3354419CEC803EAE6B5141ED12FA10EE3354418DC86B40A86B514157439576EE335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>874040 - 1470090
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002B0000009A9999A9DAFE5041AE47E19A1B245541B81E855BD8FE5041C3F528EC1924554166666606D5FE5041666666B61724554133333383D1FE50411F85EB011624554152B81E35CFFE5041B81E85EB14245541F6285C7FCCFE5041F6285C4F1324554114AE47D1CAFE504148E17A441624554148E17AC4C8FE5041AE47E19A192455410AD7A390C6FE5041CDCCCCBC1D24554148E17AB4C3FE5041E17A140E232455413D0AD723C1FE5041666666C627245541295C8FA2C0FE504148E17A042924554185EB5108C4FE5041D7A370FD2924554152B81E85C8FE50419A9999192C245541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000004F19C176C5FE50413A0755A51A24554107A23146C7FE50417DB964481B245541031EE6B8C7FE50415BAEC47E1B24554120F5F2B7C8FE5041253B64B219245541C6E61D07C9FE5041655C642E1924554114AE47D1CAFE504148E17A4416245541F6285C7FCCFE5041F6285C4F132455418FC2F558C8FE5041333333031124554185EB51F8C7FE5041F6285CBF0E2455419A999929C3FE50415C8FC2450C2455418FC2F558C1FE5041333333830B24554185EB51F8BEFE5041A4703D5A102455418FC2F5D8BDFE50419A9999C90F2455413D0AD703BDFE5041AE47E14A11245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>874040 - 3445350
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002B0000009A9999A9DAFE5041AE47E19A1B245541B81E855BD8FE5041C3F528EC1924554166666606D5FE5041666666B61724554133333383D1FE50411F85EB011624554152B81E35CFFE5041B81E85EB14245541F6285C7FCCFE5041F6285C4F1324554114AE47D1CAFE504148E17A441624554148E17AC4C8FE5041AE47E19A192455410AD7A390C6FE5041CDCCCCBC1D24554148E17AB4C3FE5041E17A140E232455413D0AD723C1FE5041666666C627245541295C8FA2C0FE504148E17A042924554185EB5108C4FE5041D7A370FD2924554152B81E85C8FE50419A9999192C245541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000004F19C176C5FE50413A0755A51A24554107A23146C7FE50417DB964481B245541031EE6B8C7FE50415BAEC47E1B24554120F5F2B7C8FE5041253B64B219245541C6E61D07C9FE5041655C642E1924554114AE47D1CAFE504148E17A4416245541F6285C7FCCFE5041F6285C4F132455418FC2F558C8FE5041333333031124554185EB51F8C7FE5041F6285CBF0E2455419A999929C3FE50415C8FC2450C2455418FC2F558C1FE5041333333830B24554185EB51F8BEFE5041A4703D5A102455418FC2F5D8BDFE50419A9999C90F2455413D0AD703BDFE5041AE47E14A11245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>874092 - 874023
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000018000000713D0A0732FF5041B81E858BB7245541333333A330FF5041713D0AF7BD245541F6285CEF21FF5041E17A14EEBA245541666666761BFF5041C3F5286CB9245541000000001BFF50413D0AD763BE2455418FC2F59824FF504148E17A44C124554114AE47B12FFF5041713D0AB7C224554148E17AB44BFF50413D0AD713C7245541000000104DFF5041C3F528FCC324554152B81E754FFF50419A999959C1245541F6285C4F55FF5041F6285CEFB9245541713D0AC757FF5041AE47E15AB624554185EB51F85BFF5041EC51B81EB0245541A4703D4A5BFF5041E17A148EAF245541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000B3D2D66657FF50411798B778AD245541F4AA16AC5BFF5041CC4ECEB1AF245541B30B9A165CFF50412BFF0FE7AF2455418A81F4585FFF5041BBB4E013AA245541A694C21461FF5041878C3B80A5245541E8B23A1C60FF5041697B76E0A4245541D7A3703D5FFF5041EC51B83EA4245541C3F528BC54FF50415C8FC2B59C24554152B81E754DFF5041B81E857B97245541F6285C1F49FF5041CDCCCC5C94245541295C8FA247FF50415C8FC2E5932455417B14AEA73EFF5041295C8FF29C2455410000007042FF5041F6285CAF9F245541295C8FD245FF5041EC51B8FEA1245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889276 - 3176899
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000004D000000CDCCCC7CD96851411F85EBA1CA335441295C8FC2D96851419A999979CD33544148E17AC4DA68514148E17A24CD3354417B14AE97E0685141E17A148ECA33544148E17A84E2685141713D0A07CA33544166666626E46851418FC2F518CA3354419A999939E56851419A9999E9CA33544185EB51F8E56851417B14AED7CB335441A4703D6AE6685141C3F528ECCC335441B81E859BE668514114AE4781CE33544114AE4781E668514100000090D03354419A999929E668514114AE4701D3335441000000B0E5685141A4703D2AD5335441EC51B8CEE46851411F85EB91D7335441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000032000000F39297E430695141556AAE08D8335441A30ADC4E306951419763B16ED8335441DB7AB1272F695141CB3F158ED8335441166334082F69514189588697D8335441FE4E4FE42D695141BCA95DA7D83354414653D90229695141784BBD21D93354419D5E5FDC25695141032FC98FDD335441F8FDFA0B24695141ABF8329BE03354416E5FEFE621695141AB6AE7C8E63354417A2A8AB62069514188BF091EE833544179A56FC81E69514125B04C54EA33544132AD1A97176951418876DA25F0335441001C8702176951419F9F339DF03354414045136E12695141B7BCD88FF4335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889276 - 3396048
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000004D000000CDCCCC7CD96851411F85EBA1CA335441295C8FC2D96851419A999979CD33544148E17AC4DA68514148E17A24CD3354417B14AE97E0685141E17A148ECA33544148E17A84E2685141713D0A07CA33544166666626E46851418FC2F518CA3354419A999939E56851419A9999E9CA33544185EB51F8E56851417B14AED7CB335441A4703D6AE6685141C3F528ECCC335441B81E859BE668514114AE4781CE33544114AE4781E668514100000090D03354419A999929E668514114AE4701D3335441000000B0E5685141A4703D2AD5335441EC51B8CEE46851411F85EB91D7335441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000032000000F39297E430695141556AAE08D8335441A30ADC4E306951419763B16ED8335441DB7AB1272F695141CB3F158ED8335441166334082F69514189588697D8335441FE4E4FE42D695141BCA95DA7D83354414653D90229695141784BBD21D93354419D5E5FDC25695141032FC98FDD335441F8FDFA0B24695141ABF8329BE03354416E5FEFE621695141AB6AE7C8E63354417A2A8AB62069514188BF091EE833544179A56FC81E69514125B04C54EA33544132AD1A97176951418876DA25F0335441001C8702176951419F9F339DF03354414045136E12695141B7BCD88FF4335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889277 - 3176899
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000020000000F6285CBF0D695141AE47E15AFC335441F6285C9F13695141713D0A17FC3354416666662616695141CDCCCCBCFB335441EC51B84E1A69514166666696FB33544185EB515820695141B81E853BF8335441A4703DDA21695141666666C6F6335441713D0A8723695141A4703DAAF43354410000009025695141295C8FE2F1335441D7A370BD28695141F6285C3FEC33544114AE47612B6951418FC2F598E6335441295C8F022D6951417B14AE97E3335441A4703DAA2F695141EC51B8AEE03354418FC2F5F8336951419A999939DD335441EC51B87E37695141AE47E10ADB335441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000032000000F39297E430695141556AAE08D8335441A30ADC4E306951419763B16ED8335441DB7AB1272F695141CB3F158ED8335441166334082F69514189588697D8335441FE4E4FE42D695141BCA95DA7D83354414653D90229695141784BBD21D93354419D5E5FDC25695141032FC98FDD335441F8FDFA0B24695141ABF8329BE03354416E5FEFE621695141AB6AE7C8E63354417A2A8AB62069514188BF091EE833544179A56FC81E69514125B04C54EA33544132AD1A97176951418876DA25F0335441001C8702176951419F9F339DF03354414045136E12695141B7BCD88FF4335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889277 - 3396048
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000020000000F6285CBF0D695141AE47E15AFC335441F6285C9F13695141713D0A17FC3354416666662616695141CDCCCCBCFB335441EC51B84E1A69514166666696FB33544185EB515820695141B81E853BF8335441A4703DDA21695141666666C6F6335441713D0A8723695141A4703DAAF43354410000009025695141295C8FE2F1335441D7A370BD28695141F6285C3FEC33544114AE47612B6951418FC2F598E6335441295C8F022D6951417B14AE97E3335441A4703DAA2F695141EC51B8AEE03354418FC2F5F8336951419A999939DD335441EC51B87E37695141AE47E10ADB335441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000032000000F39297E430695141556AAE08D8335441A30ADC4E306951419763B16ED8335441DB7AB1272F695141CB3F158ED8335441166334082F69514189588697D8335441FE4E4FE42D695141BCA95DA7D83354414653D90229695141784BBD21D93354419D5E5FDC25695141032FC98FDD335441F8FDFA0B24695141ABF8329BE03354416E5FEFE621695141AB6AE7C8E63354417A2A8AB62069514188BF091EE833544179A56FC81E69514125B04C54EA33544132AD1A97176951418876DA25F0335441001C8702176951419F9F339DF03354414045136E12695141B7BCD88FF4335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>577949 - 2960503
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001700000085EB51E8521B5141EC51B80EFB6B5441604F96AA511B514199C8A639F66B5441C3F5281C371B514152B81E45F86B544114AE47B1161B5141295C8FC2FA6B54411F85EB81F61A5141B81E853BFD6B544114AE4781D51A5141EC51B8EEFD6B54415C8FC275B51A5141CDCCCC9CFE6B544114AE47F1B41A5141F6285C9FFE6B5441EC51B8FEB41A514166666616FF6B54418FC2F588B51A5141C3F528DC036C5441D7A370CDB61A51413D0AD7130F6C54418FC2F5D8B61A514114AE47710F6C5441B81E85BBB71A5141333333730F6C54419A9999D9B81A51415C8FC2750F6C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001100000000D87558511B51417F185EEFF56B544170A5E8024D1B5141776DFDECE66B54413E87B243311B5141F24566FEE76B5441052635C6201B51411EF9EEC3E86B54411224FB7B131B514197AB2122E96B544178B76914091B51413C3567B0E96B544116405F37FD1A514192BC8FB6EA6B54414AD3E707F21A5141C81CFA0DEA6B5441EBF4CF62E81A51417E8D0934E96B5441CC388813E21A5141EEAE0BA6E86B5441DCDA3FE1E11A5141961096ABFD6B54413B1DE473F21A514130818951FD6B5441793626F0111B5141BCD20F20FB6B54412BB0D871351B51415084DD65F86B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>129256 - 199954
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000070000008DE2647844BB504146BA637F05465541CDCCCCDC43BB5041666666A60346554152B81EF539BB5041333333B304465541FB0EF2B12FBB50416A1A7AC705465541E900FCD12FBB504140982F1008465541E17F26053ABB504143A9C9C7064655418DE2647844BB504146BA637F05465541
+</a>
+
+<b>
+010600000001000000010300000001000000090000004E465A1C3BBB5041AB3BE7930446554114111FF539BB5041CA2933B304465541F56AD50C3ABB5041391AA4C606465541C70E466A44BB5041DAB33D600546554195D026D843BB5041FE8BE4A603465541E2FC621D3EBB50418B55614204465541C47C84613CBB504162F86E7104465541EE69601F3BBB50413A2B9593044655414E465A1C3BBB5041AB3BE79304465541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>129256 - 367288
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000070000008DE2647844BB504146BA637F05465541CDCCCCDC43BB5041666666A60346554152B81EF539BB5041333333B304465541FB0EF2B12FBB50416A1A7AC705465541E900FCD12FBB504140982F1008465541E17F26053ABB504143A9C9C7064655418DE2647844BB504146BA637F05465541
+</a>
+
+<b>
+010600000001000000010300000001000000090000004E465A1C3BBB5041AB3BE7930446554114111FF539BB5041CA2933B304465541F56AD50C3ABB5041391AA4C606465541C70E466A44BB5041DAB33D600546554195D026D843BB5041FE8BE4A603465541E2FC621D3EBB50418B55614204465541C47C84613CBB504162F86E7104465541EE69601F3BBB50413A2B9593044655414E465A1C3BBB5041AB3BE79304465541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>963102 - 36242
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000022000000A6670D27E2D150411F0AF018BE3655413EDA7C44E2D150416D451375BF365541244C1B5EE3D15041DC302563C436554107A29439E4D1504172B381F2C936554132E82782E4D150419E04DE7DCE365541CED15F11E4D15041BF8CB346D6365541D0D15F11E4D15041F8020268E0365541250AAF4DE4D15041704EBC92E836554177EBEB3EE5D15041649B601BEC36554138168035E7D1504174F90C6DF036554132114954E9D15041A316E61DF4365541BA1496D7EBD15041EF9BD9E2F73655415D80FD6EEED15041AE6F5B8EFA3655413A3F384FF1D15041718662B3FC365541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000E17A14BEF6D150417B14AE2701375541D9ABBEF5F7D150416A95EC130237554188C1A2EB08D25041C6796EB503375541EA85AD17F8D15041F6EF1772003755416BC720DFF4D15041247B8803FF365541373F384FF1D15041728662B3FC3655415E80FD6EEED15041B36F5B8EFA365541BF1496D7EBD15041F39BD9E2F736554136114954E9D15041A016E61DF43655413B168035E7D1504178F90C6DF036554176EBEB3EE5D15041619B601BEC365541240AAF4DE4D15041704EBC92E8365541CDD15F11E4D15041FA020268E0365541CDD15F11E4D15041C08CB346D6365541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>963102 - 61623
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000022000000A6670D27E2D150411F0AF018BE3655413EDA7C44E2D150416D451375BF365541244C1B5EE3D15041DC302563C436554107A29439E4D1504172B381F2C936554132E82782E4D150419E04DE7DCE365541CED15F11E4D15041BF8CB346D6365541D0D15F11E4D15041F8020268E0365541250AAF4DE4D15041704EBC92E836554177EBEB3EE5D15041649B601BEC36554138168035E7D1504174F90C6DF036554132114954E9D15041A316E61DF4365541BA1496D7EBD15041EF9BD9E2F73655415D80FD6EEED15041AE6F5B8EFA3655413A3F384FF1D15041718662B3FC365541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000E17A14BEF6D150417B14AE2701375541D9ABBEF5F7D150416A95EC130237554188C1A2EB08D25041C6796EB503375541EA85AD17F8D15041F6EF1772003755416BC720DFF4D15041247B8803FF365541373F384FF1D15041728662B3FC3655415E80FD6EEED15041B36F5B8EFA365541BF1496D7EBD15041F39BD9E2F736554136114954E9D15041A016E61DF43655413B168035E7D1504178F90C6DF036554176EBEB3EE5D15041619B601BEC365541240AAF4DE4D15041704EBC92E8365541CDD15F11E4D15041FA020268E0365541CDD15F11E4D15041C08CB346D6365541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>889581 - 57812
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000400000046000000000000D06A6851410000001039335441CDCCCCBC6A685141295C8F323F3354415C8FC2A56A685141AE47E13A40335441AE47E10A6A6851413D0AD7734233544185EB51A8696851415C8FC2E543335441A4703DFA69685141CDCCCC7C45335441713D0A776B6851413D0AD7334A3354411F85EBA16C68514114AE47314C3354410AD7A3B06E685141A4703D4A4D3354419A999929716851410AD7A3904D335441B81E855B73685141666666364F3354417B14AE1778685141295C8FF25333544114AE47517B6851415C8FC2E55633544185EB51B87D6851415C8FC29557335441 [...]
+</a>
+
+<b>
+01060000000100000001030000000400000047000000C8D76D9E7A685141230626730B335441CDCCCC7C7A6851410AD7A3700B335441B81E857B75685141CDCCCCCC0C335441A4703D5A726851411F85EB610F335441C3F528AC6C6851418FC2F5880F335441CDCCCC6C6B685141B81E855B113354418FC2F5B868685141AE47E19A17335441713D0AB765685141713D0A871F335441666666466468514114AE475123335441A4703DBA64685141B81E858B243354418FC2F568676851411F85EBB1243354419A9999096A6851418FC2F54826335441666666A66A685141CDCCCC5C283354410000007069685141333333632B335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>874797 - 2985137
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002A000000EC51B86EABE350418FC2F5589CEF5441A4703DCAADE3504152B81E45A0EF544185EB5188AFE350410AD7A370A3EF54419A999939C0E35041A4703DCA9AEF544114AE4781CEE35041CDCCCC1C93EF5441666666F6CDE3504185EB51889CEF5441AE47E15ACDE3504114AE4701A7EF54411F85EB21D1E35041F6285C4FA5EF54418FC2F568D4E350417B14AE57A4EF5441B81E85ABD8E3504152B81E15A4EF5441CDCCCCDCD7E3504133333313A3EF54418FC2F588D5E35041666666A69EEF54413D0AD7B3D3E35041295C8F7299EF5441E17A142ED3E35041E17A14FE94EF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003F00000017A21B23D0E3504178882BA8A5EF54415E38D0D1D1E35041BDA90BE2A4EF5441D3F50F5ED3E3504173463858A4EF5441D83703AED4E35041FBBBD9F0A3EF5441DCACD722D7E35041C0762ABDA3EF5441450C9A70D5E3504142F39E929FEF5441384600BED3E350416917BB709BEF5441485683AFD2E350418E84604099EF54413FAB03A9D3E35041F93EDFAB88EF5441DC02A4FAD4E35041ACE05A4874EF54410E1EC5D8D5E35041E31D138167EF5441AEBF4DFFD5E35041B5D18A6765EF5441F6285C3FD6E35041A4703D9A61EF544166666696D6E3504148E17A945CEF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>875670 - 401277
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000008000000010300000001000000260000000000000051F85041AE47E1AA1CDD5441C3F528DC50F85041E17A14EE1BDD5441295C8F624CF8504148E17A141CDD5441D7A370DD45F850418FC2F5E820DD5441F6285CBF3FF8504148E17AB424DD5441C3F5286C39F85041D7A3708D27DD5441713D0A772CF850411F85EBD12CDD54419A9999192DF850415C8FC2E52EDD5441EC51B83E2EF85041E17A149E2EDD54415C8FC27530F850411F85EB312EDD5441C3F5285C34F85041333333832EDD5441F6285CFF36F85041A4703D5A2DDD54416666668637F85041333333232BDD5441333333F339F85041F6285CDF29DD5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000120000008F67BA7D5CF75041BFA6088739DD54413D0AD70359F75041295C8FC238DD5441713D0A274FF750411F85EB0138DD5441666666C64EF7504152B81EC53BDD5441B1B30B144FF7504123A7CD853DDD54411A79AE2C4FF7504126F0DCAE3DDD5441F38836DF50F75041A032C2FA3FDD54416DDDD1DE51F75041A3FD366042DD5441201A5C1A52F750410519E70C44DD5441E90950A453F75041EB6B659744DD5441FF7CA69E66F75041C5CD33F343DD5441D467AF9E66F75041798033F343DD5441C851B89E66F75041343333F343DD5441A06610D365F750418185C09C41DD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>875670 - 418387
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000008000000010300000001000000260000000000000051F85041AE47E1AA1CDD5441C3F528DC50F85041E17A14EE1BDD5441295C8F624CF8504148E17A141CDD5441D7A370DD45F850418FC2F5E820DD5441F6285CBF3FF8504148E17AB424DD5441C3F5286C39F85041D7A3708D27DD5441713D0A772CF850411F85EBD12CDD54419A9999192DF850415C8FC2E52EDD5441EC51B83E2EF85041E17A149E2EDD54415C8FC27530F850411F85EB312EDD5441C3F5285C34F85041333333832EDD5441F6285CFF36F85041A4703D5A2DDD54416666668637F85041333333232BDD5441333333F339F85041F6285CDF29DD5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000120000008F67BA7D5CF75041BFA6088739DD54413D0AD70359F75041295C8FC238DD5441713D0A274FF750411F85EB0138DD5441666666C64EF7504152B81EC53BDD5441B1B30B144FF7504123A7CD853DDD54411A79AE2C4FF7504126F0DCAE3DDD5441F38836DF50F75041A032C2FA3FDD54416DDDD1DE51F75041A3FD366042DD5441201A5C1A52F750410519E70C44DD5441E90950A453F75041EB6B659744DD5441FF7CA69E66F75041C5CD33F343DD5441D467AF9E66F75041798033F343DD5441C851B89E66F75041343333F343DD5441A06610D365F750418185C09C41DD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979017 - 254458
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000A9588C0E80A650417B3C84FB1D03554172F5275A80A650414FFAEB2D1E0355413BBF6E8381A650414E77C1841E035541D70C383688A6504194AAA7D31E03554115AADBE99AA65041EE84F0AF1F0355419A999919A9A65041713D0A5720035541D048A33CA9A650415DF11CD31D035541C71939ABAAA650417CFF5169030355414F812345A5A65041C4A3FF010303554177CDD43BA1A65041FB0664B6020355413098C57C97A6504173CD2C1F020355411B74782A8CA65041797B8AD700035541E0BBF0C27FA65041CCAD182BFF025541389CDCCE7CA65041EDEFB0F8FE025541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000230000006EA385127FA65041B29C674412035541F829988D7FA65041FD654F2114035541FB376DA1A9A65041DB3A0790160355417DFA94DEA9A650411142FF27120355413BE9BC29AAA65041BDF6B7BD0C035541950A0E96AAA650411172C6EF04035541C71939ABAAA650417CFF516903035541C6322280A1A650414C7263BB0203554177CDD43BA1A65041FB0664B6020355413098C57C97A6504173CD2C1F02035541350B205390A650417DA9E44F010355411B74782A8CA65041797B8AD7000355417AB8086880A650417BF65E41FF0255411C7D1FA47FA65041AEBA0A29FF025541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>979017 - 285869
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000A9588C0E80A650417B3C84FB1D03554172F5275A80A650414FFAEB2D1E0355413BBF6E8381A650414E77C1841E035541D70C383688A6504194AAA7D31E03554115AADBE99AA65041EE84F0AF1F0355419A999919A9A65041713D0A5720035541D048A33CA9A650415DF11CD31D035541C71939ABAAA650417CFF5169030355414F812345A5A65041C4A3FF010303554177CDD43BA1A65041FB0664B6020355413098C57C97A6504173CD2C1F020355411B74782A8CA65041797B8AD700035541E0BBF0C27FA65041CCAD182BFF025541389CDCCE7CA65041EDEFB0F8FE025541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000230000006EA385127FA65041B29C674412035541F829988D7FA65041FD654F2114035541FB376DA1A9A65041DB3A0790160355417DFA94DEA9A650411142FF27120355413BE9BC29AAA65041BDF6B7BD0C035541950A0E96AAA650411172C6EF04035541C71939ABAAA650417CFF516903035541C6322280A1A650414C7263BB0203554177CDD43BA1A65041FB0664B6020355413098C57C97A6504173CD2C1F02035541350B205390A650417DA9E44F010355411B74782A8CA65041797B8AD7000355417AB8086880A650417BF65E41FF0255411C7D1FA47FA65041AEBA0A29FF025541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>290910 - 58732
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000F6285CBF16BB504185EB5198ABD25441B81E85EB19BB5041CDCCCC5CCCD254413D0AD7F324BB50413D0AD7B3CAD25441B81E85DB2ABB50415C8FC295C9D25441EC51B8DE2ABB5041EC51B82EAFD25441713D0A771FBB504133333323ADD25441F6285CBF16BB504185EB5198ABD25441
+</a>
+
+<b>
+01060000000100000001030000000100000008000000742D85DB2ABB5041E0FE4895C9D2544153A5D9DD2ABB5041FDC6F45BB6D25441B57936DE2ABB50410034AC2FAFD254413E9F60BF16BB5041B4018098ABD25441B81E85EB19BB5041CDCCCC5CCCD254413D0AD7F324BB50413D0AD7B3CAD254416225340A25BB504193959BAFCAD25441742D85DB2ABB5041E0FE4895C9D25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>879926 - 3128081
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000100000004EBC38F1FC22514164A40317FF935441C3F5284CD722514185EB5178EE9354413D0AD723DC2251419A9999F9DE935441927A2455BC225141AA5390A2D9935441E17A146EBD2251418FC2F5C8DA935441C3F5282CC3225141B81E859BE1935441CDCCCC0CC8225141C3F5280CE8935441CDCCCC4CCB22514185EB5188ED9354410AD7A370CD22514185EB5188F2935441AE47E12ACF2251417B14AEA7F8935441CDCCCCBCCF2251411F85EB210094544152B81E85CF225141666666A6039454415C8FC295D0225141C3F5281C059454411F85EB71D3225141295C8FA206945441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001200000093165164D72251412C2BFC82EE935441C3F5284CD722514185EB5178EE9354413D0AD723DC2251419A9999F9DE9354418D62107CBC225141809159CBD993544182A44E7EC2225141F26FF8CCE09354410E71C522C4225141F8FF21E1E2935441DD222386C722514156B55B5AE79354418B65C5A8CA225141015A7D73EC935441DDCF3B8CCC2251413608A972F09354415636DF5BCE225141D2BD03CAF59354419429DE49CF225141C3F8303EFA93544184CE5D85CF225141C2226AA203945441AE34C8A1D122514151E812AB05945441A908FFCCD4225141F7BA12FF06945441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>879926 - 3511321
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000100000004EBC38F1FC22514164A40317FF935441C3F5284CD722514185EB5178EE9354413D0AD723DC2251419A9999F9DE935441927A2455BC225141AA5390A2D9935441E17A146EBD2251418FC2F5C8DA935441C3F5282CC3225141B81E859BE1935441CDCCCC0CC8225141C3F5280CE8935441CDCCCC4CCB22514185EB5188ED9354410AD7A370CD22514185EB5188F2935441AE47E12ACF2251417B14AEA7F8935441CDCCCCBCCF2251411F85EB210094544152B81E85CF225141666666A6039454415C8FC295D0225141C3F5281C059454411F85EB71D3225141295C8FA206945441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001200000093165164D72251412C2BFC82EE935441C3F5284CD722514185EB5178EE9354413D0AD723DC2251419A9999F9DE9354418D62107CBC225141809159CBD993544182A44E7EC2225141F26FF8CCE09354410E71C522C4225141F8FF21E1E2935441DD222386C722514156B55B5AE79354418B65C5A8CA225141015A7D73EC935441DDCF3B8CCC2251413608A972F09354415636DF5BCE225141D2BD03CAF59354419429DE49CF225141C3F8303EFA93544184CE5D85CF225141C2226AA203945441AE34C8A1D122514151E812AB05945441A908FFCCD4225141F7BA12FF06945441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>906679 - 4302890
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000180000000000001023CA5041AE47E1DACB37554152B81E6519CA50417B14AED7CE375541CDCCCC9C11CA50410AD7A350D337554152B81E9510CA504100000050DA37554114AE47510ACA504185EB5178E7375541CDCCCC6C05CA50410AD7A390F9375541A4703DFA05CA504152B81ED50E385541CDCCCC1C28CA5041A4703D1A18385541D7A3707D46CA50410AD7A39020385541295C8FB249CA5041E17A142E17385541CDCCCC8C4CCA5041A4703D6A1138554152B81E0550CA5041333333B30B3855416666664654CA50411F85EBF1043855413333338357CA50417B14AE37FF375541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000A8E88DA25CCA504180DAEF58C637554183C0CAC950CA5041BC749330C6375541EC51B8E648CA50419A9999A1C63755419318047642CA504183C0CA69C7375541A4703D923CCA504117D9CE7FC9375541CDCCCC9C36CA50419A999959CA3755411F85EB792DCA5041DD2406B1CA375541B318E88527CA504196D72A29CB3755410000001023CA5041AE47E1DACB375541B2BB73DD1FCA504168AC4978CC375541011DE5861CCA5041AA566284CD37554170D362B619CA50413316FEB1CE375541D34D625017CA5041986E120BD03755415839B47815CA5041DBF97E6AD1375541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>644083 - 3133413
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000280000008FC2F5D835F650411F85EB5115C1544148E17AF435F650415C8FC27516C15441FD042DD936F6504191A77EAE18C154417240B4103AF65041D7737EDE1AC15441BCC14AF73AF650416A76ABAB1CC1544199450EAB3DF6504180D323D41DC15441713D0A273EF650415C8FC2F51BC15441333333A340F65041295C8FB21BC154419A99992944F650419A99993921C15441AE47E13A4BF650413333331322C15441F6285C7F4BF650419A9999E91FC1544152B81EB54BF65041A4703DEA1EC15441713D0AF76AF650413D0AD7F320C154411F85EB416DF650417B14AEA721C15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000280000008FC2F5D835F650411F85EB5115C1544148E17AF435F650415C8FC27516C15441FC042DD936F6504190A77EAE18C154416F40B4103AF65041D9737EDE1AC15441BAC14AF73AF650416676ABAB1CC154419E450EAB3DF6504184D323D41DC15441713D0A273EF650415C8FC2F51BC15441333333A340F65041295C8FB21BC154419A99992944F650419A99993921C15441AE47E13A4BF650413333331322C15441F6285C7F4BF650419A9999E91FC1544152B81EB54BF65041A4703DEA1EC15441713D0AF76AF650413D0AD7F320C154411F85EB416DF650417B14AEA721C15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>644083 - 3513135
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000280000008FC2F5D835F650411F85EB5115C1544148E17AF435F650415C8FC27516C15441FD042DD936F6504191A77EAE18C154417240B4103AF65041D7737EDE1AC15441BCC14AF73AF650416A76ABAB1CC1544199450EAB3DF6504180D323D41DC15441713D0A273EF650415C8FC2F51BC15441333333A340F65041295C8FB21BC154419A99992944F650419A99993921C15441AE47E13A4BF650413333331322C15441F6285C7F4BF650419A9999E91FC1544152B81EB54BF65041A4703DEA1EC15441713D0AF76AF650413D0AD7F320C154411F85EB416DF650417B14AEA721C15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000280000008FC2F5D835F650411F85EB5115C1544148E17AF435F650415C8FC27516C15441FC042DD936F6504190A77EAE18C154416F40B4103AF65041D9737EDE1AC15441BAC14AF73AF650416676ABAB1CC154419E450EAB3DF6504184D323D41DC15441713D0A273EF650415C8FC2F51BC15441333333A340F65041295C8FB21BC154419A99992944F650419A99993921C15441AE47E13A4BF650413333331322C15441F6285C7F4BF650419A9999E91FC1544152B81EB54BF65041A4703DEA1EC15441713D0AF76AF650413D0AD7F320C154411F85EB416DF650417B14AEA721C15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>876984 - 121241
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000013000000C6D6E97DE0D85041DD485DF0D0CA544157C77278E0D85041F6775F0CD1CA544107030E69E0D850413A6F4CA2D3CA5441FF4C0140E0D8504189212979DCCA54417A70AF4CD2D85041F22C4608DCCA5441699F7AE8C3D85041D80A208DDBCA5441CB25CD78BCD850418C352840DBCA54413C1A5483A1D8504190EEA0F2D9CA5441CB332079A1D8504190EEA0F2D9CA54418FC2F578A1D8504152B81EF5D9CA5441EC51B81EA1D85041CDCCCC3CDFCA5441D7A3709DA8D850417B14AE27DFCA5441AE47E19AB0D850419A999969DFCA5441CDCCCCDCBBD8504133333353E0CA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F0000009A7C9467E0D85041C58097F3D3CA5441FC4C0140E0D850418C212979DCCA5441C8ED763FE0D85041D6C12479DCCA54416B08733FE0D85041372E0C7ADCCA54418F45A819DAD85041D0946547DCCA54417B70AF4CD2D85041F62C4608DCCA54411C012636C6D850419EE7D5A0DBCA54416B46E941C3D8504194780A88DBCA5441F6FB72B6C1D850416BCE6676DBCA5441CE25CD78BCD8504189352840DBCA5441E3278259ABD850418B37536CDACA54415F575B79A1D85041F449B2F4D9CA54416429C871A1D85041E198A360DACA544102614866A1D8504165B4E10CDBCA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>876984 - 321317
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000013000000C6D6E97DE0D85041DD485DF0D0CA544157C77278E0D85041F6775F0CD1CA544107030E69E0D850413A6F4CA2D3CA5441FF4C0140E0D8504189212979DCCA54417A70AF4CD2D85041F22C4608DCCA5441699F7AE8C3D85041D80A208DDBCA5441CB25CD78BCD850418C352840DBCA54413C1A5483A1D8504190EEA0F2D9CA5441CB332079A1D8504190EEA0F2D9CA54418FC2F578A1D8504152B81EF5D9CA5441EC51B81EA1D85041CDCCCC3CDFCA5441D7A3709DA8D850417B14AE27DFCA5441AE47E19AB0D850419A999969DFCA5441CDCCCCDCBBD8504133333353E0CA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F0000009A7C9467E0D85041C58097F3D3CA5441FC4C0140E0D850418C212979DCCA5441C8ED763FE0D85041D6C12479DCCA54416B08733FE0D85041372E0C7ADCCA54418F45A819DAD85041D0946547DCCA54417B70AF4CD2D85041F62C4608DCCA54411C012636C6D850419EE7D5A0DBCA54416B46E941C3D8504194780A88DBCA5441F6FB72B6C1D850416BCE6676DBCA5441CE25CD78BCD8504189352840DBCA5441E3278259ABD850418B37536CDACA54415F575B79A1D85041F449B2F4D9CA54416429C871A1D85041E198A360DACA544102614866A1D8504165B4E10CDBCA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>799125 - 1108772
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000017000000D7A370CD54FB5041000000A0AD895441B438B65854FB5041FF3FC013B189544194AF2D0554FB5041561B43D1B2895441CCB5440154FB5041BB3637EBB28954413E8A6FB07BFB5041CB011C26B3895441295C8F227CFB504114AE4731B18954411F85EB117BFB5041AE47E13AB0895441666666A679FB5041000000F0AF895441AE47E11A78FB50417B14AE87AF895441A4703D7A76FB50419A999909AF8954413333333375FB504133333393AE8954415C8FC2B570FB5041C3F5289CAD89544152B81EA56EFB50415C8FC215AD8954410AD7A3906DFB50413D0AD7B3AC895441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000FA538F6F53FB5041D20260B2B6895441BFACAA4F7AFB5041BBE6CDC3B6895441317118E17BFB50417424381BAE895441255F467E76FB5041F7AEB5ECAB895441FDD54F3E74FB504140EA2C3EAB89544128776A6168FB5041DD11307EAA895441B277A09B66FB50418925A48FAA8954411B23313B64FB5041E9CBCF92A9895441E603C61C63FB5041A9C59829A98954417025B2EC5BFB5041973F0533A78954411F85EBE15AFB5041EC51B8EEA6895441DB08D79C55FB50412F03655FA68954415588A82C55FB5041F3B4D5D8A9895441D7A370CD54FB5041000000A0AD895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>799125 - 3561787
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000017000000D7A370CD54FB5041000000A0AD895441B438B65854FB5041FF3FC013B189544194AF2D0554FB5041561B43D1B2895441CCB5440154FB5041BB3637EBB28954413E8A6FB07BFB5041CB011C26B3895441295C8F227CFB504114AE4731B18954411F85EB117BFB5041AE47E13AB0895441666666A679FB5041000000F0AF895441AE47E11A78FB50417B14AE87AF895441A4703D7A76FB50419A999909AF8954413333333375FB504133333393AE8954415C8FC2B570FB5041C3F5289CAD89544152B81EA56EFB50415C8FC215AD8954410AD7A3906DFB50413D0AD7B3AC895441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000FA538F6F53FB5041D20260B2B6895441BFACAA4F7AFB5041BBE6CDC3B6895441317118E17BFB50417424381BAE895441255F467E76FB5041F7AEB5ECAB895441FDD54F3E74FB504140EA2C3EAB89544128776A6168FB5041DD11307EAA895441B277A09B66FB50418925A48FAA8954411B23313B64FB5041E9CBCF92A9895441E603C61C63FB5041A9C59829A98954417025B2EC5BFB5041973F0533A78954411F85EBE15AFB5041EC51B8EEA6895441DB08D79C55FB50412F03655FA68954415588A82C55FB5041F3B4D5D8A9895441D7A370CD54FB5041000000A0AD895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>879878 - 1032260
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000B0000007B14AE0782105141A4703D0A3EA554416A5E1E43AB1051412FD5592E46A554413F66D443AB105141E03CBE2A46A55441EE5F1355BB105141C23BFA5649A5544100A78D67BA105141540C68D006A55441FBE931B7B2105141F55E267605A5544148EA378F97105141EBBE8AD801A554417B14AE078110514148E17AD4FEA45441E433215181105141308C57E610A55441091000AA81105141074232D326A554417B14AE0782105141A4703D0A3EA55441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000A50FBEC29F1051416A61FDE343A55441655E1E43AB10514133D5592E46A554413E66D443AB105141DC3CBE2A46A554417B14AEE7D110514185EB51C84DA55441E17A148ED5105141EC51B87E4DA5544185EB5178D410514152B81E9509A5544152B81E95CC1051417B14AEE708A5544113297ECCB81051415742764506A55441F006CBE2A31051418CFFC27C03A55441C92111459E105141C80C5EBD02A55441097299FB9E10514103BF23982BA554412372605C9F105141FA86116038A55441A50FBEC29F1051416A61FDE343A55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>879878 - 3465668
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000B0000007B14AE0782105141A4703D0A3EA554416A5E1E43AB1051412FD5592E46A554413F66D443AB105141E03CBE2A46A55441EE5F1355BB105141C23BFA5649A5544100A78D67BA105141540C68D006A55441FBE931B7B2105141F55E267605A5544148EA378F97105141EBBE8AD801A554417B14AE078110514148E17AD4FEA45441E433215181105141308C57E610A55441091000AA81105141074232D326A554417B14AE0782105141A4703D0A3EA55441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000A50FBEC29F1051416A61FDE343A55441655E1E43AB10514133D5592E46A554413E66D443AB105141DC3CBE2A46A554417B14AEE7D110514185EB51C84DA55441E17A148ED5105141EC51B87E4DA5544185EB5178D410514152B81E9509A5544152B81E95CC1051417B14AEE708A5544113297ECCB81051415742764506A55441F006CBE2A31051418CFFC27C03A55441C92111459E105141C80C5EBD02A55441097299FB9E10514103BF23982BA554412372605C9F105141FA86116038A55441A50FBEC29F1051416A61FDE343A55441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>890586 - 2950809
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000080000003D0AD72311005141A4703D4AA3E15441666666B61000514185EB5188A6E15441295C8F6220005141295C8F12ABE1544100000030340051410AD7A3D0B0E15441E17A143E350051417B14AE47ADE15441333333332A00514114AE4751AAE15441C3F528EC1A005141E17A141EA6E154413D0AD72311005141A4703D4AA3E154410103000000010000000F00000014AE470136005141D7A370BDACE1544152B81EE5330051410AD7A3B0B3E154410AD7A3B031005141000000D0B9E15441B81E85DB2F005141D7A3705DBDE1544152B81E053100514152B81E75BEE1544114AE47 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000900C532C11005141BC98F54DAAE15441146EA8891F005141BE37F049AEE15441EE720AB82C00514179C2230CB2E15441000000503200514148E17AA4B3E1544152B81E1533005141CDCCCCDCB3E15441BB82B121340051417CC27DCCB0E15441AE47E14A33005141E17A148EB0E154416EF930F229005141806358D8ADE154418BFFE74A1100514186D556B3A6E15441900C532C11005141BC98F54DAAE15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>890586 - 3590973
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000080000003D0AD72311005141A4703D4AA3E15441666666B61000514185EB5188A6E15441295C8F6220005141295C8F12ABE1544100000030340051410AD7A3D0B0E15441E17A143E350051417B14AE47ADE15441333333332A00514114AE4751AAE15441C3F528EC1A005141E17A141EA6E154413D0AD72311005141A4703D4AA3E154410103000000010000000F00000014AE470136005141D7A370BDACE1544152B81EE5330051410AD7A3B0B3E154410AD7A3B031005141000000D0B9E15441B81E85DB2F005141D7A3705DBDE1544152B81E053100514152B81E75BEE1544114AE47 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000900C532C11005141BC98F54DAAE15441146EA8891F005141BE37F049AEE15441EE720AB82C00514179C2230CB2E15441000000503200514148E17AA4B3E1544152B81E1533005141CDCCCCDCB3E15441BB82B121340051417CC27DCCB0E15441AE47E14A33005141E17A148EB0E154416EF930F229005141806358D8ADE154418BFFE74A1100514186D556B3A6E15441900C532C11005141BC98F54DAAE15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>290929 - 176832
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F0000008FC2F558FDB850417B14AE2726D35441D7A370DD0CB95041EC51B86E02D354415C8FC2B501B9504166666696FDD25441F6285C7FFBB85041AE47E18AFAD25441EC51B8FEF5B8504100000000F7D25441F6285CAFF1B85041E17A145EF3D2544148E17A44F0B850411F85EBA1F1D2544114AE47C1C5B85041E17A142EEED25441F6285C3FC2B850419A9999C9FDD254418FC2F5B8C0B85041B81E850B08D3544185EB5138C2B8504152B81EF50AD35441EC51B85EC8B8504152B81E350ED35441E17A14DEDAB850410AD7A30018D3544114AE4701E5B850410AD7A3F01BD35441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000D3B2F902C1B85041CAEFAC1906D35441A031F6B8C0B85041741F840B08D3544199AA789DC1B85041211FF4C709D3544185EB5138C2B8504152B81EF50AD35441EC51B85EC8B8504152B81E350ED35441E17A14DEDAB850410AD7A30018D3544114AE4701E5B850410AD7A3F01BD354417B52DFADEEB85041818CE8FF1FD3544179A2F558FDB850412CE2AC2726D35441860B6FDD0CB9504194A0B76E02D354415C8FC2B501B9504166666696FDD25441060004D5FEB85041109F4A2DFCD25441F6EC5A7FFBB850417F28E28AFAD25441532FF9E0F7B8504103517936F8D25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>290929 - 364371
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F0000008FC2F558FDB850417B14AE2726D35441D7A370DD0CB95041EC51B86E02D354415C8FC2B501B9504166666696FDD25441F6285C7FFBB85041AE47E18AFAD25441EC51B8FEF5B8504100000000F7D25441F6285CAFF1B85041E17A145EF3D2544148E17A44F0B850411F85EBA1F1D2544114AE47C1C5B85041E17A142EEED25441F6285C3FC2B850419A9999C9FDD254418FC2F5B8C0B85041B81E850B08D3544185EB5138C2B8504152B81EF50AD35441EC51B85EC8B8504152B81E350ED35441E17A14DEDAB850410AD7A30018D3544114AE4701E5B850410AD7A3F01BD35441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000D3B2F902C1B85041CAEFAC1906D35441A031F6B8C0B85041741F840B08D3544199AA789DC1B85041211FF4C709D3544185EB5138C2B8504152B81EF50AD35441EC51B85EC8B8504152B81E350ED35441E17A14DEDAB850410AD7A30018D3544114AE4701E5B850410AD7A3F01BD354417B52DFADEEB85041818CE8FF1FD3544179A2F558FDB850412CE2AC2726D35441860B6FDD0CB9504194A0B76E02D354415C8FC2B501B9504166666696FDD25441060004D5FEB85041109F4A2DFCD25441F6EC5A7FFBB850417F28E28AFAD25441532FF9E0F7B8504103517936F8D25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>244199 - 630287
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000031000000713D0A37C8015141C3F528BC01125541333333E3C6015141A4703DDAFC115541B81E85CBC5015141E17A14FEF6115541D7A3706DC40151410AD7A300F0115541EC51B8AED8015141F6285C4FEE115541E17A140EDE015141713D0AD7ED11554152B81EC5E101514185EB5198ED115541713D0A47E6015141295C8F52ED1155415C8FC225E8015141D7A3704DED11554166666646E801514114AE47B1EA115541A4703D8AE8015141AE47E14AE5115541D7A3706DDB015141295C8F82E41155419A999999D70151410AD7A3F0E411554148E17A14D20151417B14AE07E5115541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000A95E5CCACC01514139A750B40912554192A78B22CD0151414806F2DF0912554100000030D00151411F85EB91091255418FC2F528D2015141D7A370DD08125541AE47E10AD00151416666663604125541713D0A57CD01514114AE4751FB115541666666F6CA01514152B81E75EF115541D7A3706DC40151410AD7A300F0115541848325ACC401514107622A41F111554158E6E729C5015141DB8BFCC3F31155417FCC9D81C50151418D0A5284F511554107E602CBC5015141CDD97AFBF61155415631F523C60151419E4E72D8F8115541A3F55E64C6015141AFD9F231FA115541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>245203 - 36238
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D00000014AE47B113FF504114AE47811D105541333333F312FF5041E17A14FE1D1055413D0AD76312FF5041666666761F10554185EB510819FF5041AE47E10A25105541A4703DAA22FF50411F85EBF12C105541F6285C1F2DFF5041AE47E18A3510554148E17AF43AFF504152B81E5532105541713D0AF73EFF5041000000D031105541C3F5280C45FF504185EB513832105541D7A3704D45FF5041B81E854B30105541D7A3705D45FF50411F85EBD12F1055419A9999593DFF5041333333632E1055416666664636FF504148E17A842C105541AE47E10A31FF5041B81E856B2A105541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000001F85EBE117FF5041D7A370BD191055413333335316FF50411F85EB211C105541D3AAD70A15FF50419CAC3E471C105541E952514919FF5041609AE74C1E10554128CDDEAA1BFF504149385B0E20105541867AE6F71DFF5041D39463A521105541B7C2874C20FF5041DB99994423105541A16D6E4326FF5041ABF262982710554164B67E6026FF5041F1A542B525105541687B79201EFF5041D88BD1E81F105541502DB1651AFF504131209F171D1055411F85EBE117FF5041D7A370BD19105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>245203 - 60219
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D00000014AE47B113FF504114AE47811D105541333333F312FF5041E17A14FE1D1055413D0AD76312FF5041666666761F10554185EB510819FF5041AE47E10A25105541A4703DAA22FF50411F85EBF12C105541F6285C1F2DFF5041AE47E18A3510554148E17AF43AFF504152B81E5532105541713D0AF73EFF5041000000D031105541C3F5280C45FF504185EB513832105541D7A3704D45FF5041B81E854B30105541D7A3705D45FF50411F85EBD12F1055419A9999593DFF5041333333632E1055416666664636FF504148E17A842C105541AE47E10A31FF5041B81E856B2A105541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000001F85EBE117FF5041D7A370BD191055413333335316FF50411F85EB211C105541D3AAD70A15FF50419CAC3E471C105541E952514919FF5041609AE74C1E10554128CDDEAA1BFF504149385B0E20105541867AE6F71DFF5041D39463A521105541B7C2874C20FF5041DB99994423105541A16D6E4326FF5041ABF262982710554164B67E6026FF5041F1A542B525105541687B79201EFF5041D88BD1E81F105541502DB1651AFF504131209F171D1055411F85EBE117FF5041D7A370BD19105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>245225 - 1407881
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000666666F6EC015141666666268C11554166666686E90151416666662688115541666666F6E6015141666666668511554166666676E2015141666666A67E115541666666E6DD0151416666662677115541666666B6D8015141666666A66E11554166666696D5015141666666D66811554166666636D30151416666660663115541666666C6CF015141666666466311554166666626CD015141666666666311554166666626CC015141666666D66311554166666666C60151416666660667115541666666D6C8015141666666566B115541666666A6CF015141666666E676115541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000F039AD21D3015141163BE80763115541666666C6CF015141666666466311554166666626CD015141666666666311554166666626CC015141666666D66311554166666666C60151416666660667115541666666D6C8015141666666566B115541666666A6CF015141666666E676115541666666A6D6015141666666A68311554166666626DA015141666666768911554166666656DD015141666666568E115541666666C6E4015141666666D69711554166666686E9015141666666269D115541666666F6EA015141666666C694115541666666E6EC015141666666568D115541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>245225 - 3403502
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000666666F6EC015141666666268C11554166666686E90151416666662688115541666666F6E6015141666666668511554166666676E2015141666666A67E115541666666E6DD0151416666662677115541666666B6D8015141666666A66E11554166666696D5015141666666D66811554166666636D30151416666660663115541666666C6CF015141666666466311554166666626CD015141666666666311554166666626CC015141666666D66311554166666666C60151416666660667115541666666D6C8015141666666566B115541666666A6CF015141666666E676115541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000F039AD21D3015141163BE80763115541666666C6CF015141666666466311554166666626CD015141666666666311554166666626CC015141666666D66311554166666666C60151416666660667115541666666D6C8015141666666566B115541666666A6CF015141666666E676115541666666A6D6015141666666A68311554166666626DA015141666666768911554166666656DD015141666666568E115541666666C6E4015141666666D69711554166666686E9015141666666269D115541666666F6EA015141666666C694115541666666E6EC015141666666568D115541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>246448 - 967704
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001000000033333313C16C5141333333130FA0544185EB5188B86C514148E17A0431A054419A999939B06C514185EB510852A0544114AE4711B36C514114AE470153A05441EC51B81EDB6C51411F85EBF15DA05441C3F5281CDD6C5141B81E85FB5EA05441B81E854BDD6C5141000000405FA05441295C8F62E06C51418FC2F5D856A05441CDCCCCBCE26C51411F85EBB14EA054411F85EB11E86C51418FC2F58835A05441C3F5287CE86C5141B81E85EB33A054418FC2F508E86C5141295C8F0234A05441EC51B80EDE6C51419A99994921A05441C3F528ECDA6C51413D0AD7F31DA05441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000290000007DCCE927FB6C5141CED0A32315A05441C246E8C3F16C51412DD84D942AA05441FB856A5DEA6C514194B5780720A05441BAB9DB23E96C5141589F9BD11EA054418DCF667DE66C51410C122E3D1CA05441CC0D0494E86C5141DC46471220A0544190187BB7EB6C5141C0C99BCF25A05441929C25B8ED6C51419C79247929A05441F38A0C0EF06C5141EC118DBE2DA05441A787B03BEB6C514100DF734638A0544104AE67DDEA6C51411CEDB69337A05441FD7E5A13EA6C514101659B1636A05441FE7680D1E96C514134AFD79735A05441D80CB2E2E86C5141045B21D333A05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>246448 - 1172959
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001000000033333313C16C5141333333130FA0544185EB5188B86C514148E17A0431A054419A999939B06C514185EB510852A0544114AE4711B36C514114AE470153A05441EC51B81EDB6C51411F85EBF15DA05441C3F5281CDD6C5141B81E85FB5EA05441B81E854BDD6C5141000000405FA05441295C8F62E06C51418FC2F5D856A05441CDCCCCBCE26C51411F85EBB14EA054411F85EB11E86C51418FC2F58835A05441C3F5287CE86C5141B81E85EB33A054418FC2F508E86C5141295C8F0234A05441EC51B80EDE6C51419A99994921A05441C3F528ECDA6C51413D0AD7F31DA05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002900000082CCE927FB6C5141CAD0A32315A05441C646E8C3F16C514130D84D942AA05441FB856A5DEA6C514194B5780720A05441BAB9DB23E96C5141589F9BD11EA054418DCF667DE66C51410C122E3D1CA05441CC0D0494E86C5141DC46471220A0544190187BB7EB6C5141C0C99BCF25A05441929C25B8ED6C51419C79247929A05441F38A0C0EF06C5141EC118DBE2DA05441A787B03BEB6C514100DF734638A0544104AE67DDEA6C51411CEDB69337A05441FD7E5A13EA6C514101659B1636A05441FE7680D1E96C514134AFD79735A05441D80CB2E2E86C5141045B21D333A05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>246448 - 3603118
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001000000033333313C16C5141333333130FA0544185EB5188B86C514148E17A0431A054419A999939B06C514185EB510852A0544114AE4711B36C514114AE470153A05441EC51B81EDB6C51411F85EBF15DA05441C3F5281CDD6C5141B81E85FB5EA05441B81E854BDD6C5141000000405FA05441295C8F62E06C51418FC2F5D856A05441CDCCCCBCE26C51411F85EBB14EA054411F85EB11E86C51418FC2F58835A05441C3F5287CE86C5141B81E85EB33A054418FC2F508E86C5141295C8F0234A05441EC51B80EDE6C51419A99994921A05441C3F528ECDA6C51413D0AD7F31DA05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002900000082CCE927FB6C5141CAD0A32315A05441C646E8C3F16C514130D84D942AA05441FB856A5DEA6C514194B5780720A05441BAB9DB23E96C5141589F9BD11EA054418DCF667DE66C51410C122E3D1CA05441CC0D0494E86C5141DC46471220A0544190187BB7EB6C5141C0C99BCF25A05441929C25B8ED6C51419C79247929A05441F38A0C0EF06C5141EC118DBE2DA05441A787B03BEB6C514100DF734638A0544104AE67DDEA6C51411CEDB69337A05441FD7E5A13EA6C514101659B1636A05441FE7680D1E96C514134AFD79735A05441D80CB2E2E86C5141045B21D333A05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>306375 - 29796
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000F6285C2FE86D50411F85EBB112285541666666E6FA6D5041B81E85FB1428554166666686F26D504114AE474107285541F6285C5FEF6D5041B81E857B01285541A4703D6AE06D50417B14AEA7FF275541CDCCCC3CE06D50410000002004285541F6285C2FE86D50411F85EBB112285541
+</a>
+
+<b>
+010600000001000000010300000001000000180000004BD84CC2E36D50419FFBB3940A285541D14C325CE66D50414F617A590F285541B3E406B9E76D5041E273FBD811285541034A40F1E86D504193A27E0B11285541ABC46551E96D5041D7DAAE5C1028554107899E6BE96D50419AF3AF700F285541E12DA848E96D5041B8D0E99E0E2855411897EA3FE96D5041C69FD7F80D285541E22DA848E96D5041F58A5DFB0C285541E12DA848E96D5041D3413AC30A28554128A53614E96D50415FF1F8DF09285541EEFC95A2E86D5041921BDD5C09285541444312C8E76D5041C545C1D90828554199898EEDE66D504158733CEB08285541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>306375 - 72268
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000F6285C2FE86D50411F85EBB112285541666666E6FA6D5041B81E85FB1428554166666686F26D504114AE474107285541F6285C5FEF6D5041B81E857B01285541A4703D6AE06D50417B14AEA7FF275541CDCCCC3CE06D50410000002004285541F6285C2FE86D50411F85EBB112285541
+</a>
+
+<b>
+010600000001000000010300000001000000180000004BD84CC2E36D50419FFBB3940A285541D14C325CE66D50414F617A590F285541B3E406B9E76D5041E273FBD811285541034A40F1E86D504193A27E0B11285541ABC46551E96D5041D7DAAE5C1028554107899E6BE96D50419AF3AF700F285541E12DA848E96D5041B8D0E99E0E2855411897EA3FE96D5041C69FD7F80D285541E22DA848E96D5041F58A5DFB0C285541E12DA848E96D5041D3413AC30A28554128A53614E96D50415FF1F8DF09285541EEFC95A2E86D5041921BDD5C09285541444312C8E76D5041C545C1D90828554199898EEDE66D504158733CEB08285541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>622747 - 3038553
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000026000000EC51B84ECEEA5041A4703D9AE6075541713D0A47CEEA5041C3F528BCE7075541CDCCCCECE5EA504185EB51E8E3075541F6285C8FE5EA5041666666D6E2075541713D0A47E4EA50417B14AE17DF07554152B81EC5E3EA5041B81E859BDD0755410AD7A3B0E2EA5041333333B3D9075541713D0A07E2EA5041B81E855BD60755410AD7A3E0E1EA5041C3F528ECD40755418FC2F588E1EA5041F6285CAFD10755418FC2F568E1EA5041AE47E11ACD07554152B81E55E2EA5041EC51B86EC4075541000000E0E2EA5041295C8F52BF0755418FC2F568E4EA5041B81E857BB7075541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000027000000ED8CBD18A1EA50419E780DEDDA075541507F58D0A7EA50418D773F0ADB07554178828989ADEA5041A250E78CDB0755416FC86193AFEA5041F5B89D97DD07554192F3A24CB0EA504146F49BC4DF075541FE396E91AFEA5041CAE594B5E20755412DF10969B3EA5041EE4FE060E4075541F4F057BBB9EA504165C5B28DE40755416FAEF9C1BDEA504108B38154E507554121816A77CEEA5041A50EBBB7E2075541DE7CEE46CEEA50414D0B3AC0E70755413F0F668DE1EA50412797809DE40755416D76A5F0E5EA5041AEDF8CF3E30755411B24954AE4EA50413D4D0622DF075541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>622747 - 3274933
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000026000000EC51B84ECEEA5041A4703D9AE6075541713D0A47CEEA5041C3F528BCE7075541CDCCCCECE5EA504185EB51E8E3075541F6285C8FE5EA5041666666D6E2075541713D0A47E4EA50417B14AE17DF07554152B81EC5E3EA5041B81E859BDD0755410AD7A3B0E2EA5041333333B3D9075541713D0A07E2EA5041B81E855BD60755410AD7A3E0E1EA5041C3F528ECD40755418FC2F588E1EA5041F6285CAFD10755418FC2F568E1EA5041AE47E11ACD07554152B81E55E2EA5041EC51B86EC4075541000000E0E2EA5041295C8F52BF0755418FC2F568E4EA5041B81E857BB7075541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000027000000ED8CBD18A1EA50419E780DEDDA075541507F58D0A7EA50418D773F0ADB07554178828989ADEA5041A250E78CDB0755416FC86193AFEA5041F5B89D97DD07554192F3A24CB0EA504146F49BC4DF075541FE396E91AFEA5041CAE594B5E20755412DF10969B3EA5041EE4FE060E4075541F4F057BBB9EA504165C5B28DE40755416FAEF9C1BDEA504108B38154E507554121816A77CEEA5041A50EBBB7E2075541DE7CEE46CEEA50414D0B3AC0E70755413F0F668DE1EA50412797809DE40755416D76A5F0E5EA5041AEDF8CF3E30755411B24954AE4EA50413D4D0622DF075541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>249081 - 1043804
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000020000000B0000003D0AD7B3A52A514114AE47016E725441713D0A378F2A51419A9999F978725441CDCCCCBCAF2A51419A9999C982725441F6285C2FC62A51419A9999D98A7254418FC2F548CA2A51418FC2F5088C725441AE47E1CAD12A5141333333E3767254419A9999F9D12A5141EC51B80E73725441C3F5284CC22A5141000000106E7254413D0AD7B3B12A5141EC51B8DE6B725441C3F528ACAA2A51417B14AE576C7254413D0AD7B3A52A514114AE47016E7254411600000048E17A84B62A514114AE47017272544185EB51A8B32A51413D0AD74371725441EC51B82EB22A51415C8FC2C5 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000000B0000003D0AD7B3A52A514114AE47016E725441713D0A378F2A51419A9999F978725441CDCCCCBCAF2A51419A9999C982725441F6285C2FC62A51419A9999D98A7254418FC2F548CA2A51418FC2F5088C725441AE47E1CAD12A5141333333E3767254419A9999F9D12A5141EC51B80E73725441C3F5284CC22A5141000000106E7254413D0AD7B3B12A5141EC51B8DE6B725441C3F528ACAA2A51417B14AE576C7254413D0AD7B3A52A514114AE47016E72544114000000E42AB046C92A5141C9384C41827254414173A18BC62A5141C723B345807254415ACABD80C62A514117A76A55 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>249081 - 3372588
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000020000000B0000003D0AD7B3A52A514114AE47016E725441713D0A378F2A51419A9999F978725441CDCCCCBCAF2A51419A9999C982725441F6285C2FC62A51419A9999D98A7254418FC2F548CA2A51418FC2F5088C725441AE47E1CAD12A5141333333E3767254419A9999F9D12A5141EC51B80E73725441C3F5284CC22A5141000000106E7254413D0AD7B3B12A5141EC51B8DE6B725441C3F528ACAA2A51417B14AE576C7254413D0AD7B3A52A514114AE47016E7254411600000048E17A84B62A514114AE47017272544185EB51A8B32A51413D0AD74371725441EC51B82EB22A51415C8FC2C5 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000000B0000003D0AD7B3A52A514114AE47016E725441713D0A378F2A51419A9999F978725441CDCCCCBCAF2A51419A9999C982725441F6285C2FC62A51419A9999D98A7254418FC2F548CA2A51418FC2F5088C725441AE47E1CAD12A5141333333E3767254419A9999F9D12A5141EC51B80E73725441C3F5284CC22A5141000000106E7254413D0AD7B3B12A5141EC51B8DE6B725441C3F528ACAA2A51417B14AE576C7254413D0AD7B3A52A514114AE47016E72544114000000E42AB046C92A5141C9384C41827254414173A18BC62A5141C723B345807254415ACABD80C62A514117A76A55 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662586 - 1498262
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000110000007EFADE6E10BA50414B6C2D0147D95441A6E896CA0EBA50413CAD6D7047D9544168A33BA210BA5041076B7C2E4DD9544148E17A7428BA5041B81E857B46D95441713D0AE72CBA50415C8FC2B546D95441666666A632BA504148E17A9447D95441EC51B80E36BA5041666666A648D954416666667638BA504152B81E854AD9544148E17A443ABA5041333333534CD95441AE47E15A3BBA5041EC51B89E4DD954413333334344BA50419A9999394BD95441D7A370FD44BA5041D7A3702D34D954413D0AD7731CBA50413D0AD7133FD95441F6285CBF22BA5041A4703D1A43D95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001100000082FADE6E10BA50414A6C2D0147D95441A5E896CA0EBA504137AD6D7047D9544164A33BA210BA50410B6B7C2E4DD9544148E17A7428BA5041B81E857B46D95441713D0AE72CBA50415C8FC2B546D95441666666A632BA504148E17A9447D95441EC51B80E36BA5041666666A648D954416666667638BA504152B81E854AD9544148E17A443ABA5041333333534CD95441AE47E15A3BBA5041EC51B89E4DD954413333334344BA50419A9999394BD95441D7A370FD44BA5041D7A3702D34D954413D0AD7731CBA50413D0AD7133FD95441F6285CBF22BA5041A4703D1A43D95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662586 - 4175906
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000110000007EFADE6E10BA50414B6C2D0147D95441A6E896CA0EBA50413CAD6D7047D9544168A33BA210BA5041076B7C2E4DD9544148E17A7428BA5041B81E857B46D95441713D0AE72CBA50415C8FC2B546D95441666666A632BA504148E17A9447D95441EC51B80E36BA5041666666A648D954416666667638BA504152B81E854AD9544148E17A443ABA5041333333534CD95441AE47E15A3BBA5041EC51B89E4DD954413333334344BA50419A9999394BD95441D7A370FD44BA5041D7A3702D34D954413D0AD7731CBA50413D0AD7133FD95441F6285CBF22BA5041A4703D1A43D95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001100000082FADE6E10BA50414A6C2D0147D95441A5E896CA0EBA504137AD6D7047D9544164A33BA210BA50410B6B7C2E4DD9544148E17A7428BA5041B81E857B46D95441713D0AE72CBA50415C8FC2B546D95441666666A632BA504148E17A9447D95441EC51B80E36BA5041666666A648D954416666667638BA504152B81E854AD9544148E17A443ABA5041333333534CD95441AE47E15A3BBA5041EC51B89E4DD954413333334344BA50419A9999394BD95441D7A370FD44BA5041D7A3702D34D954413D0AD7731CBA50413D0AD7133FD95441F6285CBF22BA5041A4703D1A43D95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662586 - 142908
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000110000007EFADE6E10BA50414B6C2D0147D95441A6E896CA0EBA50413CAD6D7047D9544168A33BA210BA5041076B7C2E4DD9544148E17A7428BA5041B81E857B46D95441713D0AE72CBA50415C8FC2B546D95441666666A632BA504148E17A9447D95441EC51B80E36BA5041666666A648D954416666667638BA504152B81E854AD9544148E17A443ABA5041333333534CD95441AE47E15A3BBA5041EC51B89E4DD954413333334344BA50419A9999394BD95441D7A370FD44BA5041D7A3702D34D954413D0AD7731CBA50413D0AD7133FD95441F6285CBF22BA5041A4703D1A43D95441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A5E896CA0EBA504137AD6D7047D9544181F19E9E10BA504198403A234DD9544155DF0EAD10BA50417E15712B4DD9544148E17A7428BA5041B81E857B46D95441713D0AE72CBA50415C8FC2B546D95441666666A632BA504148E17A9447D95441EC51B80E36BA5041666666A648D954416666667638BA504152B81E854AD9544148E17A443ABA5041333333534CD95441AE47E15A3BBA5041EC51B89E4DD954413333334344BA50419A9999394BD95441D7A370FD44BA5041D7A3702D34D954413D0AD7731CBA50413D0AD7133FD95441F6285CBF22BA5041A4703D1A43D95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662586 - 294865
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000110000007EFADE6E10BA50414B6C2D0147D95441A6E896CA0EBA50413CAD6D7047D9544168A33BA210BA5041076B7C2E4DD9544148E17A7428BA5041B81E857B46D95441713D0AE72CBA50415C8FC2B546D95441666666A632BA504148E17A9447D95441EC51B80E36BA5041666666A648D954416666667638BA504152B81E854AD9544148E17A443ABA5041333333534CD95441AE47E15A3BBA5041EC51B89E4DD954413333334344BA50419A9999394BD95441D7A370FD44BA5041D7A3702D34D954413D0AD7731CBA50413D0AD7133FD95441F6285CBF22BA5041A4703D1A43D95441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A5E896CA0EBA504137AD6D7047D9544181F19E9E10BA504198403A234DD9544155DF0EAD10BA50417E15712B4DD9544148E17A7428BA5041B81E857B46D95441713D0AE72CBA50415C8FC2B546D95441666666A632BA504148E17A9447D95441EC51B80E36BA5041666666A648D954416666667638BA504152B81E854AD9544148E17A443ABA5041333333534CD95441AE47E15A3BBA5041EC51B89E4DD954413333334344BA50419A9999394BD95441D7A370FD44BA5041D7A3702D34D954413D0AD7731CBA50413D0AD7133FD95441F6285CBF22BA5041A4703D1A43D95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>307750 - 3731
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000019000000713D0AC7BF565141A4703D0ADBC554417B14AEE7BF56514100000040D6C5544114AE47E1C05651413D0AD773CDC5544114AE47C1C156514185EB5198C4C5544152B81E45C156514100000000BDC554418FC2F5B8C05651417B14AE47B5C55441E17A14FEBF565141000000C0AFC55441333333C3BF5651419A999949ACC554410AD7A3D0B6565141B81E852BAEC55441A4703DEAA9565141EC51B8FEB0C55441CDCCCC3CAB5651413D0AD713B5C55441D7A3701DAB5651411F85EBF1B6C55441B81E858BAB565141C3F528ACB8C55441295C8F92AC5651411F85EB81BAC55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004A00000026E4AE73AA5651412D38CCE9B6C554416A57F9B6AA5651414F0E3B60B8C554417222C1FBAA5651417C248194B9C554418F64E4CAAB565141342191B8BAC554417626F6E0AB5651412DEA36D9BAC554417BABB107AC5651419EE61510BBC55441B0E6B5D3AC5651416D3F1C42BCC55441CCEFABECAC565141174D8D67BCC554417C6D7936AD5651419F8941D6BCC55441EA1FB578AD56514144159B39BDC5544106104882AD565141C9958F67BDC55441C6244896AD56514164F98FC7BDC55441FDE099BEAD565141A04D1889BEC554413ED318C9AD5651413EA579BBBEC55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>307750 - 57714
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000019000000713D0AC7BF565141A4703D0ADBC554417B14AEE7BF56514100000040D6C5544114AE47E1C05651413D0AD773CDC5544114AE47C1C156514185EB5198C4C5544152B81E45C156514100000000BDC554418FC2F5B8C05651417B14AE47B5C55441E17A14FEBF565141000000C0AFC55441333333C3BF5651419A999949ACC554410AD7A3D0B6565141B81E852BAEC55441A4703DEAA9565141EC51B8FEB0C55441CDCCCC3CAB5651413D0AD713B5C55441D7A3701DAB5651411F85EBF1B6C55441B81E858BAB565141C3F528ACB8C55441295C8F92AC5651411F85EB81BAC55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004A00000026E4AE73AA5651412D38CCE9B6C554416A57F9B6AA5651414F0E3B60B8C554417222C1FBAA5651417C248194B9C554418F64E4CAAB565141342191B8BAC554417626F6E0AB5651412DEA36D9BAC554417BABB107AC5651419EE61510BBC55441B0E6B5D3AC5651416D3F1C42BCC55441CCEFABECAC565141174D8D67BCC554417C6D7936AD5651419F8941D6BCC55441EA1FB578AD56514144159B39BDC5544106104882AD565141C9958F67BDC55441C6244896AD56514164F98FC7BDC55441FDE099BEAD565141A04D1889BEC554413ED318C9AD5651413EA579BBBEC55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>366083 - 2910616
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000030000000103000000010000000B00000014AE47C19B905041713D0A274B385541666666869A905041A4703D6A4A38554185EB51A88A905041C3F5286C4A385541295C8F82829050413D0AD7434A3855413D0AD7F382905041295C8FA24B385541EC51B8EE85905041C3F528DC5438554133333353869050413D0AD71356385541333333D3869050417B14AE1756385541295C8FE28F905041C3F528DC553855417B14AEB79990504114AE47E15338554114AE47C19B905041713D0A274B38554101030000000100000017000000AE47E1DA4A9050415C8FC2D54B3855411F85EBC14A905041CDCCCC6C4A3855410AD7A3 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000000248EF7928905041D1A324E14B38554192FC197229905041836CB16C4C3855410FE8E972299050415D13326E4C3855413ED87BE329905041E942733E4D385541CEC08C7C2A905041B7C67A824D38554130E2F9532B90504164A2DCF34D38554179C56A4D2C9050412ABC3A434E385541F424D4022D90504100AAEB7B4E38554182489E4B4F905041B35113DF613855413D0AD7234F9050415C8FC2755D38554148E17AF44D90504185EB5198563855410AD7A3304C905041CDCCCC0C4F38554185EB51784B9050419A9999F94B385541AE47E1DA4A9050415C8FC2D54B385541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>366083 - 3644341
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000030000000103000000010000000B00000014AE47C19B905041713D0A274B385541666666869A905041A4703D6A4A38554185EB51A88A905041C3F5286C4A385541295C8F82829050413D0AD7434A3855413D0AD7F382905041295C8FA24B385541EC51B8EE85905041C3F528DC5438554133333353869050413D0AD71356385541333333D3869050417B14AE1756385541295C8FE28F905041C3F528DC553855417B14AEB79990504114AE47E15338554114AE47C19B905041713D0A274B38554101030000000100000017000000AE47E1DA4A9050415C8FC2D54B3855411F85EBC14A905041CDCCCC6C4A3855410AD7A3 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000000248EF7928905041D1A324E14B38554192FC197229905041836CB16C4C3855410FE8E972299050415D13326E4C3855413ED87BE329905041E942733E4D385541CEC08C7C2A905041B7C67A824D38554130E2F9532B90504164A2DCF34D38554179C56A4D2C9050412ABC3A434E385541F424D4022D90504100AAEB7B4E38554182489E4B4F905041B35113DF613855413D0AD7234F9050415C8FC2755D38554148E17AF44D90504185EB5198563855410AD7A3304C905041CDCCCC0C4F38554185EB51784B9050419A9999F94B385541AE47E1DA4A9050415C8FC2D54B385541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>702499 - 5238100
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000044000000BD7F7C4128165141088B6D22EB665441CC5475E829165141E7730BD0DE6654419A9999292A165141A4703DEADC665441AE47E13A2F165141666666D6B8665441B2B3AC512F165141DFC15125B866544182E6D07130165141A477E266AF6654419BFD5C8E30165141E95B1D89AE6654413C28B8873216514183BE3D339F665441A459D34C331651418D0E043899665441823A2A9D331651414AACE5C796665441D1BC1DC334165141232B54DC8D665441FCC50B0B351651410B348AAD8B6654410BA582ED35165141E6C03ECE846654413D0AD7133616514148E17AA483665441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000032000000D39D90DCA6155141384AB15FEC665441D39D90DCA61551414850CCD9EE665441D676523F2616514162877024FA66544176CA2DAC26165141CF9E49F8F66654418F4F084727165141DE8B3A6EF2665441F3F995EF2716514114D43685ED665441328A9C0E29165141AE5FAC28E56654416DAFCEE92916514122EBFBC5DE665441D36834622A165141C6BD3F57DB665441389B1C772E16514151752648BE665441676D2D292F165141286B6E54B9665441380AD9CC2F165141D1E27168B46654419F8D6EA5EE155141A6FCF597B2665441015191A5EA15514137DBBB2FB2665441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>252648 - 3116377
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E0000003333330326E9504185EB51F85F01554152B81E052EE9504185EB51387401554152B81E5535E950416666665671015541AE47E14A37E9504148E17AD475015541D7A370CD3DE95041CDCCCCEC720155410AD7A30051E9504185EB51C86A01554114AE47E14DE95041D7A3702D64015541000000404DE95041AE47E17A64015541AE47E1EA49E95041EC51B83E5E0155411F85EBD14AE95041000000D05D015541EC51B8AE3DE95041295C8F824201554114AE47111FE95041B81E85CB4F0155415C8FC26520E9504152B81EF5520155413333330326E9504185EB51F85F015541
+</a>
+
+<b>
+010600000001000000010300000001000000140000007E32554545E950418D40B84752015541BB87036E38E9504108997E95580155413E4587962FE95041CC53BBBC5901554137D08BD225E95041148F551959015541D1A2FA1A23E95041756B9F3B59015541E30B2D6C23E9504144F4CAF7590155413333330326E9504185EB51F85F01554196C476852CE950410DDC807C70015541B0F5B5BA33E95041E2F3A5FF6D015541824E88CA36E95041087896C274015541F40ED06C3DE95041351FC4B271015541D7A370CD3DE95041CDCCCCEC720155410AD7A30051E9504185EB51C86A01554114AE47E14DE95041D7A3702D64015541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>252648 - 3474832
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E0000003333330326E9504185EB51F85F01554152B81E052EE9504185EB51387401554152B81E5535E950416666665671015541AE47E14A37E9504148E17AD475015541D7A370CD3DE95041CDCCCCEC720155410AD7A30051E9504185EB51C86A01554114AE47E14DE95041D7A3702D64015541000000404DE95041AE47E17A64015541AE47E1EA49E95041EC51B83E5E0155411F85EBD14AE95041000000D05D015541EC51B8AE3DE95041295C8F824201554114AE47111FE95041B81E85CB4F0155415C8FC26520E9504152B81EF5520155413333330326E9504185EB51F85F015541
+</a>
+
+<b>
+010600000001000000010300000001000000140000007E32554545E950418D40B84752015541BB87036E38E9504108997E95580155413E4587962FE95041CC53BBBC5901554137D08BD225E95041148F551959015541D1A2FA1A23E95041756B9F3B59015541E30B2D6C23E9504144F4CAF7590155413333330326E9504185EB51F85F01554196C476852CE950410DDC807C70015541B0F5B5BA33E95041E2F3A5FF6D015541824E88CA36E95041087896C274015541F40ED06C3DE95041351FC4B271015541D7A370CD3DE95041CDCCCCEC720155410AD7A30051E9504185EB51C86A01554114AE47E14DE95041D7A3702D64015541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>580765 - 57041
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001E000000C28D8EC455CE5041DF02701EE1395541D00E6D8056CE504100603498E13955416384F41457CE5041B03579F8E1395541E522D6525DCE5041FFC0B1EFE33955413E51226566CE5041640F6032E6395541818DF4FF67CE50414F8B7718E23955416429290077CE504107575980E4395541000000A07FCE5041713D0A47CC395541713D0A177FCE5041333333A3C9395541D7A3704D75CE504185EB5178C73955413D0AD7E366CE50418FC2F578C4395541C3F528BC5DCE50417B14AEC7C2395541CDCCCC7C5DCE5041A4703D4AC4395541E17A14DE55CE504152B81E65C1395541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000230000000CAB3E7050CE50410056E8C1DC395541E4ED250353CE50418F562544DF395541066AA8B753CE50415AA939CADF395541C28D8EC455CE5041DD02701EE1395541CC0E6D8056CE504104603498E13955411F8DA2685ACE50419E906BB7E2395541FC3ED09657CE5041E998FB01DC3955417AF3F36F57CE504118C82FC9DB395541D7A3705D57CE5041CDCCCCDCDB3955410000005055CE50419A999919DA395541713D0A6753CE50419A999949D8395541B81E852B51CE5041A4703DEAD539554185EB51084FCE50410AD7A350D3395541F6285C8F4CCE5041D7A370FDCF395541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>253101 - 3057549
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000000000A002B65041E17A141E5F26554114AE47311AB65041713D0AA755265541A4703D1A21B650410AD7A3E052265541CDCCCC7C29B65041295C8F824F2655410AD7A36016B650415C8FC29538265541C3F528AC00B65041B81E858B1E26554166666616F8B550411F85EBE12126554100000020F1B55041713D0A972426554133333333DCB55041295C8F3231265541F6285C3FD3B55041CDCCCCCC37265541713D0A47E7B550415C8FC2A54F26554148E17AE4F7B55041D7A3706D63265541000000A002B65041E17A141E5F265541
+</a>
+
+<b>
+010600000001000000010300000002000000A30000004C85D817A1B55041406122B1752655410A585067A4B55041E09C7A8D6E265541F3BE08B4A8B55041FA46B8BA6626554101A0CB84AAB550416F881BCB63265541E17A147EACB55041B81E850B60265541DE692428AEB5504134C3EEE85D265541118E2B4DAEB5504145160DAD5D265541EEF476B6B2B550417606AD1058265541FEB45497B4B5504140D5A1A755265541C289DF20B8B5504116BEA51D51265541000000C0B9B550418FC2F5084F26554190E4B406BBB55041AA3CD3B24D26554135149AE3BBB55041C07254AE4C2655416A63DD87BEB55041D048F59849265541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>253101 - 3334958
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000000000A002B65041E17A141E5F26554114AE47311AB65041713D0AA755265541A4703D1A21B650410AD7A3E052265541CDCCCC7C29B65041295C8F824F2655410AD7A36016B650415C8FC29538265541C3F528AC00B65041B81E858B1E26554166666616F8B550411F85EBE12126554100000020F1B55041713D0A972426554133333333DCB55041295C8F3231265541F6285C3FD3B55041CDCCCCCC37265541713D0A47E7B550415C8FC2A54F26554148E17AE4F7B55041D7A3706D63265541000000A002B65041E17A141E5F265541
+</a>
+
+<b>
+010600000001000000010300000002000000A30000004C85D817A1B55041406122B1752655410A585067A4B55041E09C7A8D6E265541F3BE08B4A8B55041FA46B8BA6626554101A0CB84AAB550416F881BCB63265541E17A147EACB55041B81E850B60265541DE692428AEB5504134C3EEE85D265541118E2B4DAEB5504145160DAD5D265541EEF476B6B2B550417606AD1058265541FEB45497B4B5504140D5A1A755265541C289DF20B8B5504116BEA51D51265541000000C0B9B550418FC2F5084F26554190E4B406BBB55041AA3CD3B24D26554135149AE3BBB55041C07254AE4C2655416A63DD87BEB55041D048F59849265541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>253612 - 1665394
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000333333E32EC75041D7A370BD09255541713D0AC730C750411F85EB610F25554152B81EB52FC750410000003003255541AE47E13A32C75041C3F5284C032555419A9999E92FC75041EC51B8EEE8245541D7A370FD24C7504148E17A34EA245541CDCCCC8C1BC750419A999929EA245541333333531CC75041CDCCCC1CF6245541CDCCCC8C15C750419A9999A9F6245541E17A148E16C750417B14AE1702255541D7A3705D17C75041E17A142E03255541D7A3709D18C7504185EB516811255541A4703D5A1DC75041F6285CDF0E255541CDCCCCAC22C750415C8FC2050C255541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000D7A3709D18C7504185EB5168112555417B14AE2714C75041AE47E1CA1325554185EB514812C75041B81E85CB142555417B14AE871BC75041CDCCCCDC252555418FC2F5D821C75041CDCCCCFC222555411F85EBF126C75041B81E857B202555413F3DD58C2EC7504114182E301C255541BAA3FE1F28C7504157227E430D255541E2FC12CC2EC750419602C97809255541063887C12EC7504127127A5909255541E17A14AE29C750415C8FC24508255541AE47E17A28C75041A4703DEA08255541CDCCCCAC22C750415C8FC2050C255541A4703D5A1DC75041F6285CDF0E255541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>253612 - 3191927
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000333333E32EC75041D7A370BD09255541713D0AC730C750411F85EB610F25554152B81EB52FC750410000003003255541AE47E13A32C75041C3F5284C032555419A9999E92FC75041EC51B8EEE8245541D7A370FD24C7504148E17A34EA245541CDCCCC8C1BC750419A999929EA245541333333531CC75041CDCCCC1CF6245541CDCCCC8C15C750419A9999A9F6245541E17A148E16C750417B14AE1702255541D7A3705D17C75041E17A142E03255541D7A3709D18C7504185EB516811255541A4703D5A1DC75041F6285CDF0E255541CDCCCCAC22C750415C8FC2050C255541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000D7A3709D18C7504185EB5168112555417B14AE2714C75041AE47E1CA1325554185EB514812C75041B81E85CB142555417B14AE871BC75041CDCCCCDC252555418FC2F5D821C75041CDCCCCFC222555411F85EBF126C75041B81E857B202555413F3DD58C2EC7504114182E301C255541BAA3FE1F28C7504157227E430D255541E2FC12CC2EC750419602C97809255541063887C12EC7504127127A5909255541E17A14AE29C750415C8FC24508255541AE47E17A28C75041A4703DEA08255541CDCCCCAC22C750415C8FC2050C255541A4703D5A1DC75041F6285CDF0E255541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>311186 - 3011808
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000000000005049C6504100000010F16F54413333333362C65041A4703D6AE96F544114AE47D184C650413D0AD733E16F54411F85EBC181C650418FC2F588D86F54411F85EB517EC65041AE47E1CACE6F5441B81E85BB71C6504148E17AA4D16F54410AD7A3D05EC65041CDCCCCECD56F5441B81E85AB57C650411F85EBE1D76F5441F6285C8F50C6504114AE4711DA6F5441A4703DFA42C6504114AE4721DF6F54410000005049C6504100000010F16F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001500000077A819AFC3C650410AAD2176C96F5441713D0A37C6C6504100000040BE6F5441F6285C9F91C65041C3F5286CCA6F54411F85EB517EC65041AE47E1CACE6F5441B81E85BB71C6504148E17AA4D16F54410AD7A3D05EC65041CDCCCCECD56F5441B81E85AB57C650411F85EBE1D76F5441F6285C8F50C6504114AE4711DA6F5441A4703DFA42C6504114AE4721DF6F54410000005049C6504100000010F16F5441A4F83F5A49C65041A3F4022DF16F544126F482675FC6504177BB6490EA6F544134E7F03C61C65041B43E091BEA6F544126CB093665C6504142C63309E96F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>311186 - 3330511
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000000000005049C6504100000010F16F54413333333362C65041A4703D6AE96F544114AE47D184C650413D0AD733E16F54411F85EBC181C650418FC2F588D86F54411F85EB517EC65041AE47E1CACE6F5441B81E85BB71C6504148E17AA4D16F54410AD7A3D05EC65041CDCCCCECD56F5441B81E85AB57C650411F85EBE1D76F5441F6285C8F50C6504114AE4711DA6F5441A4703DFA42C6504114AE4721DF6F54410000005049C6504100000010F16F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001500000077A819AFC3C650410AAD2176C96F5441713D0A37C6C6504100000040BE6F5441F6285C9F91C65041C3F5286CCA6F54411F85EB517EC65041AE47E1CACE6F5441B81E85BB71C6504148E17AA4D16F54410AD7A3D05EC65041CDCCCCECD56F5441B81E85AB57C650411F85EBE1D76F5441F6285C8F50C6504114AE4711DA6F5441A4703DFA42C6504114AE4721DF6F54410000005049C6504100000010F16F5441A4F83F5A49C65041A3F4022DF16F544126F482675FC6504177BB6490EA6F544134E7F03C61C65041B43E091BEA6F544126CB093665C6504142C63309E96F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>254158 - 3070811
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000F6285C7FAF8650411F85EBD1B72055410AD7A3E0A986504148E17A74A820554100000030A3865041EC51B8BEAB20554185EB5128A986504152B81E95BA205541295C8F62AF86504185EB51C8C920554166666636B5865041B81E857BC7205541F6285C7FAF8650411F85EBD1B7205541
+</a>
+
+<b>
+0106000000010000000103000000010000000700000066666636B5865041B81E857BC72055419A999909BF865041A4703D9AC3205541E17A14AEBF86504166666646C22055410436F9BEBB8650416C66D028B520554138C39EF2AF8650414F2ACD0DB920554191177A1EB58650410132E184C720554166666636B5865041B81E857BC7205541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>254158 - 3365027
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000F6285C7FAF8650411F85EBD1B72055410AD7A3E0A986504148E17A74A820554100000030A3865041EC51B8BEAB20554185EB5128A986504152B81E95BA205541295C8F62AF86504185EB51C8C920554166666636B5865041B81E857BC7205541F6285C7FAF8650411F85EBD1B7205541
+</a>
+
+<b>
+0106000000010000000103000000010000000700000066666636B5865041B81E857BC72055419A999909BF865041A4703D9AC3205541E17A14AEBF86504166666646C22055410436F9BEBB8650416C66D028B520554138C39EF2AF8650414F2ACD0DB920554191177A1EB58650410132E184C720554166666636B5865041B81E857BC7205541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>254419 - 374082
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000090000000AD7A3B074B150411F85EBE1A722544152B81E0569B15041EC51B84E982254415C8FC28566B150410AD7A3909A225441E17A143E64B15041000000A09C2254410AD7A3F07AB150419A999929B82254410AD7A34085B150418FC2F5D8BD2254418FC2F58888B15041EC51B8CEB9225441C3F528EC7DB1504152B81E35B42254410AD7A3B074B150411F85EBE1A7225441
+</a>
+
+<b>
+010600000001000000010300000001000000180000000BFCF27F72B15041AEE32AB0A4225441FEB4F2B874B150412270851EA3225441B39451C86CB15041B4C98215982254418EF6B29D6BB1504147E52B6696225441A4501F866AB150417BFCB13397225441CEA4380F69B15041EA574B47982254415BD70B1169B15041720CB8499822544138E287B368B150414E037898982254415A67EF6767B15041940A33C49922544104EB78A666B150419F3912739A2254417EDE18A16AB1504130D33CC19F225441931DBC656EB150419C0FD700A5225441FC2E91A071B1504101389380A82254416EDDAE3878B1504104285D62B1225441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256135 - 367713
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B0000006666667612C050419A999999522A54418FC2F5D813C05041713D0A27562A54410AD7A34025C0504152B81E25552A54413D0AD7333EC050418FC2F588532A5441713D0A2757C05041CDCCCCEC512A54415C8FC2756CC05041CDCCCC8C502A5441F6285C7F6BC05041295C8F424D2A5441F6285CEF65C05041713D0A473A2A5441AE47E19A50C05041B81E857B402A544152B81ED52EC0504152B81E554A2A54416666667612C050419A999999522A5441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000713D0A2757C05041CDCCCCEC512A5441677A56726CC05041AD55058D502A5441146EC3B16BC05041F16159044E2A5441306B52721CC05041453D8A60532A5441088679DB16C05041486A9979542A5441F502C4F513C0504166605F25562A54410AD7A34025C0504152B81E25552A54413D0AD7333EC050418FC2F588532A5441713D0A2757C05041CDCCCCEC512A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256271 - 367713
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001E0000003333331371C050410AD7A340502A54415C8FC2756CC05041CDCCCC8C502A5441713D0A2757C05041CDCCCCEC512A54413D0AD7333EC050418FC2F588532A54410AD7A34025C0504152B81E25552A54418FC2F5D813C05041713D0A27562A54416666667612C050419A999999522A544148E17A640EC050411F85EB31482A5441C3F528FC0CC0504133333303492A544148E17AC40BC050417B14AEB7492A5441000000D007C05041EC51B84E4B2A54415C8FC22501C05041F6285C2F4E2A5441295C8F32FABF5041E17A149E512A544148E17A44F9BF5041713D0A17522A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000009000000713D0A2757C05041CDCCCCEC512A5441677A56726CC05041AD55058D502A5441146EC3B16BC05041F16159044E2A5441306B52721CC05041453D8A60532A5441088679DB16C05041486A9979542A5441F502C4F513C0504166605F25562A54410AD7A34025C0504152B81E25552A54413D0AD7333EC050418FC2F588532A5441713D0A2757C05041CDCCCCEC512A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256369 - 189705
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003200000014AE4771ABBF50410AD7A37086275441B81E855BAEBF50415C8FC2B587275441F6285CBFB1BF50415C8FC2458A27544166666606B4BF5041EC51B84E8C2754415C8FC225B8BF504114AE47D1902754418FC2F538BBBF5041F6285C7F962754415C8FC2D5BBBF5041AE47E1BA992754418FC2F538BBBF50413D0AD7439C275441E17A14CEBEBF50411F85EBA1A02754415C8FC275C3BF504152B81EC59D2754413D0AD713C4BF5041CDCCCC5C9D27544185EB51C8C4BF50415C8FC2E59C275441D7A3708DC2BF5041CDCCCCDC9927544100000060C1BF504185EB510898275441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000280000005C8FC225B8BF504114AE47D1902754418180CC16BABF5041BB33636794275441F7039264BABF504125260BF79427544147754BA3BABF5041D9B9E76A952754411F85EB41BEBF5041E17A141E93275441A4703D8ABDBF50418FC2F5889127544148E17AC4BCBF50417B14AE4790275441713D0A07BABF5041AE47E1DA8D27544166666636B9BF5041B81E852B8D275441713D0A47B8BF50417B14AE178C2754417B14AE97B7BF5041333333438B275441AE47E12AB7BF504185EB51A88A2754418FC2F5B8B6BF5041C3F5283C8A275441AE47E12AB7BF5041D7A3701D89275441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256369 - 350223
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003200000014AE4771ABBF50410AD7A37086275441B81E855BAEBF50415C8FC2B587275441F6285CBFB1BF50415C8FC2458A27544166666606B4BF5041EC51B84E8C2754415C8FC225B8BF504114AE47D1902754418FC2F538BBBF5041F6285C7F962754415C8FC2D5BBBF5041AE47E1BA992754418FC2F538BBBF50413D0AD7439C275441E17A14CEBEBF50411F85EBA1A02754415C8FC275C3BF504152B81EC59D2754413D0AD713C4BF5041CDCCCC5C9D27544185EB51C8C4BF50415C8FC2E59C275441D7A3708DC2BF5041CDCCCCDC9927544100000060C1BF504185EB510898275441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000280000005C8FC225B8BF504114AE47D1902754418180CC16BABF5041BB33636794275441F7039264BABF504125260BF79427544147754BA3BABF5041D9B9E76A952754411F85EB41BEBF5041E17A141E93275441A4703D8ABDBF50418FC2F5889127544148E17AC4BCBF50417B14AE4790275441713D0A07BABF5041AE47E1DA8D27544166666636B9BF5041B81E852B8D275441713D0A47B8BF50417B14AE178C2754417B14AE97B7BF5041333333438B275441AE47E12AB7BF504185EB51A88A2754418FC2F5B8B6BF5041C3F5283C8A275441AE47E12AB7BF5041D7A3701D89275441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256382 - 34387
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000006D00000000000000C9C050411F85EB51E52A5441C3F5283CCAC0504152B81E85E52A54418FC2F508CCC050419A999999E52A5441B81E85CBCDC050419A999999E52A54418FC2F5B8CEC05041A4703DBAE52A5441EC51B80ED0C050410AD7A3A0E52A54417B14AE97D1C050413D0AD723E52A5441AE47E1CAD2C05041A4703DEAE42A5441CDCCCC6CD5C0504185EB51B8E42A54413D0AD743D6C05041F6285C1FE42A544185EB51B8D8C05041AE47E13AE22A5441E17A14DEDAC0504185EB51B8E02A54415C8FC295DCC050411F85EBC1DF2A5441CDCCCC4CDEC05041D7A370EDDE2A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000F6285C1FD1C050413D0AD773B92A54410A471DE6D1C05041C4686A9AB82A544144CE2B45D6C0504185D5FCD0B32A5441656D937CD9C0504105044DF2AF2A544189A9C27CD9C050410412F4F1AF2A54416E516637D0C0504108F423EBB32A544150C4C610CEC050416878AEA2B42A5441EA561CEBCCC050418CEE6D37B72A54417E005257CBC05041450E6338B82A5441CCC97CC4CAC05041F84438CBB82A5441781732E9CAC05041FE2D5839B92A544191BBB1A1CCC05041450E6338B82A544197A4D10FCDC05041AB7B0D5EB92A544197A4D10FCDC05041BD366DA8BA2A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256382 - 75777
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000006D00000000000000C9C050411F85EB51E52A5441C3F5283CCAC0504152B81E85E52A54418FC2F508CCC050419A999999E52A5441B81E85CBCDC050419A999999E52A54418FC2F5B8CEC05041A4703DBAE52A5441EC51B80ED0C050410AD7A3A0E52A54417B14AE97D1C050413D0AD723E52A5441AE47E1CAD2C05041A4703DEAE42A5441CDCCCC6CD5C0504185EB51B8E42A54413D0AD743D6C05041F6285C1FE42A544185EB51B8D8C05041AE47E13AE22A5441E17A14DEDAC0504185EB51B8E02A54415C8FC295DCC050411F85EBC1DF2A5441CDCCCC4CDEC05041D7A370EDDE2A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000F6285C1FD1C050413D0AD773B92A54410A471DE6D1C05041C4686A9AB82A544144CE2B45D6C0504185D5FCD0B32A5441656D937CD9C0504105044DF2AF2A544189A9C27CD9C050410412F4F1AF2A54416E516637D0C0504108F423EBB32A544150C4C610CEC050416878AEA2B42A5441EA561CEBCCC050418CEE6D37B72A54417E005257CBC05041450E6338B82A5441CCC97CC4CAC05041F84438CBB82A5441781732E9CAC05041FE2D5839B92A544191BBB1A1CCC05041450E6338B82A544197A4D10FCDC05041AB7B0D5EB92A544197A4D10FCDC05041BD366DA8BA2A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256805 - 182216
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000900000052B81E5598AE50418FC2F5F86D105541F6285C0F99AE5041666666E66E10554114AE47A19FAE5041E17A140E7610554152B81E65A4AE504185EB51287A10554152B81E55A8AE5041B81E859B7C1055410AD7A3A0C5AE5041AE47E1EA51105541000000A0B4AE5041EC51B8AE43105541666666069BAE5041E17A14FE6810554152B81E5598AE50418FC2F5F86D105541
+</a>
+
+<b>
+0106000000010000000103000000010000000900000004D39A65BAAE5041A4EE824862105541F93E0C4EB6AE5041F6100F3F68105541AAB0BEE3DAAE504132DEFFE18510554149833835E9AE50410AF37D1F71105541DAFEF324E9AE504194280489701055410A299712E9AE5041CF6E29DF6F105541502CBB8FDFAE504184F317A26710554113EFD0C1C5AE50413EEFA8065210554104D39A65BAAE5041A4EE824862105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256805 - 368783
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000900000052B81E5598AE50418FC2F5F86D105541F6285C0F99AE5041666666E66E10554114AE47A19FAE5041E17A140E7610554152B81E65A4AE504185EB51287A10554152B81E55A8AE5041B81E859B7C1055410AD7A3A0C5AE5041AE47E1EA51105541000000A0B4AE5041EC51B8AE43105541666666069BAE5041E17A14FE6810554152B81E5598AE50418FC2F5F86D105541
+</a>
+
+<b>
+0106000000010000000103000000010000000900000004D39A65BAAE5041A4EE824862105541F93E0C4EB6AE5041F6100F3F68105541AAB0BEE3DAAE504132DEFFE18510554149833835E9AE50410AF37D1F71105541DAFEF324E9AE504194280489701055410A299712E9AE5041CF6E29DF6F105541502CBB8FDFAE504184F317A26710554113EFD0C1C5AE50413EEFA8065210554104D39A65BAAE5041A4EE824862105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256885 - 182216
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81E55A8AE5041B81E859B7C105541E17A14DEB0AE5041C3F528EC81105541E17A140EC3AE5041EC51B80E8F105541D7A3703DC7AE5041295C8FD292105541CDCCCCCCCCAE5041A4703D0A991055418FC2F508CEAE5041666666F698105541AE47E13AE9AE50413D0AD75371105541A4703D0AE9AE50411F85EB916F1055410AD7A3A0C5AE5041AE47E1EA5110554152B81E55A8AE5041B81E859B7C105541
+</a>
+
+<b>
+0106000000010000000103000000010000000900000004D39A65BAAE5041A4EE824862105541F93E0C4EB6AE5041F6100F3F68105541AAB0BEE3DAAE504132DEFFE18510554149833835E9AE50410AF37D1F71105541DAFEF324E9AE504194280489701055410A299712E9AE5041CF6E29DF6F105541502CBB8FDFAE504184F317A26710554113EFD0C1C5AE50413EEFA8065210554104D39A65BAAE5041A4EE824862105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256885 - 368783
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81E55A8AE5041B81E859B7C105541E17A14DEB0AE5041C3F528EC81105541E17A140EC3AE5041EC51B80E8F105541D7A3703DC7AE5041295C8FD292105541CDCCCCCCCCAE5041A4703D0A991055418FC2F508CEAE5041666666F698105541AE47E13AE9AE50413D0AD75371105541A4703D0AE9AE50411F85EB916F1055410AD7A3A0C5AE5041AE47E1EA5110554152B81E55A8AE5041B81E859B7C105541
+</a>
+
+<b>
+0106000000010000000103000000010000000900000004D39A65BAAE5041A4EE824862105541F93E0C4EB6AE5041F6100F3F68105541AAB0BEE3DAAE504132DEFFE18510554149833835E9AE50410AF37D1F71105541DAFEF324E9AE504194280489701055410A299712E9AE5041CF6E29DF6F105541502CBB8FDFAE504184F317A26710554113EFD0C1C5AE50413EEFA8065210554104D39A65BAAE5041A4EE824862105541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>257685 - 1459393
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000240000009A99996917FC504152B81E75B94955410000007019FC5041713D0A47B6495541B81E85BB1AFC5041E17A143EB4495541A4703D8A19FC504114AE4771B34955418FC2F5C81CFC50410AD7A3C0AD49554185EB517819FC504148E17A44AB495541EC51B89E15FC50419A999989A8495541F6285CEF10FC504114AE47C1A4495541B81E853B0DFC504152B81E35A14955411F85EB110CFC50417B14AE37A049554152B81E9509FC50415C8FC2459E49554114AE47A1FEFB5041713D0AA7B4495541AE47E1BAFFFB5041E17A14DEB6495541C3F5281C00FC5041CDCCCC8CB7495541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000009A99996917FC504152B81E75B949554167D9B7E118FC5041A2E1F932B6495541B7B45B8A19FC50414F06A6A2B4495541B304C1C319FC5041ECF74FB1B3495541A4703D8A19FC504114AE4771B3495541C99C1AC01CFC50418F5500BAAD4955410A045A5419FC50418AA3F92AAB4955413A9E783215FC5041274F2355A84955411D25368F10FC5041360FDEB1A4495541F50001430CFC5041C4A36EF9A0495541E555F7AE09FC504154C43B299F49554119F5890408FC50417C34259B9F495541B891C89C05FC5041A87F6221A349554183B27E5E01FC50416CB3E070AB495541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>257685 - 3606219
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000240000009A99996917FC504152B81E75B94955410000007019FC5041713D0A47B6495541B81E85BB1AFC5041E17A143EB4495541A4703D8A19FC504114AE4771B34955418FC2F5C81CFC50410AD7A3C0AD49554185EB517819FC504148E17A44AB495541EC51B89E15FC50419A999989A8495541F6285CEF10FC504114AE47C1A4495541B81E853B0DFC504152B81E35A14955411F85EB110CFC50417B14AE37A049554152B81E9509FC50415C8FC2459E49554114AE47A1FEFB5041713D0AA7B4495541AE47E1BAFFFB5041E17A14DEB6495541C3F5281C00FC5041CDCCCC8CB7495541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000009A99996917FC504152B81E75B949554167D9B7E118FC5041A2E1F932B6495541B7B45B8A19FC50414F06A6A2B4495541B304C1C319FC5041ECF74FB1B3495541A4703D8A19FC504114AE4771B3495541C99C1AC01CFC50418F5500BAAD4955410A045A5419FC50418AA3F92AAB4955413A9E783215FC5041274F2355A84955411D25368F10FC5041360FDEB1A4495541F50001430CFC5041C4A36EF9A0495541E555F7AE09FC504154C43B299F49554119F5890408FC50417C34259B9F495541B891C89C05FC5041A87F6221A349554183B27E5E01FC50416CB3E070AB495541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>259719 - 3176739
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000300000001030000000100000011000000C3F528AC2B3A5141CDCCCCFCEE7E5441D7A370BD293A51411F85EB31EE7E544152B81E951A3A5141713D0A77F87E54411F85EBA1113A5141CDCCCC1C007F5441EC51B83E0D3A514114AE4791057F544148E17A840A3A514148E17AC4087F54415C8FC285033A5141EC51B83E117F544148E17A34003A51419A999909157F54417B14AE97F539514152B81EB51F7F5441A4703D1AF939514152B81E55217F544152B81EB5FC3951417B14AEF7227F544100000090083A514185EB5128157F54419A999939123A5141C3F5283C087F5441F6285C8F173A5141AE47E18A027F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000003114263BFD3951414F758C5B227F5441E99DB703093A51418CAF8F8D147F54419A999939123A5141C3F5283C087F5441F6285C8F173A5141AE47E18A027F54415A8550C41C3A5141379062F5FD7E54416DD06CCA243A5141352380D0F67E5441DBCD46CC2C3A5141F08DBA98EF7E5441639869A4293A5141DAA0E042EE7E544175B1A7831A3A51415498F685F87E5441B904941A143A5141D0873600FE7E5441DB68D5FC113A5141FAF91DCFFF7E5441AF39E9190E3A5141A93BC280047F5441EC51B83E0D3A514114AE4791057F5441F40C3B5D0C3A5141DD04D599067F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>259719 - 3176745
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000300000001030000000100000011000000C3F528AC2B3A5141CDCCCCFCEE7E5441D7A370BD293A51411F85EB31EE7E544152B81E951A3A5141713D0A77F87E54411F85EBA1113A5141CDCCCC1C007F5441EC51B83E0D3A514114AE4791057F544148E17A840A3A514148E17AC4087F54415C8FC285033A5141EC51B83E117F544148E17A34003A51419A999909157F54417B14AE97F539514152B81EB51F7F5441A4703D1AF939514152B81E55217F544152B81EB5FC3951417B14AEF7227F544100000090083A514185EB5128157F54419A999939123A5141C3F5283C087F5441F6285C8F173A5141AE47E18A027F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000027000000F5C5A1DFDE3951419954C408107F5441FC4386F5E2395141CD0E1F220D7F5441FAAB04E5E3395141383F82450C7F5441F665A6CFE5395141FE4E926F0A7F544193E32A33E6395141FFF2D3070A7F5441FBB22D97E6395141B0C33F9B097F544107953435E93951417E4BD2C3067F54418CB4583FEC395141E77E0477037F5441F8543E50EE3951414973CF38017F54418F413CE5EF3951410A831F81FF7E5441D290C495F43951411DEBBD69FA7E5441CF35DCDAF5395141F373CC08F97E544142227A98EC395141CA8A7681F67E544103DF4C5EE93951414F0E83ADF57E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>259719 - 3371275
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000300000001030000000100000011000000C3F528AC2B3A5141CDCCCCFCEE7E5441D7A370BD293A51411F85EB31EE7E544152B81E951A3A5141713D0A77F87E54411F85EBA1113A5141CDCCCC1C007F5441EC51B83E0D3A514114AE4791057F544148E17A840A3A514148E17AC4087F54415C8FC285033A5141EC51B83E117F544148E17A34003A51419A999909157F54417B14AE97F539514152B81EB51F7F5441A4703D1AF939514152B81E55217F544152B81EB5FC3951417B14AEF7227F544100000090083A514185EB5128157F54419A999939123A5141C3F5283C087F5441F6285C8F173A5141AE47E18A027F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000003114263BFD3951414F758C5B227F5441E99DB703093A51418CAF8F8D147F54419A999939123A5141C3F5283C087F5441F6285C8F173A5141AE47E18A027F54415A8550C41C3A5141379062F5FD7E54416DD06CCA243A5141352380D0F67E5441DBCD46CC2C3A5141F08DBA98EF7E5441639869A4293A5141DAA0E042EE7E544175B1A7831A3A51415498F685F87E5441B904941A143A5141D0873600FE7E5441DB68D5FC113A5141FAF91DCFFF7E5441AF39E9190E3A5141A93BC280047F5441EC51B83E0D3A514114AE4791057F5441F40C3B5D0C3A5141DD04D599067F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>259719 - 3456882
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000300000001030000000100000011000000C3F528AC2B3A5141CDCCCCFCEE7E5441D7A370BD293A51411F85EB31EE7E544152B81E951A3A5141713D0A77F87E54411F85EBA1113A5141CDCCCC1C007F5441EC51B83E0D3A514114AE4791057F544148E17A840A3A514148E17AC4087F54415C8FC285033A5141EC51B83E117F544148E17A34003A51419A999909157F54417B14AE97F539514152B81EB51F7F5441A4703D1AF939514152B81E55217F544152B81EB5FC3951417B14AEF7227F544100000090083A514185EB5128157F54419A999939123A5141C3F5283C087F5441F6285C8F173A5141AE47E18A027F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000027000000F5C5A1DFDE3951419954C408107F5441FC4386F5E2395141CD0E1F220D7F5441FAAB04E5E3395141383F82450C7F5441F665A6CFE5395141FE4E926F0A7F544193E32A33E6395141FFF2D3070A7F5441FBB22D97E6395141B0C33F9B097F544107953435E93951417E4BD2C3067F54418CB4583FEC395141E77E0477037F5441F8543E50EE3951414973CF38017F54418F413CE5EF3951410A831F81FF7E5441D290C495F43951411DEBBD69FA7E5441CF35DCDAF5395141F373CC08F97E544142227A98EC395141CA8A7681F67E544103DF4C5EE93951414F0E83ADF57E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>260029 - 3176739
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000022000000A4703D8A2B3A5141EC51B8BE287F5441E17A14CE2E3A5141295C8F02247F544114AE47C1323A5141AE47E10A1E7F5441AE47E10A393A5141713D0AC7157F54419A9999193A3A514114AE47A1157F54411F85EB11453A514114AE47511B7F5441000000C04C3A5141F6285C7F117F5441B81E85AB513A51415C8FC235097F54411F85EB51593A514148E17A140A7F54411F85EBA1633A5141C3F5289C097F5441E17A145E6B3A514185EB5148087F5441A4703D5A6C3A5141C3F528AC077F54413D0AD7836C3A51411F85EB71027F5441F6285C7F6C3A51418FC2F598FF7E5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000003114263BFD3951414F758C5B227F5441E99DB703093A51418CAF8F8D147F54419A999939123A5141C3F5283C087F5441F6285C8F173A5141AE47E18A027F54415A8550C41C3A5141379062F5FD7E54416DD06CCA243A5141352380D0F67E5441DBCD46CC2C3A5141F08DBA98EF7E5441639869A4293A5141DAA0E042EE7E544175B1A7831A3A51415498F685F87E5441B904941A143A5141D0873600FE7E5441DB68D5FC113A5141FAF91DCFFF7E5441AF39E9190E3A5141A93BC280047F5441EC51B83E0D3A514114AE4791057F5441F40C3B5D0C3A5141DD04D599067F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>260029 - 3371275
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000022000000A4703D8A2B3A5141EC51B8BE287F5441E17A14CE2E3A5141295C8F02247F544114AE47C1323A5141AE47E10A1E7F5441AE47E10A393A5141713D0AC7157F54419A9999193A3A514114AE47A1157F54411F85EB11453A514114AE47511B7F5441000000C04C3A5141F6285C7F117F5441B81E85AB513A51415C8FC235097F54411F85EB51593A514148E17A140A7F54411F85EBA1633A5141C3F5289C097F5441E17A145E6B3A514185EB5148087F5441A4703D5A6C3A5141C3F528AC077F54413D0AD7836C3A51411F85EB71027F5441F6285C7F6C3A51418FC2F598FF7E5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000003114263BFD3951414F758C5B227F5441E99DB703093A51418CAF8F8D147F54419A999939123A5141C3F5283C087F5441F6285C8F173A5141AE47E18A027F54415A8550C41C3A5141379062F5FD7E54416DD06CCA243A5141352380D0F67E5441DBCD46CC2C3A5141F08DBA98EF7E5441639869A4293A5141DAA0E042EE7E544175B1A7831A3A51415498F685F87E5441B904941A143A5141D0873600FE7E5441DB68D5FC113A5141FAF91DCFFF7E5441AF39E9190E3A5141A93BC280047F5441EC51B83E0D3A514114AE4791057F5441F40C3B5D0C3A5141DD04D599067F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>260357 - 3185554
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000200000001030000000100000004000000D7A3700D1732514166666696647B544166666616163251418FC2F5C8647B54419A99999916325141A4703D9A657B5441D7A3700D1732514166666696647B544101030000000100000029000000B81E85EB49325141000000407D7B54411F85EB714A325141CDCCCCDC6E7B54418FC2F5C84A3251410AD7A3705F7B5441B81E856B4A32514133333373597B5441AE47E16A4A3251415C8FC285547B5441000000704A32514152B81E354D7B54419A9999E94932514148E17A843F7B54419A999979493251410AD7A380397B5441713D0A6749325141E17A14EE327B5441B81E85 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000034000000A91F5CA217325141AEFAB309667B544185B0BD131832514155A292EB677B54412C589CF51932514147A383776A7B5441901D9F081E3251416E19606F717B54415313DB73273251410528E66D807B54410564823E2E3251418D23B83D8B7B54419D3857D23432514154BE8B72957B5441CEB7FF083A325141A5C29D049D7B54413072F226423251416C8A3F9D9F7B5441249B60F343325141801DAE0E9E7B5441B577D09C44325141B1D639E59B7B5441B08389AD453251411D5F2D81997B54415462037546325141C3E60C3F977B54418DC83962473251412D343808947B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>260357 - 3399435
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000200000001030000000100000004000000D7A3700D1732514166666696647B544166666616163251418FC2F5C8647B54419A99999916325141A4703D9A657B5441D7A3700D1732514166666696647B544101030000000100000029000000B81E85EB49325141000000407D7B54411F85EB714A325141CDCCCCDC6E7B54418FC2F5C84A3251410AD7A3705F7B5441B81E856B4A32514133333373597B5441AE47E16A4A3251415C8FC285547B5441000000704A32514152B81E354D7B54419A9999E94932514148E17A843F7B54419A999979493251410AD7A380397B5441713D0A6749325141E17A14EE327B5441B81E85 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000034000000A91F5CA217325141AEFAB309667B544185B0BD131832514155A292EB677B54412C589CF51932514147A383776A7B5441901D9F081E3251416E19606F717B54415313DB73273251410528E66D807B54410564823E2E3251418D23B83D8B7B54419D3857D23432514154BE8B72957B5441CEB7FF083A325141A5C29D049D7B54413072F226423251416C8A3F9D9F7B5441249B60F343325141801DAE0E9E7B5441B577D09C44325141B1D639E59B7B5441B08389AD453251411D5F2D81997B54415462037546325141C3E60C3F977B54418DC83962473251412D343808947B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261394 - 3077246
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000200000013000000A4703D0AE46E5141E17A140E32395441D7A3707DE46E5141CDCCCCAC31395441713D0A87E36E51416666661631395441295C8FF2E06E5141CDCCCC4C3B395441713D0A47D96E514148E17AB4443954413D0AD7B3DF6E51417B14AEC7463954419A999909E06E5141666666F645395441000000C0E76E5141713D0A27333954413D0AD7C3E66E51410AD7A31033395441D7A370FDE46E5141AE47E1FA313954418FC2F588E46E5141C3F528BC3239544185EB51D8E46E5141295C8F523339544114AE4781E46E5141295C8F923339544114AE4761E46E51410000008034395441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007F0000000B9F7AA0366F5141E27A8CFBB9395441FBDE2F9F356F5141CD1B5486B93954417B14AE671E6F514114AE47F1BD395441CDCCCC8C186F51418FC2F528BF395441ACFC3455186F5141F1D5D286BF39544168D08C30226F5141247D7B69BF39544100581B521F6F514152E6CF04C83954410C5B542C1E6F5141B05E41E3CA395441D179E8381C6F5141E983A12AD03954417448A4881B6F51416990DF19D5395441AEE2E24D1B6F5141F55829B5D6395441D18F2B3D276F5141C6D766CEE03954413A96F7772E6F51418C3D2809E1395441D1A8A71B316F5141BAD42DF4E1395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261394 - 3385138
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000200000013000000A4703D0AE46E5141E17A140E32395441D7A3707DE46E5141CDCCCCAC31395441713D0A87E36E51416666661631395441295C8FF2E06E5141CDCCCC4C3B395441713D0A47D96E514148E17AB4443954413D0AD7B3DF6E51417B14AEC7463954419A999909E06E5141666666F645395441000000C0E76E5141713D0A27333954413D0AD7C3E66E51410AD7A31033395441D7A370FDE46E5141AE47E1FA313954418FC2F588E46E5141C3F528BC3239544185EB51D8E46E5141295C8F523339544114AE4781E46E5141295C8F923339544114AE4761E46E51410000008034395441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007F0000000B9F7AA0366F5141E27A8CFBB9395441FBDE2F9F356F5141CD1B5486B93954417B14AE671E6F514114AE47F1BD395441CDCCCC8C186F51418FC2F528BF395441ACFC3455186F5141F1D5D286BF39544168D08C30226F5141247D7B69BF39544100581B521F6F514152E6CF04C83954410C5B542C1E6F5141B05E41E3CA395441D179E8381C6F5141E983A12AD03954417448A4881B6F51416990DF19D5395441AEE2E24D1B6F5141F55829B5D6395441D18F2B3D276F5141C6D766CEE03954413A96F7772E6F51418C3D2809E1395441D1A8A71B316F5141BAD42DF4E1395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261526 - 207320
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000030000000103000000010000000E000000AE47E15A566C5141F6285CAFDD3A54415C8FC2C5606C514185EB5118D93A5441F6285C0F546C5141C3F5280CBC3A5441C3F5288C536C51410AD7A3E0BA3A54413D0AD743556C514100000020BA3A54415C8FC2D5556C5141000000E0B93A5441E17A142E516C514166666616B53A5441E17A142E446C514185EB5178AD3A5441CDCCCCAC3F6C514166666656A83A5441333333733E6C514152B81EA5A33A5441333333D3376C5141F6285C6FA33A54417B14AE07346C5141A4703D7AA33A5441F6285CDF376C5141EC51B8FEA93A5441AE47E15A566C5141F6285CAFDD3A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000E17A142E516C514166666616B53A54415E4440E74E6C51412871C8FCB33A5441804B10014C6C51413ACBFD0DB23A5441FBC935AF496C5141CA1B04B2B03A544118BDCB41466C51415C154FFBAE3A5441D18C4DE4446C51417B4A5012AE3A544144A74272446C5141F06445A0AD3A5441E17A142E446C514185EB5178AD3A5441A8F66963436C514158B46C91AC3A5441EBDE9063426C5141A09C9391AB3A54410531D4E23F6C5141FC3B97D6A83A5441C16BEDC73F6C5141BD554E75A83A5441CDCCCCAC3F6C514166666656A83A5441333333733E6C514152B81EA5A33A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261526 - 368963
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000030000000103000000010000000E000000AE47E15A566C5141F6285CAFDD3A54415C8FC2C5606C514185EB5118D93A5441F6285C0F546C5141C3F5280CBC3A5441C3F5288C536C51410AD7A3E0BA3A54413D0AD743556C514100000020BA3A54415C8FC2D5556C5141000000E0B93A5441E17A142E516C514166666616B53A5441E17A142E446C514185EB5178AD3A5441CDCCCCAC3F6C514166666656A83A5441333333733E6C514152B81EA5A33A5441333333D3376C5141F6285C6FA33A54417B14AE07346C5141A4703D7AA33A5441F6285CDF376C5141EC51B8FEA93A5441AE47E15A566C5141F6285CAFDD3A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000E17A142E516C514166666616B53A54415E4440E74E6C51412871C8FCB33A5441804B10014C6C51413ACBFD0DB23A5441FBC935AF496C5141CA1B04B2B03A544118BDCB41466C51415C154FFBAE3A5441D18C4DE4446C51417B4A5012AE3A544144A74272446C5141F06445A0AD3A5441E17A142E446C514185EB5178AD3A5441A8F66963436C514158B46C91AC3A5441EBDE9063426C5141A09C9391AB3A54410531D4E23F6C5141FC3B97D6A83A5441C16BEDC73F6C5141BD554E75A83A5441CDCCCCAC3F6C514166666656A83A5441333333733E6C514152B81EA5A33A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261584 - 207358
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000070000000AD7A3C08E6C5141AE47E10A063F54419A9999B9956C51410AD7A320FE3E544114AE4751956C5141666666D6FD3E54419A999959776C51418FC2F598E83E54418FC2F568706C514185EB5188F03E544185EB51588E6C51410AD7A3C0053F54410AD7A3C08E6C5141AE47E10A063F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000F8D72294776C514192D172C2E83E544114AE4751956C5141666666D6FD3E544127EA96A0956C5141E453D70EFE3E54414DAACBA1996C51418AB0DDB0F93E544131A96D1E926C5141B01171A1F43E54413469F0B68E6C5141EC259516F23E5441E4439AC28D6C5141349A7F41F13E54413D0AD7638D6C514114AE4701F13E54412C6901278D6C5141E6A5CDB9F03E544118B23A028B6C5141F32938DBEE3E5441FD63A5647C6C5141DF25A70AE33E54418FF2BE79776C51416441BEAFE83E5441F8D72294776C514192D172C2E83E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261584 - 339075
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000070000000AD7A3C08E6C5141AE47E10A063F54419A9999B9956C51410AD7A320FE3E544114AE4751956C5141666666D6FD3E54419A999959776C51418FC2F598E83E54418FC2F568706C514185EB5188F03E544185EB51588E6C51410AD7A3C0053F54410AD7A3C08E6C5141AE47E10A063F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000F8D72294776C514192D172C2E83E544114AE4751956C5141666666D6FD3E544127EA96A0956C5141E453D70EFE3E54414DAACBA1996C51418AB0DDB0F93E544131A96D1E926C5141B01171A1F43E54413469F0B68E6C5141EC259516F23E5441E4439AC28D6C5141349A7F41F13E54413D0AD7638D6C514114AE4701F13E54412C6901278D6C5141E6A5CDB9F03E544118B23A028B6C5141F32938DBEE3E5441FD63A5647C6C5141DF25A70AE33E54418FF2BE79776C51416441BEAFE83E5441F8D72294776C514192D172C2E83E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261795 - 227266
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000290000005C8FC245356B514133333313D93B5441A4703D8A2C6B5141AE47E14AEF3B5441F6285CCF2B6B514152B81E25F13B544133333343276B51415C8FC285FC3B5441B81E85BB256B51411F85EB01FF3B54418FC2F508246B5141AE47E13A013C544114AE4771226B51418FC2F588023C5441E17A141E186B51419A9999F9083C5441E17A147E166B5141A4703D5A0A3C54413D0AD723146B51410AD7A3800D3C544100000020086B5141CDCCCC1C1E3C5441CDCCCC4C026B5141C3F5281C263C5441D7A3704D006B514114AE47412A3C54417B14AEC70E6B51418FC2F568203C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000D8630556486B51412E85AEA8A33B5441E17A143E456B514185EB5118A63B54410AD7A3C03F6B5141666666F6A93B5441EBACF7093C6B51413A032763AC3B5441D7155222396B5141019BB948AE3B5441CC90B49A386B5141AFCD46A1AE3B5441EE5FED99386B514105DEC8A1AE3B5441F0A23AE6366B5141AF5947BEAF3B5441860C30A0356B514161C6C0A9B03B5441964737A7396B514110CC4B0FB23B544125F8F239496B51416214A3AFA63B5441D8630556486B51412E85AEA8A33B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261795 - 337446
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000290000005C8FC245356B514133333313D93B5441A4703D8A2C6B5141AE47E14AEF3B5441F6285CCF2B6B514152B81E25F13B544133333343276B51415C8FC285FC3B5441B81E85BB256B51411F85EB01FF3B54418FC2F508246B5141AE47E13A013C544114AE4771226B51418FC2F588023C5441E17A141E186B51419A9999F9083C5441E17A147E166B5141A4703D5A0A3C54413D0AD723146B51410AD7A3800D3C544100000020086B5141CDCCCC1C1E3C5441CDCCCC4C026B5141C3F5281C263C5441D7A3704D006B514114AE47412A3C54417B14AEC70E6B51418FC2F568203C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000D8630556486B51412E85AEA8A33B5441E17A143E456B514185EB5118A63B54410AD7A3C03F6B5141666666F6A93B5441EBACF7093C6B51413A032763AC3B5441D7155222396B5141019BB948AE3B5441CC90B49A386B5141AFCD46A1AE3B5441EE5FED99386B514105DEC8A1AE3B5441F0A23AE6366B5141AF5947BEAF3B5441860C30A0356B514161C6C0A9B03B5441964737A7396B514110CC4B0FB23B544125F8F239496B51416214A3AFA63B5441D8630556486B51412E85AEA8A33B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>310946 - 203531
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001200000014AE47E17BBB5041AE47E1BA0F415541AE47E1BA7FBB5041E17A149E0A415541A4703D8A86BB5041F6285CCF0141554148E17A4481BB504185EB5118FE405541333333937BBB5041D7A370CD04415541295C8F2276BB50419A9999F909415541713D0A676FBB5041EC51B84E0F4155419A9999F968BB50419A9999B9084155419A99994968BB50415C8FC27509415541D7A3702D69BB5041AE47E11A0A415541CDCCCCEC69BB50415C8FC2B51341554152B81E6571BB5041E17A149E174155417B14AE3771BB5041EC51B81E184155410000007082BB504152B81E0522415541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000C696AC5970BB50412C6F8A8E0E41554109EFDF2670BB50410BD1C6B60E415541B67A144E78BB5041B9703D2A144155411CC39DBB79BB50415B42C5641241554114AE47E17BBB5041AE47E1BA0F415541697591907DBB504184B2297E0D4155417847E1BA7FBB5041E17A149E0A415541CFC6025786BB50412E999D1102415541810BEE0986BB5041C5AC97FB014155416CC8C72284BB50417B64D61401415541FF0C0ABB80BB50410CBC68FAFE405541C3B1F8867EBB504138FAF3E101415541613961067DBB50414E3D1AC903415541E4601D527ABB504157C8019706415541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262302 - 207282
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000D7A370BDA36B514148E17AA4534054413D0AD7B3A76B5141AE47E18A4F4054411F85EB91A36B51417B14AE274D405441E17A14BEA46B5141D7A3701D4B405441EC51B8DEA86B51411F85EBF149405441C3F5289CAB6B5141713D0A274B40544185EB5198B86B5141EC51B88E3C40544185EB51A8C46B514148E17A942E405441B81E857BC66B51411F85EB312C405441C3F5282CA96B5141666666F61B405441666666F6A26B514152B81EA529405441E17A146EA06B51419A9999392F405441CDCCCC7C9B6B5141E17A147E384054415C8FC2E5816B5141D7A3706D5E405441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000050000000AD72EA08986B51411AC51D89694054415561A511986B51413E9751776940544137BBC53F986B514188D7481969405441D9AC41A8996B514191AC88366640544169245CC69B6B514195D4876B60405441E17A146E9C6B5141F6285C9F5E405441D5E5B18C9E6B51410E60D7C75A405441666666569F6B5141A4703D5A594054418347DC849F6B51417C31FB1D594054410AB7188C9F6B51416E50F913594054415DED70FBA06B5141D05A273857405441D7A370BDA36B514148E17AA453405441B5A3C949A66B5141A5E47E0151405441D0F9BBB3A76B51418648FD8A4F405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262302 - 310888
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000D7A370BDA36B514148E17AA4534054413D0AD7B3A76B5141AE47E18A4F4054411F85EB91A36B51417B14AE274D405441E17A14BEA46B5141D7A3701D4B405441EC51B8DEA86B51411F85EBF149405441C3F5289CAB6B5141713D0A274B40544185EB5198B86B5141EC51B88E3C40544185EB51A8C46B514148E17A942E405441B81E857BC66B51411F85EB312C405441C3F5282CA96B5141666666F61B405441666666F6A26B514152B81EA529405441E17A146EA06B51419A9999392F405441CDCCCC7C9B6B5141E17A147E384054415C8FC2E5816B5141D7A3706D5E405441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000050000000AD72EA08986B51411AC51D89694054415561A511986B51413E9751776940544137BBC53F986B514188D7481969405441D9AC41A8996B514191AC88366640544169245CC69B6B514195D4876B60405441E17A146E9C6B5141F6285C9F5E405441D5E5B18C9E6B51410E60D7C75A405441666666569F6B5141A4703D5A594054418347DC849F6B51417C31FB1D594054410AB7188C9F6B51416E50F913594054415DED70FBA06B5141D05A273857405441D7A370BDA36B514148E17AA453405441B5A3C949A66B5141A5E47E0151405441D0F9BBB3A76B51418648FD8A4F405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262372 - 207265
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000009000000D7A3702D006B5141AE47E13A344054411F85EB810C6B5141EC51B85E3F40544185EB51B8166B514152B81EB533405441000000D02A6B51417B14AE971C40544148E17A242B6B51411F85EB511C405441EC51B88E406B5141D7A370ED03405441E17A144E2B6B5141713D0AB7024054411F85EB41276B5141CDCCCC9C07405441D7A3702D006B5141AE47E13A34405441050000000AD7A3D00F6B5141F6285C7F2C4054419A9999A90E6B514148E17A842B405441EC51B8DE0F6B51418FC2F5182A4054415C8FC205116B51413D0AD7132B4054410AD7A3D00F6B5141F6285C7F [...]
+</a>
+
+<b>
+010600000001000000010300000001000000120000002A100FA0166B51418D3AFC991A405441FE45D2D3126B5141B642FCEF1E405441C96788D11F6B51412080863D29405441000000D02A6B51417B14AE971C40544131D563052B6B514177C3976B1C40544148E17A242B6B51411F85EB511C4054418BAE859B306B5141FF915B181640544161B9EFD7306B5141D4288BD315405441EC51B88E406B5141D7A370ED0340544171A98E4F406B5141967A65EA0340544103F065BA2B6B51419D4338BD02405441711DF94D2B6B514119503EB80240544109992C222A6B51411D88ED21044054411F85EB41276B5141CDCCCC9C07405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262372 - 388828
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000009000000D7A3702D006B5141AE47E13A344054411F85EB810C6B5141EC51B85E3F40544185EB51B8166B514152B81EB533405441000000D02A6B51417B14AE971C40544148E17A242B6B51411F85EB511C405441EC51B88E406B5141D7A370ED03405441E17A144E2B6B5141713D0AB7024054411F85EB41276B5141CDCCCC9C07405441D7A3702D006B5141AE47E13A34405441050000000AD7A3D00F6B5141F6285C7F2C4054419A9999A90E6B514148E17A842B405441EC51B8DE0F6B51418FC2F5182A4054415C8FC205116B51413D0AD7132B4054410AD7A3D00F6B5141F6285C7F [...]
+</a>
+
+<b>
+010600000001000000010300000001000000120000002A100FA0166B51418D3AFC991A405441FE45D2D3126B5141B642FCEF1E405441C96788D11F6B51412080863D29405441000000D02A6B51417B14AE971C40544131D563052B6B514177C3976B1C40544148E17A242B6B51411F85EB511C4054418BAE859B306B5141FF915B181640544161B9EFD7306B5141D4288BD315405441EC51B88E406B5141D7A370ED0340544171A98E4F406B5141967A65EA0340544103F065BA2B6B51419D4338BD02405441711DF94D2B6B514119503EB80240544109992C222A6B51411D88ED21044054411F85EB41276B5141CDCCCC9C07405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262446 - 2961012
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000004F000000AE47E12A216A5141000000B0883F5441AE47E12A226A5141F6285C3F873F54413D0AD7C3256A5141CDCCCC9C873F5441CDCCCCCC2A6A51417B14AE97883F544152B81E752F6A5141E17A14FE893F5441AE47E1FA336A514152B81EB58B3F5441D7A370ED416A5141F6285CFF903F54415C8FC2C5476A5141713D0A37933F5441713D0A074C6A5141B81E856B933F54410AD7A3804D6A5141713D0AD7913F5441295C8F32486A51418FC2F5788D3F544114AE47E1496A51413D0AD7838B3F54418FC2F5B8486A51415C8FC2858A3F54415C8FC2454D6A514133333373853F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001900000078EB301D776A51415E72DF5E6A3F5441DFFE8D1E776A51419A45657D693F544148E17A24776A51419A9999A9653F54415AD8CA2A776A51415F3E2D5B653F5441CA196593776A5141ADBA9E47603F54418E3B65F0776A5141AC4E34C45B3F544172D4E797786A5141BB6119A3533F5441A3FF9089786A51415099DD2E523F5441188F3DA9716A5141B58549CF4C3F544138DD8F5B6C6A5141936DCC02493F544177B0C2296C6A5141C38108BD483F5441164DA8A3696A5141CF093E9A443F5441B3293D2C696A5141EC2118BE423F5441E645D2FF686A5141D548CC37423F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262446 - 3344423
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000004F000000AE47E12A216A5141000000B0883F5441AE47E12A226A5141F6285C3F873F54413D0AD7C3256A5141CDCCCC9C873F5441CDCCCCCC2A6A51417B14AE97883F544152B81E752F6A5141E17A14FE893F5441AE47E1FA336A514152B81EB58B3F5441D7A370ED416A5141F6285CFF903F54415C8FC2C5476A5141713D0A37933F5441713D0A074C6A5141B81E856B933F54410AD7A3804D6A5141713D0AD7913F5441295C8F32486A51418FC2F5788D3F544114AE47E1496A51413D0AD7838B3F54418FC2F5B8486A51415C8FC2858A3F54415C8FC2454D6A514133333373853F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001900000078EB301D776A51415E72DF5E6A3F5441DFFE8D1E776A51419A45657D693F544148E17A24776A51419A9999A9653F54415AD8CA2A776A51415F3E2D5B653F5441CA196593776A5141ADBA9E47603F54418E3B65F0776A5141AC4E34C45B3F544172D4E797786A5141BB6119A3533F5441A3FF9089786A51415099DD2E523F5441188F3DA9716A5141B58549CF4C3F544138DD8F5B6C6A5141936DCC02493F544177B0C2296C6A5141C38108BD483F5441164DA8A3696A5141CF093E9A443F5441B3293D2C696A5141EC2118BE423F5441E645D2FF686A5141D548CC37423F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262450 - 263066
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000020000000103000000010000000C000000713D0AB7466B5141A4703D4AAC3F5441666666F62C6B514100000050A03F5441713D0A872C6B5141EC51B81EA03F544185EB51880B6B51418FC2F5A8AA3F5441B81E85DB096B5141C3F5287CAB3F544148E17A64096B51413D0AD793AB3F544166666626256B51411F85EB81B73F5441295C8FA2346B5141AE47E1FABD3F544148E17A84446B5141D7A3709DC43F5441295C8F624C6B5141713D0AE7C73F5441295C8F22576B51413D0AD763B43F5441713D0AB7466B5141A4703D4AAC3F544101030000000200000009000000E17A148E316B5141713D0A4731405441C3F528 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000822EADE64E6B5141A559B0FEC83F54413AE4EC1D536B5141F11941D3CA3F5441ED35B188556B514193BCE5DFCB3F54417F7DFC60586B5141F4BB171CCD3F5441C7A583635B6B5141E6CD9F6ACE3F544125FA48DB5D6B514146C2E97CCF3F54413EB7EB46606B5141A1F5EE89D03F54416FA35A73626B5141C88C837BD13F544173D2C1FA646B5141DFF19694D23F54418FC2F5A8696B5141CDCCCC9CD43F5441E427E8B1776B5141FB123773C43F54412F879822576B5141E58FDB63B43F5441FC379022576B5141AA76D763B43F5441E1B48D22576B51418B0ADA63B43F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262610 - 207276
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000020000000E000000CDCCCC0C576B5141E17A142E54405441333333F33C6B5141B81E85CB7340544148E17AC4396B5141666666A6774054415C8FC2053E6B5141A4703D4A7B4054417B14AE37606B5141EC51B8DE514054419A999989686B51419A9999594740544133333323796B5141E17A14BE49405441713D0AC7916B5141333333832B405441295C8F32866B51416666661626405441B81E853B6D6B5141E17A142E46405441295C8F42686B5141D7A370AD45405441EC51B81E676B51413D0AD7C346405441EC51B8DE626B514152B81E9546405441CDCCCC0C576B5141E17A142E54405441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000EC51B8DE626B514152B81E9546405441165643C8616B514101BA16DD4740544159C72B76606B514122D5625A49405441896816805B6B51417831770F4F405441DCC041CB5F6B5141120BB88E51405441260E313F606B51419FDD38D55140544173072A9C636B51413FAC96944D4054410A634D21646B514196A79EE54C4054418063CF22666B5141875BF4624A4054419A999989686B51419A9999594740544133333323796B5141E17A14BE49405441713D0AC7916B5141333333832B405441295C8F32866B51416666661626405441B81E853B6D6B5141E17A142E46405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262700 - 207265
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000000C0000001F85EB41276B5141CDCCCC9C07405441E17A144E2B6B5141713D0AB702405441AE47E18A1E6B5141CDCCCCFC01405441A4703D8A0F6B514114AE47610840544114AE4721076B51419A9999591040544148E17A14056B51419A9999891140544185EB51D8046B514152B81E851140544100000070F96A51415C8FC2F528405441CDCCCC6CF56A5141000000702A40544100000080F66A5141AE47E17A2B405441D7A3702D006B5141AE47E13A344054411F85EB41276B5141CDCCCC9C074054410500000085EB51E8056B5141EC51B88E134054415C8FC215056B51418FC2F5F8 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000120000002A100FA0166B51418D3AFC991A405441FE45D2D3126B5141B642FCEF1E405441C96788D11F6B51412080863D29405441000000D02A6B51417B14AE971C40544131D563052B6B514177C3976B1C40544148E17A242B6B51411F85EB511C4054418BAE859B306B5141FF915B181640544161B9EFD7306B5141D4288BD315405441EC51B88E406B5141D7A370ED0340544171A98E4F406B5141967A65EA0340544103F065BA2B6B51419D4338BD02405441711DF94D2B6B514119503EB80240544109992C222A6B51411D88ED21044054411F85EB41276B5141CDCCCC9C07405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262700 - 388828
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000000C0000001F85EB41276B5141CDCCCC9C07405441E17A144E2B6B5141713D0AB702405441AE47E18A1E6B5141CDCCCCFC01405441A4703D8A0F6B514114AE47610840544114AE4721076B51419A9999591040544148E17A14056B51419A9999891140544185EB51D8046B514152B81E851140544100000070F96A51415C8FC2F528405441CDCCCC6CF56A5141000000702A40544100000080F66A5141AE47E17A2B405441D7A3702D006B5141AE47E13A344054411F85EB41276B5141CDCCCC9C074054410500000085EB51E8056B5141EC51B88E134054415C8FC215056B51418FC2F5F8 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000120000002A100FA0166B51418D3AFC991A405441FE45D2D3126B5141B642FCEF1E405441C96788D11F6B51412080863D29405441000000D02A6B51417B14AE971C40544131D563052B6B514177C3976B1C40544148E17A242B6B51411F85EB511C4054418BAE859B306B5141FF915B181640544161B9EFD7306B5141D4288BD315405441EC51B88E406B5141D7A370ED0340544171A98E4F406B5141967A65EA0340544103F065BA2B6B51419D4338BD02405441711DF94D2B6B514119503EB80240544109992C222A6B51411D88ED21044054411F85EB41276B5141CDCCCC9C07405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262793 - 207243
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000F000000A4703D1AAF6B514114AE4721FC3F54418FC2F5785F6B5141333333C3E43F54411F85EB415B6B5141713D0A67E93F544185EB5178526B514152B81E65F33F54418FC2F5F8676B51415C8FC2C5F93F5441E17A144E5E6B5141E17A140E0840544148E17A44626B51415C8FC2D508405441295C8F82656B5141A4703D0A0A40544114AE4701696B5141333333B30A405441A4703D6A6B6B5141666666D60B405441333333E36C6B51413D0AD7230D405441000000506F6B51417B14AE3710405441A4703DFA6F6B51418FC2F588104054410AD7A3B07E6B51411F85EB0111405441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000332852F8676B51413643B4C6F93F54412D9776FD676B5141CAFA3AC8F93F54413AB574B5646B5141C3641C98FE3F5441385137555E6B5141848F89030840544148E17A44626B51415C8FC2D508405441B50F12CB636B514143F7E9660940544180F746F7636B5141AFA15777094054417BACA00A656B51417D7FABDD094054413CD98B7A656B5141160B43070A40544101F33CD3666B5141EA95D1490A40544114AE4701696B5141333333B30A405441A4703D6A6B6B5141666666D60B405441333333E36C6B51413D0AD7230D4054418CB88C886E6B51414F8F40350F405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262793 - 343152
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000F000000A4703D1AAF6B514114AE4721FC3F54418FC2F5785F6B5141333333C3E43F54411F85EB415B6B5141713D0A67E93F544185EB5178526B514152B81E65F33F54418FC2F5F8676B51415C8FC2C5F93F5441E17A144E5E6B5141E17A140E0840544148E17A44626B51415C8FC2D508405441295C8F82656B5141A4703D0A0A40544114AE4701696B5141333333B30A405441A4703D6A6B6B5141666666D60B405441333333E36C6B51413D0AD7230D405441000000506F6B51417B14AE3710405441A4703DFA6F6B51418FC2F588104054410AD7A3B07E6B51411F85EB0111405441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000332852F8676B51413643B4C6F93F54412D9776FD676B5141CAFA3AC8F93F54413AB574B5646B5141C3641C98FE3F5441385137555E6B5141848F89030840544148E17A44626B51415C8FC2D508405441B50F12CB636B514143F7E9660940544180F746F7636B5141AFA15777094054417BACA00A656B51417D7FABDD094054413CD98B7A656B5141160B43070A40544101F33CD3666B5141EA95D1490A40544114AE4701696B5141333333B30A405441A4703D6A6B6B5141666666D60B405441333333E36C6B51413D0AD7230D4054418CB88C886E6B51414F8F40350F405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262920 - 238718
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001A000000D7A3704DC36A51413D0AD783453F5441000000D0DC6A514148E17AE45A3F544114AE4741E96A5141D7A370FD653F5441B81E853BFC6A5141D7A3701D793F54410AD7A340FE6A51419A999969773F5441B81E853BFF6A51411F85EB11763F5441B81E85DB006B5141B81E85BB703F544166666656016B5141CDCCCC5C703F5441EC51B8AE046B514148E17A84693F5441CDCCCC1C056B5141EC51B87E673F544148E17AA4056B5141295C8F42643F5441D7A3701DCC6A5141EC51B86E2A3F5441295C8FC2C16A51417B14AE77343F5441F6285C7FBE6A51410AD7A3A0373F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004F000000295C8FC2C16A51417B14AE77343F5441C93FE6F6C06A5141AB2AF13C353F5441882F5588BE6A51411FCDB99A373F5441089FD386BE6A5141AF6E6899373F5441F6285C7FBE6A51410AD7A3A0373F544187F664A7BD6A51413E9BE7D5363F5441C3F5281CBD6A514133333353363F5441F4DA501BBD6A51412F774852363F544167F8AA16BD6A5141C16AEA4D363F5441856E8A03BC6A5141F5B16322353F5441E17A14CEBB6A514185EB51E8343F5441A90AD21AAF6A5141C47A914C243F5441B5B1AD01AF6A5141C93804F9243F544143D557F4AE6A5141BDCE7B54253F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262920 - 385655
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001A000000D7A3704DC36A51413D0AD783453F5441000000D0DC6A514148E17AE45A3F544114AE4741E96A5141D7A370FD653F5441B81E853BFC6A5141D7A3701D793F54410AD7A340FE6A51419A999969773F5441B81E853BFF6A51411F85EB11763F5441B81E85DB006B5141B81E85BB703F544166666656016B5141CDCCCC5C703F5441EC51B8AE046B514148E17A84693F5441CDCCCC1C056B5141EC51B87E673F544148E17AA4056B5141295C8F42643F5441D7A3701DCC6A5141EC51B86E2A3F5441295C8FC2C16A51417B14AE77343F5441F6285C7FBE6A51410AD7A3A0373F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004F000000295C8FC2C16A51417B14AE77343F5441C93FE6F6C06A5141AB2AF13C353F5441882F5588BE6A51411FCDB99A373F5441089FD386BE6A5141AF6E6899373F5441F6285C7FBE6A51410AD7A3A0373F544187F664A7BD6A51413E9BE7D5363F5441C3F5281CBD6A514133333353363F5441F4DA501BBD6A51412F774852363F544167F8AA16BD6A5141C16AEA4D363F5441856E8A03BC6A5141F5B16322353F5441E17A14CEBB6A514185EB51E8343F5441A90AD21AAF6A5141C47A914C243F5441B5B1AD01AF6A5141C93804F9243F544143D557F4AE6A5141BDCE7B54253F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>262986 - 3295786
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000040000000103000000010000001300000085EB5128106A51418FC2F548CB3E5441F6285C9F156A5141000000E0CA3E54417B14AE07216A51418FC2F5F8CB3E544114AE4771276A5141F6285CBFCD3E54413D0AD7E3296A5141C3F5287CB83E5441E17A149E296A51410AD7A380B83E5441AE47E17A296A5141E17A140EB83E5441E17A143E2A6A5141E17A144EB53E5441E17A14EE266A5141E17A149EB43E5441A4703D4A256A514166666616B43E5441000000F0226A5141CDCCCCFCB33E5441B81E85EB156A5141295C8F52B03E54410AD7A370116A51417B14AE67AE3E544148E17AE40D6A51419A999999AF3E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004600000033333363356A514114AE4701513F54417B14AE67346A514100000030513F5441EC51B88E166A514185EB51B8563F544166666696156A51415C8FC2555F3F5441000000A0146A5141C3F5281C633F544100000090126A5141CDCCCC7C653F5441295C8F220F6A5141B81E854B673F5441C3F528AC0A6A5141E17A141E683F54418FC2F5B8056A514185EB5178673F5441713D0A67FE6951411F85EBE1653F54419A9999C9FB69514152B81EB5653F544185EB5198F869514100000010663F5441E17A145EFA695141713D0AE76F3F544133333313F869514148E17AB4773F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>298323 - 4482939
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001000000033333373B5C950413D0AD71355AF544114AE47A1BBC95041713D0A1754AF5441C3F5287CBFC95041E17A143E54AF5441AE47E1AABFC95041333333934AAF5441EC51B87EBEC95041666666F648AF54419A9999E991C950413D0AD7733BAF5441CDCCCCAC90C95041333333533CAF5441EC51B82E90C95041EC51B8CE5CAF544114AE479197C9504152B81EC55EAF5441295C8F5299C95041A4703D1A5FAF5441295C8FD29AC950411F85EB515FAF5441666666A69CC95041333333235FAF544166666616A3C95041333333235CAF544100000090A9C9504148E17AF458AF5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000110000009A9999E991C950413D0AD7733BAF5441CDCCCCAC90C95041333333533CAF5441EC51B82E90C95041EC51B8CE5CAF544114AE479197C9504152B81EC55EAF5441295C8F5299C95041A4703D1A5FAF5441295C8FD29AC950411F85EB515FAF5441666666A69CC95041333333235FAF544166666616A3C95041333333235CAF544195C515CCA3C950416597E6C95BAF54415F5E4BE6A4C950414E76313F5BAF544165052B8DA5C950416B812CED5AAF5441BC51D9C2A6C9504182CF34C541AF5441E5FC5A66A6C95041697A2DA941AF54418C51A9FBA5C950410F84D88841AF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263076 - 1096700
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A0000003D0AD783FF0651419A9999B9EA495441713D0AA7F7065141EC51B8DEE849544133333363F50651410AD7A330F0495441EC51B8FEF4065141713D0A47F1495441295C8FA208075141E17A148EF94954418FC2F5D8080751410AD7A3E0F8495441C3F5283C0C0751410AD7A3B0ED49544185EB512809075141E17A14FEEC49544185EB5158010751417B14AE27EB4954413D0AD783FF0651419A9999B9EA495441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000E1AE0FE0080751417AFF2FC9F8495441DE7A12A4080751410342A784F9495441E2D24A4306075141F6D00681F84954412CA20F2C07075141FA283F20F6495441B4145F7309075141D2F9AEE2F6495441C3F5283C0C0751410AD7A3B0ED49544185EB512809075141E17A14FEEC49544185EB5158010751417B14AE27EB4954413D0AD783FF0651419A9999B9EA495441713D0AA7F7065141EC51B8DEE849544133333363F50651410AD7A330F0495441EC51B8FEF4065141713D0A47F1495441295C8FA208075141E17A148EF94954418FC2F5D8080751410AD7A3E0F8495441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263076 - 3899995
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A0000003D0AD783FF0651419A9999B9EA495441713D0AA7F7065141EC51B8DEE849544133333363F50651410AD7A330F0495441EC51B8FEF4065141713D0A47F1495441295C8FA208075141E17A148EF94954418FC2F5D8080751410AD7A3E0F8495441C3F5283C0C0751410AD7A3B0ED49544185EB512809075141E17A14FEEC49544185EB5158010751417B14AE27EB4954413D0AD783FF0651419A9999B9EA495441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000E1AE0FE0080751417AFF2FC9F8495441DE7A12A4080751410342A784F9495441E2D24A4306075141F6D00681F84954412CA20F2C07075141FA283F20F6495441B4145F7309075141D2F9AEE2F6495441C3F5283C0C0751410AD7A3B0ED49544185EB512809075141E17A14FEEC49544185EB5158010751417B14AE27EB4954413D0AD783FF0651419A9999B9EA495441713D0AA7F7065141EC51B8DEE849544133333363F50651410AD7A330F0495441EC51B8FEF4065141713D0A47F1495441295C8FA208075141E17A148EF94954418FC2F5D8080751410AD7A3E0F8495441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263547 - 3077886
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000000E000000B81E854BFD135141EC51B83E8B82544114AE4711FC1351418FC2F5887E825441EC51B8DEFB1351417B14AEE77A825441713D0A87FB1351418FC2F598748254411F85EB01FB135141F6285C1F7182544148E17AE4F71351410AD7A34072825441F6285CAFF3135141295C8FE272825441EC51B85EED135141A4703DBA73825441CDCCCC4CE9135141000000F073825441EC51B8DEE813514185EB513872825441D7A3708DEA135141000000A0848254419A9999F9EA135141D7A370ED8C82544148E17A84ED13514152B81E458D825441B81E854BFD135141EC51B83E8B825441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000033DF80CBEC1351414F00D6C173825441CE44500FE9135141CF7FE34B74825441175AD13AEA135141DB64301881825441C02A65FDEA13514150556FF28C825441C0DC2D4EEB135141841F56838D825441C9F8E2C5F0135141758C27DA8C8254414A36A458FD1351415E080F3D8B825441549AE2B1FB13514138C5FFAD77825441B6764901FB1351419BF2961F7182544148E17AE4F71351410AD7A34072825441F6285CAFF3135141295C8FE272825441EC51B85EED135141A4703DBA7382544133DF80CBEC1351414F00D6C173825441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263547 - 3390630
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000000E000000B81E854BFD135141EC51B83E8B82544114AE4711FC1351418FC2F5887E825441EC51B8DEFB1351417B14AEE77A825441713D0A87FB1351418FC2F598748254411F85EB01FB135141F6285C1F7182544148E17AE4F71351410AD7A34072825441F6285CAFF3135141295C8FE272825441EC51B85EED135141A4703DBA73825441CDCCCC4CE9135141000000F073825441EC51B8DEE813514185EB513872825441D7A3708DEA135141000000A0848254419A9999F9EA135141D7A370ED8C82544148E17A84ED13514152B81E458D825441B81E854BFD135141EC51B83E8B825441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000033DF80CBEC1351414F00D6C173825441CE44500FE9135141CF7FE34B74825441175AD13AEA135141DB64301881825441C02A65FDEA13514150556FF28C825441C0DC2D4EEB135141841F56838D825441C9F8E2C5F0135141758C27DA8C8254414A36A458FD1351415E080F3D8B825441549AE2B1FB13514138C5FFAD77825441B6764901FB1351419BF2961F7182544148E17AE4F71351410AD7A34072825441F6285CAFF3135141295C8FE272825441EC51B85EED135141A4703DBA7382544133DF80CBEC1351414F00D6C173825441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263738 - 3159377
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001B000000C3F5286C4217514100000070008854415C8FC2B5411751417B14AE770A88544114AE4751411751419A9999E90E88544185EB51A840175141000000601388544148E17AE43F175141AE47E11A17885441F6285C8F3E175141CDCCCCEC1B88544148E17A743D175141A4703D1A20885441AE47E12A3C1751416666666625885441EC51B81E3F175141CDCCCC0C288854419A999979421751410AD7A3202B885441EC51B8EE46175141F6285CFF18885441EC51B87E47175141F6285CFF15885441A4703D2A48175141713D0A07128854413D0AD78348175141CDCCCCFC0C885441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000031077E434817514134880BB007885441AF899A7347175141755A0560FF87544120918AA34617514147AB3D6CF78754413E36F28145175141A6F70F8BEC87544194658FF0431751413B57FA2DE2875441DDEFF18D36175141EEB4365EEA875441724953513217514179C27DBAEC87544197334CC82F175141936FE44FED875441D22C21F22F17514156DC168AEE875441B6F81B27311751415B657128F48754410C9B124731175141EB43215DF6875441448690BC30175141D3E3CA10FC875441D2FAE8B130175141BE703FE30588544162F2B486321751414DE597D805885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263738 - 3567823
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001B000000C3F5286C4217514100000070008854415C8FC2B5411751417B14AE770A88544114AE4751411751419A9999E90E88544185EB51A840175141000000601388544148E17AE43F175141AE47E11A17885441F6285C8F3E175141CDCCCCEC1B88544148E17A743D175141A4703D1A20885441AE47E12A3C1751416666666625885441EC51B81E3F175141CDCCCC0C288854419A999979421751410AD7A3202B885441EC51B8EE46175141F6285CFF18885441EC51B87E47175141F6285CFF15885441A4703D2A48175141713D0A07128854413D0AD78348175141CDCCCCFC0C885441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000031077E434817514134880BB007885441AF899A7347175141755A0560FF87544120918AA34617514147AB3D6CF78754413E36F28145175141A6F70F8BEC87544194658FF0431751413B57FA2DE2875441DDEFF18D36175141EEB4365EEA875441724953513217514179C27DBAEC87544197334CC82F175141936FE44FED875441D22C21F22F17514156DC168AEE875441B6F81B27311751415B657128F48754410C9B124731175141EB43215DF6875441448690BC30175141D3E3CA10FC875441D2FAE8B130175141BE703FE30588544162F2B486321751414DE597D805885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263760 - 2940207
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000013000000AE47E1FA38165141E17A143EF98254417B14AE0739165141E17A141EFD825441CDCCCC0C39165141E17A140E03835441E17A14DE38165141A4703D2A07835441E17A146E381651419A9999A90D83544114AE470139165141A4703D1A12835441C3F528DC381651419A999919168354413D0AD78338165141666666A619835441AE47E10A37165141E17A142E1D8354410AD7A3F03A1651410AD7A3F01A83544185EB510842165141666666661783544114AE471146165141AE47E14A15835441000000A041165141CDCCCC7C118354419A9999F940165141D7A3707D07835441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000007AE7A94437165141F2C0DE0C1D83544179BED191321651412B6E1085268354410D9F560D2C16514143E275162F83544195B0E1F224165141E33DD8F23783544148E2C66D2B1651411AB2CC6C438354417B14AEB72E165141EC51B8BE4A8354413D0AD7F3371651410AD7A31055835441EC51B82E4116514152B81EE55C835441D7A370CD41165141F6285C8F5C83544152B81EF54E1651413D0AD74366835441EC51B83E5716514114AE47715C835441000000605C165141333333E355835441D7A3709D5E1651416666660653835441666666265D1651419A9999A945835441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263760 - 3273925
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000013000000AE47E1FA38165141E17A143EF98254417B14AE0739165141E17A141EFD825441CDCCCC0C39165141E17A140E03835441E17A14DE38165141A4703D2A07835441E17A146E381651419A9999A90D83544114AE470139165141A4703D1A12835441C3F528DC381651419A999919168354413D0AD78338165141666666A619835441AE47E10A37165141E17A142E1D8354410AD7A3F03A1651410AD7A3F01A83544185EB510842165141666666661783544114AE471146165141AE47E14A15835441000000A041165141CDCCCC7C118354419A9999F940165141D7A3707D07835441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000007AE7A94437165141F2C0DE0C1D83544179BED191321651412B6E1085268354410D9F560D2C16514143E275162F83544195B0E1F224165141E33DD8F23783544148E2C66D2B1651411AB2CC6C438354417B14AEB72E165141EC51B8BE4A8354413D0AD7F3371651410AD7A31055835441EC51B82E4116514152B81EE55C835441D7A370CD41165141F6285C8F5C83544152B81EF54E1651413D0AD74366835441EC51B83E5716514114AE47715C835441000000605C165141333333E355835441D7A3709D5E1651416666660653835441666666265D1651419A9999A945835441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263961 - 2976495
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000013000000333333B33C145141E17A14EEC0875441D7A370ED39145141C3F5282CB08754410AD7A3103B1451415C8FC275AF8754415C8FC21534145141713D0A17B08754411F85EB413414514152B81EE5B1875441CDCCCCEC381451413D0AD783CC875441B81E85CB411451411F85EB41FD875441EC51B80E4214514152B81E35FE875441EC51B81E43145141A4703D6A03885441AE47E13A471451419A99997904885441AE47E1FA49145141B81E85EB03885441B81E85AB48145141F6285C8FFE8754415C8FC22548145141C3F5286CFC875441295C8F82461451417B14AEC7F3875441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000AE47E1FA49145141B81E85EB03885441B81E853B5214514133333393FF875441EC51B8AE5214514133333303FD87544114AE47615214514114AE4781FB87544148E17AF451145141D7A3705DF9875441AE47E1DA4E1451411F85EB01E7875441000000C04D14514114AE47D1DE875441E17A142E4B145141F6285CAFCB875441333333B347145141D7A370DDC6875441B81E857B461451415C8FC245C587544114AE471145145141F6285C6FC3875441E17A14FE41145141713D0A67BF8754418F238C884014514186374A0CBD875441965BC66A3F14514143534926BB875441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>263961 - 3531287
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000013000000333333B33C145141E17A14EEC0875441D7A370ED39145141C3F5282CB08754410AD7A3103B1451415C8FC275AF8754415C8FC21534145141713D0A17B08754411F85EB413414514152B81EE5B1875441CDCCCCEC381451413D0AD783CC875441B81E85CB411451411F85EB41FD875441EC51B80E4214514152B81E35FE875441EC51B81E43145141A4703D6A03885441AE47E13A471451419A99997904885441AE47E1FA49145141B81E85EB03885441B81E85AB48145141F6285C8FFE8754415C8FC22548145141C3F5286CFC875441295C8F82461451417B14AEC7F3875441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000AE47E1FA49145141B81E85EB03885441B81E853B5214514133333393FF875441EC51B8AE5214514133333303FD87544114AE47615214514114AE4781FB87544148E17AF451145141D7A3705DF9875441AE47E1DA4E1451411F85EB01E7875441000000C04D14514114AE47D1DE875441E17A142E4B145141F6285CAFCB875441333333B347145141D7A370DDC6875441B81E857B461451415C8FC245C587544114AE471145145141F6285C6FC3875441E17A14FE41145141713D0A67BF8754418F238C884014514186374A0CBD875441965BC66A3F14514143534926BB875441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264234 - 1062512
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000017000000B81E852B9C19514152B81E456D8454410AD7A3F09A1951410000009065845441713D0A17991951410AD7A3E05884544152B81E7597195141CDCCCC6C4984544185EB51A8961951415C8FC25541845441713D0A5790195141C3F5284C40845441666666B68C1951411F85EBB13F84544114AE4781851951413D0AD7833E8454417B14AEC786195141666666264E8454419A9999D987195141C3F528EC628454419A9999198819514114AE47F16D8454416666669687195141A4703D1A768454410000004087195141B81E857B7B8454419A9999398F195141B81E859B7C845441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000A74648DCBE1951419471843B7A8454414DC0D2DDC1195141508F5E8A798454411C8AD00EC019514141F15A09788454412A4E97D7BF1951411CC6CE1378845441C6F3F6E9BD195141BE6A518478845441C24C63D2BA1951419D30BD3879845441FFF49FEDB819514199AA3AA77984544197FA51BBB8195141D4F92AB2798454417C02715DB8195141723303B9798454410290C925B71951416226BCCF79845441D1CABB6BB41951412228A1027A845441FDC32DB5A919514147DF29CB7A845441A4703D2A9E1951418FC2F5A87B8454419A9999398F195141B81E859B7C845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264234 - 3602435
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000017000000B81E852B9C19514152B81E456D8454410AD7A3F09A1951410000009065845441713D0A17991951410AD7A3E05884544152B81E7597195141CDCCCC6C4984544185EB51A8961951415C8FC25541845441713D0A5790195141C3F5284C40845441666666B68C1951411F85EBB13F84544114AE4781851951413D0AD7833E8454417B14AEC786195141666666264E8454419A9999D987195141C3F528EC628454419A9999198819514114AE47F16D8454416666669687195141A4703D1A768454410000004087195141B81E857B7B8454419A9999398F195141B81E859B7C845441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000A74648DCBE1951419471843B7A8454414DC0D2DDC1195141508F5E8A798454411C8AD00EC019514141F15A09788454412A4E97D7BF1951411CC6CE1378845441C6F3F6E9BD195141BE6A518478845441C24C63D2BA1951419D30BD3879845441FFF49FEDB819514199AA3AA77984544197FA51BBB8195141D4F92AB2798454417C02715DB8195141723303B9798454410290C925B71951416226BCCF79845441D1CABB6BB41951412228A1027A845441FDC32DB5A919514147DF29CB7A845441A4703D2A9E1951418FC2F5A87B8454419A9999398F195141B81E859B7C845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264432 - 25576
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000034000000295C8F42051351410AD7A3401482544148E17A640513514152B81E7511825441B81E85CB0513514152B81EC50B825441713D0A3706135141F6285C0F078254415C8FC2550613514185EB519805825441E17A147E06135141713D0AA7038254411F85EB910613514152B81EF5FF81544148E17A9406135141E17A149EFB815441AE47E17A0613514185EB5148F881544148E17A640613514152B81ED5F58154417B14AE87061351418FC2F578F3815441E17A14AE06135141666666E6EF8154417B14AE87061351413D0AD783ED815441EC51B89E06135141C3F528BCE9815441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000030000000580815910613514112DA7763E08154410A3205A0061351414E7DC1A6DE815441DF99EFB3061351413C6223DADA815441C7E5E2B2061351414BC7EE8EDA81544128CFA0AF0613514110597CA5D9815441A9C3459906135141F7F5FA65D3815441C6B7EA90F7125141C42EBA53D2815441CF226796F7125141ABFDD092D28154411D7815C7F7125141835CC4FDD38154418EA2A4E0F7125141BB3754BCD48154419A9999F9F712514166666676D58154419187D600F8125141BF129AA1D5815441967B2919F8125141D368BCF6D58154412D4DEE51F8125141B07BEB5CD6815441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>267158 - 1378048
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B000000D7A3707DC24B5141713D0A2748E15441333333A3C24B51419A99991945E15441B81E85CBC64B5141666666C627E154419A999999C74B5141A4703DAA22E154411F85EB71C84B5141B81E85EB1EE1544114AE4751C94B5141F6285C6F1CE154417B14AE47954B5141E17A140E15E15441713D0AE78E4B51415C8FC2351AE154410AD7A3408F4B5141EC51B8EE1BE154415C8FC295904B5141F6285C0F1DE15441CDCCCCDC914B5141B81E856B20E15441F6285CAF934B51413333337323E15441CDCCCCCC974B514148E17A3427E154411F85EB31994B51418FC2F53829E15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000003E05D2549A4B5141D4FCD5112BE15441A4703D0A9B4B514148E17A742CE15441713D0A879F4B51415C8FC2E530E154411F85EB41A04B514148E17A8433E154419A999949A34B5141C3F5289C37E154413D0AD783A74B51415C8FC2953EE154419A999949AA4B51413D0AD76345E1544185EB5178AB4B51413D0AD75347E15441295C8F72AD4B5141C3F5283C4CE15441EC51B88EC44B5141333333D351E15441F6285C7FC34B5141A4703D3A4EE15441666666D6C24B5141CDCCCC5C4BE15441D7A3707DC24B5141713D0A2748E15441333333A3C24B51419A99991945E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>267158 - 3705101
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B000000D7A3707DC24B5141713D0A2748E15441333333A3C24B51419A99991945E15441B81E85CBC64B5141666666C627E154419A999999C74B5141A4703DAA22E154411F85EB71C84B5141B81E85EB1EE1544114AE4751C94B5141F6285C6F1CE154417B14AE47954B5141E17A140E15E15441713D0AE78E4B51415C8FC2351AE154410AD7A3408F4B5141EC51B8EE1BE154415C8FC295904B5141F6285C0F1DE15441CDCCCCDC914B5141B81E856B20E15441F6285CAF934B51413333337323E15441CDCCCCCC974B514148E17A3427E154411F85EB31994B51418FC2F53829E15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000003E05D2549A4B5141D4FCD5112BE15441A4703D0A9B4B514148E17A742CE15441713D0A879F4B51415C8FC2E530E154411F85EB41A04B514148E17A8433E154419A999949A34B5141C3F5289C37E154413D0AD783A74B51415C8FC2953EE154419A999949AA4B51413D0AD76345E1544185EB5178AB4B51413D0AD75347E15441295C8F72AD4B5141C3F5283C4CE15441EC51B88EC44B5141333333D351E15441F6285C7FC34B5141A4703D3A4EE15441666666D6C24B5141CDCCCC5C4BE15441D7A3707DC24B5141713D0A2748E15441333333A3C24B51419A99991945E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955016 - 111975
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000001500000048E17AF4F83D5141A4703D4A8EDA544159EABF50F73D5141531F6D7C8FDA544107C4851FF93D5141887F0F6D91DA54411DE1539AFD3D5141E8BE8DB194DA5441B58C2EC4013E5141894592CD97DA54413D40C69D073E514125AF7D8B9BDA5441995A23F10E3E514128CC4B06A0DA544156F683BB0F3E5141F900E7569FDA5441424030D7113E5141D64ADE559CDA54411AAFB200153E51414B5D14C097DA54410EF95E1C173E5141AC94203894DA5441DEE53CE0183E5141A814F45D91DA5441D7A370CD063E5141EC51B8AE84DA5441869CA823053E514116FE378383DA5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000003D0AD793F43D514148E17AD48BDA5441F6285C4FF73D5141D7A3707D8FDA544148E17AF4F83D5141A4703D4A8EDA54417B14AEA7FA3D514148E17A648CDA5441333333F3FE3D5141713D0A7788DA5441EC51B8AEFF3D5141B81E85CB87DA54413D0AD7C3013E51413D0AD7C385DA544152B81E85043E514148E17A1483DA54417B14AE87053E51417B14AE1782DA5441295C8F12063E51410AD7A36081DA5441D7A3706D093E514152B81EF57CDA544114AE47F10B3E51413D0AD7D378DA5441EC51B85E0C3E51410000008075DA544114AE4731023E51419A9999797ADA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955016 - 1366869
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000001500000048E17AF4F83D5141A4703D4A8EDA544159EABF50F73D5141531F6D7C8FDA544107C4851FF93D5141887F0F6D91DA54411DE1539AFD3D5141E8BE8DB194DA5441B58C2EC4013E5141894592CD97DA54413D40C69D073E514125AF7D8B9BDA5441995A23F10E3E514128CC4B06A0DA544156F683BB0F3E5141F900E7569FDA5441424030D7113E5141D64ADE559CDA54411AAFB200153E51414B5D14C097DA54410EF95E1C173E5141AC94203894DA5441DEE53CE0183E5141A814F45D91DA5441D7A370CD063E5141EC51B8AE84DA5441869CA823053E514116FE378383DA5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000003D0AD793F43D514148E17AD48BDA5441F6285C4FF73D5141D7A3707D8FDA544148E17AF4F83D5141A4703D4A8EDA54417B14AEA7FA3D514148E17A648CDA5441333333F3FE3D5141713D0A7788DA5441EC51B8AEFF3D5141B81E85CB87DA54413D0AD7C3013E51413D0AD7C385DA544152B81E85043E514148E17A1483DA54417B14AE87053E51417B14AE1782DA5441295C8F12063E51410AD7A36081DA5441D7A3706D093E514152B81EF57CDA544114AE47F10B3E51413D0AD7D378DA5441EC51B85E0C3E51410000008075DA544114AE4731023E51419A9999797ADA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955016 - 5293243
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000001500000048E17AF4F83D5141A4703D4A8EDA544159EABF50F73D5141531F6D7C8FDA544107C4851FF93D5141887F0F6D91DA54411DE1539AFD3D5141E8BE8DB194DA5441B58C2EC4013E5141894592CD97DA54413D40C69D073E514125AF7D8B9BDA5441995A23F10E3E514128CC4B06A0DA544156F683BB0F3E5141F900E7569FDA5441424030D7113E5141D64ADE559CDA54411AAFB200153E51414B5D14C097DA54410EF95E1C173E5141AC94203894DA5441DEE53CE0183E5141A814F45D91DA5441D7A370CD063E5141EC51B8AE84DA5441869CA823053E514116FE378383DA5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000003D0AD793F43D514148E17AD48BDA5441F6285C4FF73D5141D7A3707D8FDA544148E17AF4F83D5141A4703D4A8EDA54417B14AEA7FA3D514148E17A648CDA5441333333F3FE3D5141713D0A7788DA5441EC51B8AEFF3D5141B81E85CB87DA54413D0AD7C3013E51413D0AD7C385DA544152B81E85043E514148E17A1483DA54417B14AE87053E51417B14AE1782DA5441295C8F12063E51410AD7A36081DA5441D7A3706D093E514152B81EF57CDA544114AE47F10B3E51413D0AD7D378DA5441EC51B85E0C3E51410000008075DA544114AE4731023E51419A9999797ADA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>758716 - 1383793
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000030000000909830B7F8255141893F3086561455413833C1C2F8255141FE03E19456145541DE5BFB22FB25514131BFEDCC59145541E6E52297FB2551416E0BED7D5A145541572F9E6AFC25514170012FC05B1455414EF00189FC25514156DE7DEE5B145541A86F46E6FD2551412B47D5365D1455418E09CA91FF255141E09546785E1455417C6E05AF012651417D17E2D15F145541F8287D8F03265141BC9EEADA6014554137C1128505265141D8C2C5AC61145541FE04FFE806265141FAA38C17621455417C15E17E07265141EDA883446214554120623D12092651413802279B62145541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A4703DBADF25514148E17A4462145541295C8F82F0255141713D0A5779145541CDCCCC1C0E265141000000307E145541F1F7EA000F2651417867C6CD7D145541572B6CD90F26514100A98D797C145541BA7EA6990F265141677839667B145541E77177340F2651410BAFAA2877145541A4FAF1510E2651415651F4B7711455410E2821850D2651417313F3656D1455412289205C0B2651412DE60C4764145541459F2E230B265141E81CF64D63145541D71FB8F50A2651418CD161D662145541C8FC10DA0926514146ED7EC462145541246314A1072651413640C64E62145541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>758716 - 4100624
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000030000000909830B7F8255141893F3086561455413833C1C2F8255141FE03E19456145541DE5BFB22FB25514131BFEDCC59145541E6E52297FB2551416E0BED7D5A145541572F9E6AFC25514170012FC05B1455414EF00189FC25514156DE7DEE5B145541A86F46E6FD2551412B47D5365D1455418E09CA91FF255141E09546785E1455417C6E05AF012651417D17E2D15F145541F8287D8F03265141BC9EEADA6014554137C1128505265141D8C2C5AC61145541FE04FFE806265141FAA38C17621455417C15E17E07265141EDA883446214554120623D12092651413802279B62145541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000A4703DBADF25514148E17A4462145541295C8F82F0255141713D0A5779145541CDCCCC1C0E265141000000307E145541F1F7EA000F2651417867C6CD7D145541572B6CD90F26514100A98D797C145541BA7EA6990F265141677839667B145541E77177340F2651410BAFAA2877145541A4FAF1510E2651415651F4B7711455410E2821850D2651417313F3656D1455412289205C0B2651412DE60C4764145541459F2E230B265141E81CF64D63145541D71FB8F50A2651418CD161D662145541C8FC10DA0926514146ED7EC462145541246314A1072651413640C64E62145541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>269715 - 54949
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000028000000F6285C7FDC8F51418FC2F5888C8D5441EC51B86EE28F51419A999969888D54417B14AE87F48F5141C3F528BC788D54410AD7A3B0F48F51413D0AD753758D544133333343F28F51419A999949708D5441AE47E11AEE8F5141D7A370ED5E8D5441A4703D2AEC8F5141AE47E1EA5E8D5441333333A3EB8F51418FC2F5C85D8D544152B81E95E98F5141A4703D8A5A8D5441C3F5289CE78F5141295C8F22558D5441A4703D3AE68F5141EC51B80E508D544148E17A44E58F5141A4703D7A4F8D54417B14AE17E28F5141AE47E1EA4C8D544148E17A54E18F5141A4703DAA4C8D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004F000000F6285CCFCF8F5141E17A14EE7A8D5441C7FCA78FD18F5141004492B3828D5441E2BA7439D28F514174E0488B858D54411D4D8C65D18F51418CC9626B888D54417E384563D18F51411658E873888D54414F87F19CD38F51410994526F8C8D5441D3728D95D58F5141C6FDB4EF8F8D54417164C58EDC8F5141795E417E8C8D5441AF2BE2C5DD8F5141CF7227A68B8D5441BCBA409DE28F5141E51C4E3B888D5441350C7DC5E98F51416E890F0E828D5441C49A1409F18F5141853022C37B8D5441D1753488F48F5141D414FBB0788D54419D8D9B8EF48F514108869F28788D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>270225 - 55002
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000F0000003D0AD7C3009151418FC2F5C8958C5441D7A370DDFE90514152B81ED59C8C54411F85EB61039151419A9999A9A68C544148E17A1405915141295C8FD2AA8C54413D0AD7C306915141333333F3AE8C54410AD7A39008915141AE47E19AB58C5441000000E0089151413D0AD733B98C544148E17AC409915141C3F5289CB78C54413D0AD7E30A9151411F85EB31B38C5441C3F528EC0B915141CDCCCCCCAD8C5441C3F5288C0D915141295C8F72A68C5441666666960B915141713D0AF7A68C544133333373099151411F85EBA19F8C5441D7A3706D059151413D0AD7739C8C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001800000048E17A1405915141295C8FD2AA8C5441517354980591514171958815AC8C544151574FD4069151417AE484F8AE8C5441B367A799089151410F8A5C98B58C544159C5D2A808915141D10886B3B68C5441D6D1D0DE0891514162AE1826B98C544136E8584209915141058A5B84B88C544148E17AC409915141C3F5289CB78C54411A04C4290A915141F9DFC80DB68C54410816D56E0D91514126AB4D7AA68C54410206BF1A0C915141DFB718D4A68C544184ECCEAE0B915141096B13F8A68C544172BAB4AC0B915141DD8926F1A68C5441666666960B915141713D0AF7A68C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>308674 - 1046945
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000070000009A9999D94F1D5141EC51B80E03675441E17A14DE4D1D51418FC2F5D8076754413D0AD7834A1D514152B81E250F675441333333936E1D51413D0AD7131E6754411F85EBD1711D5141C3F528BC166754417B14AED7731D51419A999929126754419A9999D94F1D5141EC51B80E03675441
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000052B81E35571D5141AE47E1CAF666544148E17A74301D51419A999989E66654411F85EB312E1D5141A4703DCAEB665441E052081D2B1D51417118DCB6F36654414ED2082D681D5141D43231440D675441A2CA2C3F741D5141833B6E4812675441A45D1A39761D51412B8FEEAB0D67544185006936691D51415119781208675441000000B06C1D5141E17A14CEFF66544152B81E35571D5141AE47E1CAF6665441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>308674 - 3803180
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000070000009A9999D94F1D5141EC51B80E03675441E17A14DE4D1D51418FC2F5D8076754413D0AD7834A1D514152B81E250F675441333333936E1D51413D0AD7131E6754411F85EBD1711D5141C3F528BC166754417B14AED7731D51419A999929126754419A9999D94F1D5141EC51B80E03675441
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000052B81E35571D5141AE47E1CAF666544148E17A74301D51419A999989E66654411F85EB312E1D5141A4703DCAEB665441E052081D2B1D51417118DCB6F36654414ED2082D681D5141D43231440D675441A2CA2C3F741D5141833B6E4812675441A45D1A39761D51412B8FEEAB0D67544185006936691D51415119781208675441000000B06C1D5141E17A14CEFF66544152B81E35571D5141AE47E1CAF6665441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540538 - 541002
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000C3F5281C45655141C3F5283C564B544103AAB4FF35655141FB60783D624B54418A2FD89E2A6551415DFB2A496B4B5441E17A146E58655141666666F68A4B5441656BC5CF6A655141C69136B47B4B544152ADD27C75655141036892DA724B5441666666566F655141666666566C4B54419F19EE4B756551410991C8A9694B54417093C7C5756551416D7BB475694B5441CDCCCC6C7E6551419A9999E9664B5441DF14303F82655141D4C800CD674B544127C3DECE82655141E75A9AF0674B5441E6EC951A84655141CC96E8E5664B5441C2846150846551417524D7B9664B5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000006666662625655141295C8FA24D4B5441AE47E18A23655141333333934F4B544185EB514822655141333333C3504B5441713D0A27206551415C8FC285524B544185EB51281A6551415C8FC2D5564B54419A9999B91F6551415C8FC2455C4B5441CDCCCC8C166551417B14AE17634B544148E17AF41A655141C3F5282C674B54415C8FC285246551418FC2F518704B5441C3F5281C45655141C3F5283C564B5441AE47E1EA4A6551410AD7A3A0514B5441295C8F3275655141295C8F12304B5441C3F5285C55655141A4703D4A0E4B5441F6285C3F546551419A9999890F4B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540538 - 1150603
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000C3F5281C45655141C3F5283C564B544103AAB4FF35655141FB60783D624B54418A2FD89E2A6551415DFB2A496B4B5441E17A146E58655141666666F68A4B5441656BC5CF6A655141C69136B47B4B544152ADD27C75655141036892DA724B5441666666566F655141666666566C4B54419F19EE4B756551410991C8A9694B54417093C7C5756551416D7BB475694B5441CDCCCC6C7E6551419A9999E9664B5441DF14303F82655141D4C800CD674B544127C3DECE82655141E75A9AF0674B5441E6EC951A84655141CC96E8E5664B5441C2846150846551417524D7B9664B5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000006666662625655141295C8FA24D4B5441AE47E18A23655141333333934F4B544185EB514822655141333333C3504B5441713D0A27206551415C8FC285524B544185EB51281A6551415C8FC2D5564B54419A9999B91F6551415C8FC2455C4B5441CDCCCC8C166551417B14AE17634B544148E17AF41A655141C3F5282C674B54415C8FC285246551418FC2F518704B5441C3F5281C45655141C3F5283C564B5441AE47E1EA4A6551410AD7A3A0514B5441295C8F3275655141295C8F12304B5441C3F5285C55655141A4703D4A0E4B5441F6285C3F546551419A9999890F4B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540538 - 3944807
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000C3F5281C45655141C3F5283C564B544103AAB4FF35655141FB60783D624B54418A2FD89E2A6551415DFB2A496B4B5441E17A146E58655141666666F68A4B5441656BC5CF6A655141C69136B47B4B544152ADD27C75655141036892DA724B5441666666566F655141666666566C4B54419F19EE4B756551410991C8A9694B54417093C7C5756551416D7BB475694B5441CDCCCC6C7E6551419A9999E9664B5441DF14303F82655141D4C800CD674B544127C3DECE82655141E75A9AF0674B5441E6EC951A84655141CC96E8E5664B5441C2846150846551417524D7B9664B5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000006666662625655141295C8FA24D4B5441AE47E18A23655141333333934F4B544185EB514822655141333333C3504B5441713D0A27206551415C8FC285524B544185EB51281A6551415C8FC2D5564B54419A9999B91F6551415C8FC2455C4B5441CDCCCC8C166551417B14AE17634B544148E17AF41A655141C3F5282C674B54415C8FC285246551418FC2F518704B5441C3F5281C45655141C3F5283C564B5441AE47E1EA4A6551410AD7A3A0514B5441295C8F3275655141295C8F12304B5441C3F5285C55655141A4703D4A0E4B5441F6285C3F546551419A9999890F4B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>838646 - 985532
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000006000000D7DD6BD8E16951417BFD680D193A5441094D4C5B016A514144F2B900153A5441C3F5280C046A514100000010033A544114AE47D1006A51419A999999033A544191BFEE3BE169514130D091E1083A5441D7DD6BD8E16951417BFD680D193A5441
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000001AE4493CE16951410EF4FCEA083A5441EFEC41EBD36951413C91292B0B3A5441FE45D1F7D2695141A0B2D95B0B3A5441C3136F6EDB6951413775C9AC163A54413C6727E8DB6951418B3DEAD0173A544147992F31DC695141FE1BE05F203A54410EDC8F92DC695141BBDE29F1223A54419F88D718DC69514101A71D75283A544169F2BE3DDB695141F9633633353A5441FE8A30AED76951418A9E46013A3A54412D0344F6D66951410D217C913D3A544140FF2164D46951417E4CD7B43F3A544168638481CB6951417323B6B3463A5441C0A46437CC6951411D37245C493A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130708 - 168528
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F0000000DF8F49D21AD51414F9922C24C90544139D0FAF511AD51415864CFE747905441DAD0AAB113AD514179968AF5449054413D0AD7830EAD51411F85EB6143905441C3F528BC0FAD51417B14AE07409054411F85EBF110AD514152B81EB53C905441295C8F4206AD5141F6285C3F389054411F85EBB105AD5141A4703DCA3590544100000000FBAC51419A999969369054415C8FC2D5F8AC51413D0AD77336905441F6285C4FFAAC51411F85EB01429054419A999989FAAC51410000006046905441EC51B81EFAAC51410AD7A3604A905441EC51B8CEFBAC51417B14AE874B905441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000000FF8F49D21AD5141529922C24C9054418FF03A7127AD51411A4610994E9054419BEAC38D2BAD51415A8931C34F905441639037212EAD51410196FACE4E905441789AF7892EAD514189CE2FA84E9054414CB2250833AD5141F9A23DFE4C9054418F38B9702EAD51410FAFCA544C905441F6285C9F2BAD5141CDCCCCEC4B905441D9D0AAB113AD51417C968AF5449054414847BFF611AD5141701CDFE7479054410FF8F49D21AD5141529922C24C905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>130708 - 342914
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F0000000DF8F49D21AD51414F9922C24C90544139D0FAF511AD51415864CFE747905441DAD0AAB113AD514179968AF5449054413D0AD7830EAD51411F85EB6143905441C3F528BC0FAD51417B14AE07409054411F85EBF110AD514152B81EB53C905441295C8F4206AD5141F6285C3F389054411F85EBB105AD5141A4703DCA3590544100000000FBAC51419A999969369054415C8FC2D5F8AC51413D0AD77336905441F6285C4FFAAC51411F85EB01429054419A999989FAAC51410000006046905441EC51B81EFAAC51410AD7A3604A905441EC51B8CEFBAC51417B14AE874B905441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000000FF8F49D21AD5141529922C24C9054418FF03A7127AD51411A4610994E9054419BEAC38D2BAD51415A8931C34F905441639037212EAD51410196FACE4E905441789AF7892EAD514189CE2FA84E9054414CB2250833AD5141F9A23DFE4C9054418F38B9702EAD51410FAFCA544C905441F6285C9F2BAD5141CDCCCCEC4B905441D9D0AAB113AD51417C968AF5449054414847BFF611AD5141701CDFE7479054410FF8F49D21AD5141529922C24C905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274147 - 3151344
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000015000000333333F305395141A4703D5AB238544185EB51F8073951413D0AD723B138544148E17A14093951417B14AE57B1385441E17A14CE0B395141E17A148EB23854410AD7A31013395141666666F6B038544133333343E0385141A4703DFA91385441295C8F62CE3851413333331387385441B81E85CBCA3851410AD7A350893854418FC2F518C83851417B14AE278B385441295C8FA2C53851411F85EB118D38544114AE4771CD38514152B81ED59138544148E17A54D63851410AD7A34097385441F6285CDFCE385141D7A3701DA038544152B81EC5F5385141713D0AD7B7385441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000008DA47C97C338514135FBE2539238544157ABEE9ED738514140158F719F38544126A282A0E1385141F91355CF92385441939F2F99D8385141904DB74D8D385441CAAF7864CE385141FF9C5D1487385441C9B67C5DCD385141570A19B68738544110344471CC3851411F317D4988385441D7F82EC5CB385141E271DCB48838544115679FACCA3851415B29B765893854418095E6F6C9385141B19EABE18938544180D97E2AC9385141230D196D8A38544134B2AC34C83851410888C6148B385441FE366CC7C73851417AB416678B38544103CFC467C7385141FDB379B18B385441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274147 - 3270547
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000015000000333333F305395141A4703D5AB238544185EB51F8073951413D0AD723B138544148E17A14093951417B14AE57B1385441E17A14CE0B395141E17A148EB23854410AD7A31013395141666666F6B038544133333343E0385141A4703DFA91385441295C8F62CE3851413333331387385441B81E85CBCA3851410AD7A350893854418FC2F518C83851417B14AE278B385441295C8FA2C53851411F85EB118D38544114AE4771CD38514152B81ED59138544148E17A54D63851410AD7A34097385441F6285CDFCE385141D7A3701DA038544152B81EC5F5385141713D0AD7B7385441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000008DA47C97C338514135FBE2539238544157ABEE9ED738514140158F719F38544126A282A0E1385141F91355CF92385441939F2F99D8385141904DB74D8D385441CAAF7864CE385141FF9C5D1487385441C9B67C5DCD385141570A19B68738544110344471CC3851411F317D4988385441D7F82EC5CB385141E271DCB48838544115679FACCA3851415B29B765893854418095E6F6C9385141B19EABE18938544180D97E2AC9385141230D196D8A38544134B2AC34C83851410888C6148B385441FE366CC7C73851417AB416678B38544103CFC467C7385141FDB379B18B385441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274299 - 3142577
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000AE47E15A78385141A4703DCA993954419A99991981385141333333E39A395441C3F5285C81385141B81E85EB9A395441713D0A07813851416666661699395441C3F528CC80385141D7A370BD9639544133333383623851419A9999E98D395441295C8F025F38514148E17AE48D395441CDCCCC4C52385141000000D08D395441713D0A874B38514152B81EC58D3954416666668646385141666666C68D395441CDCCCCDC45385141A4703D5A96395441C3F528AC48385141EC51B85E963954413D0AD7935D385141295C8F8296395441AE47E15A78385141A4703DCA99395441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000E2ACB45F65385141310F0977973954415A3C6DC16A3851416E2DCB1F98395441BF5ABDE46D3851413533318298395441DFE6EC48723851417D0BE50B99395441FAB38E38743851411AE99A4899395441AE47E15A78385141A4703DCA99395441A5C9DB5A783851414F6BF9CA9939544132ABFA197C385141CF729B429A3954416EFB855C81385141B5C628EB9A3954414EB53B0681385141CC6D2A0E99395441C3F528CC80385141D7A370BD963954413D0AD7B380385141EC51B8FE95395441CDCCCC5C8038514114AE4741943954413D0AD7237C385141A4703D8A92395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274299 - 3433487
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000AE47E15A78385141A4703DCA993954419A99991981385141333333E39A395441C3F5285C81385141B81E85EB9A395441713D0A07813851416666661699395441C3F528CC80385141D7A370BD9639544133333383623851419A9999E98D395441295C8F025F38514148E17AE48D395441CDCCCC4C52385141000000D08D395441713D0A874B38514152B81EC58D3954416666668646385141666666C68D395441CDCCCCDC45385141A4703D5A96395441C3F528AC48385141EC51B85E963954413D0AD7935D385141295C8F8296395441AE47E15A78385141A4703DCA99395441
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000E2ACB45F65385141310F0977973954415A3C6DC16A3851416E2DCB1F98395441BF5ABDE46D3851413533318298395441DFE6EC48723851417D0BE50B99395441FAB38E38743851411AE99A4899395441AE47E15A78385141A4703DCA99395441A5C9DB5A783851414F6BF9CA9939544132ABFA197C385141CF729B429A3954416EFB855C81385141B5C628EB9A3954414EB53B0681385141CC6D2A0E99395441C3F528CC80385141D7A370BD963954413D0AD7B380385141EC51B8FE95395441CDCCCC5C8038514114AE4741943954413D0AD7237C385141A4703D8A92395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274338 - 221198
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A00000048E17A1488395141333333D3B0395441C3F5288C95395141295C8FC2AF395441B81E856B953951415C8FC275AB395441D7A370ED89395141B81E85DBAB3954417B14AE678939514114AE4751A73954415C8FC21570395141AE47E10AA9395441B81E856B6D3951419A999939A9395441A4703DEA6E3951419A9999E9B239544114AE47D17E395141AE47E1AAB139544148E17A1488395141333333D3B0395441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000FCB955068539514115CAAC9DA739544123055CE2703951410FE9F0FCA8395441BF09F10C703951418E101E0CA93954418DA9506C6D395141668AC03EA939544156E4942B6E3951412E792516AE3954410EE455E86E395141625042DDB2395441AB1B892E703951417A0636D0B23954413627C9937039514185C148C8B2395441874F8E397339514120CC3893B2395441149185DF73395141CCE9459AB139544176529E82743951411615616BB0395441AF3069F7753951412E71FA99B0395441A3BC808377395141B07AE0DFB0395441DC9A4BF878395141058EAC6BB1395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274338 - 384406
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A00000048E17A1488395141333333D3B0395441C3F5288C95395141295C8FC2AF395441B81E856B953951415C8FC275AB395441D7A370ED89395141B81E85DBAB3954417B14AE678939514114AE4751A73954415C8FC21570395141AE47E10AA9395441B81E856B6D3951419A999939A9395441A4703DEA6E3951419A9999E9B239544114AE47D17E395141AE47E1AAB139544148E17A1488395141333333D3B0395441
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000FCB955068539514115CAAC9DA739544123055CE2703951410FE9F0FCA8395441BF09F10C703951418E101E0CA93954418DA9506C6D395141668AC03EA939544156E4942B6E3951412E792516AE3954410EE455E86E395141625042DDB2395441AB1B892E703951417A0636D0B23954413627C9937039514185C148C8B2395441874F8E397339514120CC3893B2395441149185DF73395141CCE9459AB139544176529E82743951411615616BB0395441AF3069F7753951412E71FA99B0395441A3BC808377395141B07AE0DFB0395441DC9A4BF878395141058EAC6BB1395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274573 - 3141635
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000000AD7A3F02339514148E17AB40A3A544148E17A4420395141EC51B85E093A5441D7A370DD183951417B14AE17063A5441AE47E13A183951411F85EB51073A5441333333C31C395141F6285C9F203A5441F6285CDF223951419A999999423A5441AE47E19A23395141B81E857B433A54417B14AEC724395141D7A370CD433A54418FC2F54834395141E17A144E423A5441F6285C3F2B395141000000200D3A54413D0AD743283951415C8FC2350C3A54410AD7A3F02339514148E17AB40A3A5441
+</a>
+
+<b>
+010600000001000000010300000001000000240000006005191A22395141477E86E1093A5441124A30361D39514104D3B1B4073A5441E4F579EE1A395141BACF466E063A54419A88746E193951418123FA0C053A5441AE75F819193951415F0B2309053A5441082990931839514138311BB2053A5441F867D77418395141EE3E3C57063A54412706A27818395141F4188CDA063A544173762FAE1C395141053871941F3A54410DA37BEA22395141E7D811D7423A54418E7F0D9523395141DF174AAC433A5441A53E8747253951419C2441C9433A5441F3E16C4834395141F00AEF4A423A54413588141A3439514165CE383A413A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274573 - 3533175
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000000AD7A3F02339514148E17AB40A3A544148E17A4420395141EC51B85E093A5441D7A370DD183951417B14AE17063A5441AE47E13A183951411F85EB51073A5441333333C31C395141F6285C9F203A5441F6285CDF223951419A999999423A5441AE47E19A23395141B81E857B433A54417B14AEC724395141D7A370CD433A54418FC2F54834395141E17A144E423A5441F6285C3F2B395141000000200D3A54413D0AD743283951415C8FC2350C3A54410AD7A3F02339514148E17AB40A3A5441
+</a>
+
+<b>
+010600000001000000010300000001000000240000006005191A22395141477E86E1093A5441124A30361D39514104D3B1B4073A5441E4F579EE1A395141BACF466E063A54419A88746E193951418123FA0C053A5441AE75F819193951415F0B2309053A5441082990931839514138311BB2053A5441F867D77418395141EE3E3C57063A54412706A27818395141F4188CDA063A544173762FAE1C395141053871941F3A54410DA37BEA22395141E7D811D7423A54418E7F0D9523395141DF174AAC433A5441A53E8747253951419C2441C9433A5441F3E16C4834395141F00AEF4A423A54413588141A3439514165CE383A413A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>309196 - 1672378
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000333333B334AB5041713D0A172105554152B81E353CAB50411F85EB2120055541295C8F724AAB5041713D0AE7190555415C8FC23557AB5041C3F5282C140555415C8FC25562AB5041C3F5289C0D055541713D0A8763AB5041F6285CBF0C055541295C8F4264AB50411F85EB210B055541713D0AD762AB504114AE4711FA04554114AE472133AB50411F85EBB10D055541AE47E1BA33AB5041E17A14DE14055541333333B334AB5041713D0A1721055541
+</a>
+
+<b>
+01060000000100000001030000000100000062000000AC65FCCB47AB5041FF579F79E9045541601539DE47AB5041EED81D5AEA045541224FB3FB47AB5041C239FAC4EB045541D535C51E48AB50418A36AE74ED0455412BAC8C4A48AB5041139C978FEF045541CA5C8D7D48AB504163976C03F2045541D3FBE5A748AB50415B41B20CF4045541E965B1DD48AB50417156E5A2F6045541D8ADD00149AB50417E558D5FF80455412421FA2349AB5041F4E71304FA045541716F615149AB5041B53EFC32FC04554190ECDB7C49AB5041131D324AFE0455411689689D49AB504160BADEDAFF045541A7EBE8C949AB5041A97BACFE01055541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>309196 - 3483506
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000333333B334AB5041713D0A172105554152B81E353CAB50411F85EB2120055541295C8F724AAB5041713D0AE7190555415C8FC23557AB5041C3F5282C140555415C8FC25562AB5041C3F5289C0D055541713D0A8763AB5041F6285CBF0C055541295C8F4264AB50411F85EB210B055541713D0AD762AB504114AE4711FA04554114AE472133AB50411F85EBB10D055541AE47E1BA33AB5041E17A14DE14055541333333B334AB5041713D0A1721055541
+</a>
+
+<b>
+01060000000100000001030000000100000062000000AC65FCCB47AB5041FF579F79E9045541601539DE47AB5041EED81D5AEA045541224FB3FB47AB5041C239FAC4EB045541D535C51E48AB50418A36AE74ED0455412BAC8C4A48AB5041139C978FEF045541CA5C8D7D48AB504163976C03F2045541D3FBE5A748AB50415B41B20CF4045541E965B1DD48AB50417156E5A2F6045541D8ADD00149AB50417E558D5FF80455412421FA2349AB5041F4E71304FA045541716F615149AB5041B53EFC32FC04554190ECDB7C49AB5041131D324AFE0455411689689D49AB504160BADEDAFF045541A7EBE8C949AB5041A97BACFE01055541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274755 - 3072455
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000025000000F6285C0FA02951417B14AEF7BB3754410000007097295141D7A370ADBE375441C3F5287C9A295141AE47E14AC8375441AE47E10AA1295141E17A142EDC3754417B14AE87A12951419A9999A9DD375441E17A141EA52951410AD7A3E0E8375441713D0A77A7295141000000C0EF37544185EB51F8A729514152B81E65F137544148E17AF4A72951418FC2F5E8F1375441EC51B87EA8295141CDCCCCFCF1375441EC51B8EEA92951413D0AD7C3F237544166666676AA29514185EB51E8F23754411F85EB11AC295141AE47E1EAF2375441B81E85EBAC295141000000D0F2375441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000270000004FD3E657EA295141AEAFD678E13754411CFE4E43EE2951414AE2F816E13754415CC1A54BF0295141363261E2E0375441FB2DD8CBFC2951411E61B292DF37544175D3F2D2FE2951416CC21C5CDF37544131B1DF48002A5141DD02733DDF375441F723A80C042A51414B3E82F2DE375441333333E3F52951415C8FC2B5AD375441263ABEF5F1295141AF43F4EBAE375441918FB3C0F12951410F4F39F7AE375441B38FFCDCEF295141A23B9547AF3754410A77437DEF295141AA3D7C57AF3754418A6E07EEEE295141A2DD476FAF375441775AD9BDEE29514161771776AF375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274755 - 3370931
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000025000000F6285C0FA02951417B14AEF7BB3754410000007097295141D7A370ADBE375441C3F5287C9A295141AE47E14AC8375441AE47E10AA1295141E17A142EDC3754417B14AE87A12951419A9999A9DD375441E17A141EA52951410AD7A3E0E8375441713D0A77A7295141000000C0EF37544185EB51F8A729514152B81E65F137544148E17AF4A72951418FC2F5E8F1375441EC51B87EA8295141CDCCCCFCF1375441EC51B8EEA92951413D0AD7C3F237544166666676AA29514185EB51E8F23754411F85EB11AC295141AE47E1EAF2375441B81E85EBAC295141000000D0F2375441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000270000004FD3E657EA295141AEAFD678E13754411CFE4E43EE2951414AE2F816E13754415CC1A54BF0295141363261E2E0375441FB2DD8CBFC2951411E61B292DF37544175D3F2D2FE2951416CC21C5CDF37544131B1DF48002A5141DD02733DDF375441F723A80C042A51414B3E82F2DE375441333333E3F52951415C8FC2B5AD375441263ABEF5F1295141AF43F4EBAE375441918FB3C0F12951410F4F39F7AE375441B38FFCDCEF295141A23B9547AF3754410A77437DEF295141AA3D7C57AF3754418A6E07EEEE295141A2DD476FAF375441775AD9BDEE29514161771776AF375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274887 - 2916470
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000D7A3707DE6295141EC51B86E3837544148E17A44E52951418FC2F53839375441000000D0E2295141E17A14CE3A375441E17A142ED029514148E17AD446375441333333A3CD295141000000C04A375441EC51B83ED729514185EB510856375441CDCCCC5CE5295141AE47E19A6637544148E17A84E8295141295C8FA26C3754417B14AEF7E8295141F6285C7F6D375441B81E85CBFC2951419A99994967375441713D0AA7F62951419A9999A95C375441A4703DCAF3295141E17A14AE57375441F6285C3FF1295141B81E852B52375441333333C3EF295141B81E854B4D375441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C039A237E5295141D2A23D413937544176058692E5295141985F19B639375441D2A1CE10EB2951413517D39842375441CE06FB07EE29514101BA635F47375441A0EA4483EE295141A6EEEB214D3754417AD4BEB9EE2951411196D3FB4D3754418A2B5262F02951410AA3FED252375441A3A1E84FF22951419DAE2E475737544148D35BD0F2295141F5B68B7458375441330066B5F6295141CD28F63D5F375441C694923BFB295141D934C5BF66375441D58A98D6EE295141055B84856A375441DFF39B8BE8295141756A39B06C375441131A6A92E82951412C62BFBD6C375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>274887 - 3801700
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000D7A3707DE6295141EC51B86E3837544148E17A44E52951418FC2F53839375441000000D0E2295141E17A14CE3A375441E17A142ED029514148E17AD446375441333333A3CD295141000000C04A375441EC51B83ED729514185EB510856375441CDCCCC5CE5295141AE47E19A6637544148E17A84E8295141295C8FA26C3754417B14AEF7E8295141F6285C7F6D375441B81E85CBFC2951419A99994967375441713D0AA7F62951419A9999A95C375441A4703DCAF3295141E17A14AE57375441F6285C3FF1295141B81E852B52375441333333C3EF295141B81E854B4D375441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C039A237E5295141D2A23D413937544176058692E5295141985F19B639375441D2A1CE10EB2951413517D39842375441CE06FB07EE29514101BA635F47375441A0EA4483EE295141A6EEEB214D3754417AD4BEB9EE2951411196D3FB4D3754418A2B5262F02951410AA3FED252375441A3A1E84FF22951419DAE2E475737544148D35BD0F2295141F5B68B7458375441330066B5F6295141CD28F63D5F375441C694923BFB295141D934C5BF66375441D58A98D6EE295141055B84856A375441DFF39B8BE8295141756A39B06C375441131A6A92E82951412C62BFBD6C375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275092 - 53337
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000012000000D7A3704D3A2D51410AD7A350E4395441AE47E16A3D2D51419A999949E43954417B14AE273D2D51419A999909E3395441A4703DEA3E2D5141A4703D3ADB395441AE47E1AA3E2D5141E17A147ED8395441EC51B80E3E2D5141AE47E18AD1395441000000703D2D5141CDCCCC7CCD395441E17A14CE3C2D5141F6285CAFC9395441333333433C2D5141000000A0C6395441295C8F823B2D51418FC2F5D8C3395441AE47E1DA302D514185EB51A8C4395441333333F31D2D514148E17A84C5395441EC51B81E252D5141A4703DEAD1395441A4703DFA262D5141295C8F22D5395441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000EC51B81E252D5141A4703DEAD1395441A67783EC262D5141F0D7C30AD5395441D85BB837272D51411AE4D744D5395441000000302A2D5141CDCCCCECD6395441C1D17C0D2D2D51417BB985F4D93954412603FB842F2D51416E8D6090DC395441B053363A302D5141F1B6894FDD3954415EB51416312D5141730828DFDD3954411DE1D8A3312D5141231DC23BDE39544166666686372D51413D0AD713E2395441B8DDD991392D514182A085B9E3395441D7A3704D3A2D51410AD7A350E4395441186B83423B2D514163F7794EE43954412228C24C3D2D5141FDACDD49E4395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275129 - 384120
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000009000000E17A146E8A2B5141B81E85FB8A3754418FC2F5788F2B51415C8FC2C58A375441AE47E1DA9A2B5141000000808A375441AE47E10A9C2B5141295C8F728A3754413D0AD7D3A12B5141AE47E1FA86375441A4703D3AA02B5141295C8F028737544114AE4721962B5141A4703D4A87375441713D0A778A2B51419A99998987375441E17A146E8A2B5141B81E85FB8A37544101030000000100000009000000C3F5283CB92B51419A9999D989375441EC51B82EB92B5141AE47E1BA8637544133333323A62B51417B14AEE78637544166666676A32B51413D0AD7F386375441333333 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000007000000ABEA7DD0B02B5141547E90CE86375441D17118A9B02B514194AF78D586375441899E0EA3B02B5141FBCB70FE893754416B2DEBC4B02B514182FB9C008A375441C3F5283CB92B51419A9999D989375441EC51B82EB92B5141AE47E1BA86375441ABEA7DD0B02B5141547E90CE86375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275448 - 2922014
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C00000014AE471163295141F6285C7F74385441C3F5286C5E2951413D0AD7E367385441A4703DEA5A295141EC51B85E5E3854418FC2F53855295141666666364F385441EC51B8AE51295141713D0AC74538544148E17AF450295141713D0AD743385441C3F528FC4E2951411F85EB61443854419A9999F948295141CDCCCCAC4638544148E17A744529514114AE472148385441295C8FE237295141666666764E385441B81E857B2C29514152B81E1554385441AE47E1CA23295141F6285C2F583854418FC2F59822295141AE47E19A583854410AD7A3B020295141D7A370DD58385441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E0000002A1984C019295141F47637C3583854413333337313295141A4703D8A583854418B52BC871C295141766BAE256F385441666666A61E295141A4703D9A743854410000000023295141666666167F385441D7A3705D28295141E17A140E8B385441713D0AA72B2951416666666692385441AE47E1DA2C295141D7A370ED9238544148E17AA42F2951417B14AEE792385441CDCCCCDC652951415C8FC2A57E3854415FB6540E66295141AA7F11767E385441F6285C6F662951411F85EBA17D385441EC51B83E66295141F6285C1F7D38544114AE471163295141F6285C7F74385441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275448 - 3387742
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001C00000014AE471163295141F6285C7F74385441C3F5286C5E2951413D0AD7E367385441A4703DEA5A295141EC51B85E5E3854418FC2F53855295141666666364F385441EC51B8AE51295141713D0AC74538544148E17AF450295141713D0AD743385441C3F528FC4E2951411F85EB61443854419A9999F948295141CDCCCCAC4638544148E17A744529514114AE472148385441295C8FE237295141666666764E385441B81E857B2C29514152B81E1554385441AE47E1CA23295141F6285C2F583854418FC2F59822295141AE47E19A583854410AD7A3B020295141D7A370DD58385441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E0000002A1984C019295141F47637C3583854413333337313295141A4703D8A583854418B52BC871C295141766BAE256F385441666666A61E295141A4703D9A743854410000000023295141666666167F385441D7A3705D28295141E17A140E8B385441713D0AA72B2951416666666692385441AE47E1DA2C295141D7A370ED9238544148E17AA42F2951417B14AEE792385441CDCCCCDC652951415C8FC2A57E3854415FB6540E66295141AA7F11767E385441F6285C6F662951411F85EBA17D385441EC51B83E66295141F6285C1F7D38544114AE471163295141F6285C7F74385441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275562 - 3361837
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000E000000AE47E1DABA2D514148E17A54BD3C5441D7A3704DBA2D5141EC51B84EA23C5441713D0A17BA2D5141AE47E16A963C5441E17A149EB82D5141B81E85EB943C5441CDCCCC8CAB2D51413D0AD7A3873C544166666686A42D514100000080803C5441A4703D8A9B2D5141333333338A3C5441EC51B81E952D51419A9999B9903C5441E17A147E912D51419A999919943C54410AD7A3D0A52D5141F6285C5FAB3C5441EC51B83EB92D5141AE47E1AABC3C54418FC2F5D8BA2D51411F85EB81BE3C5441E17A14DEBA2D51419A9999E9BD3C5441AE47E1DABA2D514148E17A54BD3C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000008FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54415287AC97B92D514144D9A1F87B3C544136AB1718BA2D5141DA9CC4A5963C54414BDDE007B92D5141DFAC7E33953C5441028739EAB92D514174B3776DBD3C5441D8EE8E24BA2D5141CE1FC8B2BD3C54418FC2F5D8BA2D51411F85EB81BE3C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276283 - 3065117
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A00000048E17A047826514166666626043D5441713D0A3790265141295C8F22FE3C544166666626A826514100000030F83C54419A9999F9A7265141713D0A67F73C5441000000F0A026514133333333F93C5441CDCCCC1C9F26514152B81E35F13C54413D0AD7038E2651415C8FC285F53C5441C3F5281C7726514185EB5158FB3C5441E17A14BE75265141333333E3FB3C544148E17A047826514166666626043D5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A800370278265141925C2C1E043D54412AFFCC027B265141CB8FE867033D544195870C6F80265141548CD10E023D544159FA7648882651414FB5511B003D5441BE603BD88D2651412F6566B9FE3C54413F617756902651417242C01AFE3C5441299206FE932651419C314732FD3C544148741386952651413AFADBD0FC3C54416E426DF29C265141ED52A6F8FA3C544127F9854CA4265141A5DDF924F93C544166666626A826514100000030F83C54419A9999F9A7265141713D0A67F73C5441000000F0A026514133333333F93C5441CDCCCC1C9F26514152B81E35F13C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276283 - 3288516
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A00000048E17A047826514166666626043D5441713D0A3790265141295C8F22FE3C544166666626A826514100000030F83C54419A9999F9A7265141713D0A67F73C5441000000F0A026514133333333F93C5441CDCCCC1C9F26514152B81E35F13C54413D0AD7038E2651415C8FC285F53C5441C3F5281C7726514185EB5158FB3C5441E17A14BE75265141333333E3FB3C544148E17A047826514166666626043D5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A800370278265141925C2C1E043D54412AFFCC027B265141CB8FE867033D544195870C6F80265141548CD10E023D544159FA7648882651414FB5511B003D5441BE603BD88D2651412F6566B9FE3C54413F617756902651417242C01AFE3C5441299206FE932651419C314732FD3C544148741386952651413AFADBD0FC3C54416E426DF29C265141ED52A6F8FA3C544127F9854CA4265141A5DDF924F93C544166666626A826514100000030F83C54419A9999F9A7265141713D0A67F73C5441000000F0A026514133333333F93C5441CDCCCC1C9F26514152B81E35F13C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>298548 - 271392
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000B000000666666B661C95041B81E853BC6AF5441C3F5283C6BC950418FC2F588BBAF5441713D0A275BC9504152B81E35BBAF54410AD7A33058C95041AE47E16ABBAF54413D0AD7432EC950419A999939C3AF5441A4703D3A07C9504166666696CAAF54411F85EBB109C950411F85EB31CCAF5441E17A149E0CC95041666666A6CEAF5441F6285C1F10C950419A999919D2AF54415C8FC2D512C95041E17A140ED5AF5441666666B661C95041B81E853BC6AF5441
+</a>
+
+<b>
+010600000001000000010300000001000000120000007C16993B0CC95041C9F7AB53CEAF544169F4139E0CC95041A5A765A6CEAF544112DE5C1F10C95041814B9919D2AF5441DB55C2D512C95041B537130ED5AF5441CCF765B661C950411CEB833BC6AF5441B972B63966C950416FA8A629C1AF54413126283C6BC95041BEABF688BBAF54415808897B64C95041703BC265BBAF5441713D0A275BC9504152B81E35BBAF54415197F5FE58C95041A43C415CBBAF54419204A53058C9504145B4E16ABBAF5441EA3F27494CC950414B4166A2BDAF54413D0AD7432EC950419A999939C3AF5441FE0F98392EC95041A04B883BC3AF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276761 - 2938563
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C000000E17A140E80AF504148E17A1471D154410AD7A3907DAF5041EC51B83E70D15441D7A3706D79AF5041C3F528DC6ED1544152B81E4578AF5041F6285CBF6FD15441F6285C8F78AF5041D7A370CD7DD154419A99999979AF5041E17A147E89D154417B14AE978AAF5041EC51B87E8ED15441333333D391AF5041000000A090D15441B81E850B91AF5041AE47E18A8FD1544114AE47F188AF5041D7A3704D84D1544185EB51F881AF504114AE472173D15441E17A140E80AF504148E17A1471D15441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000A205A3978AAF5041A9A49E7E8ED15441333333D391AF5041000000A090D1544103D2DB2B8EAF5041ADF2598E8BD15441C42689B98BAF504181F37F2988D15441CBFA2AEE88AF50416D74C64584D154411BFEEB1986AF50415174094E7DD1544148141D4F83AF50413CFA8A6D76D1544146C0375082AF50418836C3F973D15441218B453382AF5041F9AF78B273D154416C2CCE1C82AF50413FB2237B73D1544151EDE9ED81AF5041CDE2231673D154417558948D81AF504172C203AF72D154410D19DB1681AF50412EE8EB2F72D154419BEA329980AF5041A6FE67A971D15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276761 - 3808402
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C000000E17A140E80AF504148E17A1471D154410AD7A3907DAF5041EC51B83E70D15441D7A3706D79AF5041C3F528DC6ED1544152B81E4578AF5041F6285CBF6FD15441F6285C8F78AF5041D7A370CD7DD154419A99999979AF5041E17A147E89D154417B14AE978AAF5041EC51B87E8ED15441333333D391AF5041000000A090D15441B81E850B91AF5041AE47E18A8FD1544114AE47F188AF5041D7A3704D84D1544185EB51F881AF504114AE472173D15441E17A140E80AF504148E17A1471D15441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000A205A3978AAF5041A9A49E7E8ED15441333333D391AF5041000000A090D1544103D2DB2B8EAF5041ADF2598E8BD15441C42689B98BAF504181F37F2988D15441CBFA2AEE88AF50416D74C64584D154411BFEEB1986AF50415174094E7DD1544148141D4F83AF50413CFA8A6D76D1544146C0375082AF50418836C3F973D15441218B453382AF5041F9AF78B273D154416C2CCE1C82AF50413FB2237B73D1544151EDE9ED81AF5041CDE2231673D154417558948D81AF504172C203AF72D154410D19DB1681AF50412EE8EB2F72D154419BEA329980AF5041A6FE67A971D15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276796 - 2933165
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000020000000103000000010000001E000000B81E851B03AF5041E17A14FE55D0544152B81E7504AF5041E17A14FE53D054419A9999D905AF5041F6285C4F52D054417B14AED7FCAE504152B81E3546D0544152B81EC5F3AE50415C8FC2853BD05441C3F5284CEFAE50417B14AE3737D0544100000000E7AE50415C8FC2752FD05441AE47E12AD5AE50411F85EB711ED05441295C8F42D3AE50413D0AD7131FD0544148E17A34C8AE5041713D0A373DD05441E17A14DEC1AE5041D7A3707D4ED05441B81E855BBEAE5041EC51B80E58D05441F6285CFFC8AE50410AD7A3A05DD05441CDCCCCACCEAE5041EC51B80E60D05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000004A334DD1C1AE50416B1ADBAB4ED0544152B81EC5CEAE504114AE47B153D0544133333323E8AE5041295C8F325DD05441C3F5280CF6AE50413D0AD7F363D05441D7A3704DFDAE504148E17AF467D0544152B81EB504AF504185EB51286CD0544126DFBD3E0CAF504136813C9C70D05441FAD1558312AF50414436D45374D0544152F88F1013AF5041F517451773D05441333333F314AF5041E17A14AE6ED05441E6320ACE14AF5041ADE873036DD054410AD7A3B014AF50411F85EBB16BD054410AD7A3F00DAF5041B81E85CB5FD05441A4703D9A0CAF50418FC2F5685ED05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276796 - 3788383
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000020000000103000000010000001E000000B81E851B03AF5041E17A14FE55D0544152B81E7504AF5041E17A14FE53D054419A9999D905AF5041F6285C4F52D054417B14AED7FCAE504152B81E3546D0544152B81EC5F3AE50415C8FC2853BD05441C3F5284CEFAE50417B14AE3737D0544100000000E7AE50415C8FC2752FD05441AE47E12AD5AE50411F85EB711ED05441295C8F42D3AE50413D0AD7131FD0544148E17A34C8AE5041713D0A373DD05441E17A14DEC1AE5041D7A3707D4ED05441B81E855BBEAE5041EC51B80E58D05441F6285CFFC8AE50410AD7A3A05DD05441CDCCCCACCEAE5041EC51B80E60D05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B0000004A334DD1C1AE50416B1ADBAB4ED0544152B81EC5CEAE504114AE47B153D0544133333323E8AE5041295C8F325DD05441C3F5280CF6AE50413D0AD7F363D05441D7A3704DFDAE504148E17AF467D0544152B81EB504AF504185EB51286CD0544126DFBD3E0CAF504136813C9C70D05441FAD1558312AF50414436D45374D0544152F88F1013AF5041F517451773D05441333333F314AF5041E17A14AE6ED05441E6320ACE14AF5041ADE873036DD054410AD7A3B014AF50411F85EBB16BD054410AD7A3F00DAF5041B81E85CB5FD05441A4703D9A0CAF50418FC2F5685ED05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276839 - 2931554
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000022000000A4703D6A0BAF5041D7A3701DC1D25441000000200CAF5041C3F5285CBFD254419A99990913AF50418FC2F548BDD25441F6285C7F1EAF50411F85EB61B8D25441D7A370FD20AF5041AE47E1EAC0D2544148E17A3422AF5041C3F5287CC1D254410AD7A3C02EAF5041EC51B83EBCD25441EC51B8EE36AF50415C8FC235B8D254410000007040AF504100000020B4D254411F85EB8149AF5041C3F528BCB0D25441E17A144E4AAF5041EC51B82EAFD2544148E17A6449AF504148E17AE4ABD254415C8FC2A544AF5041EC51B85E9ED25441C3F528CC47AF50419A9999E99AD25441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000250000005F12A14811AF5041E6D5EFF5A1D25441AD20FE3F0EAF5041FD3D4654A4D25441EE6296A009AF5041E9ADA800A8D254413D22EA3809AF5041D776685FA8D25441013E4F9106AF504199B003E3A9D25441BC6C224304AF50418AE0433CABD25441C97C363F01AF5041FD4BD6FFACD25441C242370900AF5041A90BFEBAADD25441A70232BBFCAE5041BA38E4DCAFD254416DDFA5A5F9AE5041E4DE59DAB1D2544166BF0BA2F3AE5041CE1DD8BEB5D2544129ECA000ECAE5041D599B5A8BAD2544129ECA000ECAE5041D47AC3ABBAD25441A1AFEA2FECAE5041641AB4C6BAD25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276839 - 3440527
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000022000000A4703D6A0BAF5041D7A3701DC1D25441000000200CAF5041C3F5285CBFD254419A99990913AF50418FC2F548BDD25441F6285C7F1EAF50411F85EB61B8D25441D7A370FD20AF5041AE47E1EAC0D2544148E17A3422AF5041C3F5287CC1D254410AD7A3C02EAF5041EC51B83EBCD25441EC51B8EE36AF50415C8FC235B8D254410000007040AF504100000020B4D254411F85EB8149AF5041C3F528BCB0D25441E17A144E4AAF5041EC51B82EAFD2544148E17A6449AF504148E17AE4ABD254415C8FC2A544AF5041EC51B85E9ED25441C3F528CC47AF50419A9999E99AD25441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000250000005F12A14811AF5041E6D5EFF5A1D25441AD20FE3F0EAF5041FD3D4654A4D25441EE6296A009AF5041E9ADA800A8D254413D22EA3809AF5041D776685FA8D25441013E4F9106AF504199B003E3A9D25441BC6C224304AF50418AE0433CABD25441C97C363F01AF5041FD4BD6FFACD25441C242370900AF5041A90BFEBAADD25441A70232BBFCAE5041BA38E4DCAFD254416DDFA5A5F9AE5041E4DE59DAB1D2544166BF0BA2F3AE5041CE1DD8BEB5D2544129ECA000ECAE5041D599B5A8BAD2544129ECA000ECAE5041D47AC3ABBAD25441A1AFEA2FECAE5041641AB4C6BAD25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276856 - 2931636
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000190000001F85EBA110B0504152B81EF553D254419A99992918B0504114AE473162D2544114AE47B11EB05041000000A06CD25441F6285C5F25B050411F85EBA172D254418FC2F5882AB050417B14AE7778D2544152B81E6530B050417B14AE177CD25441E17A14EE34B050417B14AE377ED254417B14AEC735B05041A4703D9A84D25441E17A148E37B050419A9999F98DD254418FC2F5883AB05041AE47E16A92D25441000000E040B05041EC51B86E9AD254411F85EB9143B05041E17A14BE9DD25441E17A145E51B05041B81E859B5AD254415C8FC2A550B050410000006059D25441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000027000000B4A9264248B0504162CF2B5A85D254415B48559348B050413B9D586785D25441D8AA302449B05041DBB439A282D2544116D83CC34AB05041659BB6BE7AD25441E0DAC8D94EB05041A5E17DDA66D254415E47AA5C51B05041450C5D9C5AD254410EE6E81651B05041CBF8C38D5AD2544134C9E1E250B05041288E690F5AD254410DEDE4094EB05041A0F9EDDB59D25441ECB51A5A4AB05041EB51BE9459D254410D3321B344B0504151C0CBB158D2544163468B8D42B05041678F197258D254414791076E40B05041D7C1F95458D25441ABFD12A83DB0504145C753AD58D25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276856 - 3377342
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000190000001F85EBA110B0504152B81EF553D254419A99992918B0504114AE473162D2544114AE47B11EB05041000000A06CD25441F6285C5F25B050411F85EBA172D254418FC2F5882AB050417B14AE7778D2544152B81E6530B050417B14AE177CD25441E17A14EE34B050417B14AE377ED254417B14AEC735B05041A4703D9A84D25441E17A148E37B050419A9999F98DD254418FC2F5883AB05041AE47E16A92D25441000000E040B05041EC51B86E9AD254411F85EB9143B05041E17A14BE9DD25441E17A145E51B05041B81E859B5AD254415C8FC2A550B050410000006059D25441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000027000000B4A9264248B0504162CF2B5A85D254415B48559348B050413B9D586785D25441D8AA302449B05041DBB439A282D2544116D83CC34AB05041659BB6BE7AD25441E0DAC8D94EB05041A5E17DDA66D254415E47AA5C51B05041450C5D9C5AD254410EE6E81651B05041CBF8C38D5AD2544134C9E1E250B05041288E690F5AD254410DEDE4094EB05041A0F9EDDB59D25441ECB51A5A4AB05041EB51BE9459D254410D3321B344B0504151C0CBB158D2544163468B8D42B05041678F197258D254414791076E40B05041D7C1F95458D25441ABFD12A83DB0504145C753AD58D25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276903 - 2932142
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001E0000001F85EB5127AC50415C8FC28568D45441EC51B82E24AC5041F6285C2F68D454410AD7A32021AC50418FC2F56867D45441D7A370FD1BAC5041F6285C3F65D4544148E17AB419AC50418FC2F50864D4544152B81E150AAC504148E17AA489D454415C8FC2750AAC50415C8FC2B589D4544148E17AF40CAC50415C8FC2E589D454416666665615AC504185EB51A88AD45441CDCCCC8C1DAC5041C3F528FC7ED45441C3F528CC22AC5041666666767AD4544148E17A4425AC5041A4703D7A7BD454418FC2F5B81EAC5041B81E853B8BD454413D0AD74322AC50417B14AE078BD45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B00000036A365BD2AAC50414E86EAAB89D4544185EB51D82BAC50411F85EB8189D45441A3C46AE231AC504160EB3B6987D45441D18AF7BE37AC50413EEA3B5485D4544136E7D3C538AC5041EDFA219E83D4544107CE73093BAC5041B15D61DD7FD4544118D646373BAC504121578F907FD45441F79368673BAC5041179905367FD45441EC735A5E3BAC5041186113CB7ED4544170ABD74A3BAC504181201B417ED454414A725A163BAC50413FC3EECD7CD45441512429FA3AAC5041DB1B92067CD45441DC9EF5EB3AAC5041ADD3266E7BD4544136D5DD7B3BAC5041F32DC37679D45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276903 - 3768881
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001E0000001F85EB5127AC50415C8FC28568D45441EC51B82E24AC5041F6285C2F68D454410AD7A32021AC50418FC2F56867D45441D7A370FD1BAC5041F6285C3F65D4544148E17AB419AC50418FC2F50864D4544152B81E150AAC504148E17AA489D454415C8FC2750AAC50415C8FC2B589D4544148E17AF40CAC50415C8FC2E589D454416666665615AC504185EB51A88AD45441CDCCCC8C1DAC5041C3F528FC7ED45441C3F528CC22AC5041666666767AD4544148E17A4425AC5041A4703D7A7BD454418FC2F5B81EAC5041B81E853B8BD454413D0AD74322AC50417B14AE078BD45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B00000036A365BD2AAC50414E86EAAB89D4544185EB51D82BAC50411F85EB8189D45441A3C46AE231AC504160EB3B6987D45441D18AF7BE37AC50413EEA3B5485D4544136E7D3C538AC5041EDFA219E83D4544107CE73093BAC5041B15D61DD7FD4544118D646373BAC504121578F907FD45441F79368673BAC5041179905367FD45441EC735A5E3BAC5041186113CB7ED4544170ABD74A3BAC504181201B417ED454414A725A163BAC50413FC3EECD7CD45441512429FA3AAC5041DB1B92067CD45441DC9EF5EB3AAC5041ADD3266E7BD4544136D5DD7B3BAC5041F32DC37679D45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276937 - 2939636
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001300000048E17A04B6AC5041295C8F5272CF544114AE47C1B9AC504114AE471170CF5441B81E853BBFAC5041CDCCCC1C6DCF5441C3F528ACB6AC5041AE47E13A31CF544152B81E65A9AC50417B14AE073BCF544148E17A84A5AC504148E17AE43DCF54413D0AD703A3AC5041D7A370BD3FCF5441AE47E19AA1AC50417B14AEC740CF54410AD7A360A1AC50418FC2F58841CF5441CDCCCCCCA0AC50413333337343CF5441E17A14AE9FAC50417B14AE4744CF5441713D0AE7A1AC50417B14AE674ACF54411F85EB91A2AC5041EC51B88E4DCF5441295C8FD2A2AC50410AD7A3C04ECF5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000007FCD851EB0AC5041643BDF7F52CF5441EE531FD4ACAC5041928E9C4C51CF5441874FB3C1A9AC50418AD4C42D50CF5441FA5A69A3A3AC5041377279F24DCF5441BFF75099A2AC504169FE27904DCF54415AA88E99A2AC5041D97181914DCF5441ADDC1EFCA2AC50411FC070B94FCF544157B810B8A3AC50416F3E901E54CF5441E17A14EEA3AC50411F85EB6155CF5441FCBFBEA0A4AC5041006BEFA25ACF5441D246FA0CA5AC5041956FB9D15DCF5441B67420D1A5AC50410A965C9663CF54411926616DA6AC5041E639A72E68CF5441D09F54A9A7AC5041EEDC8A2E71CF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>276937 - 3345039
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001300000048E17A04B6AC5041295C8F5272CF544114AE47C1B9AC504114AE471170CF5441B81E853BBFAC5041CDCCCC1C6DCF5441C3F528ACB6AC5041AE47E13A31CF544152B81E65A9AC50417B14AE073BCF544148E17A84A5AC504148E17AE43DCF54413D0AD703A3AC5041D7A370BD3FCF5441AE47E19AA1AC50417B14AEC740CF54410AD7A360A1AC50418FC2F58841CF5441CDCCCCCCA0AC50413333337343CF5441E17A14AE9FAC50417B14AE4744CF5441713D0AE7A1AC50417B14AE674ACF54411F85EB91A2AC5041EC51B88E4DCF5441295C8FD2A2AC50410AD7A3C04ECF5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000007FCD851EB0AC5041643BDF7F52CF5441EE531FD4ACAC5041928E9C4C51CF5441874FB3C1A9AC50418AD4C42D50CF5441FA5A69A3A3AC5041377279F24DCF5441BFF75099A2AC504169FE27904DCF54415AA88E99A2AC5041D97181914DCF5441ADDC1EFCA2AC50411FC070B94FCF544157B810B8A3AC50416F3E901E54CF5441E17A14EEA3AC50411F85EB6155CF5441FCBFBEA0A4AC5041006BEFA25ACF5441D246FA0CA5AC5041956FB9D15DCF5441B67420D1A5AC50410A965C9663CF54411926616DA6AC5041E639A72E68CF5441D09F54A9A7AC5041EEDC8A2E71CF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277005 - 2927359
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000260000001F85EB61D3AC5041EC51B84EB5CE544133333323A9AC504152B81EE5B8CE54417B14AE678CAC504133333393BBCE5441A4703D4A7FAC5041295C8F52BDCE54413D0AD7337FAC5041713D0A37BECE54410AD7A3707EAC5041D7A370FDC5CE544148E17AF47AAC5041B81E859BDECE5441295C8F827BAC5041F6285C9FE0CE5441EC51B8EE80AC5041D7A3700DE2CE54413D0AD7A396AC5041B81E85ABE4CE5441F6285CAFA7AC5041AE47E1DAE6CE5441AE47E12AAAAC5041C3F5280CE7CE544152B81E65ACAC5041B81E859BE6CE544114AE47F1ACAC504133333383DCCE5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000330000001F85EB01EDAC5041C3F5285CD4CE544106F96DF7F2AC50413F29F8FDCECE54414DDB541FFEAC5041CFDD14CCC4CE5441AC302C130BAD50419B7C4CDEB8CE5441436FD2F410AD5041021CC353B3CE54418FC2F50818AD5041EC51B8BEACCE5441B81E85AB16AD50410AD7A360ABCE5441E17A14BE11AD5041C3F5284CACCE5441333333C30CAD5041295C8FE2ABCE5441107A99EFF3AC5041ABDAA07EA7CE54413A636611EAAC5041BB2AE4FCA5CE54414158E5B7DCAC50413875BEE3A3CE5441713D0AA7DBAC5041A4703D2AA6CE544148E17A54D8AC504148E17A24B3CE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277005 - 3556138
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000260000001F85EB61D3AC5041EC51B84EB5CE544133333323A9AC504152B81EE5B8CE54417B14AE678CAC504133333393BBCE5441A4703D4A7FAC5041295C8F52BDCE54413D0AD7337FAC5041713D0A37BECE54410AD7A3707EAC5041D7A370FDC5CE544148E17AF47AAC5041B81E859BDECE5441295C8F827BAC5041F6285C9FE0CE5441EC51B8EE80AC5041D7A3700DE2CE54413D0AD7A396AC5041B81E85ABE4CE5441F6285CAFA7AC5041AE47E1DAE6CE5441AE47E12AAAAC5041C3F5280CE7CE544152B81E65ACAC5041B81E859BE6CE544114AE47F1ACAC504133333383DCCE5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000330000001F85EB01EDAC5041C3F5285CD4CE544106F96DF7F2AC50413F29F8FDCECE54414DDB541FFEAC5041CFDD14CCC4CE5441AC302C130BAD50419B7C4CDEB8CE5441436FD2F410AD5041021CC353B3CE54418FC2F50818AD5041EC51B8BEACCE5441B81E85AB16AD50410AD7A360ABCE5441E17A14BE11AD5041C3F5284CACCE5441333333C30CAD5041295C8FE2ABCE5441107A99EFF3AC5041ABDAA07EA7CE54413A636611EAAC5041BB2AE4FCA5CE54414158E5B7DCAC50413875BEE3A3CE5441713D0AA7DBAC5041A4703D2AA6CE544148E17A54D8AC504148E17A24B3CE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277086 - 362851
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000019000000AE47E10A62AB50418FC2F5E8C6D054413D0AD74369AB50415C8FC255C3D05441713D0A3772AB50410AD7A3A0BFD0544148E17A3474AB5041EC51B84EBCD054417B14AE5774AB504152B81E35AED054413D0AD73374AB504133333303ADD05441CDCCCC9C6AAB50413D0AD763AFD05441A4703D9A65AB5041C3F5282CB1D05441C3F528DC5CAB5041333333B3B2D054411F85EBC15BAB5041C3F5285CB2D054413D0AD7135BAB50419A9999D9B1D054418FC2F5084BAB5041B81E857BB4D054413D0AD7F341AB5041EC51B83EB5D05441F6285C6F3CAB504148E17A54B5D05441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000028000000C4674A3A4BAB504158D16C73B4D054418FC2F5084BAB5041B81E857BB4D054419D434A084BAB50417D84937BB4D05441DF478DD04AAB5041C46F4180B4D054413D0AD7F341AB5041EC51B83EB5D05441F6285C6F3CAB504148E17A54B5D05441A61E917C3BAB5041B755901EB5D0544172CEFC6D3BAB50417583531BB5D0544189C259C337AB5041FFF2E24AB4D054416666661637AB504148E17A24B4D05441E17A140E2CAB5041C3F5282CB1D054411F85EBF11CAB504100000040ACD05441295C8FE218AB5041295C8F72AAD05441A4703DCA24AB504133333393B2D05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277088 - 2930490
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000085EB51C888AF5041A4703DAACAD15441666666E697AF5041CDCCCCACD2D15441F6285CCF9CAF50415C8FC275CED15441A4703D9AA5AF504152B81E95C1D15441666666A6A6AF504100000050BAD154415C8FC225A8AF5041AE47E14AB7D1544114AE4731A8AF5041B81E85CBB2D15441B81E855BAAAF5041AE47E15AADD154415C8FC2B5ABAF5041D7A370CDABD1544152B81EE5AAAF504148E17AC4AAD15441AE47E1DA9FAF504148E17A84A7D154410AD7A3B09CAF5041295C8F52A1D1544114AE47C199AF5041D7A3709D9BD15441333333D391AF5041000000A090D15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000008FC2F5E876AF504100000030C0D1544185EB51D878AF504185EB5138C2D15441A6FFAD9982AF50410F3F9663C7D154419C0BD41989AF504107005DD5CAD15441A59700F389AF5041F7BD1F2DC3D154416AA8108E8BAF5041616CAFDEB8D15441894BD3388DAF5041C6957D2BAED15441FACB7A6D8FAF50417F5C3603A0D1544102635A0B91AF5041D8B7BBA295D15441451908DD91AF50414F1CA0AD90D15441C5E34A5C8EAF5041A8CADE9A8FD15441C27058F386AF50415C7D5B6C8DD15441A0A268DE80AF5041E1E9F3A18BD15441577B8E127BAF5041FEF710ED89D15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277088 - 3752831
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000085EB51C888AF5041A4703DAACAD15441666666E697AF5041CDCCCCACD2D15441F6285CCF9CAF50415C8FC275CED15441A4703D9AA5AF504152B81E95C1D15441666666A6A6AF504100000050BAD154415C8FC225A8AF5041AE47E14AB7D1544114AE4731A8AF5041B81E85CBB2D15441B81E855BAAAF5041AE47E15AADD154415C8FC2B5ABAF5041D7A370CDABD1544152B81EE5AAAF504148E17AC4AAD15441AE47E1DA9FAF504148E17A84A7D154410AD7A3B09CAF5041295C8F52A1D1544114AE47C199AF5041D7A3709D9BD15441333333D391AF5041000000A090D15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000008FC2F5E876AF504100000030C0D1544185EB51D878AF504185EB5138C2D15441A6FFAD9982AF50410F3F9663C7D154419C0BD41989AF504107005DD5CAD15441A59700F389AF5041F7BD1F2DC3D154416AA8108E8BAF5041616CAFDEB8D15441894BD3388DAF5041C6957D2BAED15441FACB7A6D8FAF50417F5C3603A0D1544102635A0B91AF5041D8B7BBA295D15441451908DD91AF50414F1CA0AD90D15441C5E34A5C8EAF5041A8CADE9A8FD15441C27058F386AF50415C7D5B6C8DD15441A0A268DE80AF5041E1E9F3A18BD15441577B8E127BAF5041FEF710ED89D15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277398 - 56444
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000666666A6C7F75041AE47E1EA5D305541F6285C7FCFF7504152B81EA55E3055417B14AEC7D6F75041666666465F305541295C8F02DFF750411F85EB115B305541666666F6E4F75041EC51B80E58305541295C8F42E9F75041295C8F22563055410AD7A3E0F1F75041E17A142E523055413D0AD713F6F75041295C8FF24F305541EC51B82EF7F750415C8FC2554F305541D7A3700DF8F750418FC2F5984C305541713D0A67FEF75041666666E64030554114AE4791F1F7504152B81ED54730554114AE4781DFF750413D0AD71351305541666666A6C7F75041AE47E1EA5D305541
+</a>
+
+<b>
+010600000001000000010300000001000000110000008855ED99CCF75041008FA1405B305541A34C92B1C7F7504102EFDDE45D30554194F2A675CEF75041C7D57C8C5E305541F6285C7FCFF7504152B81EA55E3055417B14AEC7D6F75041666666465F305541295C8F02DFF750411F85EB115B305541666666F6E4F75041EC51B80E58305541295C8F42E9F75041295C8F225630554174027A64EDF750412F85073D543055418A172A65F6F7504144637BC54F305541EC51B82EF7F750415C8FC2554F305541D7A3700DF8F750418FC2F5984C305541713D0A67FEF75041666666E64030554114AE4791F1F7504152B81ED547305541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277638 - 3177958
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000040000000103000000010000001900000014AE47514FF050417B14AE9796315541AE47E19A56F0504114AE477198315541B81E852B62F05041000000309B3155419A9999296EF050418FC2F5089E3155415C8FC2F579F050415C8FC2D5A031554114AE471186F050415C8FC2B5A3315541713D0A1788F050411F85EB419E3155413D0AD75389F050415C8FC2659B315541AE47E18A7FF050410AD7A32098315541EC51B8FE71F050418FC2F57893315541CDCCCC9C64F05041C3F5283C8F315541CDCCCC3C54F05041F6285C7F8A315541713D0A174DF050410AD7A38088315541B81E85DB45F050417B14AE1786315541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000028000000C3F528EC71F0504152B81EE547315541CDCCCC1C72F050417B14AE37443155411F85EB0171F0504114AE47F13D315541EC51B8DE70F050411F85EB913B3155415C8FC27570F050415C8FC29534315541CDCCCC3C6DF05041CDCCCC9C333155413333330369F05041D7A3705D32315541EC51B8AE66F050410AD7A310313155415C8FC2A563F05041A4703DCA2E315541E17A142E60F05041C3F5287C2B3155415C8FC2555CF050417B14AE5728315541666666D657F05041E17A141E2431554148E17A5458F05041CDCCCCDC263155413D0AD7B358F05041713D0AF728315541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>277638 - 3525911
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000040000000103000000010000001900000014AE47514FF050417B14AE9796315541AE47E19A56F0504114AE477198315541B81E852B62F05041000000309B3155419A9999296EF050418FC2F5089E3155415C8FC2F579F050415C8FC2D5A031554114AE471186F050415C8FC2B5A3315541713D0A1788F050411F85EB419E3155413D0AD75389F050415C8FC2659B315541AE47E18A7FF050410AD7A32098315541EC51B8FE71F050418FC2F57893315541CDCCCC9C64F05041C3F5283C8F315541CDCCCC3C54F05041F6285C7F8A315541713D0A174DF050410AD7A38088315541B81E85DB45F050417B14AE1786315541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000028000000C3F528EC71F0504152B81EE547315541CDCCCC1C72F050417B14AE37443155411F85EB0171F0504114AE47F13D315541EC51B8DE70F050411F85EB913B3155415C8FC27570F050415C8FC29534315541CDCCCC3C6DF05041CDCCCC9C333155413333330369F05041D7A3705D32315541EC51B8AE66F050410AD7A310313155415C8FC2A563F05041A4703DCA2E315541E17A142E60F05041C3F5287C2B3155415C8FC2555CF050417B14AE5728315541666666D657F05041E17A141E2431554148E17A5458F05041CDCCCCDC263155413D0AD7B358F05041713D0AF728315541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>278165 - 961295
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000E17A149E75E650411F85EB71372E5541000000807BE650418FC2F598382E5541C3F5284C7DE650419A9999A9382E554148E17A447FE65041CDCCCC5C382E5541A4703D5A81E65041E17A142E372E55410000007082E6504114AE47F1352E55410AD7A3A084E65041333333B3322E55410000006086E65041EC51B89E2F2E5541D7A3706D89E65041295C8FF2292E5541295C8FD28BE650415C8FC265252E5541F6285C4F8FE65041295C8F121D2E5541D7A3709D86E65041333333231B2E554152B81E457DE6504152B81E35172E55416666666666E65041666666C60C2E5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000260000008AD1C70E8FE650418B3930041D2E5541A98428A98FE65041FC74C0311C2E5541992091248FE650416BD6DEB21A2E55411DECA96B8AE650412D5CCA7C1A2E5541B5C311AF87E65041A698A11B1A2E55416BB7D72C84E6504181D67BED182E5541B898C16473E650416ECE97A9112E5541236271FF6AE650416EE67BA90D2E55415DAF25BB63E65041108BF0D7082E5541FB795B6261E6504169FE6624072E55417B8A3E635EE650411FA1DB7B042E5541B437347B5AE65041A4BBCAC4012E5541B5A26AEE55E650412986CE0FFF2D55415A56581D51E65041E371421BFD2D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>278380 - 246581
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000CDCCCC0CE9F35041C3F5283C302D554148E17A7400F4504185EB51A8302D55410AD7A33002F45041295C8F42322D55418FC2F56802F450413D0AD793342D55415C8FC2D509F45041C3F5284C342D55418FC2F5380DF450415C8FC225362D55411F85EBB10FF4504166666686352D55415C8FC2C511F4504114AE4741322D5541EC51B84E12F45041CDCCCC1C312D5541C3F528BC12F45041A4703DEA2F2D5541F6285C0F13F450417B14AEB72E2D554152B81E6513F45041AE47E18A2D2D5541F6285CDF13F450415C8FC2A52A2D5541D7A3708D13F45041B81E85DB2A2D5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000006000000F649ED5DF9F35041EFAAE3EE2D2D55416B8091C6F8F350410ADA34DB2A2D5541396B0511EBF35041EFAF719F2F2D5541B16558E8F2F3504102BA44B22E2D5541B8F07D7FF3F35041E5E268A02E2D5541F649ED5DF9F35041EFAAE3EE2D2D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>278380 - 270680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000CDCCCC0CE9F35041C3F5283C302D554148E17A7400F4504185EB51A8302D55410AD7A33002F45041295C8F42322D55418FC2F56802F450413D0AD793342D55415C8FC2D509F45041C3F5284C342D55418FC2F5380DF450415C8FC225362D55411F85EBB10FF4504166666686352D55415C8FC2C511F4504114AE4741322D5541EC51B84E12F45041CDCCCC1C312D5541C3F528BC12F45041A4703DEA2F2D5541F6285C0F13F450417B14AEB72E2D554152B81E6513F45041AE47E18A2D2D5541F6285CDF13F450415C8FC2A52A2D5541D7A3708D13F45041B81E85DB2A2D5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000006000000F649ED5DF9F35041EFAAE3EE2D2D55416B8091C6F8F350410ADA34DB2A2D5541396B0511EBF35041EFAF719F2F2D5541B16558E8F2F3504102BA44B22E2D5541B8F07D7FF3F35041E5E268A02E2D5541F649ED5DF9F35041EFAAE3EE2D2D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>278623 - 298603
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001400000014AE4741A6E150418FC2F5F8EC325541C3F5280CA2E15041CDCCCC7CF43255411F85EBE1A6E1504166666686F7325541D7A3709DADE15041D7A3706DEF32554100000000B2E150415C8FC2B5EB32554152B81EA5B7E1504100000070E8325541D7A3708DBBE150417B14AE67E5325541E17A14EEBDE15041C3F5283CE2325541713D0AA7C0E1504185EB5168E1325541C3F528ECC5E1504114AE47D1DF32554114AE47F1C7E15041CDCCCC9CE032554152B81EB5CCE15041A4703DAADE325541295C8F92CDE15041CDCCCC7CDB32554114AE4701CEE1504114AE47E1D7325541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C00000052B81EB5CCE15041A4703DAADE3255413643E67ACDE150413B01B7D3DB325541295C8F92CDE15041CDCCCC7CDB32554114AE4701CEE1504114AE47E1D7325541EC51B8DECDE1504114AE47D1D43255416B82613CCBE1504137CF2B61D5325541C3F5282CC6E150415C8FC275D6325541B4E2B8B0C1E15041EC94082CD8325541038DB7FBB6E15041F8C8FB42DC325541CD448DEEAFE15041C8C6AE00DF325541A4703D3AACE15041CDCCCC7CE13255419A999939AAE1504148E17A54E432554114AE4741A6E150418FC2F5F8EC32554151D2100DA2E1504147AC2E7BF4325541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>279525 - 1109695
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000100000000AD7A32002FB504166666656AA965441713D0A07FBFA5041EC51B8EEA896544152B81E35F6FA5041000000B0AB965441713D0AD7EFFA5041D7A3703DAE965441E17A14BECEFA5041EC51B89EB8965441CDCCCC3CBDFA5041AE47E1FABD9654417B14AE77AFFA5041CDCCCC7CC2965441D7A3707DAFFA5041D7A370BDC396544166666636B9FA50413D0AD773C3965441D7A3704DC6FA5041713D0A37C3965441C3F528FCD2FA504133333343C39654418FC2F5A8E1FA504114AE47E1C396544114AE4761EEFA504148E17A14C596544114AE47F1F9FA50415C8FC2C5C6965441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000003B6BF4016FB504106E47FB9CD9654410AD7A3B019FB504148E17AB4CE9654411F85EB411BFB5041EC51B82ECF965441C029268724FB50412A1730A6D2965441666666A627FB50413D0AD7C3B1965441AE47E1EA25FB5041C3F5286CB1965441CDCCCC9C1CFB504148E17A94AF9654413333333319FB50417B14AEE7AE965441684D3F2E02FB5041D8774F51AA96544132C94A3EFFFA5041C8F50AD7C7965441FD8CA4FE05FB5041ADE0B540C9965441D14F5F670CFB5041A5D062EBCA96544103B6BF4016FB504106E47FB9CD965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>279525 - 3911091
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000100000000AD7A32002FB504166666656AA965441713D0A07FBFA5041EC51B8EEA896544152B81E35F6FA5041000000B0AB965441713D0AD7EFFA5041D7A3703DAE965441E17A14BECEFA5041EC51B89EB8965441CDCCCC3CBDFA5041AE47E1FABD9654417B14AE77AFFA5041CDCCCC7CC2965441D7A3707DAFFA5041D7A370BDC396544166666636B9FA50413D0AD773C3965441D7A3704DC6FA5041713D0A37C3965441C3F528FCD2FA504133333343C39654418FC2F5A8E1FA504114AE47E1C396544114AE4761EEFA504148E17A14C596544114AE47F1F9FA50415C8FC2C5C6965441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000003B6BF4016FB504106E47FB9CD9654410AD7A3B019FB504148E17AB4CE9654411F85EB411BFB5041EC51B82ECF965441C029268724FB50412A1730A6D2965441666666A627FB50413D0AD7C3B1965441AE47E1EA25FB5041C3F5286CB1965441CDCCCC9C1CFB504148E17A94AF9654413333333319FB50417B14AEE7AE965441684D3F2E02FB5041D8774F51AA96544132C94A3EFFFA5041C8F50AD7C7965441FD8CA4FE05FB5041ADE0B540C9965441D14F5F670CFB5041A5D062EBCA96544103B6BF4016FB504106E47FB9CD965441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>279666 - 56891
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000013000000E17A14FE73F75041AE47E1BAD6945441EC51B86E63F75041295C8F52FB945441E17A14CE66F75041CDCCCC0CFD945441A4703D5A6CF7504152B81EE5FF945441D7A370ED7AF75041A4703DAAE0945441E17A144E7DF7504114AE4791DB945441295C8F7287F75041D7A370ADE0945441B81E85DB95F75041F6285CEFE7945441295C8FE297F75041EC51B8AEE2945441EC51B82E98F750419A9999E9E19454416666667694F75041295C8F02E0945441295C8F928DF7504185EB5178DC945441666666768AF75041EC51B8DEDA945441F6285C1F87F750417B14AE27D9945441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000E17A14FE73F75041AE47E1BAD6945441511DF8A966F750413013982EF4945441D02552A266F7504120947E3FF4945441B8A0CB7466F75041737A17A4F4945441FCDFC72B66F75041E37E6E45F5945441F2B2ECB763F75041D8E4CCB0FA9454413551C67D63F750418E364B31FB9454418D2E677163F750412F31EF53FB945441112B4B3F64F7504120DF65BDFB94544155325C7964F75041423424DBFB9454416051707A65F750413DCBE747FC945441BDDE900F6BF750417730893BFF9454413C04FF5B6CF7504166685BE1FF945441D7A370ED7AF75041A4703DAAE0945441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>309716 - 350723
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000007000000014AE47C1880F51410AD7A3D0B84A554100000060890F514114AE4791B84A5541713D0A878A0F51410AD7A3D0B74A554152B81E858E0F51410AD7A370B74A55413D0AD783910F5141F6285CAFB84A5541A4703D0A930F5141B81E85ABB94A55418FC2F518940F5141E17A144EBA4A55417B14AEF7940F5141D7A370ADBA4A55415C8FC245950F51415C8FC2C5BA4A5541CDCCCCCC950F5141D7A370DDBA4A5541B81E857B960F51413D0AD7E3BA4A55411F85EBA1970F5141D7A370DDBA4A5541EC51B86E980F5141F6285CBFBA4A5541B81E857B980F514148E17AB4B94A5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000400000006CA609B7E20F5141058D3623944A5541657CCC4CE30F514182EEA240904A554188DA202BE40F5141A86D52E88F4A5541CDCCCC1CE50F514185EB51888F4A55418F6E7D3CE60F5141D70120058F4A554148CFB6DEE70F5141576C65468E4A5541A18293D0E70F51412AA1403D8E4A554167C71DCAE70F5141CC1213398E4A5541EDDFFDBFE70F51413FC086328E4A554175D3DEABE70F5141244B83258E4A5541C65556A8E70F5141A04F3A238E4A554170AFB69CE70F5141C6CCB51B8E4A55415412A89AE70F5141F535611A8E4A554179E26095E70F51418953F7168E4A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>280688 - 1726290
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000C3F528AC55A7504133333373451F554152B81E8556A750417B14AE27431F5541A4703D3A57A75041F6285C1F401F5541D7A3709D44A7504114AE47213C1F5541333333232DA750417B14AE17371F5541D7A3702D18A7504185EB5198321F55417B14AE6717A750417B14AE17381F55418FC2F52817A750413D0AD7D3391F55413333339316A750413D0AD7F33D1F5541AE47E13A2AA75041B81E852B421F55410AD7A3D040A750413D0AD703471F5541B81E859B53A75041B81E850B4B1F5541C3F528AC55A7504133333373451F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000052B81E953CA7504148E17A24531F5541366E237B42A750417B3F5C68541F5541FCF9CCD743A7504165585E074F1F5541984D3FC73FA75041D5F6C6454E1F5541BCF4F84341A75041B99E921C471F5541AE47E13A2AA75041B81E852B421F55413333339316A750413D0AD7F33D1F5541A4703DCA14A75041B81E859B4A1F5541E17A14FE26A75041333333834E1F554152B81E953CA7504148E17A24531F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>281258 - 144467
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F000000CDCCCC5C2BBC5041666666B6CFE65441713D0A9733BC50410AD7A350CDE6544114AE47B139BC504114AE4771C8E65441295C8F723CBC50419A999939C4E65441CDCCCC1C41BC504114AE47A1BAE65441AE47E12A4DBC5041713D0A779DE65441F6285C5F50BC50416666668697E654418FC2F51856BC50419A9999898EE6544185EB514849BC5041713D0AF787E654415C8FC2B544BC5041E17A149E85E65441EC51B86E3CBC50411F85EB4181E654418FC2F56838BC50410AD7A38080E6544148E17A8425BC5041CDCCCCBCC8E65441F6285CBF23BC50411F85EB81CFE65441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001200000063877F8B40BC5041254023CCBBE65441F187B84446BC50415D5FF527AEE65441AE47E12A4DBC5041713D0A779DE65441F6285C5F50BC50416666668697E654418FC2F51856BC50419A9999898EE6544184F7130855BC5041343FA5FD8DE654417FD97D6F49BC5041DF51210B88E65441B863E2FB44BC5041CBE67BA795E654416BF09FEF3DBC504152099553ABE65441F646CC9934BC5041E3D159F3A6E65441319415772BBC5041EC0A07D2C9E65441CDAEDAA125BC5041643E7D4CC8E6544198D929C023BC504104C9D87ECFE65441CDCCCC5C2BBC5041666666B6CFE65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>466188 - 3072591
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000F6285C8F26A5504114AE47111D1F55419A9999C926A55041295C8FC21B1F5541C3F528AC0BA55041AE47E13AF81E554152B81EF5F6A45041000000C0D61E5541F6285C0FF5A45041EC51B88ED51E5541295C8FE2E7A45041C3F5285CD41E55418FC2F568E6A450417B14AE77D41E55411F85EB2101A5504152B81E55001F5541A4703D1A1CA550415C8FC2A5231F5541F6285C8F26A5504114AE47111D1F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000800000081649D95F3A4504145CEA078D81E5541D85D39BAF4A45041D8E5536BD81E5541D0D78DD0F6A450412D5F379ED81E5541C5A26F08F7A450418E1238DFD61E5541A77AF94EF5A450419AF7B2B6D51E5541F270E2E5F4A450418941F38AD51E5541FA48048EF3A450417808B26BD51E554181649D95F3A4504145CEA078D81E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>466188 - 3371247
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000F6285C8F26A5504114AE47111D1F55419A9999C926A55041295C8FC21B1F5541C3F528AC0BA55041AE47E13AF81E554152B81EF5F6A45041000000C0D61E5541F6285C0FF5A45041EC51B88ED51E5541295C8FE2E7A45041C3F5285CD41E55418FC2F568E6A450417B14AE77D41E55411F85EB2101A5504152B81E55001F5541A4703D1A1CA550415C8FC2A5231F5541F6285C8F26A5504114AE47111D1F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000800000081649D95F3A4504145CEA078D81E5541D85D39BAF4A45041D8E5536BD81E5541D0D78DD0F6A450412D5F379ED81E5541C5A26F08F7A450418E1238DFD61E5541A77AF94EF5A450419AF7B2B6D51E5541F270E2E5F4A450418941F38AD51E5541FA48048EF3A450417808B26BD51E554181649D95F3A4504145CEA078D81E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>281921 - 976957
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002400000085EB511813BD5041E17A141E9DE65441D7A3702D0FBD5041EC51B83E9DE65441F6285C1F04BD5041A4703D9A9DE6544100000030FABC5041EC51B88E9DE6544114AE4751F3BC5041295C8F429DE6544148E17AB4ECBC504148E17AA49CE6544148E17AD4E6BC5041C3F5282C9BE654417B14AED7E1BC504114AE472199E65441B81E851BDDBC504114AE475196E654415C8FC215D7BC5041F6285C8F91E654413D0AD793CEBC50413D0AD7338AE6544148E17A84C7BC5041713D0AD784E654419A9999E9C2BC50417B14AEE781E65441EC51B8CEBABC5041713D0A977DE65441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000F507727EF0BC5041EF2A99FCB8E65441D569CAE2F6BC5041AC6F3F67BAE65441FCE985DBF9BC5041FD0B510FBBE65441BA1083C1FABC50416699ED5EBBE6544118D4084102BD5041388048C1BDE654412173FAB612BD5041452D4ECD9EE654410B2B64610BBD50414BA3EB529FE65441EC51B8FE09BD5041C3F5286C9FE654410C0E4F7BFDBC50415E0068FA9FE6544184AFBE18F3BC5041E828D7DAB3E65441F507727EF0BC5041EF2A99FCB8E65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>282448 - 229672
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000052B81E953CB350413D0AD793B8EB544114AE47413CB3504166666686AFEB5441F6285CEF35B350410AD7A3C0AEEB5441F6285CDF28B350410AD7A330AEEB54419A99991928B350410AD7A3A0ADEB54410AD7A3F028B35041666666469DEB5441C3F528FC1EB35041B81E851B9DEB5441AE47E1FA12B350419A9999399CEB54416666664604B35041B81E859B9AEB54417B14AE0702B35041CDCCCC5C9AEB54418FC2F50801B350415C8FC2459AEB54419A999989DFB250413333334397EB54410AD7A370DEB250410000003098EB5441AE47E16ADAB250419A9999A9BCEB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000122C6AE428B35041B67664349EEB5441ACCB416018B3504191BD25629DEB54413F00CAF1FBB25041AF0EA9D099EB544153D29AA7FBB250411D2DF3DF9AEB54417AF588AD28B350417D333471A1EB5441D7C57BCD28B35041A710CDF29FEB54419B3C62D228B350414E1668939FEB5441B53114DD28B35041818D33C39EEB5441BB80F6E128B3504154771F649EEB5441CE5781E328B350418A0219469EEB5441122C6AE428B35041B67664349EEB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>282448 - 396109
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000052B81E953CB350413D0AD793B8EB544114AE47413CB3504166666686AFEB5441F6285CEF35B350410AD7A3C0AEEB5441F6285CDF28B350410AD7A330AEEB54419A99991928B350410AD7A3A0ADEB54410AD7A3F028B35041666666469DEB5441C3F528FC1EB35041B81E851B9DEB5441AE47E1FA12B350419A9999399CEB54416666664604B35041B81E859B9AEB54417B14AE0702B35041CDCCCC5C9AEB54418FC2F50801B350415C8FC2459AEB54419A999989DFB250413333334397EB54410AD7A370DEB250410000003098EB5441AE47E16ADAB250419A9999A9BCEB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000122C6AE428B35041B67664349EEB5441ACCB416018B3504191BD25629DEB54413F00CAF1FBB25041AF0EA9D099EB544153D29AA7FBB250411D2DF3DF9AEB54417AF588AD28B350417D333471A1EB5441D7C57BCD28B35041A710CDF29FEB54419B3C62D228B350414E1668939FEB5441B53114DD28B35041818D33C39EEB5441BB80F6E128B3504154771F649EEB5441CE5781E328B350418A0219469EEB5441122C6AE428B35041B67664349EEB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>282544 - 255772
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000030000000103000000020000005900000033333383BBA650411F85EBC1C5DD54418FC2F548C0A65041295C8FC2C7DD5441CDCCCCFCC6A650410AD7A380CADD5441713D0AA7CAA6504114AE47A1CBDD5441000000E0CAA65041F6285CDFCADD544148E17A14CCA650418FC2F538CBDD5441666666D6CBA65041E17A14FECBDD544148E17A74CCA65041EC51B82ECCDD544185EB51E8CFA65041AE47E15ACDDD5441AE47E1DAD4A65041D7A3701DCFDD544100000010D3A650410AD7A390CBDD54419A999979D4A6504166666616C8DD54418FC2F568D7A650419A999969C3DD5441C3F528ACD3A65041A4703D7AC1DD5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000D5D4C997E8A6504106169DE6C2DD544199205258E9A6504116D3A330C3DD54418CCC7AD4EDA65041544599C9C4DD54419B72E20AF0A650411017EBC1C5DD5441FCD5E488F2A65041E5FA3ED6C6DD5441AE47E1AAF3A650413D0AD753C7DD544148E17A74F7A6504114AE47B1C3DD5441E21422E7F6A650416251263FC2DD54417EFD3123F6A650414F5B143EC0DD54418E6645C0F3A650414137B9C6BEDD5441713D0AA7F0A65041F6285CDFBCDD5441D8D9BF75EDA6504175764CEEBBDD54413EA5B93EECA65041DCFC8F92BBDD54410C5EB212ECA65041925B5F83BBDD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>967937 - 56877
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001E00000000000020BCD350410000001059335541666666E6BBD35041C3F5288C56335541AE47E1BABDD35041A4703D6A4F335541C3F5280CC1D35041713D0A7742335541E17A141EC0D35041A4703DEA41335541713D0A47BDD3504148E17AC44B3355415C8FC2F5A1D35041000000403D335541295C8F429ED35041295C8FB23B33554152B81EF59DD350415C8FC20543335541295C8FC29ED3504152B81E754A335541666666269FD35041295C8F2255335541F6285C6FA0D3504185EB51F855335541EC51B8CEA4D350419A999989573355415C8FC2C5ADD350413D0AD7735A335541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000053000000FEC8373FA3D3504170DC61FA5633554157415B42A3D35041C5E581FB5633554139F254E4A4D35041558DA090573355414361B430A8D3504176852DA35833554196218E05ABD35041068DDD8E5933554156F71983ACD350419E2DED0A5A3355415C8FC2C5ADD350413D0AD7735A33554185D592EFAED3504108AACFE45A3355419515841EAFD350411E3B9EF65A335541B81E853BB1D350413D0AD7C35B335541B81E85FBB1D3504152B81E555D33554152B81E05B4D3504185EB51485D335541236975F6B3D350415C7684715D33554194EF12F4B3D35041C5DA37785D335541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>283984 - 237037
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000021000000F6285CFFF7365141000000409403554166666666FA3651411F85EB2187035541B81E85ABFA36514185EB51A885035541F6285CCFF0365141713D0AF784035541EC51B84EEB365141EC51B88E840355419A999909E63651410000000084035541A4703D5AE23651418FC2F5F8830355419A9999E9E13651417B14AEF783035541A4703D5AE0365141AE47E11A84035541B81E851BDE36514185EB51A884035541F6285C3FDD365141A4703DDA84035541EC51B87EDA36514152B81EB585035541F6285CAFD83651418FC2F50886035541000000F0D5365141A4703D7A87035541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E00000024D5B5F5FE3651413D942ADEAE0355411968E990FF365141BF5A5E88A9035541CB03BF2E003751414CDBD00EA503554105685669003751415D23358DA3035541CF9842E300375141E79ED850A003554158BB4E2A013751417CFBD2859F035541D6F65C1A02375141284179AD9C035541078376DB023751416E5F175C9A035541F2D42EBA02375141A1924A4F9A0355414D98593701375141B2B92AFB9B035541A59D1C58FF36514110C9F3ED9A035541CC514F86FF3651419C0FE29899035541BCBB2307FA36514100C9918B98035541F3C92858F83651415FF0B6BC98035541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>283984 - 372666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000021000000F6285CFFF7365141000000409403554166666666FA3651411F85EB2187035541B81E85ABFA36514185EB51A885035541F6285CCFF0365141713D0AF784035541EC51B84EEB365141EC51B88E840355419A999909E63651410000000084035541A4703D5AE23651418FC2F5F8830355419A9999E9E13651417B14AEF783035541A4703D5AE0365141AE47E11A84035541B81E851BDE36514185EB51A884035541F6285C3FDD365141A4703DDA84035541EC51B87EDA36514152B81EB585035541F6285CAFD83651418FC2F50886035541000000F0D5365141A4703D7A87035541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E00000024D5B5F5FE3651413D942ADEAE0355411968E990FF365141BF5A5E88A9035541CB03BF2E003751414CDBD00EA503554105685669003751415D23358DA3035541CF9842E300375141E79ED850A003554158BB4E2A013751417CFBD2859F035541D6F65C1A02375141284179AD9C035541078376DB023751416E5F175C9A035541F2D42EBA02375141A1924A4F9A0355414D98593701375141B2B92AFB9B035541A59D1C58FF36514110C9F3ED9A035541CC514F86FF3651419C0FE29899035541BCBB2307FA36514100C9918B98035541F3C92858F83651415FF0B6BC98035541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>284620 - 3099307
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003100000052B81E25E93D5141333333639705554100000040EC3D51413D0AD7B393055541295C8FB2EC3D514152B81E45920555413D0AD7A3E73D5141666666668D055541CDCCCCDCE63D51418FC2F5A8800555418FC2F528E63D51413333334375055541C3F5287CE53D51410AD7A3507105554114AE4741E43D5141295C8FE26A0555417B14AE17E33D5141295C8F82670555417B14AEB7E13D51413D0AD77364055541AE47E15AE03D514148E17A0462055541B81E851BDD3D51415C8FC2456105554148E17AF4DA3D51417B14AE4760055541666666F6D93D51419A9999095F055541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000009A999979F53D5141F6285CEF720555413D0AD7F3F33D51410000004066055541B81E85ABF03D51416666660666055541199FFD60EB3D514142280B4D65055541E75F03BAE93D5141B4ED2FE86205554121E7C049E03D5141076923E761055541E9247A29E33D5141A1A43AB667055541857EFF4EE53D5141834FB5A86F055541F8EE572EE63D514110F68A9A7505554188EA7483E63D5141A42C2E687B055541AD96979EE73D5141BC20D4758D055541295C8FB2EC3D514152B81E45920555415A01A6C7F13D5141A580359196055541708B8FE0F33D51415B102D5798055541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>284620 - 3454392
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003100000052B81E25E93D5141333333639705554100000040EC3D51413D0AD7B393055541295C8FB2EC3D514152B81E45920555413D0AD7A3E73D5141666666668D055541CDCCCCDCE63D51418FC2F5A8800555418FC2F528E63D51413333334375055541C3F5287CE53D51410AD7A3507105554114AE4741E43D5141295C8FE26A0555417B14AE17E33D5141295C8F82670555417B14AEB7E13D51413D0AD77364055541AE47E15AE03D514148E17A0462055541B81E851BDD3D51415C8FC2456105554148E17AF4DA3D51417B14AE4760055541666666F6D93D51419A9999095F055541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000009A999979F53D5141F6285CEF720555413D0AD7F3F33D51410000004066055541B81E85ABF03D51416666660666055541199FFD60EB3D514142280B4D65055541E75F03BAE93D5141B4ED2FE86205554121E7C049E03D5141076923E761055541E9247A29E33D5141A1A43AB667055541857EFF4EE53D5141834FB5A86F055541F8EE572EE63D514110F68A9A7505554188EA7483E63D5141A42C2E687B055541AD96979EE73D5141BC20D4758D055541295C8FB2EC3D514152B81E45920555415A01A6C7F13D5141A580359196055541708B8FE0F33D51415B102D5798055541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>284993 - 3186162
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000001E00000014AE47912B425141D7A3704D0C0655413333335329425141295C8FB20C065541D7A3708D264251410AD7A3500D06554185EB5118234251411F85EBD10D0655418FC2F5781F425141E17A146E0E065541AE47E1CA1B4251413D0AD7430F065541295C8FD219425141F6285CEF0F06554114AE4771174251417B14AE3711065541CDCCCC0C144251410AD7A3A01606554114AE47B110425141E17A148E19065541333333930C425141AE47E1DA1C065541713D0A870D4251411F85EB21210655413333336310425141CDCCCC3C21065541EC51B89E13425141B81E853B20065541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000035000000AAB073B50D42514122BA9F23210655413333336310425141CDCCCC3C21065541EC51B89E13425141B81E853B200655412F790A2C17425141AF262E051F0655412B5B22251942514199A72F631E0655414DF025161B4251410F3636BD1D065541D3E352091D42514157F983161D0655414E2C34DE1E42514147B0EF791C065541A66232E51F425141B4901C221C0655410158D44B234251418514254A1B065541D7A3700D24425141A4703D1A1B0655410000003025425141D7A370BD19065541EC51B82E29425141C3F528AC170655417B14AEB72B425141EC51B8CE16065541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>284993 - 3593391
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000001E00000014AE47912B425141D7A3704D0C0655413333335329425141295C8FB20C065541D7A3708D264251410AD7A3500D06554185EB5118234251411F85EBD10D0655418FC2F5781F425141E17A146E0E065541AE47E1CA1B4251413D0AD7430F065541295C8FD219425141F6285CEF0F06554114AE4771174251417B14AE3711065541CDCCCC0C144251410AD7A3A01606554114AE47B110425141E17A148E19065541333333930C425141AE47E1DA1C065541713D0A870D4251411F85EB21210655413333336310425141CDCCCC3C21065541EC51B89E13425141B81E853B20065541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000035000000AAB073B50D42514122BA9F23210655413333336310425141CDCCCC3C21065541EC51B89E13425141B81E853B200655412F790A2C17425141AF262E051F0655412B5B22251942514199A72F631E0655414DF025161B4251410F3636BD1D065541D3E352091D42514157F983161D0655414E2C34DE1E42514147B0EF791C065541A66232E51F425141B4901C221C0655410158D44B234251418514254A1B065541D7A3700D24425141A4703D1A1B0655410000003025425141D7A370BD19065541EC51B82E29425141C3F528AC170655417B14AEB72B425141EC51B8CE16065541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>285039 - 4060288
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000AE47E14AC23C514148E17A5474045541E17A144EBE3C5141D7A3701D7604554152B81E45BF3C514152B81EF578045541333333E3BF3C514185EB51787B0455413D0AD793C13C5141B81E852B83045541333333E3C23C51413D0AD7038A045541295C8FA2C43C5141666666E691045541D7A370FDC53C514148E17AC49704554152B81E75C63C5141C3F5288C98045541CDCCCCECC63C5141D7A370FD9C0455410AD7A3E0CB3C5141EC51B8EE9A045541295C8FA2D13C5141A4703D7A98045541B81E85ABD73C5141AE47E1DA94045541AE47E1AAD53C51411F85EB9194045541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000236E83B8D73C51416E017337710455419318047ED63C51411283C06A6C045541801ED789D33C514167F0503A6D04554163690B27D23C5141362906B36D04554177A9310ECE3C51411E7AAD1B6F045541D7A3708DCD3C5141EC51B89E6F04554153D7B448CE3C514181F79BB4720455417488D381CF3C5141472059DD7704554166666686CF3C51410AD7A3F0770455416107E3CBCF3C514179A97C73790455414C8DEB73D03C514134388E177D04554107A46231D13C51414741E425810455417D2540BDD13C51410E782019840455410548B0A3D23C514156A264C688045541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>285039 - 86409
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000AE47E14AC23C514148E17A5474045541E17A144EBE3C5141D7A3701D7604554152B81E45BF3C514152B81EF578045541333333E3BF3C514185EB51787B0455413D0AD793C13C5141B81E852B83045541333333E3C23C51413D0AD7038A045541295C8FA2C43C5141666666E691045541D7A370FDC53C514148E17AC49704554152B81E75C63C5141C3F5288C98045541CDCCCCECC63C5141D7A370FD9C0455410AD7A3E0CB3C5141EC51B8EE9A045541295C8FA2D13C5141A4703D7A98045541B81E85ABD73C5141AE47E1DA94045541AE47E1AAD53C51411F85EB9194045541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000220000006B20CAACD03C51412158384F7E04554107A46231D13C51414741E42581045541FA78E98DD13C5141E3D98219830455417F2540BDD13C514110782019840455410748B0A3D23C514157A264C688045541839F5B03D33C51412F8613A88A045541BEB9C1D1D33C5141B09C940B8D045541BEB9C1D1D33C5141B19C940B8D045541BFB9C1D1D33C5141B39C940B8D0455412B868504D43C51419E54BEAD8D045541EC444937D43C5141E2E0E74F8E045541EC444937D43C5141E3E0E74F8E045541ED444937D43C5141E5E0E74F8E0455416FFC9747D43C5141C028C9778E045541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>285442 - 1335447
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000069000000713D0A87953B5141D7A370DD9C035541EC51B8EE953B51417B14AE379C035541666666E69A3B51413D0AD7238F0355410AD7A3709C3B5141C3F5283C8B0355417B14AE47973B5141333333138A035541E17A147E873B51413D0AD7D38503554100000080853B5141F6285C0F84035541EC51B84E843B5141C3F5289C800355417B14AE77833B51418FC2F5587B035541F6285CFF833B51411F85EBA177035541CDCCCCDC883B5141E17A149E6C035541666666968A3B51419A9999D96A035541CDCCCC8C8D3B5141AE47E12A69035541AE47E13A913B51415C8FC24566035541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009D000000C59999F9A63B514127AE47E158035541EC51B8BEAC3B51417B14AE775A035541EC51B8AEAB3B5141295C8F025E035541000000E0A93B5141D7A3704D610355419A999939A53B5141A4703D4A60035541A4703D6AA33B51411F85EBA160035541D7A3703DA23B5141F6285CFF61035541EC51B86EA03B5141AE47E1CA62035541AE47E19A9E3B5141666666A662035541D7A3704D9D3B5141CDCCCC7C66035541C3F528DC9F3B5141295C8F2267035541E17A14AEA93B5141F6285C1F6E03554133333343AB3B514148E17A4470035541F6285CCFB33B5141CDCCCC8C74035541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>285442 - 3582579
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000069000000713D0A87953B5141D7A370DD9C035541EC51B8EE953B51417B14AE379C035541666666E69A3B51413D0AD7238F0355410AD7A3709C3B5141C3F5283C8B0355417B14AE47973B5141333333138A035541E17A147E873B51413D0AD7D38503554100000080853B5141F6285C0F84035541EC51B84E843B5141C3F5289C800355417B14AE77833B51418FC2F5587B035541F6285CFF833B51411F85EBA177035541CDCCCCDC883B5141E17A149E6C035541666666968A3B51419A9999D96A035541CDCCCC8C8D3B5141AE47E12A69035541AE47E13A913B51415C8FC24566035541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009D000000C59999F9A63B514127AE47E158035541EC51B8BEAC3B51417B14AE775A035541EC51B8AEAB3B5141295C8F025E035541000000E0A93B5141D7A3704D610355419A999939A53B5141A4703D4A60035541A4703D6AA33B51411F85EBA160035541D7A3703DA23B5141F6285CFF61035541EC51B86EA03B5141AE47E1CA62035541AE47E19A9E3B5141666666A662035541D7A3704D9D3B5141CDCCCC7C66035541C3F528DC9F3B5141295C8F2267035541E17A14AEA93B5141F6285C1F6E03554133333343AB3B514148E17A4470035541F6285CCFB33B5141CDCCCC8C74035541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>285765 - 394431
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000090000007B14AE976DD15041A4703D1AC3BB54418FC2F5587CD15041C3F5286CC1BB54415C8FC2A576D150413D0AD72378BB5441A4703DFA60D15041713D0AA77ABB544185EB517863D150410AD7A3E09ABB5441F6285C7F60D1504114AE47219BBB544185EB512863D150415C8FC255BDBB5441E17A144E6BD150410AD7A390C2BB54417B14AE976DD15041A4703D1AC3BB5441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000FAC8F9C061D15041ACC73F487ABB54414672C94761D15041129E223C78BB54413D48F7F060D150410099664578BB5441E0D99CD45DD150419D3831D678BB5441F6285C7F60D1504114AE47219BBB544185EB512863D150415C8FC255BDBB5441E17A144E6BD150410AD7A390C2BB5441E66DC2656DD150413E92820EC3BB54419114AE976DD15041A2703D1AC3BB5441E216AE976DD150415E703D1AC3BB5441CD18AE976DD1504123703D1AC3BB54412B2084BF77D15041B4E9E7D7C1BB544175F5D5B677D15041A0745C74C1BB54414497416F77D150416327DB74C1BB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>286402 - 242470
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000110000006666663662D150410AD7A330B5BE5441F6285CBF7DD15041333333E389BE5441A4703D4A7ED15041C3F528AC88BE5441333333B37CD15041AE47E1EA88BE5441A4703DCA7AD150415C8FC28589BE54419A99995978D15041CDCCCC7C8ABE544185EB510874D150419A9999898CBE5441666666D664D15041295C8FD28CBE54419A99992964D1504152B81EE58FBE5441F6285C1F63D150417B14AE1795BE5441EC51B8BE61D150419A9999A99BBE544148E17A5460D15041F6285C0FA2BE5441333333635FD15041A4703D7AA6BE5441000000B05AD150415C8FC2C5B3BE5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000080000001005863E78D15041020BC98A92BE5441078C5BBF7DD15041002A34E389BE5441155A520874D150416CB199898CBE54412AF1CA5571D150417E428D968CBE544193C195185FD1504159965A9AB4BE54412E48653662D15041A386A330B5BE5441D96146BD74D150410067D40D98BE54411005863E78D15041020BC98A92BE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>286527 - 57074
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001B000000EC51B81E67D6504185EB51C818BC5441F6285CAF63D650417B14AE471BBC5441EC51B88E5FD65041B81E858B1DBC54418FC2F5485BD6504114AE47311FBC54417B14AED756D650413D0AD75320BC5441EC51B80E54D650413D0AD7B320BC544185EB515852D65041F6285CEF20BC54416666662636D65041C3F5282C23BC544152B81EA52DD65041E17A146E23BC54419A99994925D65041F6285CFF22BC54419A9999C90CD65041D7A370FD1FBC5441C3F528AC0BD65041C3F528DC20BC54418FC2F5E807D6504152B81E2540BC544114AE47B105D650413D0AD79352BC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000D41D524253D65041DF35577A4CBC54419A99997955D65041B81E85AB49BC54415A24B85E56D65041A0E7368948BC54413298C0F556D65041F81FD9C947BC5441E96444EF5CD650414C7FE03740BC5441A49253B75FD65041BD98A9B13CBC54416E43274F65D65041F17B779B35BC54415F1396796AD65041DE4CA00D2FBC544158F13C7E70D65041F505AB5427BC5441F6285CDF74D650415C8FC2B521BC5441713D0A9774D65041C3F5280C20BC5441E17A142E69D650419A9999B918BC5441EC51B81E67D6504185EB51C818BC5441F6285CAF63D650417B14AE471BBC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>286582 - 362073
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000040000000B81E857B37D55041E17A148EFDBE5441A4703D6A38D550411F85EBD1F3BE5441D7A3704D38D550411F85EBF1E8BE5441B81E85DB37D550413D0AD7A3E0BE54417B14AE473AD5504166666626E1BE5441666666063DD55041CDCCCC7CE0BE54415C8FC20540D5504133333343D8BE54419A99999945D55041295C8F02CDBE54411F85EB414ED550418FC2F558C0BE544152B81E9556D550417B14AE87B6BE54417B14AED756D55041AE47E13AB6BE5441295C8F723ED55041AE47E1EAA6BE5441295C8F2227D55041AE47E1EAD6BE54415C8FC2F525D55041D7A370FDD7BE5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E0000005976D82318D550419EA490F2FABE54412F7567F613D550415792E15A03BF5441A24AEAF133D55041E2725D1F0BBF54417D9BE45735D55041B6D369C205BF5441B81E857B37D55041E17A148EFDBE5441A4703D6A38D550411F85EBD1F3BE54415C8FC20540D5504133333343D8BE54419A99999945D55041295C8F02CDBE5441BCC6C9CD4BD550417F24ABEFC3BE5441FA3FEA414ED55041F1CCF658C0BE544162921F9556D5504158BDAC87B6BE5441F8A56B9D56D55041593D1A7EB6BE5441F555D4C056D5504122FC3E55B6BE544142E1ADD756D55041C882E13AB6BE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287562 - 1176641
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000012000000D7A3705D13AA5141CDCCCCEC00A454416666662613AA51411F85EB2108A45441AE47E11A13AA5141333333A309A454415C8FC2E512AA51419A99999910A454419A9999B912AA5141A4703D5A16A45441D7A370AD12AA5141EC51B8EE17A45441EC51B8AE1CAA51413D0AD7F314A45441AE47E17A27AA51419A9999C911A45441666666E62FAA51411F85EB6114A454417B14AE9737AA51419A99992914A454410000003038AA514114AE470111A454413333334331AA5141CDCCCCCC10A454413D0AD71330AA514148E17AA40DA4544148E17A8430AA5141F6285C3F08A45441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000D7A3705D13AA5141CDCCCCEC00A454416666662613AA51411F85EB2108A45441AE47E11A13AA5141333333A309A454415C8FC2E512AA51419A99999910A454419A9999B912AA5141A4703D5A16A45441D7A370AD12AA5141EC51B8EE17A45441EC51B8AE1CAA51413D0AD7F314A45441AE47E17A27AA51419A9999C911A45441666666E62FAA51411F85EB6114A454417B14AE9737AA51419A99992914A454410000003038AA514114AE470111A454413333334331AA5141CDCCCCCC10A45441DB6AB66830AA51416463F8AE0DA4544133013D5030AA51414ABBA0E80BA45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287562 - 3614725
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000012000000D7A3705D13AA5141CDCCCCEC00A454416666662613AA51411F85EB2108A45441AE47E11A13AA5141333333A309A454415C8FC2E512AA51419A99999910A454419A9999B912AA5141A4703D5A16A45441D7A370AD12AA5141EC51B8EE17A45441EC51B8AE1CAA51413D0AD7F314A45441AE47E17A27AA51419A9999C911A45441666666E62FAA51411F85EB6114A454417B14AE9737AA51419A99992914A454410000003038AA514114AE470111A454413333334331AA5141CDCCCCCC10A454413D0AD71330AA514148E17AA40DA4544148E17A8430AA5141F6285C3F08A45441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000D7A3705D13AA5141CDCCCCEC00A454416666662613AA51411F85EB2108A45441AE47E11A13AA5141333333A309A454415C8FC2E512AA51419A99999910A454419A9999B912AA5141A4703D5A16A45441D7A370AD12AA5141EC51B8EE17A45441EC51B8AE1CAA51413D0AD7F314A45441AE47E17A27AA51419A9999C911A45441666666E62FAA51411F85EB6114A454417B14AE9737AA51419A99992914A454410000003038AA514114AE470111A454413333334331AA5141CDCCCCCC10A45441DB6AB66830AA51416463F8AE0DA4544133013D5030AA51414ABBA0E80BA45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287750 - 3614486
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000036000000295C8F4224A951417B14AEC738A55441295C8FA229A951419A9999593CA55441C3F5283C2AA95141666666363BA554419A9999E92AA95141CDCCCC8C3BA55441CDCCCC5C2AA9514152B81ED53CA55441000000802DA95141D7A370FD3DA55441B81E85EB30A951410AD7A30040A554419A9999E932A951415C8FC28541A55441713D0A8740A951419A99997937A55441333333234CA9514148E17A142FA554413D0AD7034CA951418FC2F5982DA55441666666164AA95141AE47E17A2AA55441AE47E13A49A951419A9999F929A5544152B81E4542A95141333333832DA55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004E000000295C8F4224A951417B14AEC738A55441295C8FA229A951419A9999593CA55441C3F5283C2AA95141666666363BA554419A9999E92AA95141CDCCCC8C3BA55441CDCCCC5C2AA9514152B81ED53CA55441000000802DA95141D7A370FD3DA55441B81E85EB30A951410AD7A30040A554419A9999E932A951415C8FC28541A55441713D0A8740A951419A99997937A55441333333234CA9514148E17A142FA554413D0AD7034CA951418FC2F5982DA55441666666164AA95141AE47E17A2AA55441AE47E13A49A951419A9999F929A5544152B81E4542A95141333333832DA55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287762 - 210912
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000210000009A99996953AA5141295C8F52A1A354419A99998952AA51415C8FC255A9A354417B14AE775AAA514114AE4761ACA3544114AE473161AA5141CDCCCC9CAEA35441295C8FD267AA5141E17A14EEB0A354417B14AEE769AA5141713D0A27B1A3544152B81E256DAA514100000050A7A3544152B81EA56EAA514100000030A3A354410000006070AA5141EC51B86E9EA354418FC2F5885BAA51410AD7A37098A35441000000F036AA51419A9999098FA354411F85EBD111AA51410AD7A38085A354418FC2F5680AAA514152B81E4584A354418FC2F50806AA5141666666C682A35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000007BE7A1EC4EAA51412B74ADAFB6A3544158725BC54FAA51418D9B2002B6A354419B4F6CAD4FAA514182B1C473B3A35441CDC95D4A4FAA51415946F51DAEA354413F58C92B4FAA5141346D5178ACA3544165B7A2FB4EAA51414DBED9E3AAA35441A33D27D34AAA51411C0887FFA8A35441DB011D4749AA51412D5238C6A6A35441D809D2D243AA51415908E1BEA5A35441E3E014E743AA51411C68F68EA4A35441C058422B45AA514116AC8A6D9AA3544117DF0A6845AA5141D90BA03D99A354416D65D3A445AA51412D95F73897A35441181459CD45AA5141744A9BDE92A35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287762 - 349179
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000210000009A99996953AA5141295C8F52A1A354419A99998952AA51415C8FC255A9A354417B14AE775AAA514114AE4761ACA3544114AE473161AA5141CDCCCC9CAEA35441295C8FD267AA5141E17A14EEB0A354417B14AEE769AA5141713D0A27B1A3544152B81E256DAA514100000050A7A3544152B81EA56EAA514100000030A3A354410000006070AA5141EC51B86E9EA354418FC2F5885BAA51410AD7A37098A35441000000F036AA51419A9999098FA354411F85EBD111AA51410AD7A38085A354418FC2F5680AAA514152B81E4584A354418FC2F50806AA5141666666C682A35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000007BE7A1EC4EAA51412B74ADAFB6A3544158725BC54FAA51418D9B2002B6A354419B4F6CAD4FAA514182B1C473B3A35441CDC95D4A4FAA51415946F51DAEA354413F58C92B4FAA5141346D5178ACA3544165B7A2FB4EAA51414DBED9E3AAA35441A33D27D34AAA51411C0887FFA8A35441DB011D4749AA51412D5238C6A6A35441D809D2D243AA51415908E1BEA5A35441E3E014E743AA51411C68F68EA4A35441C058422B45AA514116AC8A6D9AA3544117DF0A6845AA5141D90BA03D99A354416D65D3A445AA51412D95F73897A35441181459CD45AA5141744A9BDE92A35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287920 - 222222
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000300000001030000000100000007000000AE47E1AA8FA2514114AE47A124A854416666660683A25141A4703D9A23A85441F6285CFF84A25141666666962FA85441F6285C3F92A251419A9999C930A85441D7A370BD96A25141666666B630A85441C3F5282C93A25141EC51B80E25A85441AE47E1AA8FA2514114AE47A124A854410103000000010000000B00000048E17A444DA25141AE47E1AA2DA85441000000203DA25141CDCCCCFC30A854413333335333A25141D7A370FD33A85441D7A3707D25A25141CDCCCC7C37A85441F6285CEF25A2514152B81E8540A854418FC2F5B82BA25141A4703D5A3FA854413D0AD7 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000005B9A84A14FA251417E47E5D831A85441C16D75434DA251415F0D17AB2DA854413E068F7B4CA25141D70034D42DA85441E7D103B73FA25141CA59707430A85441C3CDDB533DA25141726322F230A8544177F8BCB33BA2514171D2666C31A854413333335333A25141D7A370FD33A85441D7A3707D25A25141CDCCCC7C37A85441133F15D225A25141EFD0DC323EA85441984031D825A25141359FDEAE3EA854417C2DB8E725A2514194AC08EA3FA85441DA807AE925A25141D845BD0D40A854411C3156EE25A25141E05A597040A854411DF67DF125A25141DD9DB08440A85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287920 - 374842
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000300000001030000000100000007000000AE47E1AA8FA2514114AE47A124A854416666660683A25141A4703D9A23A85441F6285CFF84A25141666666962FA85441F6285C3F92A251419A9999C930A85441D7A370BD96A25141666666B630A85441C3F5282C93A25141EC51B80E25A85441AE47E1AA8FA2514114AE47A124A854410103000000010000000B00000048E17A444DA25141AE47E1AA2DA85441000000203DA25141CDCCCCFC30A854413333335333A25141D7A370FD33A85441D7A3707D25A25141CDCCCC7C37A85441F6285CEF25A2514152B81E8540A854418FC2F5B82BA25141A4703D5A3FA854413D0AD7 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000005B9A84A14FA251417E47E5D831A85441C16D75434DA251415F0D17AB2DA854413E068F7B4CA25141D70034D42DA85441E7D103B73FA25141CA59707430A85441C3CDDB533DA25141726322F230A8544177F8BCB33BA2514171D2666C31A854413333335333A25141D7A370FD33A85441D7A3707D25A25141CDCCCC7C37A85441133F15D225A25141EFD0DC323EA85441984031D825A25141359FDEAE3EA854417C2DB8E725A2514194AC08EA3FA85441DA807AE925A25141D845BD0D40A854411C3156EE25A25141E05A597040A854411DF67DF125A25141DD9DB08440A85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288103 - 239526
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000200000035000000EC51B8EE359D5141000000B061A75441CDCCCC8C299D51419A99997961A754418FC2F548259D51413D0AD7635EA75441E17A141E1C9D514114AE47415BA754410AD7A3D0179D51415C8FC2F559A7544185EB51F8139D5141333333A356A75441EC51B81E119D5141B81E852B52A7544148E17A440E9D51410AD7A3F04CA7544185EB51680F9D51415C8FC2154CA754419A999989169D5141000000B055A754418FC2F588189D5141C3F528EC56A75441000000D01C9D5141333333D358A7544114AE4721279D51411F85EBD15AA754410AD7A3600D9D5141713D0AD743A75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000068000000F95238AF089D51411C4197A93FA75441295C8F92069D514185EB51C83DA754414ACC7D4A049D5141703F75BB3BA754414016194C029D51411B84CDF039A754410297B07AFD9C5141869D6C9C35A75441A9B5B28BF79C51419802406C30A7544146A07BA7F39C514143AEB1132DA754415C8FC215F39C5141666666962CA75441088873C2EE9C5141EC5DC49026A7544149DF08E3EB9C51410C7CF01B29A7544147BAD7D4E99C5141DAD5CC0A2EA7544122D84224F39C5141BEFD15BA38A75441ABC89631FB9C5141DFAE2A6B3FA754414DE49616009D51416073F0B144A75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288103 - 288355
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000200000035000000EC51B8EE359D5141000000B061A75441CDCCCC8C299D51419A99997961A754418FC2F548259D51413D0AD7635EA75441E17A141E1C9D514114AE47415BA754410AD7A3D0179D51415C8FC2F559A7544185EB51F8139D5141333333A356A75441EC51B81E119D5141B81E852B52A7544148E17A440E9D51410AD7A3F04CA7544185EB51680F9D51415C8FC2154CA754419A999989169D5141000000B055A754418FC2F588189D5141C3F528EC56A75441000000D01C9D5141333333D358A7544114AE4721279D51411F85EBD15AA754410AD7A3600D9D5141713D0AD743A75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000068000000F95238AF089D51411C4197A93FA75441295C8F92069D514185EB51C83DA754414ACC7D4A049D5141703F75BB3BA754414016194C029D51411B84CDF039A754410297B07AFD9C5141869D6C9C35A75441A9B5B28BF79C51419802406C30A7544146A07BA7F39C514143AEB1132DA754415C8FC215F39C5141666666962CA75441088873C2EE9C5141EC5DC49026A7544149DF08E3EB9C51410C7CF01B29A7544147BAD7D4E99C5141DAD5CC0A2EA7544122D84224F39C5141BEFD15BA38A75441ABC89631FB9C5141DFAE2A6B3FA754414DE49616009D51416073F0B144A75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288213 - 1176925
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000002000000010300000001000000140000008FC2F5C8189F5141B81E857B2FA154411F85EB411A9F51415C8FC2C52FA15441666666261C9F514148E17A0430A154411F85EBB11E9F5141D7A3707D31A15441EC51B85E219F5141713D0A4730A15441C3F528EC209F5141000000402FA15441295C8FC2239F514114AE47812EA1544114AE4761269F5141C3F5287C2EA1544114AE47C1299F514114AE47312CA1544148E17AB42B9F51413D0AD7E329A15441CDCCCCFC2C9F5141666666E628A15441D7A3701D2C9F514114AE470128A15441D7A3703D2B9F5141CDCCCC1C27A1544148E17A34189F51410AD7A3A013A15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000077A647A80A9F514109E4FDD818A154418DCE9C35009F5141EC693BA410A15441668FC7F3F09E5141634D178404A154417ADC8BEEEF9E51418EBB80AF03A154412F1D0171EE9E5141CD4C027902A15441DDAACAC6EC9E514122FB9FE000A1544130D28284D79E5141FD68D6EAECA0544133333363D79E5141C3F528CCECA0544152B81EA5D69E5141E17A143EEEA0544152B81E35D59E51411F85EB41F1A05441295C8F62D39E51413D0AD713F5A05441E17A14EEDE9E5141666666B6FFA054410AD7A3B0E39E51417B14AE7704A15441C3F5282CF09E51415C8FC2D50EA15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288213 - 3478977
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000002000000010300000001000000140000008FC2F5C8189F5141B81E857B2FA154411F85EB411A9F51415C8FC2C52FA15441666666261C9F514148E17A0430A154411F85EBB11E9F5141D7A3707D31A15441EC51B85E219F5141713D0A4730A15441C3F528EC209F5141000000402FA15441295C8FC2239F514114AE47812EA1544114AE4761269F5141C3F5287C2EA1544114AE47C1299F514114AE47312CA1544148E17AB42B9F51413D0AD7E329A15441CDCCCCFC2C9F5141666666E628A15441D7A3701D2C9F514114AE470128A15441D7A3703D2B9F5141CDCCCC1C27A1544148E17A34189F51410AD7A3A013A15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000077A647A80A9F514109E4FDD818A154418DCE9C35009F5141EC693BA410A15441668FC7F3F09E5141634D178404A154417ADC8BEEEF9E51418EBB80AF03A154412F1D0171EE9E5141CD4C027902A15441DDAACAC6EC9E514122FB9FE000A1544130D28284D79E5141FD68D6EAECA0544133333363D79E5141C3F528CCECA0544152B81EA5D69E5141E17A143EEEA0544152B81E35D59E51411F85EB41F1A05441295C8F62D39E51413D0AD713F5A05441E17A14EEDE9E5141666666B6FFA054410AD7A3B0E39E51417B14AE7704A15441C3F5282CF09E51415C8FC2D50EA15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288399 - 240066
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000200000019000000CDCCCCCCF0A051419A99999941A55441EC51B81EF1A05141A4703DCA44A55441AE47E18AF1A05141A4703DCA48A554415C8FC275F2A05141CDCCCC6C50A55441AE47E19AFDA051417B14AEC74DA5544152B81E8507A15141EC51B86E4BA554417B14AE2711A15141295C8F2249A55441F6285CCF1FA15141CDCCCCAC45A55441D7A3708D21A151411F85EB4145A55441EC51B82E2EA15141E17A143E42A55441713D0AF72EA15141F6285C0F42A55441AE47E1AA25A15141B81E85BB34A55441F6285CCF1DA1514185EB517829A55441D7A3704D1AA151410AD7A3802AA55441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000250000006EF925D2F0A051417F8EEACE41A55441A2665223F1A051415FDECEF544A554412FB5BD83F2A0514107B2924546A55441B06A36FFF3A05141B28A6D4347A5544178ED0E5FF5A05141D4A602CF47A5544129E3CDE4F7A05141A2A3162F49A55441966DD3D5F7A05141722F7BD64AA5544120B5EAFBF6A05141361F35854CA55441B081504EF6A05141604FA4694FA5544168ECFBCAFFA05141A68011434DA554414BA552A70EA15141AC6441BB49A55441C428D8261AA1514181B10CEC46A5544188A78A131CA15141400E1A9D45A55441420668811DA15141332C872C45A55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288405 - 211047
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000120000003D0AD7D38EA35141000000D02AA75441A4703DEA96A35141000000E022A75441F6285C6F92A351416666665621A7544148E17AB48EA3514185EB51A820A75441B81E855B88A35141666666C61AA7544148E17AF478A35141666666E611A7544185EB518878A3514114AE47B119A75441B81E85EB70A35141AE47E1FA13A754415C8FC2856BA35141AE47E10A10A754413D0AD7E36BA351419A9999990DA754417B14AE0764A35141295C8F220AA754418FC2F51857A35141AE47E15A06A75441333333B34EA35141EC51B87E12A7544148E17AF469A3514148E17AF41CA75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000D1CFC9AE91A35141E9876AB39AA7544164EB7C8091A351415115F4EB99A75441BFF9FF0F91A3514194645A0798A75441470BC6108DA35141F70998D487A7544171A8B5F28CA35141EC04C34D86A75441A2377F9B8CA35141FF5B0CD684A75441FA41C4BA8BA351411113E80D81A75441290918388BA351416A5FF7DA7EA75441614AC94089A35141090A70AD7AA75441BF56537987A35141E4EEB91174A75441CA3CEEF285A3514142FB434A72A754414C6E16D57EA3514132A2DB9374A75441C2E9CE477FA3514143D1B29477A754416AFF33927EA35141DC81952E7AA75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288405 - 364888
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000120000003D0AD7D38EA35141000000D02AA75441A4703DEA96A35141000000E022A75441F6285C6F92A351416666665621A7544148E17AB48EA3514185EB51A820A75441B81E855B88A35141666666C61AA7544148E17AF478A35141666666E611A7544185EB518878A3514114AE47B119A75441B81E85EB70A35141AE47E1FA13A754415C8FC2856BA35141AE47E10A10A754413D0AD7E36BA351419A9999990DA754417B14AE0764A35141295C8F220AA754418FC2F51857A35141AE47E15A06A75441333333B34EA35141EC51B87E12A7544148E17AF469A3514148E17AF41CA75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000D1CFC9AE91A35141E9876AB39AA7544164EB7C8091A351415115F4EB99A75441BFF9FF0F91A3514194645A0798A75441470BC6108DA35141F70998D487A7544171A8B5F28CA35141EC04C34D86A75441A2377F9B8CA35141FF5B0CD684A75441FA41C4BA8BA351411113E80D81A75441290918388BA351416A5FF7DA7EA75441614AC94089A35141090A70AD7AA75441BF56537987A35141E4EEB91174A75441CA3CEEF285A3514142FB434A72A754414C6E16D57EA3514132A2DB9374A75441C2E9CE477FA3514143D1B29477A754416AFF33927EA35141DC81952E7AA75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288428 - 391580
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000001C000000713D0AA706A35141F6285C3FE5A6544185EB51A802A35141F6285CFFDFA65441C3F5282CFDA2514148E17A54E1A6544148E17A74F3A251419A999949E3A6544133333323F2A2514152B81EE5E3A65441713D0A47F5A25141D7A3703DE4A65441333333F3F6A2514152B81E95E4A6544152B81E65F8A2514166666616E5A65441666666D6F9A25141A4703DBAE5A65441E17A144EFBA25141D7A3708DE6A65441E17A14AEFCA25141F6285C4FE7A65441CDCCCCECFEA25141CDCCCC5CE8A654416666661602A351419A999909EAA65441295C8F2205A35141B81E85BBEBA65441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000360000004D5CFB2104A35141852E3D3009A75441BD68592804A3514164CE335308A75441ADCA975706A35141BEADC99807A75441BB2BD68608A35141BEADC99807A75441E87CDF580AA3514164CE335308A75441192F275A0EA35141377D2A8106A754410F93B65C16A351410A2C21AF04A7544139155F4619A3514135EB4C3A03A75441779607301CA351416379D9AD00A75441A1C8A8721CA35141EAFCA366FCA654414200B81D1CA35141A775BE06FBA65441D917AEB71BA351417E93EB31F9A65441B06A1AB31BA35141FC873830F9A6544187E56CA91AA351413FCA560CF8A65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288435 - 211158
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002B000000666666F6879B5141AE47E1BAA6B05441F6285C1F789B5141333333739BB05441A4703D9A739B5141B81E853BA2B0544152B81E35759B5141EC51B8BEA2B05441AE47E13A739B51417B14AE37A9B05441D7A3702D709B5141295C8FE2A9B05441295C8F926F9B51419A999919A7B0544148E17AD46E9B51413D0AD7F3A7B05441000000806C9B5141F6285C9FA3B05441295C8F02699B51411F85EBB19EB05441295C8F52669B514148E17A349CB0544100000010649B514114AE47019AB0544114AE4731609B5141E17A144E94B0544114AE47115F9B514148E17A1491B05441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000064000000AE47E15A4D9B5141F6285C4F8AB054412A8243CB4D9B514117D77C758BB0544120C4C08D4F9B5141B8288EBF8FB05441EEE94DC6509B5141999F9B6690B05441DEBDD111529B5141BFE2D16F91B05441B25DC7E3529B5141147F7CDC92B05441457F6268539B5141289DCCFB93B05441579CA4DC539B5141C1841B5E95B05441FDB88554549B5141C2BEDD4D96B05441DC973B74559B5141BD60681598B054412B5A101C569B514159B70B7D99B05441338EAA2B569B51411B8A77099AB0544185EB5148589B5141CDCCCCFC9CB05441A450D35B589B5141183D35129DB05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288435 - 371529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002B000000666666F6879B5141AE47E1BAA6B05441F6285C1F789B5141333333739BB05441A4703D9A739B5141B81E853BA2B0544152B81E35759B5141EC51B8BEA2B05441AE47E13A739B51417B14AE37A9B05441D7A3702D709B5141295C8FE2A9B05441295C8F926F9B51419A999919A7B0544148E17AD46E9B51413D0AD7F3A7B05441000000806C9B5141F6285C9FA3B05441295C8F02699B51411F85EBB19EB05441295C8F52669B514148E17A349CB0544100000010649B514114AE47019AB0544114AE4731609B5141E17A144E94B0544114AE47115F9B514148E17A1491B05441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000064000000AE47E15A4D9B5141F6285C4F8AB054412A8243CB4D9B514117D77C758BB0544120C4C08D4F9B5141B8288EBF8FB05441EEE94DC6509B5141999F9B6690B05441DEBDD111529B5141BFE2D16F91B05441B25DC7E3529B5141147F7CDC92B05441457F6268539B5141289DCCFB93B05441579CA4DC539B5141C1841B5E95B05441FDB88554549B5141C2BEDD4D96B05441DC973B74559B5141BD60681598B054412B5A101C569B514159B70B7D99B05441338EAA2B569B51411B8A77099AB0544185EB5148589B5141CDCCCCFC9CB05441A450D35B589B5141183D35129DB05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288473 - 1178206
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000200000032000000666666A66A9A5141A4703D2A0EB0544185EB5168699A51419A9999390EB0544133333393679A5141F6285CEF0DB0544185EB5158679A5141A4703DEA0EB054417B14AE57649A51411F85EB710EB05441F6285C9F649A51411F85EBC10CB05441F6285C3F629A51411F85EB910CB0544166666646629A5141EC51B8BE0BB05441713D0A07619A514114AE47A10BB05441AE47E15A619A5141F6285C4F07B05441F6285C8F659A51417B14AEB707B05441E17A14FE669A5141A4703D7A05B05441000000D0689A5141000000D001B054418FC2F518659A51415C8FC2A500B05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003C000000FD3EB5CC709A5141A41CC09804B05441006072C0709A51412CD7C09404B0544148E17A94699A51418FC2F5E801B054417B14AE77679A5141000000A005B054418FC2F5A8669A51410000003007B0544114AE47C1659A5141EC51B83E09B05441E17A145E659A51411F85EBA10AB05441EC51B81E659A5141D7A3703D0CB054419A9999A9679A51415C8FC2A50CB05441F1A5AB21689A5141E839356609B0544100D34FC5689A51412D63D2BD05B0544104AF8D0C6D9A51410181945106B05441B75D63B06C9A5141503A176608B05441A6AED8ED6D9A51419E8B41C208B05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288473 - 3593679
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000200000032000000666666A66A9A5141A4703D2A0EB0544185EB5168699A51419A9999390EB0544133333393679A5141F6285CEF0DB0544185EB5158679A5141A4703DEA0EB054417B14AE57649A51411F85EB710EB05441F6285C9F649A51411F85EBC10CB05441F6285C3F629A51411F85EB910CB0544166666646629A5141EC51B8BE0BB05441713D0A07619A514114AE47A10BB05441AE47E15A619A5141F6285C4F07B05441F6285C8F659A51417B14AEB707B05441E17A14FE669A5141A4703D7A05B05441000000D0689A5141000000D001B054418FC2F518659A51415C8FC2A500B05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003C000000FD3EB5CC709A5141A41CC09804B05441006072C0709A51412CD7C09404B0544148E17A94699A51418FC2F5E801B054417B14AE77679A5141000000A005B054418FC2F5A8669A51410000003007B0544114AE47C1659A5141EC51B83E09B05441E17A145E659A51411F85EBA10AB05441EC51B81E659A5141D7A3703D0CB054419A9999A9679A51415C8FC2A50CB05441F1A5AB21689A5141E839356609B0544100D34FC5689A51412D63D2BD05B0544104AF8D0C6D9A51410181945106B05441B75D63B06C9A5141503A176608B05441A6AED8ED6D9A51419E8B41C208B05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288556 - 211307
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000370000003D0AD7A304915141E17A14AE43AC54418FC2F588019151413D0AD7F340AC544148E17A7400915141000000F040AC544133333373FF905141000000D03FAC54413D0AD753FD905141B81E855B3DAC5441E17A143EFA905141F6285CDF3AAC54419A9999C9F6905141AE47E11A3BAC544100000010F5905141A4703D7A3BAC5441713D0A07F4905141333333C33CAC54419A999939F690514114AE47013FAC54413D0AD733FB905141713D0AE744AC54413D0AD7C3009151419A99998941AC5441D7A370CD0391514152B81E6544AC5441AE47E1BA04915141713D0A1746AC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000E6EC3F0A3B9151412C2E97392EAC544166666656369151417B14AED72FAC5441AC2214AE369151411DAF009032AC544102A378463C9151410D30A2EE39AC5441F1AFD0FB3D915141A4C250633CAC54413737D2F13E9151410AD654F33EAC54416AABADB73E9151413FF25C5F44AC5441907031025491514137E00B512FAC5441FD7067E6549151413D1D5B6F2EAC5441BFDC521E559151415910DE382EAC54415C8FC2B5589151418FC2F5B82AAC5441EACFEA605A91514169E08A1829AC54413776E0FA5D9151417941C29525AC54415EFB5BBF6B91514191EDDF0A18AC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>288556 - 263226
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000370000003D0AD7A304915141E17A14AE43AC54418FC2F588019151413D0AD7F340AC544148E17A7400915141000000F040AC544133333373FF905141000000D03FAC54413D0AD753FD905141B81E855B3DAC5441E17A143EFA905141F6285CDF3AAC54419A9999C9F6905141AE47E11A3BAC544100000010F5905141A4703D7A3BAC5441713D0A07F4905141333333C33CAC54419A999939F690514114AE47013FAC54413D0AD733FB905141713D0AE744AC54413D0AD7C3009151419A99998941AC5441D7A370CD0391514152B81E6544AC5441AE47E1BA04915141713D0A1746AC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000E6EC3F0A3B9151412C2E97392EAC544166666656369151417B14AED72FAC5441AC2214AE369151411DAF009032AC544102A378463C9151410D30A2EE39AC5441F1AFD0FB3D915141A4C250633CAC54413737D2F13E9151410AD654F33EAC54416AABADB73E9151413FF25C5F44AC5441907031025491514137E00B512FAC5441FD7067E6549151413D1D5B6F2EAC5441BFDC521E559151415910DE382EAC54415C8FC2B5589151418FC2F5B82AAC5441EACFEA605A91514169E08A1829AC54413776E0FA5D9151417941C29525AC54415EFB5BBF6B91514191EDDF0A18AC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>484247 - 214009
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000130000008FC2F5880F1C5141666666564608554152B81E751C1C5141E17A144E39085541F6285C3F161C5141713D0AA736085541A4703D3A141C51415C8FC20535085541E17A141E131C51419A99993933085541C3F528DC121C51417B14AE27320855419A999929121C514114AE47D12F085541713D0AB7131C51411F85EB312A085541000000500F1C5141D7A3700D29085541A4703D9A0D1C5141F6285C5F2A0855413D0AD7F30A1C5141E17A143E2D085541A4703D8A061C5141B81E852B3208554133333333021C51419A9999993908554148E17A54FF1B514185EB51B83D085541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000024000000A4703D8A061C5141B81E852B3208554166138137061C51415C8329B93208554171EE06BD051C514103556B513408554181DAE0CE041C51410571FB5F35085541186A2495031C5141DA3B617037085541B9194D06031C5141E4B74BD7380855415F5BA20C021C51413E76F6D039085541C5E72D04021C51416C9E19DD39085541A3912EFC011C5141FFA694E8390855419FF8F7DF011C514113FB14113A085541322FF0AA011C5141AFE83B1A3B08554199E85CC3001C514127A57DAF3C0855417CCD388BFE1B51410D8FFBB33E085541CF71C509FE1B5141CA93DA553F085541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>484247 - 357131
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000130000008FC2F5880F1C5141666666564608554152B81E751C1C5141E17A144E39085541F6285C3F161C5141713D0AA736085541A4703D3A141C51415C8FC20535085541E17A141E131C51419A99993933085541C3F528DC121C51417B14AE27320855419A999929121C514114AE47D12F085541713D0AB7131C51411F85EB312A085541000000500F1C5141D7A3700D29085541A4703D9A0D1C5141F6285C5F2A0855413D0AD7F30A1C5141E17A143E2D085541A4703D8A061C5141B81E852B3208554133333333021C51419A9999993908554148E17A54FF1B514185EB51B83D085541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000A4703D8A061C5141B81E852B3208554165138137061C51415F8329B93208554171EE06BD051C514103556B51340855417EDAE0CE041C51410A71FB5F35085541156A2495031C5141D73B617037085541B9194D06031C5141E4B74BD7380855415A5BA20C021C51414376F6D039085541C2E72D04021C51416F9E19DD390855411EEB5CE6011C5141CF13E7073A085541A0F8F7DF011C514111FB14113A085541322FF0AA011C5141AFE83B1A3B08554199E85CC3001C514127A57DAF3C0855417ACD388BFE1B51410C8FFBB33E085541CB71C509FE1B5141C893DA553F085541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>289275 - 1008404
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000090000000000006073005141F6285C7FAB34544148E17AA469005141B81E859BAB34544148E17A64700051410AD7A360DA345441666666467400514185EB5148F534544114AE47C184005141B81E85EBF13454413D0AD713A7005141AE47E1EAEA3454413D0AD7A3BF0051417B14AEE7E53454413D0AD7A3C5005141EC51B8AEE43454410000006073005141F6285C7FAB345441
+</a>
+
+<b>
+010600000001000000010300000001000000070000009898EDFC96005141DD1FD340C43454410000006073005141F6285C7FAB34544148E17AA469005141B81E859BAB345441C6BAECD26D0051412E378394C834544169CC5EB96E00514163903ED1CE34544150F2AC9D9E0051415F191447C93454419898EDFC96005141DD1FD340C4345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>289275 - 3828283
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000090000000000006073005141F6285C7FAB34544148E17AA469005141B81E859BAB34544148E17A64700051410AD7A360DA345441666666467400514185EB5148F534544114AE47C184005141B81E85EBF13454413D0AD713A7005141AE47E1EAEA3454413D0AD7A3BF0051417B14AEE7E53454413D0AD7A3C5005141EC51B8AEE43454410000006073005141F6285C7FAB345441
+</a>
+
+<b>
+010600000001000000010300000001000000070000009898EDFC96005141DD1FD340C43454410000006073005141F6285C7FAB34544148E17AA469005141B81E859BAB345441C6BAECD26D0051412E378394C834544169CC5EB96E00514163903ED1CE34544150F2AC9D9E0051415F191447C93454419898EDFC96005141DD1FD340C4345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>289371 - 1008326
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000003300000085EB51F87F035141295C8FA28C325441CDCCCC0C820351415C8FC2E58C325441AE47E1DA94035141666666D68D325441666666E6970351410AD7A3F08D32544185EB514895035141B81E851B8C3254411F85EB8194035141CDCCCC9C8C325441666666F693035141CDCCCC9C8C325441E17A144E9303514114AE47618C325441666666D69203514148E17AA48B32544148E17AF4920351417B14AEE78A325441D7A3709D93035141713D0A178A32544148E17A8495035141E17A146E893254417B14AE77940351415C8FC21586325441D7A370CD960351416666662685325441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001900000014AE47C1430351411F85EB213A32544107B3067544035141371DD9BE3B325441CE6E637B440351415F5417BC3B3254413D0AD753480351415C8FC235443254413519533F51035141ED69DE99403254413FCC699A5A035141C9B6A82A3D3254417FB2983F630351416C50F1083B325441333333B375035141CDCCCCBC3A32544144CDD9B5750351414C288D773A3254418908B5247F03514121A4B7CD383254410750673F88035141AA58B93237325441F219D7CFA1035141C6C6AEB03232544154FA3009A1035141912E33AC2632544114AE472176035141A4703D7A2F325441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>289371 - 3737279
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000003300000085EB51F87F035141295C8FA28C325441CDCCCC0C820351415C8FC2E58C325441AE47E1DA94035141666666D68D325441666666E6970351410AD7A3F08D32544185EB514895035141B81E851B8C3254411F85EB8194035141CDCCCC9C8C325441666666F693035141CDCCCC9C8C325441E17A144E9303514114AE47618C325441666666D69203514148E17AA48B32544148E17AF4920351417B14AEE78A325441D7A3709D93035141713D0A178A32544148E17A8495035141E17A146E893254417B14AE77940351415C8FC21586325441D7A370CD960351416666662685325441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001900000014AE47C1430351411F85EB213A32544107B3067544035141371DD9BE3B325441CE6E637B440351415F5417BC3B3254413D0AD753480351415C8FC235443254413519533F51035141ED69DE99403254413FCC699A5A035141C9B6A82A3D3254417FB2983F630351416C50F1083B325441333333B375035141CDCCCCBC3A32544144CDD9B5750351414C288D773A3254418908B5247F03514121A4B7CD383254410750673F88035141AA58B93237325441F219D7CFA1035141C6C6AEB03232544154FA3009A1035141912E33AC2632544114AE472176035141A4703D7A2F325441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>290039 - 1127807
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000007000000A4703DDAC5395141C3F5284CD54954410AD7A310B0395141B81E85CBB84954410AD7A390AE395141666666C6B6495441F6285C7F88395141A4703D9ACF4954416666664690395141000000E0E5495441713D0A1797395141D7A370ADF5495441A4703DDAC5395141C3F5284CD5495441
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000083650D5DC4395141485DAA66D3495441A1D7A163C4395141FBB21862D34954411276F14CC4395141DA8FA54DD34954410AD7A310B0395141B81E85CBB84954410AD7A390AE395141666666C6B6495441F6285C7F88395141A4703D9ACF4954416666664690395141000000E0E54954413449550696395141207FF13AF3495441B8678844AD395141952D4570E349544186063B3BB4395141972F619ADE495441B0F3FC5BC43951415CBF8D65D349544183650D5DC4395141485DAA66D3495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>290039 - 3331122
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000007000000A4703DDAC5395141C3F5284CD54954410AD7A310B0395141B81E85CBB84954410AD7A390AE395141666666C6B6495441F6285C7F88395141A4703D9ACF4954416666664690395141000000E0E5495441713D0A1797395141D7A370ADF5495441A4703DDAC5395141C3F5284CD5495441
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000083650D5DC4395141485DAA66D3495441A1D7A163C4395141FBB21862D34954411276F14CC4395141DA8FA54DD34954410AD7A310B0395141B81E85CBB84954410AD7A390AE395141666666C6B6495441F6285C7F88395141A4703D9ACF4954416666664690395141000000E0E54954413449550696395141207FF13AF3495441B8678844AD395141952D4570E349544186063B3BB4395141972F619ADE495441B0F3FC5BC43951415CBF8D65D349544183650D5DC4395141485DAA66D3495441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>294619 - 203665
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000240000000AD7A3E0D6C750410AD7A36075455541295C8F12D5C750411F85EB218145554166666616D4C750411F85EBE1804555411F85EBE1D3C7504148E17AD480455541AE47E1EACEC750413D0AD7039A45554114AE47E1D0C75041B81E857B9A4555419A9999E9D3C750413D0AD7339B4555415C8FC2C5D4C75041D7A3706D9B455541AE47E10AD6C75041CDCCCCBC9B4555419A999969D8C7504148E17A548F455541713D0AD7DAC75041B81E859B824555415C8FC275DDC75041713D0A478345554152B81E65DAC7504148E17A3491455541AE47E1DAD8C75041C3F5286C9C455541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000002B73912AEAC7504189D6E1F27945554187E2EAE1EAC75041D3DED6237A455541007F86CBEDC7504133FE9AC96C45554151657B49EBC750410173836F6C455541B485F648EAC750411A3A854B6C455541028D72BDE7C750413578294C79455541A4703D6AE8C75041A4703D7A79455541EFBA9D90E9C750419DC73BCA794555412FB4A390E9C7504140453CCA79455541C3A470EDE9C75041BE098FE2794555412B73912AEAC7504189D6E1F279455541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>294619 - 203680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000240000000AD7A3E0D6C750410AD7A36075455541295C8F12D5C750411F85EB218145554166666616D4C750411F85EBE1804555411F85EBE1D3C7504148E17AD480455541AE47E1EACEC750413D0AD7039A45554114AE47E1D0C75041B81E857B9A4555419A9999E9D3C750413D0AD7339B4555415C8FC2C5D4C75041D7A3706D9B455541AE47E10AD6C75041CDCCCCBC9B4555419A999969D8C7504148E17A548F455541713D0AD7DAC75041B81E859B824555415C8FC275DDC75041713D0A478345554152B81E65DAC7504148E17A3491455541AE47E1DAD8C75041C3F5286C9C455541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001600000086C58F12D5C75041F4D6E821814555410AD7A3E0D6C750410AD7A3607545554148E17AA4D8C75041F6285C7F69455541AE47E10AD9C75041EC51B8CE66455541A5AAEDC6D3C75041748A9927664555411B4E6626D0C750419AA87BB4654555415C8FC255CFC7504148E17A646C4555417F4ABD1DCFC75041272FA9A46D455541A49FD7B3CEC75041589AEB01704555418B0E5298CDC7504180DCB88E75455541280E0170CCC75041D7885C6F7B4555418656864BCCC75041E4ED52287C455541D89EF608CCC75041753134737D4555419CA218E7CBC750414AF8DF167E455541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888517 - 2961624
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000040000000103000000010000003E000000295C8FE2989B514152B81E85AB8C5441E968D00F989B514161D6E3C4A78C5441D7874E9F979B51411262992FA38C5441A334DF3E979B51410922406B9F8C54410DF12DC3979B51411FBDE25C9F8C544152B81E15969B5141D7A3707D9F8C544166666636969B514114AE4741A28C544152B81E25979B514114AE4731A98C544152B81E95979B5141EC51B81EAB8C5441EC51B83E9C9B5141F6285CEFB18C54413D0AD793A29B5141AE47E17AB98C54411F85EB91A59B5141713D0A37BD8C54413D0AD743A69B514100000070BE8C544114AE4711A99B5141D7A3705DC28C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003F00000070A05108A19B51413C063B5B9E8C54410DE3319AA29B5141D7C59C1E9E8C544100000080A59B5141EC51B8AE9D8C5441AE47E1EAAB9B51419A9999799C8C54418FC2F5F8B59B5141000000409A8C5441BF58EFBAC09B5141BCF7CE4D988C54411F85EBD1C39B5141EC51B8BE978C544148E17A04D59B5141B81E854B958C5441D7A3708DE99B5141000000F0928C5441295C8FF2F39B5141AE47E14A928C54413A9548C3F59B5141E8052B45928C544185EB5108F99B5141AE47E13A928C544100000070029C514114AE47E1928C54411F85EB310B9C514152B81E65948C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>888517 - 3325956
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000040000000103000000010000003E000000295C8FE2989B514152B81E85AB8C5441E968D00F989B514161D6E3C4A78C5441D7874E9F979B51411262992FA38C5441A334DF3E979B51410922406B9F8C54410DF12DC3979B51411FBDE25C9F8C544152B81E15969B5141D7A3707D9F8C544166666636969B514114AE4741A28C544152B81E25979B514114AE4731A98C544152B81E95979B5141EC51B81EAB8C5441EC51B83E9C9B5141F6285CEFB18C54413D0AD793A29B5141AE47E17AB98C54411F85EB91A59B5141713D0A37BD8C54413D0AD743A69B514100000070BE8C544114AE4711A99B5141D7A3705DC28C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003F00000070A05108A19B51413C063B5B9E8C54410DE3319AA29B5141D7C59C1E9E8C544100000080A59B5141EC51B8AE9D8C5441AE47E1EAAB9B51419A9999799C8C54418FC2F5F8B59B5141000000409A8C5441BF58EFBAC09B5141BCF7CE4D988C54411F85EBD1C39B5141EC51B8BE978C544148E17A04D59B5141B81E854B958C5441D7A3708DE99B5141000000F0928C5441295C8FF2F39B5141AE47E14A928C54413A9548C3F59B5141E8052B45928C544185EB5108F99B5141AE47E13A928C544100000070029C514114AE47E1928C54411F85EB310B9C514152B81E65948C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>295154 - 203680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001000000085EB5198CDC75041EC51B88E7545554100000070CCC75041F6285C6F7B455541B81E854BCCC7504185EB51287C4555418FC2F508CCC75041333333737D4555413D0AD7C3CBC7504114AE47C17E455541AE47E1BACFC7504148E17AC47F4555411F85EBE1D3C7504148E17AD48045554166666616D4C750411F85EBE180455541295C8F12D5C750411F85EB21814555410AD7A3E0D6C750410AD7A3607545554148E17AA4D8C75041F6285C7F69455541AE47E10AD9C75041EC51B8CE6645554166666626D0C7504148E17AB4654555415C8FC255CFC7504148E17A646C455541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001600000086C58F12D5C75041F4D6E821814555410AD7A3E0D6C750410AD7A3607545554148E17AA4D8C75041F6285C7F69455541AE47E10AD9C75041EC51B8CE66455541A5AAEDC6D3C75041748A9927664555411B4E6626D0C750419AA87BB4654555415C8FC255CFC7504148E17A646C4555417F4ABD1DCFC75041272FA9A46D455541A49FD7B3CEC75041589AEB01704555418B0E5298CDC7504180DCB88E75455541280E0170CCC75041D7885C6F7B4555418656864BCCC75041E4ED52287C455541D89EF608CCC75041753134737D4555419CA218E7CBC750414AF8DF167E455541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>295291 - 203581
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000008000000E17A142E7CC750417B14AEA7CA4555419A9999A985C750411F85EB91CC455541295C8F628EC7504100000060CE455541000000108FC750417B14AE87CE455541CDCCCC5C8EC75041B81E85CBCA455541B81E85CB7CC75041AE47E1DAC5455541EC51B89E7BC7504185EB5168CA455541E17A142E7CC750417B14AEA7CA455541
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000004225A7517CC750411CD60CB3C7455541EC51B89E7BC7504185EB5168CA455541E17A142E7CC750417B14AEA7CA4555419A9999A985C750411F85EB91CC455541251F50988AC750418D8B3897CD455541791690628EC7504116A8FF5FCE455541CAEA0DA78EC750419A98AB6FCE4555411CFFFE0F8FC75041B5D9AD87CE455541D234B4B68EC750419AC038ABCC455541ADD5CC5C8EC75041134E85CBCA455541CE52EC568BC7504165ADE7F1C945554163D885CB7CC75041E47BE1DAC54555414225A7517CC750411CD60CB3C7455541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>295291 - 381533
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000008000000E17A142E7CC750417B14AEA7CA4555419A9999A985C750411F85EB91CC455541295C8F628EC7504100000060CE455541000000108FC750417B14AE87CE455541CDCCCC5C8EC75041B81E85CBCA455541B81E85CB7CC75041AE47E1DAC5455541EC51B89E7BC7504185EB5168CA455541E17A142E7CC750417B14AEA7CA455541
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000004225A7517CC750411CD60CB3C7455541EC51B89E7BC7504185EB5168CA455541E17A142E7CC750417B14AEA7CA4555419A9999A985C750411F85EB91CC455541251F50988AC750418D8B3897CD455541791690628EC7504116A8FF5FCE455541CAEA0DA78EC750419A98AB6FCE4555411CFFFE0F8FC75041B5D9AD87CE455541D234B4B68EC750419AC038ABCC455541ADD5CC5C8EC75041134E85CBCA455541D052EC568BC7504166ADE7F1C945554163D885CB7CC75041E47BE1DAC54555414225A7517CC750411CD60CB3C7455541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>310161 - 2804322
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000041000000295C8F22470F51410AD7A3B0E4475541333333B3450F5141666666B6E3475541E17A14DE3B0F514133333333E04755410AD7A3F0310F51410AD7A3B0DC475541F6285CEF310F5141AE47E19ADD475541B81E85CB320F5141F6285C2FE3475541E17A142E330F5141000000B0E547554114AE4781350F5141F6285CAFE94755413D0AD7E3370F5141D7A3703DED47554148E17A74380F5141D7A3701DEF4755419A9999D9380F5141E17A145EF8475541C3F528FC370F5141F6285CEFFD475541E17A146E370F514100000020024855410AD7A320390F5141F6285CEF06485541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000640000000AD7A3F0310F51410AD7A3B0DC475541E17A14DE3B0F514133333333E0475541333333B3450F5141666666B6E3475541295C8F22470F51410AD7A3B0E447554185EB51C84C0F514166666606E94755410CF4326E500F5141A70CD60AEC475541295C8FA2500F51413D0AD713EC475541B40E99F3500F5141B6812C79EC475541867E60B4540F51414B15DC93EF475541295C8F42550F5141E17A14BEEF475541F60B428E550F5141462D1348F0475541177C6B25580F5141D4FB976CF2475541E17A14BE580F514100000040F2475541AE47E1BA590F5141000000B0F1475541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>299110 - 36908
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001500000014AE47816D0D5141AE47E10AA6EB54413D0AD7736C0D514114AE4741AAEB5441EC51B8CE6A0D51410AD7A3E0ABEB54411F85EBE1650D514185EB51E8B0EB54418FC2F568640D5141F6285C6FB3EB544185EB5148600D5141A4703D6ABDEB544148E17AB4680D5141A4703D6ABDEB544114AE4761710D5141F6285C3FBDEB5441295C8FA2790D51415C8FC295BDEB54410AD7A300810D514114AE4701BEEB5441295C8F82810D51411F85EB31BCEB544185EB51D8810D5141D7A370ADB6EB5441B81E85FB820D5141295C8FC2AAEB54413D0AD733780D514185EB51D8AAEB5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000130000007824E2AF750D5141F0413EA7AAEB54413D0AD733780D514185EB51D8AAEB5441E17A14EE790D5141A4703DBAA7EB5441295C8FA27D0D5141E17A141EA5EB5441E453ED967D0D514195282A69A0EB54419A9999E97B0D5141F6285C0FA0EB54419FB6BEAF790D51417FC72A6CA0EB54418B48B00A770D5141F15D3ADEA0EB544172FDF7BD750D51414F11D8AFA3EB54414BF69B24750D514152B7540FA5EB544142597EE9750D5141B0C44540A5EB544155EA1BC5750D514147972C3CA6EB54419F3825C2750D51413619A654A6EB5441A15A22BB750D5141589C8C8EA6EB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>299110 - 77472
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001500000014AE47816D0D5141AE47E10AA6EB54413D0AD7736C0D514114AE4741AAEB5441EC51B8CE6A0D51410AD7A3E0ABEB54411F85EBE1650D514185EB51E8B0EB54418FC2F568640D5141F6285C6FB3EB544185EB5148600D5141A4703D6ABDEB544148E17AB4680D5141A4703D6ABDEB544114AE4761710D5141F6285C3FBDEB5441295C8FA2790D51415C8FC295BDEB54410AD7A300810D514114AE4701BEEB5441295C8F82810D51411F85EB31BCEB544185EB51D8810D5141D7A370ADB6EB5441B81E85FB820D5141295C8FC2AAEB54413D0AD733780D514185EB51D8AAEB5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000130000007824E2AF750D5141F0413EA7AAEB54413D0AD733780D514185EB51D8AAEB5441E17A14EE790D5141A4703DBAA7EB5441295C8FA27D0D5141E17A141EA5EB5441E453ED967D0D514195282A69A0EB54419A9999E97B0D5141F6285C0FA0EB54419FB6BEAF790D51417FC72A6CA0EB54418B48B00A770D5141F15D3ADEA0EB544172FDF7BD750D51414F11D8AFA3EB54414BF69B24750D514152B7540FA5EB544142597EE9750D5141B0C44540A5EB544155EA1BC5750D514147972C3CA6EB54419F3825C2750D51413619A654A6EB5441A15A22BB750D5141589C8C8EA6EB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>623806 - 4123961
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D00000085EB51F8C2E650413D0AD7D3FE015541B81E856BC2E65041713D0A770702554166666696C7E65041C3F5288C07025541713D0AD7C7E650411F85EB210E02554152B81ED5E7E650419A9999790C02554133333303E8E6504133333343090255419A999949E8E65041F6285C5F040255415C8FC295E8E650411F85EBD10002554100000080E9E65041F6285CFFFD015541EC51B8DEECE65041AE47E1DAF6015541F6285C8FEFE6504185EB5128F1015541666666A6F0E65041666666B6EF0155417B14AE07F1E6504152B81E35EF015541E17A14DEF2E65041295C8FD2ED015541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000225CDC78E7E650414341E98D0B025541D6ACF2F5E7E65041A345FE2D090255417773D419E8E65041BBE0D7C8040255418A515B2AE8E65041B68E9CC20202554190C1A76AE8E650415C1F9FE5000255410C68956AE9E65041D73DEBA9FD0155415C743428EAE6504184473C02FC0155418CBD3EB1EAE65041CD60B0C0FA01554102BB015EECE650412A2CA8D2F601554139E96F68ECE650419DA8D6D4F601554135C03841EDE65041510F8290F40155418645836BEDE6504122488E99F4015541A7825504F0E65041A0CED5CAEF015541A5D2DDD9EFE650413B6EEBBAEF015541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455049 - 454997
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001800000047B708B3CABE504176C76B823EC6544142F7EDE6CBBE50417C378D013DC6544141D73E1ACCBE50418767C94C3AC6544141D73E1ACCBE50418C5FB82539C65441469759E6CABE504196A719B136C654417E1F68D1BCBE50419E1FC5BC34C65441B7A776BCAEBE5041A41F3E2233C65441BEAF79AEACBE50419E67ADE233C65441C21711A1ABBE50419BAF1CA334C65441CBE73F86A9BE50418B5FB82539C65441C9873220AABE50417D77EB9A3CC65441BEE74DBBACBE5041799721023EC65441B06F294AB0BE504176870DE93EC65441A7D7CE71B2BE5041764F39DC3EC65441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000330000005D6F0423C5BE504167F7C33742C6544168D7147BC2BE5041693722D141C65441A3445388C2BE50416C7BF9B941C654414096F382C2BE50416CEBF5B841C65441C3F5287CC1BE504114AE476143C65441713D0A37C3BE5041EC51B8EE43C6544166666646C3BE5041EC51B88E43C65441B81E85CBC8BE5041D7A3703D42C6544114AE47B1C9BE504114AE470141C654418FC2F588CCBE50418FC2F5E83DC65441CDCCCC2CCEBE5041713D0A673EC65441F6285C8FCDBE50411F85EBA13FC654419A999989CDBE5041B81E851B41C65441A4703DFACEBE5041333333C340C65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>624262 - 1433369
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000017000000A4703DBA10FE5041EC51B84EA50755411F85EB910EFE50417B14AE87A9075541F6285CDF0CFE504114AE4761AD075541CDCCCCBC0BFE5041AE47E14AB007554114AE47810EFE5041AE47E12AB007554114AE475110FE5041E17A143EB0075541C3F5282C14FE5041D7A3702DB1075541333333B318FE504166666676B20755411F85EB6120FE5041EC51B87EB4075541AE47E18A25FE5041AE47E1FAB50755410AD7A33028FE5041713D0AD7B60755413D0AD7332DFE5041333333D3B8075541D7A370CD30FE5041295C8F42B4075541A4703D8A31FE5041CDCCCCFCB2075541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000045000000BB2A465732FE504138895AC1A40755411AD05CF114FE50416314DF0B9E07554153DB06F114FE5041A156060C9E075541E39DFCB914FE50413AF09F059E075541B6AB126F12FE5041108C6E57A2075541A4703DBA10FE5041EC51B84EA50755411F85EB910EFE50417B14AE87A9075541AD197DCC0CFE5041F2F8F962AD075541DAECA0840BFE50416A3C204AB0075541CDCCCCBC0BFE5041AE47E14AB007554114AE47810EFE5041AE47E12AB007554114AE475110FE5041E17A143EB0075541C3F5282C14FE5041D7A3702DB1075541333333B318FE504166666676B2075541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>624262 - 3529499
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000017000000A4703DBA10FE5041EC51B84EA50755411F85EB910EFE50417B14AE87A9075541F6285CDF0CFE504114AE4761AD075541CDCCCCBC0BFE5041AE47E14AB007554114AE47810EFE5041AE47E12AB007554114AE475110FE5041E17A143EB0075541C3F5282C14FE5041D7A3702DB1075541333333B318FE504166666676B20755411F85EB6120FE5041EC51B87EB4075541AE47E18A25FE5041AE47E1FAB50755410AD7A33028FE5041713D0AD7B60755413D0AD7332DFE5041333333D3B8075541D7A370CD30FE5041295C8F42B4075541A4703D8A31FE5041CDCCCCFCB2075541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000045000000BB2A465732FE504138895AC1A40755411AD05CF114FE50416314DF0B9E07554153DB06F114FE5041A156060C9E075541E39DFCB914FE50413AF09F059E075541B6AB126F12FE5041108C6E57A2075541A4703DBA10FE5041EC51B84EA50755411F85EB910EFE50417B14AE87A9075541AD197DCC0CFE5041F2F8F962AD075541DAECA0840BFE50416A3C204AB0075541CDCCCCBC0BFE5041AE47E14AB007554114AE47810EFE5041AE47E12AB007554114AE475110FE5041E17A143EB0075541C3F5282C14FE5041D7A3702DB1075541333333B318FE504166666676B2075541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>301609 - 35509
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000015000000CDCCCC6C613F5141F6285CEF7F26554114AE47B1703F514185EB51787A265541AE47E1AA753F51418FC2F548782655419A9999497A3F5141A4703DAA75265541D7A3707D7C3F5141D7A370CD73265541C3F5283C7C3F5141C3F5285C7326554148E17A14793F5141713D0A87742655413D0AD783733F5141E17A149E75265541D7A3702D6C3F514152B81EB576265541000000F0673F51413D0AD75377265541713D0A57633F51419A999979782655418FC2F5285C3F5141333333337A2655411F85EB11593F5141A4703DBA7A265541E17A141E503F5141333333E37D265541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000024000000EE1ECE1E733F5141B0C316AD752655410797CC6F723F51419E1E16C775265541C21FFFEC703F5141CDF38B0076265541F7B9EF42703F51419138CF1976265541D1D0FA076F3F5141D4725A4C76265541F203D333683F5141C61BEC49772655411B982099633F51414AE91A6978265541713D0A57633F51419A99997978265541F67EC6A85D3F514165F3FCD679265541063434615C3F5141C8F6AF257A2655418FC2F5285C3F5141333333337A26554148B5210D5A3F5141BCEB5A8F7A265541BF247B89583F5141F23F66EA7A26554110ED0F50563F51412EB463B37B265541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>301609 - 74602
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000015000000CDCCCC6C613F5141F6285CEF7F26554114AE47B1703F514185EB51787A265541AE47E1AA753F51418FC2F548782655419A9999497A3F5141A4703DAA75265541D7A3707D7C3F5141D7A370CD73265541C3F5283C7C3F5141C3F5285C7326554148E17A14793F5141713D0A87742655413D0AD783733F5141E17A149E75265541D7A3702D6C3F514152B81EB576265541000000F0673F51413D0AD75377265541713D0A57633F51419A999979782655418FC2F5285C3F5141333333337A2655411F85EB11593F5141A4703DBA7A265541E17A141E503F5141333333E37D265541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000024000000EE1ECE1E733F5141B0C316AD752655410797CC6F723F51419E1E16C775265541C21FFFEC703F5141CDF38B0076265541F7B9EF42703F51419138CF1976265541D1D0FA076F3F5141D4725A4C76265541F203D333683F5141C61BEC49772655411B982099633F51414AE91A6978265541713D0A57633F51419A99997978265541F67EC6A85D3F514165F3FCD679265541063434615C3F5141C8F6AF257A2655418FC2F5285C3F5141333333337A26554148B5210D5A3F5141BCEB5A8F7A265541BF247B89583F5141F23F66EA7A26554110ED0F50563F51412EB463B37B265541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976900 - 59719
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000270000001F85EB112607514148E17A54F7765441EC51B83E28075141C3F5288CFA76544148E17A542A075141333333D3FC765441E17A148E2D075141D7A370CDFF765441333333C32F0751415C8FC2B501775441295C8F0234075141C3F5282C00775441A4703DAA3807514166666636FE7654418FC2F5083F0751418FC2F5A8FA7654413D0AD723460751410AD7A320F6765441D7A3707D4D075141B81E85FBF07654410AD7A31056075141713D0AB7EB765441E17A14AE5C0751413D0AD733E67654417B14AE0764075141295C8F52E07654410AD7A370680751413D0AD703DD765441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A000000BEB57E6430075141FAF45F7B01775441A4703DAA3807514166666636FE7654418FC2F5083F0751418FC2F5A8FA7654413D0AD723460751410AD7A320F6765441D7A3707D4D075141B81E85FBF07654410AD7A31056075141713D0AB7EB765441E17A14AE5C0751413D0AD733E67654417B14AE0764075141295C8F52E07654410AD7A370680751413D0AD703DD765441000000A06B07514152B81EB5D9765441A4703DCA6F075141F6285CAFD4765441AE47E12A710751413D0AD783D4765441A4703D4A7C075141295C8F02C8765441E17A140E88075141CDCCCCCCBA765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960633 - 1293786
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003B00000043F60A6AA86D51417177132DDFD2544137EFAFA5A86D51417DAA1198DFD2544189503C2BB76D5141E6EE36F9FAD25441714A2CD1B86D5141822B4080FED25441FBC0284CBA6D514154E1A98900D35441E1BB0999BB6D514131A30CD1FED254418605F0D4BD6D51419C967A82FAD25441F068CEE4BD6D514132339C72FAD2544194F6695FC06D5141876ED5B9F5D2544186E32108C16D5141B0ED7FDEF4D254415787B64FC16D514188B1855EF4D254411C2B1C51B26D5141507BD9B0D8D25441713D0AB7AE6D514152B81EB5D2D25441DB7F155FAD6D51411632646ECFD25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A000000F93D45AAAC6D514136C730BED3D254413D7C6942AE6D5141F9FFA7AED1D254418602D672AE6D5141A95CCE0ED2D25441D97F155FAD6D51411932646ECFD25441C24046FDAC6D514175FF9C58CED25441AE1C4C77AB6D5141AA205025CCD25441FB67F80AAB6D5141E94D0174CAD25441D10D073CA76D514196C3179DC4D25441B4164D36AB6D5141C22555BFBFD25441A3176083A96D5141B01470BFBDD25441F6EAA941A86D5141E8E9B12CBBD2544189D6C64FA66D5141D0A99450B7D25441074EEE2FA46D51410A805215B4D254410EC55764A26D5141728384C7B1D25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960633 - 3350232
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003B00000043F60A6AA86D51417177132DDFD2544137EFAFA5A86D51417DAA1198DFD2544189503C2BB76D5141E6EE36F9FAD25441714A2CD1B86D5141822B4080FED25441FBC0284CBA6D514154E1A98900D35441E1BB0999BB6D514131A30CD1FED254418605F0D4BD6D51419C967A82FAD25441F068CEE4BD6D514132339C72FAD2544194F6695FC06D5141876ED5B9F5D2544186E32108C16D5141B0ED7FDEF4D254415787B64FC16D514188B1855EF4D254411C2B1C51B26D5141507BD9B0D8D25441713D0AB7AE6D514152B81EB5D2D25441DB7F155FAD6D51411632646ECFD25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A000000F93D45AAAC6D514136C730BED3D254413D7C6942AE6D5141F9FFA7AED1D254418602D672AE6D5141A95CCE0ED2D25441D97F155FAD6D51411932646ECFD25441C24046FDAC6D514175FF9C58CED25441AE1C4C77AB6D5141AA205025CCD25441FB67F80AAB6D5141E94D0174CAD25441D10D073CA76D514196C3179DC4D25441B4164D36AB6D5141C22555BFBFD25441A3176083A96D5141B01470BFBDD25441F6EAA941A86D5141E8E9B12CBBD2544189D6C64FA66D5141D0A99450B7D25441074EEE2FA46D51410A805215B4D254410EC55764A26D5141728384C7B1D25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>891834 - 2945182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000A4703D1ABE01514166666606D2E15441B81E852BC10151418FC2F558D3E154419A9999F9C50151417B14AE17D5E1544133333363C7015141F6285C7FD5E154410AD7A310CA01514166666646CEE1544148E17AB4CE0151411F85EB71C0E154415C8FC2B5D001514166666676B7E15441EC51B82ECB015141713D0AA7B5E1544152B81E75C7015141B81E854BB4E154413D0AD713C60151415C8FC2B5B3E154417B14AE57C301514152B81E65B2E15441F6285CFFBC0151410AD7A310AFE15441F6285C3FAF0151413D0AD7D3C9E154417B14AEF7B30151411F85EB91CCE15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000AE47E1AAC6015141295C8FB2D7E1544187CD822BC8015141C759750ED8E15441F3BB14F8C90151418E806C89D8E15441A616AC07CA0151418BC5EC5DD8E15441A3E60E21CA0151416C531917D8E154419AE11F71CA015141F640E114D7E15441965C3CC0CA015141A2B5BD15D6E154410901766ACB015141827BF3ECD3E15441E91147FFCC0151411C4C37C1CEE1544108BF0949CE015141926FE98ACAE15441DC9FC286CF015141C8EFF87BC6E15441388AEA15D001514180A5DBA7C4E15441ACDCF373D0015141A9026C6CC3E15441ACDC5EDAD0015141AA821600C2E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>891834 - 3447612
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000A4703D1ABE01514166666606D2E15441B81E852BC10151418FC2F558D3E154419A9999F9C50151417B14AE17D5E1544133333363C7015141F6285C7FD5E154410AD7A310CA01514166666646CEE1544148E17AB4CE0151411F85EB71C0E154415C8FC2B5D001514166666676B7E15441EC51B82ECB015141713D0AA7B5E1544152B81E75C7015141B81E854BB4E154413D0AD713C60151415C8FC2B5B3E154417B14AE57C301514152B81E65B2E15441F6285CFFBC0151410AD7A310AFE15441F6285C3FAF0151413D0AD7D3C9E154417B14AEF7B30151411F85EB91CCE15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000AE47E1AAC6015141295C8FB2D7E1544187CD822BC8015141C759750ED8E15441F3BB14F8C90151418E806C89D8E15441A616AC07CA0151418BC5EC5DD8E15441A3E60E21CA0151416C531917D8E154419AE11F71CA015141F640E114D7E15441965C3CC0CA015141A2B5BD15D6E154410901766ACB015141827BF3ECD3E15441E91147FFCC0151411C4C37C1CEE1544108BF0949CE015141926FE98ACAE15441DC9FC286CF015141C8EFF87BC6E15441388AEA15D001514180A5DBA7C4E15441ACDCF373D0015141A9026C6CC3E15441ACDC5EDAD0015141AA821600C2E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>891932 - 405789
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000004E000000333333F3CBEF5041D7A3704DD1E154411F85EB91CCEF5041C3F5289CD0E15441C3F528FCCCEF5041713D0A07D0E1544114AE4711CDEF5041C3F528DCCFE15441AE47E15AB8EF5041713D0A67C0E154415C8FC24590EF5041F6285C7FA2E15441295C8F4280EF50415C8FC2F5B7E15441F6285C2F63EF5041CDCCCCECDEE15441AE47E11A46EF5041666666E605E254411F85EBA14AEF504148E17A4409E25441D7A3706D4BEF5041AE47E17A08E25441CDCCCCEC60EF50417B14AE97EBE15441F6285C4F63EF50415C8FC245E8E15441A4703D6A6BEF504185EB5148DEE15441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000078000000885D9167CCEF50417FF276CBD0E15441DD7905B6CCEF504121D17C69D0E15441FE033611CDEF5041F7D24CDCCFE15441AE5E54D6CBEF5041A6DC4BF1CEE154419A6C51EBC7EF50411663B904CCE15441AE47E15AB8EF5041713D0A67C0E154417C2B9021A7EF5041363CC15BB3E15441D92E285BA6EF5041ED2768C9B2E15441F2D97241A6EF5041FECE19E6B2E154415C8FC24590EF5041F6285C7FA2E15441295C8F4280EF50415C8FC2F5B7E15441B79207F076EF504143831474C4E154412326E09A69EF504190183C52D6E15441DCFB1D005AEF50411E9B183CEBE15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235975 - 235971
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000110000001FBA177521F950415DA28E2F212C544107BA177521F9504103A28E2F212C5441A47F2B6F21F9504156F1C91D212C54418E60DA15F9F85041B6BBD0AF302C5441465BA02DE7F85041A0DF410B382C544120EDF74BE7F850413B779C4E382C5441EC73C3FFE7F850413893F1323B2C5441CDCCCCFCE7F8504148E17A343B2C544119CC1D0AE8F85041337A325A3B2C5441E85532D6E9F8504153CAAD70402C544168C39321FAF85041A5AB7CD7392C5441D0A30EFD06F950416C39EEBF342C5441EA14503612F950414A0BC050302C5441D15E5AC919F950415EB27A4D2D2C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000040000001500000052B81E852CF95041E17A149E182C54410AD7A3902AF95041295C8FE2122C5441A4703DDA25F950410AD7A3D0142C5441713D0AD71DF95041000000E0172C544148E17A1413F95041D7A370AD1B2C54418FC2F5480BF95041F6285C9F1E2C5441295C8F4200F9504185EB5108232C54411F85EB01EFF8504100000060292C5441A4703DBAECF850419A9999592A2C5441666666C6EAF850417B14AE872B2C5441333333B3E4F85041D7A370AD302C5441713D0A57E4F850419A9999F9332C54410AD7A390E4F850415C8FC265382C54416FB1A29BE5F85041F4988D2D3F2C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235975 - 1157879
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000110000001FBA177521F950415DA28E2F212C544107BA177521F9504103A28E2F212C5441A47F2B6F21F9504156F1C91D212C54418E60DA15F9F85041B6BBD0AF302C5441465BA02DE7F85041A0DF410B382C544120EDF74BE7F850413B779C4E382C5441EC73C3FFE7F850413893F1323B2C5441CDCCCCFCE7F8504148E17A343B2C544119CC1D0AE8F85041337A325A3B2C5441E85532D6E9F8504153CAAD70402C544168C39321FAF85041A5AB7CD7392C5441D0A30EFD06F950416C39EEBF342C5441EA14503612F950414A0BC050302C5441D15E5AC919F950415EB27A4D2D2C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000040000001500000052B81E852CF95041E17A149E182C54410AD7A3902AF95041295C8FE2122C5441A4703DDA25F950410AD7A3D0142C5441713D0AD71DF95041000000E0172C544148E17A1413F95041D7A370AD1B2C54418FC2F5480BF95041F6285C9F1E2C5441295C8F4200F9504185EB5108232C54411F85EB01EFF8504100000060292C5441A4703DBAECF850419A9999592A2C5441666666C6EAF850417B14AE872B2C5441333333B3E4F85041D7A370AD302C5441713D0A57E4F850419A9999F9332C54410AD7A390E4F850415C8FC265382C544170B1A29BE5F85041F0988D2D3F2C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>235975 - 5255529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000110000001FBA177521F950415DA28E2F212C544107BA177521F9504103A28E2F212C5441A47F2B6F21F9504156F1C91D212C54418E60DA15F9F85041B6BBD0AF302C5441465BA02DE7F85041A0DF410B382C544120EDF74BE7F850413B779C4E382C5441EC73C3FFE7F850413893F1323B2C5441CDCCCCFCE7F8504148E17A343B2C544119CC1D0AE8F85041337A325A3B2C5441E85532D6E9F8504153CAAD70402C544168C39321FAF85041A5AB7CD7392C5441D0A30EFD06F950416C39EEBF342C5441EA14503612F950414A0BC050302C5441D15E5AC919F950415EB27A4D2D2C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000040000001500000052B81E852CF95041E17A149E182C54410AD7A3902AF95041295C8FE2122C5441A4703DDA25F950410AD7A3D0142C5441713D0AD71DF95041000000E0172C544148E17A1413F95041D7A370AD1B2C54418FC2F5480BF95041F6285C9F1E2C5441295C8F4200F9504185EB5108232C54411F85EB01EFF8504100000060292C5441A4703DBAECF850419A9999592A2C5441666666C6EAF850417B14AE872B2C5441333333B3E4F85041D7A370AD302C5441713D0A57E4F850419A9999F9332C54410AD7A390E4F850415C8FC265382C544170B1A29BE5F85041F0988D2D3F2C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>880102 - 53370
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000007000000C3F5280C173F51410AD7A3A05C46544114AE4731153F5141295C8F4257465441E17A145E0E3F5141666666265E465441CDCCCCAC073F5141EC51B89E68465441C3F528BC083F5141000000D06946544148E17A640A3F5141713D0A3769465441C3F5280C173F51410AD7A3A05C465441
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000000A8B05610A3F51417B63493869465441F5BDBF640A3F5141CBBEC53669465441C3F5280C173F51410AD7A3A05C46544128E63530153F514196BFA343574654410C115D67133F5141D76AD610594654412A8ADE5F0E3F5141C7501F275E4654419AB68A2E093F514156FF334B664654417B1FE12E083F51412F0938D367465441FF0740AE073F5141458D739C6846544151844F94083F514160602BA369465441C3F528BC083F5141000000D0694654410A8B05610A3F51417B63493869465441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498274 - 1010394
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000003E000000F1328B80B707514189AEFA20F13454416B01B25AB7075141A906E6E1F03454411682E3F0B407514179F4A389F03454412E8B041DB5075141E7BDDD80EF3454415C8FC265B5075141AE47E1EAE8345441AE47E1DAA607514166666666E8345441295C8F02A40751413D0AD7F3E9345441AE47E17A9D0751418FC2F518E9345441E17A148E95075141F6285C3FE9345441D7A3707D900751411F85EBC1E9345441A4703D4A8C075141CDCCCCECEC3454416666661688075141C3F528CCEC345441295C8FB285075141F6285C2FED345441295C8FC285075141C3F5289CF0345441 [...]
+</a>
+
+<b>
+01060000000100000001030000000300000091000000F18081BF60075141BDD75CB1E83454414966F3E362075141FF7551E9ED345441AA35E49065075141E357AA94F13454413462A820690751416D17A067F73454416A053ABD6B075141E8DAD5CFFB345441FC4D300D6E075141A1C2CBA5FF345441E4A218A86F075141C3FADAC7023554413E4D395870075141EBAD60FF04355441B2AB7D2F710751418E99BC2108355441D2A1B8CC720751413EC55689093554419BF36115770751416E2E5FAC0935544195E2FAFF770751415AB3DDB3093554412B0AE6ED7A075141EED8DFDF0835544146118A857D075141D5B4C71E08355441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498274 - 3298612
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000003E000000F1328B80B707514189AEFA20F13454416B01B25AB7075141A906E6E1F03454411682E3F0B407514179F4A389F03454412E8B041DB5075141E7BDDD80EF3454415C8FC265B5075141AE47E1EAE8345441AE47E1DAA607514166666666E8345441295C8F02A40751413D0AD7F3E9345441AE47E17A9D0751418FC2F518E9345441E17A148E95075141F6285C3FE9345441D7A3707D900751411F85EBC1E9345441A4703D4A8C075141CDCCCCECEC3454416666661688075141C3F528CCEC345441295C8FB285075141F6285C2FED345441295C8FC285075141C3F5289CF0345441 [...]
+</a>
+
+<b>
+01060000000100000001030000000300000091000000F18081BF60075141BDD75CB1E83454414966F3E362075141FF7551E9ED345441AA35E49065075141E357AA94F13454413462A820690751416D17A067F73454416A053ABD6B075141E8DAD5CFFB345441FC4D300D6E075141A1C2CBA5FF345441E4A218A86F075141C3FADAC7023554413E4D395870075141EBAD60FF04355441B2AB7D2F710751418E99BC2108355441D2A1B8CC720751413EC55689093554419BF36115770751416E2E5FAC0935544195E2FAFF770751415AB3DDB3093554412B0AE6ED7A075141EED8DFDF0835544146118A857D075141D5B4C71E08355441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498274 - 229355
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000003E000000F1328B80B707514189AEFA20F13454416B01B25AB7075141A906E6E1F03454411682E3F0B407514179F4A389F03454412E8B041DB5075141E7BDDD80EF3454415C8FC265B5075141AE47E1EAE8345441AE47E1DAA607514166666666E8345441295C8F02A40751413D0AD7F3E9345441AE47E17A9D0751418FC2F518E9345441E17A148E95075141F6285C3FE9345441D7A3707D900751411F85EBC1E9345441A4703D4A8C075141CDCCCCECEC3454416666661688075141C3F528CCEC345441295C8FB285075141F6285C2FED345441295C8FC285075141C3F5289CF0345441 [...]
+</a>
+
+<b>
+01060000000100000001030000000300000047000000B45C15EC8E075141591860C1EC3454417E08011B920751417D95FC08F1345441A9C530D391075141AD94DCE6F0345441B5F25CD491075141775D89E8F0345441E823FC778D0751414C8DEDD4EE345441BD5360648B075141B5820F11ED3454416666661688075141C3F528CCEC3454410140DF93850751415248CD60ED345441CC6F43808307514199D34800EE345441713D0A7782075141B81E85BBEC3454417B14AEA78007514148E17A04EA345441AE47E12A7F0751413D0AD7D3EB345441EC51B88E7F0751419A999969EE3454410AD7A3D07F0751410AD7A320F1345441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498274 - 371310
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000003E000000F1328B80B707514189AEFA20F13454416B01B25AB7075141A906E6E1F03454411682E3F0B407514179F4A389F03454412E8B041DB5075141E7BDDD80EF3454415C8FC265B5075141AE47E1EAE8345441AE47E1DAA607514166666666E8345441295C8F02A40751413D0AD7F3E9345441AE47E17A9D0751418FC2F518E9345441E17A148E95075141F6285C3FE9345441D7A3707D900751411F85EBC1E9345441A4703D4A8C075141CDCCCCECEC3454416666661688075141C3F528CCEC345441295C8FB285075141F6285C2FED345441295C8FC285075141C3F5289CF0345441 [...]
+</a>
+
+<b>
+01060000000100000001030000000300000047000000B45C15EC8E075141591860C1EC3454417E08011B920751417D95FC08F1345441A9C530D391075141AD94DCE6F0345441B5F25CD491075141775D89E8F0345441E823FC778D0751414C8DEDD4EE345441BD5360648B075141B5820F11ED3454416666661688075141C3F528CCEC3454410140DF93850751415248CD60ED345441CC6F43808307514199D34800EE345441713D0A7782075141B81E85BBEC3454417B14AEA78007514148E17A04EA345441AE47E12A7F0751413D0AD7D3EB345441EC51B88E7F0751419A999969EE3454410AD7A3D07F0751410AD7A320F1345441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>880141 - 2952080
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000E66F4458D4E8504117DC54D7C090544166666696B0E850413D0AD7F3A9905441F9059597B0E85041BFB3A9F2A99054418D394D77AFE85041560B123AA9905441295C8FD2A3E8504100000050B690544101A8D92F9AE850411E21FB1EC290544116A6341994E85041D51284C0C7905441FA06573493E850410B882F94C8905441389C66ED90E850412BCCE105CB9054414C96C62D9FE85041D924A535D0905441F012B861A3E850416E7EB1B3D0905441D0D42C13AAE85041BEFB071FD0905441C0F359A7B4E8504189ED53BACB905441CAC4AFADBEE85041AC76D5B0C7905441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000333333D3A9E850419A999939D090544114AE47A1BDE8504100000000C890544185EB5178C3E85041713D0A47C6905441E17A14FECFE85041EC51B8AEC3905441CDCCCC9CD4E8504133333303C190544166666696B0E850413D0AD7F3A99054410AD7A370AFE850415C8FC235A9905441295C8FD2A3E8504100000050B69054418FC2F5589AE850418FC2F5F8C1905441A4703DAA90E85041D7A370EDCA905441C3F5283C9FE85041AE47E13AD09054411F85EB11A3E850419A9999B9D0905441333333D3A9E850419A999939D0905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>880141 - 3280428
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000E66F4458D4E8504117DC54D7C090544166666696B0E850413D0AD7F3A9905441F9059597B0E85041BFB3A9F2A99054418D394D77AFE85041560B123AA9905441295C8FD2A3E8504100000050B690544101A8D92F9AE850411E21FB1EC290544116A6341994E85041D51284C0C7905441FA06573493E850410B882F94C8905441389C66ED90E850412BCCE105CB9054414C96C62D9FE85041D924A535D0905441F012B861A3E850416E7EB1B3D0905441D0D42C13AAE85041BEFB071FD0905441C0F359A7B4E8504189ED53BACB905441CAC4AFADBEE85041AC76D5B0C7905441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000333333D3A9E850419A999939D090544114AE47A1BDE8504100000000C890544185EB5178C3E85041713D0A47C6905441E17A14FECFE85041EC51B8AEC3905441CDCCCC9CD4E8504133333303C190544166666696B0E850413D0AD7F3A99054410AD7A370AFE850415C8FC235A9905441295C8FD2A3E8504100000050B69054418FC2F5589AE850418FC2F5F8C1905441A4703DAA90E85041D7A370EDCA905441C3F5283C9FE85041AE47E13AD09054411F85EB11A3E850419A9999B9D0905441333333D3A9E850419A999939D0905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>880438 - 14647
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002700000052B81EB52DF55041AE47E1DACA4D544185EB518834F55041CDCCCC3CC84D54410000005040F55041000000C0C34D54411F85EB9153F55041D7A3705DBC4D5441C3F5285C66F55041295C8F12B54D5441000000406CF5504148E17AA4B24D54413D0AD7D366F5504133333393A94D54411F85EB815EF55041C3F528DC9C4D5441D7A370ED59F550411F85EB91954D5441F6285CEF56F55041D7A370CD904D54418FC2F5C854F5504185EB51388C4D54411F85EB9153F55041C3F5288C874D54413D0AD75351F550419A999929804D544148E17A3450F550413D0AD7E37C4D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000C3F5286C19F550418FC2F508D44D5441EDAFDDF120F5504182516F81D14D5441DB00F0FD23F55041B0598049D04D5441333333132DF550417B14AEA7CC4D54419A01D0CD53F55041A1ED1086BD4D5441CABC60045BF550410AE8DBB2BA4D5441DE14372462F55041A920A6E6B74D5441F6285C9F6DF55041CDCCCC4CB34D5441000000406CF5504148E17AA4B24D5441C3F5285C66F55041295C8F12B54D54416D853C7F59F550414FB48F10BA4D544101EF28EF52F55041763BDB9BBC4D5441F1A389DD4AF55041AFDCFEB3BF4D54418A549C813BF550416E12B594C54D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>880438 - 62655
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002700000052B81EB52DF55041AE47E1DACA4D544185EB518834F55041CDCCCC3CC84D54410000005040F55041000000C0C34D54411F85EB9153F55041D7A3705DBC4D5441C3F5285C66F55041295C8F12B54D5441000000406CF5504148E17AA4B24D54413D0AD7D366F5504133333393A94D54411F85EB815EF55041C3F528DC9C4D5441D7A370ED59F550411F85EB91954D5441F6285CEF56F55041D7A370CD904D54418FC2F5C854F5504185EB51388C4D54411F85EB9153F55041C3F5288C874D54413D0AD75351F550419A999929804D544148E17A3450F550413D0AD7E37C4D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000C3F5286C19F550418FC2F508D44D5441EDAFDDF120F5504182516F81D14D5441DB00F0FD23F55041B0598049D04D5441333333132DF550417B14AEA7CC4D54419A01D0CD53F55041A1ED1086BD4D5441CABC60045BF550410AE8DBB2BA4D5441DE14372462F55041A920A6E6B74D5441F6285C9F6DF55041CDCCCC4CB34D5441000000406CF5504148E17AA4B24D5441C3F5285C66F55041295C8F12B54D54416D853C7F59F550414FB48F10BA4D544101EF28EF52F55041763BDB9BBC4D5441F1A389DD4AF55041AFDCFEB3BF4D54418A549C813BF550416E12B594C54D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>941693 - 2961172
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000295C8F125516514152B81EF5CCAE5441295C8FE25416514100000030D4AE54419A99992953165141D7A3700D17AF5441EC51B86E6B165141C3F5283C16AF5441E17A14BE6C1651419A999969E3AE54413333337368165141EC51B88EE3AE5441AE47E1EA681651410AD7A360D1AE5441EC51B8AE68165141EC51B8DECCAE54411F85EB6167165141B81E85BBCBAE5441295C8F125516514152B81EF5CCAE5441
+</a>
+
+<b>
+01060000000100000001030000000100000090000000CAA48E295316514191E2190F17AF5441BD49577D53165141D78A9E0A17AF5441547A9157541651412CC5440317AF54418FB075165516514101B7D6FC16AF5441B1052404561651419A31D5F416AF5441E3C0125A5716514160B650E916AF54411862BD82581651413E8F52DF16AF5441AF363E1B5A165141240A90D116AF54418C494B6F5B1651413DC81BC616AF544120AC7BD45C16514197BE13BA16AF54411EDF13735E16514110B31CAC16AF5441B46D120F601651415D133C9E16AF54410AC4A1E7611651411332518E16AF5441FA09F4E963165141F134FE7C16AF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>941693 - 3214398
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000295C8F125516514152B81EF5CCAE5441295C8FE25416514100000030D4AE54419A99992953165141D7A3700D17AF5441EC51B86E6B165141C3F5283C16AF5441E17A14BE6C1651419A999969E3AE54413333337368165141EC51B88EE3AE5441AE47E1EA681651410AD7A360D1AE5441EC51B8AE68165141EC51B8DECCAE54411F85EB6167165141B81E85BBCBAE5441295C8F125516514152B81EF5CCAE5441
+</a>
+
+<b>
+01060000000100000001030000000100000090000000CAA48E295316514191E2190F17AF5441BD49577D53165141D78A9E0A17AF5441547A9157541651412CC5440317AF54418FB075165516514101B7D6FC16AF5441B1052404561651419A31D5F416AF5441E3C0125A5716514160B650E916AF54411862BD82581651413E8F52DF16AF5441AF363E1B5A165141240A90D116AF54418C494B6F5B1651413DC81BC616AF544120AC7BD45C16514197BE13BA16AF54411EDF13735E16514110B31CAC16AF5441B46D120F601651415D133C9E16AF54410AC4A1E7611651411332518E16AF5441FA09F4E963165141F134FE7C16AF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>121078 - 213008
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000470000001F85EB710F0E51417B14AEB725BB54417B14AE77110E51419A9999D923BB544185EB51D8160E51411F85EB8121BB54410AD7A370130E5141A4703D3A20BB544148E17A84110E5141AE47E12A20BB54418FC2F5C80F0E5141E17A14BE1EBB54415C8FC2750E0E5141A4703DEA1EBB5441295C8FB20D0E5141D7A370AD1FBB5441AE47E13A0D0E51419A9999F924BB5441713D0AD70C0E5141295C8F9225BB544148E17A140C0E514114AE47F125BB5441C3F5281C0A0E51418FC2F5D825BB5441666666F6080E514114AE470125BB544133333323080E5141000000B024BB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002200000066666676F70D51411F85EB5101BB54415133C15DFA0D5141A1AE033D06BB54412B90325EFA0D514127B2C33D06BB5441EC51B8BEFC0D514148E17A440ABB54415C8FC255FE0D5141B81E851B0DBB5441A4703D8AFD0D51416666664607BB5441C3F5288CFD0D51416666667605BB54418D14AEF7FC0D51418CB81E9503BB54416D7DF042FC0D5141196AA63D02BB544195CB550DFC0D51412F86C8D701BB54412281F10AFC0D514174F53CD301BB54414A287B18FB0D514154B9790600BB5441F6285CCFFA0D5141B81E857BFFBA5441333333D3F90D5141C3F528FCFDBA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>121078 - 262653
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000470000001F85EB710F0E51417B14AEB725BB54417B14AE77110E51419A9999D923BB544185EB51D8160E51411F85EB8121BB54410AD7A370130E5141A4703D3A20BB544148E17A84110E5141AE47E12A20BB54418FC2F5C80F0E5141E17A14BE1EBB54415C8FC2750E0E5141A4703DEA1EBB5441295C8FB20D0E5141D7A370AD1FBB5441AE47E13A0D0E51419A9999F924BB5441713D0AD70C0E5141295C8F9225BB544148E17A140C0E514114AE47F125BB5441C3F5281C0A0E51418FC2F5D825BB5441666666F6080E514114AE470125BB544133333323080E5141000000B024BB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002200000066666676F70D51411F85EB5101BB54415133C15DFA0D5141A1AE033D06BB54412B90325EFA0D514127B2C33D06BB5441EC51B8BEFC0D514148E17A440ABB54415C8FC255FE0D5141B81E851B0DBB5441A4703D8AFD0D51416666664607BB5441C3F5288CFD0D51416666667605BB54418D14AEF7FC0D51418CB81E9503BB54416D7DF042FC0D5141196AA63D02BB544195CB550DFC0D51412F86C8D701BB54412281F10AFC0D514174F53CD301BB54414A287B18FB0D514154B9790600BB5441F6285CCFFA0D5141B81E857BFFBA5441333333D3F90D5141C3F528FCFDBA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>814356 - 973323
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000004D000000666666165C8E50411F85EB71481B5441D7A370FD578E50413D0AD753491B54411F85EB415B8E504148E17A144E1B54415C8FC2A55C8E5041295C8F62501B5441A4703D2A5D8E5041B81E857B501B5441A4703D2A5E8E504148E17AB44F1B5441666666A65E8E5041E17A14EE4D1B544114AE47115D8E5041CDCCCCEC4A1B54415C8FC2A55C8E504148E17AF4481B54418FC2F5F85E8E5041713D0A47481B5441E17A148E5F8E5041713D0A374A1B5441C3F5284C5F8E50417B14AE374C1B54417B14AEC75F8E504148E17AC44D1B5441C3F5284C5F8E5041A4703D6A4F1B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000276C2549638E5041F987EB2D6B1B54412183CA6D628E504158C0BFDE721B5441A0C75B76628E5041AAE5A3EA721B544106ADE7FA668E5041B8963739751B5441F97E6853688E50410DBEC5F1751B54412599646E698E50419A2DCF6C761B544179369D506C8E5041457CEBDD771B544165715E556E8E50419AA37996781B54419CB9D9176E8E50412A272EBE741B5441C7AA41926E8E504135F3FF1D731B5441D7A370DD6D8E50419A999939721B5441A4703DFA6C8E5041B81E85CB701B5441AE47E13A6C8E5041EC51B87E6F1B54412CF5FD976B8E50413F91587C6E1B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>624815 - 4128154
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000190000003D0AD76357FD5041F6285CBFB40C55415C8FC2E556FD5041F6285CDFB50C55415C8FC27557FD504185EB5108B70C5541EC51B82E59FD50415C8FC235B70C55410AD7A3E05AFD504166666676B70C554185EB51A863FD5041D7A3700DB80C5541F6285C4F65FD504166666666B60C5541EC51B83E67FD504114AE4791B50C55418FC2F52869FD5041000000E0B40C55417B14AE3771FD504185EB5168B50C5541295C8FD273FD504148E17AF4B20C5541333333C372FD5041666666E6B10C5541D7A3709D72FD504185EB5118AA0C554148E17A5470FD50418FC2F5C8AA0C5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000220000008FF6C4C372FD5041BBDB1217B20C554193373D3073FD5041E210DB7BB20C554164274CAA73FD504171B0621AB30C55414C8BEF2077FD50415E5A2E9AB00C554177A9A27878FD504105DA98A5AF0C5541B0BE4DE978FD50415B806B55AF0C5541A381749E7BFD50418694BB04AF0C5541B104CB1280FD5041BB758E8FAF0C5541FED4784185FD50414A0C024BAF0C55412FDD242E87FD5041E5D0228BAF0C55414E62106087FD5041190456F6AF0C5541B07268698BFD504160E5D0A2AF0C55416666660692FD5041DD240669AF0C554199E8C07791FD5041C0029EA4AB0C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>624815 - 314521
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000190000003D0AD76357FD5041F6285CBFB40C55415C8FC2E556FD5041F6285CDFB50C55415C8FC27557FD504185EB5108B70C5541EC51B82E59FD50415C8FC235B70C55410AD7A3E05AFD504166666676B70C554185EB51A863FD5041D7A3700DB80C5541F6285C4F65FD504166666666B60C5541EC51B83E67FD504114AE4791B50C55418FC2F52869FD5041000000E0B40C55417B14AE3771FD504185EB5168B50C5541295C8FD273FD504148E17AF4B20C5541333333C372FD5041666666E6B10C5541D7A3709D72FD504185EB5118AA0C554148E17A5470FD50418FC2F5C8AA0C5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000240000005FE632A286FD5041A393EB78AF0C55412FDD242E87FD5041E5D0228BAF0C55414E62106087FD5041190456F6AF0C5541B07268698BFD504160E5D0A2AF0C55416666660692FD5041DD240669AF0C554199E8C07791FD5041C0029EA4AB0C5541EC51B8AE91FD5041E5D022F3A80C554148E17A0C8DFD504152B81E1DA80C55413333335B8BFD5041B4C876BEA50C5541931804FE86FD5041819543BBA50C55411904568E86FD5041986E1283A40C5541C74B373986FD5041C976BE47A20C55416ABC744B88FD5041022B871EA10C55410D4543BF8CFD50411FCEEF2C9F0C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893141 - 2909887
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000001F85EB310B5E504185EB51389F1C55419A9999F90E5E504152B81E45A41C55411F85EB51195E504114AE47A19F1C554152B81EF5145E50417B14AE27981C5541D7A3702D135E5041C3F5288C931C554133333303125E50418FC2F5888E1C55419A9999D9115E50415C8FC2D58D1C55417B14AE57105E50418FC2F5E8821C5541F6285C4F0F5E504152B81E35761C55411F85EBC10D5E5041EC51B8BE6E1C5541713D0A370D5E504152B81E256C1C5541B81E856B015E504185EB5168681C55415C8FC275005E5041B81E851B691C55419A999959005E5041295C8FC2741C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000009A9999F90E5E504152B81E45A41C55411F85EB51195E504114AE47A19F1C55415FDA7484155E50418E44481D991C554152B81EF5145E50417B14AE27981C5541D9D780D8135E5041FD56F446951C5541A382C627135E504105ABC973931C554133333303125E50418FC2F5888E1C554114AE47C1045E5041B81E857B941C5541EE26C928075E504103475F41991C55410878F84C085E5041FEE236F19A1C55412E96F3440B5E5041DEE5BE519F1C55419A9999F90E5E504152B81E45A41C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893141 - 3635576
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000001F85EB310B5E504185EB51389F1C55419A9999F90E5E504152B81E45A41C55411F85EB51195E504114AE47A19F1C554152B81EF5145E50417B14AE27981C5541D7A3702D135E5041C3F5288C931C554133333303125E50418FC2F5888E1C55419A9999D9115E50415C8FC2D58D1C55417B14AE57105E50418FC2F5E8821C5541F6285C4F0F5E504152B81E35761C55411F85EBC10D5E5041EC51B8BE6E1C5541713D0A370D5E504152B81E256C1C5541B81E856B015E504185EB5168681C55415C8FC275005E5041B81E851B691C55419A999959005E5041295C8FC2741C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000009A9999F90E5E504152B81E45A41C55411F85EB51195E504114AE47A19F1C55415FDA7484155E50418E44481D991C554152B81EF5145E50417B14AE27981C5541D9D780D8135E5041FD56F446951C5541A382C627135E504105ABC973931C554133333303125E50418FC2F5888E1C554114AE47C1045E5041B81E857B941C5541EE26C928075E504103475F41991C55410878F84C085E5041FEE236F19A1C55412E96F3440B5E5041DEE5BE519F1C55419A9999F90E5E504152B81E45A41C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893328 - 2947988
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000500000008FC2F5C82E6B504152B81EC5421A5541000000702F6B504133333383441A554114AE4721306B50410AD7A360461A5541F6285C2F326B5041F6285C2F4A1A55413D0AD7A3346B50415C8FC2354D1A5541E17A14FE386B50411F85EB21511A5541295C8F323C6B50410AD7A3E0521A5541666666E6486B5041333333A3571A5541713D0A474D6B50415C8FC2A5591A55419A9999A9536B504185EB51585C1A5541295C8F525F6B50413D0AD713611A5541000000005F6B504100000040621A5541CDCCCC4C5F6B50415C8FC255621A55415C8FC295736B5041CDCCCC2C681A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000B7E3D422746B5041135BC0DB691A5541F10CD779746B50415B28AC08691A5541E208C9A6746B5041B9AECC80681A5541C6A45D3D726B50412C58A6C9671A554107DCD7316F6B50413E2A3AE9661A55414CD8EC1F6C6B504190A1F606661A55412C6815A0696B50415330C14E651A5541BB06CCE0666B50417DBB4784641A5541BDFB95FD646B5041703A2AF9631A5541EC964901616B50411A736CD3621A55411AE47987616B5041F7A712EF631A55413B6C7776616B5041AD562B99641A5541A68702C3616B50411031CA6D651A55411A26208F626B50414A00D9D3651A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893328 - 3811272
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000500000008FC2F5C82E6B504152B81EC5421A5541000000702F6B504133333383441A554114AE4721306B50410AD7A360461A5541F6285C2F326B5041F6285C2F4A1A55413D0AD7A3346B50415C8FC2354D1A5541E17A14FE386B50411F85EB21511A5541295C8F323C6B50410AD7A3E0521A5541666666E6486B5041333333A3571A5541713D0A474D6B50415C8FC2A5591A55419A9999A9536B504185EB51585C1A5541295C8F525F6B50413D0AD713611A5541000000005F6B504100000040621A5541CDCCCC4C5F6B50415C8FC255621A55415C8FC295736B5041CDCCCC2C681A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000B7E3D422746B5041135BC0DB691A5541F10CD779746B50415B28AC08691A5541E208C9A6746B5041B9AECC80681A5541C6A45D3D726B50412C58A6C9671A554107DCD7316F6B50413E2A3AE9661A55414CD8EC1F6C6B504190A1F606661A55412C6815A0696B50415330C14E651A5541BB06CCE0666B50417DBB4784641A5541BDFB95FD646B5041703A2AF9631A5541EC964901616B50411A736CD3621A55411AE47987616B5041F7A712EF631A55413B6C7776616B5041AD562B99641A5541A68702C3616B50411031CA6D651A55411A26208F626B50414A00D9D3651A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893335 - 4338095
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001A000000E17A14FE596B50415C8FC245DE195541A4703DFA586B504148E17A44DE1955417B14AE47546B504100000040DE195541A4703DFA536B5041295C8F52DE195541E17A145E4F6B5041D7A370EDDE19554148E17AF4576B5041AE47E1CAF1195541713D0A27546B5041C3F5285CF21955418FC2F5D8506B504185EB51C8F219554148E17AC4516B504100000040F51955411F85EB41566B50410AD7A340011A5541C3F5285C576B504185EB51C8031A55419A9999B9636B5041E17A145E041A5541CDCCCCFC666B50419A9999D9041A5541B81E854B686B5041A4703D0A051A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000007B437C01696B50411AFB048AF1195541A4703D1A696B5041AE47E18AF119554185EB51586A6B50417B14AE97F11955411F85EBA1696B5041713D0A47F019554152B81EE55F6B50410AD7A350DE1955419A9999495C6B504185EB5148DE195541E17A14FE596B50415C8FC245DE195541A4703DFA586B504148E17A44DE1955417B14AE47546B504100000040DE195541A4703DFA536B5041295C8F52DE195541E17A145E4F6B5041D7A370EDDE19554148E17AF4576B5041AE47E1CAF1195541713D0A27546B5041C3F5285CF21955418FC2F5D8506B504185EB51C8F2195541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>311735 - 33901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000000C000000295C8F229FC75041F6285C6FDA725441B81E85FB9DC75041E17A145EDF725441A4703D9A9EC750411F85EB41E1725441B81E859B9FC7504100000000E272544152B81E55A3C7504114AE47C1E4725441F6285C5FCEC75041C3F528ACF572544133333393D0C750411F85EB71EF7254415C8FC275C5C7504185EB51A8EA7254418FC2F5E8BBC75041E17A148EE67254410AD7A3F0A7C75041E17A148EDF725441EC51B87EA0C7504185EB51E8D9725441295C8F229FC75041F6285C6FDA7254410103000000010000000E0000009A999959D0C750419A9999C9F572544185EB51 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000000AD7A3F0A7C75041E17A148EDF72544147BB2C22A1C75041A3884F64DA725441EC51B87EA0C7504185EB51E8D9725441295C8F229FC75041F6285C6FDA725441533ECE56A0C750415DFBA5CADB7254412C14FC46A3C75041EEF0CE6ADE7254415E0326F7A5C750415352E7FADF72544101898737ACC7504194540E7BE27254410C700108B4C75041856333DBE472544197BC6BD8BAC750411E6C594BE7725441CA4AF388C3C750417AEF930BEB7254413E5E66E9CAC750414CB2C42BEE7254410030BC69D0C75041EDCDE76BF0725441738B4B9AD9C750411AAA144CF3725441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>311735 - 73278
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000000C000000295C8F229FC75041F6285C6FDA725441B81E85FB9DC75041E17A145EDF725441A4703D9A9EC750411F85EB41E1725441B81E859B9FC7504100000000E272544152B81E55A3C7504114AE47C1E4725441F6285C5FCEC75041C3F528ACF572544133333393D0C750411F85EB71EF7254415C8FC275C5C7504185EB51A8EA7254418FC2F5E8BBC75041E17A148EE67254410AD7A3F0A7C75041E17A148EDF725441EC51B87EA0C7504185EB51E8D9725441295C8F229FC75041F6285C6FDA7254410103000000010000000E0000009A999959D0C750419A9999C9F572544185EB51 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000000AD7A3F0A7C75041E17A148EDF72544147BB2C22A1C75041A3884F64DA725441EC51B87EA0C7504185EB51E8D9725441295C8F229FC75041F6285C6FDA725441533ECE56A0C750415DFBA5CADB7254412C14FC46A3C75041EEF0CE6ADE7254415E0326F7A5C750415352E7FADF72544101898737ACC7504194540E7BE27254410C700108B4C75041856333DBE472544197BC6BD8BAC750411E6C594BE7725441CA4AF388C3C750417AEF930BEB7254413E5E66E9CAC750414CB2C42BEE7254410030BC69D0C75041EDCDE76BF0725441738B4B9AD9C750411AAA144CF3725441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>312287 - 4013453
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000029000000EC51B81E154F514185EB51388EA95441713D0A27244F5141D7A3708D8CA95441713D0AB7254F5141AE47E11A8CA95441C3F528CC264F51417B14AE878BA95441713D0A17274F51411F85EB018AA95441E17A14CE254F5141A4703DFA83A9544148E17AE4204F5141B81E858B70A95441713D0AB71D4F51413D0AD7A363A95441EC51B8BE044F5141000000A009A954413D0AD733F94E5141EC51B8FEB2A85441F6285C9F8F4E514185EB51A8AAA85441000000A08E4E514148E17A94AAA85441CDCCCCBC8E4E5141E17A140EACA85441C3F528FC904E51415C8FC2D5C1A85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000FCFD9FCB034F51417C4E7F7F02A95441C82597A9034F5141E6BC0E8001A954415C7ED962A54E51417E2EC661FAA85441BCB319D5A54E51413039A12CFBA8544152B81ED5A64E5141333333F3FCA854417B14AEE7CA4E5141F6285C2F41A954419A9999D9CC4E5141E17A142E45A95441A4703DFACE4E51418FC2F5584AA95441F6285C7FD04E5141295C8F624FA95441666666B6D14E51410AD7A3D054A9544114AE47C1D24E5141E17A14AE5AA95441333333C3D44E51413D0AD71373A954417B14AED7D64E5141B81E850B81A95441E17A14DED74E514148E17A4485A95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>312334 - 3808988
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001100000033333343B99A5041F6285C4FC910554133333393BA9A504114AE47E1C81055418FC2F528BE9A504152B81EB5C7105541E17A143EBF9A5041AE47E15AC71055419A9999A9C09A50415C8FC2E5C6105541A4703D8ABD9A504166666656BF105541E17A146EB99A504148E17A04B51055411F85EB41B89A5041F6285C7FB210554148E17AA4B69A5041AE47E16AAF105541C3F5285CB19A50417B14AEC7A41055418FC2F518AF9A5041A4703DDA9F105541C3F5288CAD9A50419A9999D9A0105541666666F6AA9A504185EB5128A21055419A999909AA9A504152B81E75A2105541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000009A999909AA9A504152B81E75A21055415FCE206AAB9A50419B60C8F7A51055413E8EA873AD9A504158C24329AB10554178FC4FF3AF9A50415A1F5387B1105541864AAC20B39A50411D92AF40B9105541A6DDC7A1B49A5041BDDAEBE8BC1055410EA6A15DB79A504138650FAEC310554133333343B99A5041F6285C4FC9105541F6285CCFC19A5041713D0A87C61055410AD7A300C39A504148E17A24C61055410AD7A390C59A504114AE4751C51055410AD7A380C29A5041EC51B8DEBD10554185EB5158BE9A504152B81EC5B31055417B14AE87B69A5041CDCCCC9CA4105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>312341 - 3186235
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003300000014AE47F1C29A504152B81EC549105541F6285C3FC29A50415C8FC255461055418FC2F5D8C19A5041666666864510554152B81E55C19A50417B14AE77441055413D0AD7C3C09A5041295C8FD24310554148E17A84C09A5041A4703D8A43105541A4703D5ABF9A50410000009042105541713D0A27BF9A504148E17A6442105541713D0AA7BC9A5041333333733F10554100000070BB9A504148E17A043E105541D7A370EDB69A5041295C8FA239105541CDCCCC6CB69A50415C8FC2D538105541C3F528DCB39A50418FC2F5C8391055415C8FC215AF9A5041E17A148E3B105541 [...]
+</a>
+
+<b>
+0106000000010000000103000000080000008D00000035160610DA99504192AEB934AA10554150DD4CF7E29950412DA9221CA8105541DB730580EB99504183D81B0CA6105541E7A7E89AF6995041FE16627DA3105541F92739A3029A5041026F8708A11055413F1CFBEC099A50416758788D9F105541A375E12C129A5041D95092889D105541C2E8D8EC149A50415A66A8C39C105541DFF7A4F6189A50419B86499C9B105541E17A143E1C9A504185EB51A8991055415C8FC295239A5041C3F5284C961055415C8FC2F5279A504185EB51B8931055415C8FC2C52A9A504148E17A6492105541E71ED3732C9A504187C0D30A92105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>312341 - 3204383
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003300000014AE47F1C29A504152B81EC549105541F6285C3FC29A50415C8FC255461055418FC2F5D8C19A5041666666864510554152B81E55C19A50417B14AE77441055413D0AD7C3C09A5041295C8FD24310554148E17A84C09A5041A4703D8A43105541A4703D5ABF9A50410000009042105541713D0A27BF9A504148E17A6442105541713D0AA7BC9A5041333333733F10554100000070BB9A504148E17A043E105541D7A370EDB69A5041295C8FA239105541CDCCCC6CB69A50415C8FC2D538105541C3F528DCB39A50418FC2F5C8391055415C8FC215AF9A5041E17A148E3B105541 [...]
+</a>
+
+<b>
+0106000000010000000103000000080000008D00000035160610DA99504192AEB934AA10554150DD4CF7E29950412DA9221CA8105541DB730580EB99504183D81B0CA6105541E7A7E89AF6995041FE16627DA3105541F92739A3029A5041026F8708A11055413F1CFBEC099A50416758788D9F105541A375E12C129A5041D95092889D105541C2E8D8EC149A50415A66A8C39C105541DFF7A4F6189A50419B86499C9B105541E17A143E1C9A504185EB51A8991055415C8FC295239A5041C3F5284C961055415C8FC2F5279A504185EB51B8931055415C8FC2C52A9A504148E17A6492105541E71ED3732C9A504187C0D30A92105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>312566 - 1743404
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000001F85EBA1099D50411F85EBC1CB125541713D0A07E89C5041D7A370ADB6125541AE47E1EACE9C504152B81EB5D012554133333303C79C5041D7A3704DE212554114AE47B10A9D5041295C8FC20C135541000000400D9D504185EB51E80A1355419A9999C9209D50417B14AEE7FA12554185EB51782B9D504100000020F01255419A9999B9339D5041AE47E12AE6125541B81E857B0A9D5041AE47E14ACC1255411F85EBA1099D50411F85EBC1CB125541
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000014AE47B10A9D5041295C8FC20C135541652A883F029D504147D06F76071355419D378B0BFF9C5041A2370974051355414AED78F8FB9C504169E4488603135541E9C47919F89C5041A2099B180113554102CAAEBEF49C5041C48DDCFDFE125541E7DD1F3FEF9C504196AEDC8AFB1255410AF21DDBEC9C504184E1EE0AFA12554169063492EB9C504167BB983CF912554130ED8937E99C5041E66287C2F71255419B9A9270E79C50411DC41DA5F61255415E24A4E0E49C5041B0F5A109F512554187A18B27E29C504164595354F3125541D731F4BEDE9C504118DCEC30F1125541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>312566 - 3347215
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000001F85EBA1099D50411F85EBC1CB125541713D0A07E89C5041D7A370ADB6125541AE47E1EACE9C504152B81EB5D012554133333303C79C5041D7A3704DE212554114AE47B10A9D5041295C8FC20C135541000000400D9D504185EB51E80A1355419A9999C9209D50417B14AEE7FA12554185EB51782B9D504100000020F01255419A9999B9339D5041AE47E12AE6125541B81E857B0A9D5041AE47E14ACC1255411F85EBA1099D50411F85EBC1CB125541
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000014AE47B10A9D5041295C8FC20C135541652A883F029D504147D06F76071355419D378B0BFF9C5041A2370974051355414AED78F8FB9C504169E4488603135541E9C47919F89C5041A2099B180113554102CAAEBEF49C5041C48DDCFDFE125541E7DD1F3FEF9C504196AEDC8AFB1255410AF21DDBEC9C504184E1EE0AFA12554169063492EB9C504167BB983CF912554130ED8937E99C5041E66287C2F71255419B9A9270E79C50411DC41DA5F61255415E24A4E0E49C5041B0F5A109F512554187A18B27E29C504164595354F3125541D731F4BEDE9C504118DCEC30F1125541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>312987 - 1328539
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000009000000B81E850B85015141333333836FCD54418FC2F5C885015141333333C370CD544148E17A74CA015141C3F5289C84CD544152B81E15CE0151415C8FC2E586CD54411F85EBE1CF01514185EB510887CD5441E17A147EE6015141A4703D6A7DCD5441EC51B80ED0015141F6285CEF76CD5441CDCCCC0C880151413D0AD72362CD5441B81E850B85015141333333836FCD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000007AAA80469A01514104FE4DAF76CD5441E8F9814CAA015141CE55E5507BCD5441A33DE033AC015141E72EC2DD7BCD5441E811E57EAF015141B7F60F886DCD544103AD5AA4AD015141FF2305FF6CCD54414B6C171FA5015141AA3818896ACD5441DCEC7609A5015141F456D9826ACD54416BB20A8CA40151412AD3A05E6ACD5441CDCCCC0C880151413D0AD72362CD5441B81E850B85015141333333836FCD54418FC2F5C885015141333333C370CD544196CD9AD699015141C88EF68E76CD54417AAA80469A01514104FE4DAF76CD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>312987 - 3793702
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000009000000B81E850B85015141333333836FCD54418FC2F5C885015141333333C370CD544148E17A74CA015141C3F5289C84CD544152B81E15CE0151415C8FC2E586CD54411F85EBE1CF01514185EB510887CD5441E17A147EE6015141A4703D6A7DCD5441EC51B80ED0015141F6285CEF76CD5441CDCCCC0C880151413D0AD72362CD5441B81E850B85015141333333836FCD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000007AAA80469A01514104FE4DAF76CD5441E8F9814CAA015141CE55E5507BCD5441A33DE033AC015141E72EC2DD7BCD5441E811E57EAF015141B7F60F886DCD544103AD5AA4AD015141FF2305FF6CCD54414B6C171FA5015141AA3818896ACD5441DCEC7609A5015141F456D9826ACD54416BB20A8CA40151412AD3A05E6ACD5441CDCCCC0C880151413D0AD72362CD5441B81E850B85015141333333836FCD54418FC2F5C885015141333333C370CD544196CD9AD699015141C88EF68E76CD54417AAA80469A01514104FE4DAF76CD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>313766 - 242246
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001100000085EB519808315141F6285CEF53435541D7A3704D05315141A4703D3A6143554148E17A1404315141D7A3708D69435541666666F6023151418FC2F54873435541A4703DAA1F31514148E17A2478435541713D0A8725315141D7A3708D6D435541EC51B89E25315141E17A149E6B435541D7A3706D243151417B14AE7769435541D7A3707D223151417B14AEC767435541B81E857B20315141A4703D6A65435541E17A14FE1E3151413D0AD763624355410AD7A3F01D315141D7A370AD5E435541EC51B8EE1C315141CDCCCC3C59435541CDCCCC7C1C3151413333333356435541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000009F6548571E3151418A5B7E1760435541EDE7432D1F315141F1B4A2C36243554187774A401F3151411AED42EA6243554194673604203151410594057864435541237567EB20315141C3770CEE654355413245FE2522315141B518A9606743554160921B0D24315141C915C72369435541D7A3706D243151417B14AE7769435541FDF9FE4925315141D60054056B435541EC51B89E25315141E17A149E6B4355415E67189325315141306E41916C435541713D0A8725315141D7A3708D6D435541C09187FA24315141D2EF418B6E4355410EAE796424315141D7A7509A6F435541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>313766 - 265644
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001100000085EB519808315141F6285CEF53435541D7A3704D05315141A4703D3A6143554148E17A1404315141D7A3708D69435541666666F6023151418FC2F54873435541A4703DAA1F31514148E17A2478435541713D0A8725315141D7A3708D6D435541EC51B89E25315141E17A149E6B435541D7A3706D243151417B14AE7769435541D7A3707D223151417B14AEC767435541B81E857B20315141A4703D6A65435541E17A14FE1E3151413D0AD763624355410AD7A3F01D315141D7A370AD5E435541EC51B8EE1C315141CDCCCC3C59435541CDCCCC7C1C3151413333333356435541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C0000009F6548571E3151418A5B7E1760435541EDE7432D1F315141F1B4A2C36243554187774A401F3151411AED42EA6243554194673604203151410594057864435541237567EB20315141C3770CEE654355413245FE2522315141B518A9606743554160921B0D24315141C915C72369435541D7A3706D243151417B14AE7769435541FDF9FE4925315141D60054056B435541EC51B89E25315141E17A149E6B4355415E67189325315141306E41916C435541713D0A8725315141D7A3708D6D435541C09187FA24315141D2EF418B6E4355410EAE796424315141D7A7509A6F435541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>314252 - 192687
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002400000085EB51082CB95041B81E85BB4C2C5541E17A14DE2DB950417B14AE974B2C5541C3F528CC2EB950419A9999594B2C5541CDCCCCCC31B9504114AE47914B2C5541CDCCCC1C34B95041A4703DAA4B2C55416666660636B95041666666A64A2C5541CDCCCCBC37B950419A9999494A2C554185EB51B839B950411F85EB014B2C55419A9999C93AB95041713D0AB74A2C55411F85EB013CB95041000000C0492C55418FC2F5383DB9504114AE47014A2C55411F85EB413FB950419A9999B94A2C554114AE47D141B95041B81E852B4A2C5541B81E858B42B950418FC2F5884A2C5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000450000008FC2F5383DB9504114AE47014A2C5541D0681E593EB95041F8A43B674A2C5541F23CF74E3FB95041408FC5B64A2C5541ABF67FC43FB95041FC6A4A9D4A2C5541604E550540B95041782A3C8F4A2C5541DD9DA95F40B950413CE3A67B4A2C554114AE47D141B95041B81E852B4A2C5541E5ADE88B42B95041EB42D2884A2C554107FEC2A742B950414CE5E37E4A2C554198F7F88F42B950419A948655492C55412F1A4D5F43B950415BF61CA0482C5541B2FD5EB345B95041E788FE8F472C554176D65F6846B95041812654CC472C5541F7D0E2AC46B9504191E7FAA7472C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>314252 - 359450
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002400000085EB51082CB95041B81E85BB4C2C5541E17A14DE2DB950417B14AE974B2C5541C3F528CC2EB950419A9999594B2C5541CDCCCCCC31B9504114AE47914B2C5541CDCCCC1C34B95041A4703DAA4B2C55416666660636B95041666666A64A2C5541CDCCCCBC37B950419A9999494A2C554185EB51B839B950411F85EB014B2C55419A9999C93AB95041713D0AB74A2C55411F85EB013CB95041000000C0492C55418FC2F5383DB9504114AE47014A2C55411F85EB413FB950419A9999B94A2C554114AE47D141B95041B81E852B4A2C5541B81E858B42B950418FC2F5884A2C5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000450000008FC2F5383DB9504114AE47014A2C5541D0681E593EB95041F8A43B674A2C5541F23CF74E3FB95041408FC5B64A2C5541ABF67FC43FB95041FC6A4A9D4A2C5541604E550540B95041782A3C8F4A2C5541DD9DA95F40B950413CE3A67B4A2C554114AE47D141B95041B81E852B4A2C5541E5ADE88B42B95041EB42D2884A2C554107FEC2A742B950414CE5E37E4A2C554198F7F88F42B950419A948655492C55412F1A4D5F43B950415BF61CA0482C5541B2FD5EB345B95041E788FE8F472C554176D65F6846B95041812654CC472C5541F7D0E2AC46B9504191E7FAA7472C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>315463 - 242941
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000E000000EC51B82EB32451417B14AE67783955419A999959B824514133333303753955419A999909BB24514166666666733955411F85EBC1B7245141000000B068395541AE47E16AB52451410AD7A380633955410AD7A3E0B1245141295C8FC25E39554152B81EF5AD2451419A9999995B395541666666F6A82451413333337359395541F6285C1FA1245141EC51B80E58395541000000F09B245141EC51B8DE573955411F85EB1197245141F6285C3F58395541E17A14DE8F245141E17A146E5A395541D7A370FD8A245141666666065C395541EC51B82EB32451417B14AE6778395541
+</a>
+
+<b>
+010600000001000000010300000001000000250000009A999909BB2451416666666673395541830E2B26BA245141F0379B7F70395541CE72A26DB92451419F1AEB246E3955415E3BA03AB92451419CE3527E6D3955411401AA0FB824514181A2E9AD69395541C4B5084EB72451416EED37AF67395541C95E642AB7245141311B3E6067395541285F8C27B62451419B8BB1226539554162B779BEB5245141D42EDF39643955417CA8A822B5245141EFD4E21F633955412EBAACF6B3245141C525008E61395541E46920E0B22451414C2AD51860395541D291D6CDB2245141F3F254006039554165695A90B22451414907F6AD5F395541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>315463 - 349355
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000E000000EC51B82EB32451417B14AE67783955419A999959B824514133333303753955419A999909BB24514166666666733955411F85EBC1B7245141000000B068395541AE47E16AB52451410AD7A380633955410AD7A3E0B1245141295C8FC25E39554152B81EF5AD2451419A9999995B395541666666F6A82451413333337359395541F6285C1FA1245141EC51B80E58395541000000F09B245141EC51B8DE573955411F85EB1197245141F6285C3F58395541E17A14DE8F245141E17A146E5A395541D7A370FD8A245141666666065C395541EC51B82EB32451417B14AE6778395541
+</a>
+
+<b>
+010600000001000000010300000001000000250000009A999909BB2451416666666673395541830E2B26BA245141F0379B7F70395541CE72A26DB92451419F1AEB246E3955415E3BA03AB92451419CE3527E6D3955411401AA0FB824514181A2E9AD69395541C4B5084EB72451416EED37AF67395541C95E642AB7245141311B3E6067395541285F8C27B62451419B8BB1226539554162B779BEB5245141D42EDF39643955417CA8A822B5245141EFD4E21F633955412EBAACF6B3245141C525008E61395541E46920E0B22451414C2AD51860395541D291D6CDB2245141F3F254006039554165695A90B22451414907F6AD5F395541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>316209 - 2316364
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001800000085EB51781BE85041295C8FD28F285541B81E85DB20E8504185EB515898285541666666A621E85041713D0AC799285541EC51B87E25E85041713D0A479D285541E17A14BE28E85041AE47E1DAA2285541F6285C0F2CE85041A4703D4AA8285541000000702DE85041CDCCCCBCAC2855419A9999492EE850411F85EB01AE285541F6285CDF2FE85041D7A370DDB0285541A4703D5A31E8504148E17AD4B32855413D0AD7C334E85041EC51B8CEBA285541CDCCCCAC3BE85041EC51B83EB9285541AE47E1EA40E8504166666626B828554185EB51C84AE8504185EB5148B5285541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000004F9C2AEC15E850417498ABDA862855419A654C840FE85041D863574589285541D07C38F902E850417D1399038E2855418FC2F518FBE750413210AFDC9028554100000040FCE750419A9999A99D2855417B14AE67FCE750415C8FC285A128554166666626FEE75041A4703D6AA0285541EC51B8CE02E85041AE47E1AA9D2855418FC2F52809E850411F85EB719A2855413333335314E85041AE47E11A9428554185EB51781BE85041295C8FD28F2855414F9C2AEC15E850417498ABDA86285541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>316209 - 3433256
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001800000085EB51781BE85041295C8FD28F285541B81E85DB20E8504185EB515898285541666666A621E85041713D0AC799285541EC51B87E25E85041713D0A479D285541E17A14BE28E85041AE47E1DAA2285541F6285C0F2CE85041A4703D4AA8285541000000702DE85041CDCCCCBCAC2855419A9999492EE850411F85EB01AE285541F6285CDF2FE85041D7A370DDB0285541A4703D5A31E8504148E17AD4B32855413D0AD7C334E85041EC51B8CEBA285541CDCCCCAC3BE85041EC51B83EB9285541AE47E1EA40E8504166666626B828554185EB51C84AE8504185EB5148B5285541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000004F9C2AEC15E850417498ABDA862855419A654C840FE85041D863574589285541D07C38F902E850417D1399038E2855418FC2F518FBE750413210AFDC9028554100000040FCE750419A9999A99D2855417B14AE67FCE750415C8FC285A128554166666626FEE75041A4703D6AA0285541EC51B8CE02E85041AE47E1AA9D2855418FC2F52809E850411F85EB719A2855413333335314E85041AE47E11A9428554185EB51781BE85041295C8FD28F2855414F9C2AEC15E850417498ABDA86285541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>317014 - 3086572
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000010000000A4703D9A97485141F6285C2F92025541333333B38B4851411F85EB11900255413D0AD7038C485141295C8F5285025541666666568348514152B81E458102554148E17A54824851415C8FC2D594025541E17A145E8148514100000090A702554148E17A04834851413D0AD703A90255413D0AD74386485141F6285C7FAB02554152B81E058B485141CDCCCCCCAF0255413D0AD7238D4851415C8FC2C5B40255415C8FC2258F4851411F85EB11BE025541AE47E1EA9048514133333333C3025541EC51B89E944851410AD7A320CA025541713D0AB7944851418FC2F548CA025541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000DB4D9CA49448514143F77E04CA025541E33553DD95485141A64A9032B202554152B81EB58F485141295C8F02B2025541EC51B82E90485141000000C0A80255419A999999894851413D0AD7A3A8025541F6285C3F87485141713D0AB7AB0255410AD7A35087485141295C8F72AC02554152B81E058B485141CDCCCCCCAF025541F6285CEF8B485141295C8FF2B10255413D0AD7238D4851415C8FC2C5B4025541E96E2CF78D485141C6CB8698B8025541AD4EEBE28E48514157C45ADCBC025541DB3C24868F485141985D4329BF0255413525CC7E90485141379BF1F9C1025541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>317292 - 238812
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000200000022000000AE47E12AF6475141295C8F0216025541C3F528ECF8475141F6285C3F16025541A4703D1AFA475141C3F5286C16025541F6285CCFFE4751410AD7A320170255410AD7A3A0FF47514152B81E45170255415C8FC2450B485141F6285C9F180255417B14AE9713485141EC51B86E1702554148E17A9413485141AE47E18A16025541F6285CBF16485141000000201602554114AE47A121485141666666D616025541666666E622485141666666E6150255413D0AD7F323485141A4703DDA11025541C3F5289C26485141F6285C8F0C0255415C8FC23514485141B81E851B08025541 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000002F0000005C8FC23514485141B81E851B0802554162DAB50014485141A37A29AE05025541BC5E79E413485141D38B373D05025541B418A5D712485141F6CEECBCFA015541A2AF664411485141384D5DF6F4015541196992371048514105EF37B6EF015541BFE51F6F0E4851412CFEF27BF001554196BBBCC60B485141AA65312DF1015541BD2F0D030A4851413A0798FCF0015541FF2AB8F0FF475141C9D90510F7015541AD024C6CF6475141EABFDC04FE01554187CB3F6DF547514178354C29FE015541A133E500F4475141383CB1F1FE015541611FB6A7F1475141C4A3642700025541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>317299 - 290020
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000150000001F85EB11D04751417B14AEF74802554152B81E05D04751417B14AE474B025541C3F5287CD24751411F85EBF14D02554185EB5168D44751415C8FC2455002554100000090DF475141AE47E1FA4D025541713D0A97EE47514148E17A944B02554152B81E15F94751411F85EB814C0255417B14AE57F7475141C3F528CC45025541CDCCCC3CF6475141F6285C5F41025541F6285CDFF34751418FC2F5D83C0255411F85EB41F1475141666666C63802554114AE4771EE475141B81E859B350255410AD7A3A0EB475141295C8FF233025541713D0A77E94751415C8FC2E533025541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002400000000000090DF475141AE47E1FA4D025541822B36CDEC475141DA3699DD4B025541484421B3ED475141F5234BB34B025541814A81DAED475141D92397B24B025541713D0A97EE47514148E17A944B02554152B81E15F94751411F85EB814C0255417FC5A4B9F74751413377F04547025541CECD977CF54751415B4B9BEF3F0255411F36654FF54751419E0E21993F0255411122647CF4475141522469053E025541ACCE1A3AF4475141896795863D0255413091A553F2475141B703B1703A025541DF300EDAF1475141E67054B3390255412A02D87CF147514153662A2239025541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>318592 - 247559
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000600000005C8FC2756248514148E17A2419C55441B81E850B624851417B14AEE71BC55441A4703DFA61485141295C8F021FC554413D0AD763624851413333335322C55441000000E064485141E17A141E22C554416666664665485141000000F024C55441A4703DBA674851417B14AEE720C55441EC51B87E69485141F6285C3F1EC554419A9999196B4851411F85EB611BC55441C3F5284C6C485141713D0A6717C5544148E17A446D48514152B81EF50DC55441A4703D4A6E485141A4703D3A0AC554419A999919704851413D0AD74307C55441A4703D0A754851411F85EB4101C55441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000654544AF684851411DA30119E5C454413CE0219C664851418729C095E3C45441D23F1D305F4851413BB23B78E3C45441210EC0EF5A48514190FC55AAE4C45441D2D7EF1760485141CBD38DB8EBC45441F58905E460485141A3F6C5CFECC454415C8FC2C564485141F6285C1FF2C454411F85EB9165485141333333C3F3C45441B81E850B66485141E17A144EF5C4544162990C326648514132D968B6F6C45441F7DE907167485141C6B53475FBC454413080B049674851415473F5C4FBC454410B04D9DE6A48514121280F1FF9C4544122D43DE56C485141DE62FDA4F1C45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>318592 - 328830
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000600000005C8FC2756248514148E17A2419C55441B81E850B624851417B14AEE71BC55441A4703DFA61485141295C8F021FC554413D0AD763624851413333335322C55441000000E064485141E17A141E22C554416666664665485141000000F024C55441A4703DBA674851417B14AEE720C55441EC51B87E69485141F6285C3F1EC554419A9999196B4851411F85EB611BC55441C3F5284C6C485141713D0A6717C5544148E17A446D48514152B81EF50DC55441A4703D4A6E485141A4703D3A0AC554419A999919704851413D0AD74307C55441A4703D0A754851411F85EB4101C55441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000654544AF684851411DA30119E5C454413CE0219C664851418729C095E3C45441D23F1D305F4851413BB23B78E3C45441210EC0EF5A48514190FC55AAE4C45441D2D7EF1760485141CBD38DB8EBC45441F58905E460485141A3F6C5CFECC454415C8FC2C564485141F6285C1FF2C454411F85EB9165485141333333C3F3C45441B81E850B66485141E17A144EF5C4544162990C326648514132D968B6F6C45441F7DE907167485141C6B53475FBC454413080B049674851415473F5C4FBC454410B04D9DE6A48514121280F1FF9C4544122D43DE56C485141DE62FDA4F1C45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>318745 - 102751
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003F000000D7A3704D2146514152B81E5508C15441D7A3706D214651411F85EBE108C15441B81E85FB224651419A9999F90CC15441666666462546514152B81EA50CC154410AD7A3803046514148E17A540DC154417B14AE373D465141666666160EC15441EC51B8DE474651411F85EBF10EC154413D0AD72351465141D7A3707D0FC1544166666636534651417B14AE870FC15441F6285C1F544651413D0AD7E30EC1544185EB5108554651411F85EB910DC15441AE47E12A564651418FC2F5A80BC15441CDCCCCFC56465141333333330AC154417B14AEF754465141B81E85BB09C15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000850000005E17DB582046514158997E6B05C154410CD11BEA2046514178A2FD2907C15441D7A3704D2146514152B81E5508C15441329B196421465141B6F8D2B808C15441011D017E21465141A3BC830D09C154418441619D214651413FFE166009C15441CA8EAAFA214651412E969A550AC154410EBF1B4E22465141D0A935310BC15441E4CA4F8C224651411017EBD40BC15441FD8221A1224651412005B60B0CC154411406E7F1224651413DC649E00CC1544119F4EF0F234651417070D4E60CC15441D705D1ED2346514132D4B8D60CC15441580F0A9924465141742A13BE0CC15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>318745 - 304245
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003F000000D7A3704D2146514152B81E5508C15441D7A3706D214651411F85EBE108C15441B81E85FB224651419A9999F90CC15441666666462546514152B81EA50CC154410AD7A3803046514148E17A540DC154417B14AE373D465141666666160EC15441EC51B8DE474651411F85EBF10EC154413D0AD72351465141D7A3707D0FC1544166666636534651417B14AE870FC15441F6285C1F544651413D0AD7E30EC1544185EB5108554651411F85EB910DC15441AE47E12A564651418FC2F5A80BC15441CDCCCCFC56465141333333330AC154417B14AEF754465141B81E85BB09C15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000850000005E17DB582046514158997E6B05C154410CD11BEA2046514178A2FD2907C15441D7A3704D2146514152B81E5508C15441329B196421465141B6F8D2B808C15441011D017E21465141A3BC830D09C154418441619D214651413FFE166009C15441CA8EAAFA214651412E969A550AC154410EBF1B4E22465141D0A935310BC15441E4CA4F8C224651411017EBD40BC15441FD8221A1224651412005B60B0CC154411406E7F1224651413DC649E00CC1544119F4EF0F234651417070D4E60CC15441D705D1ED2346514132D4B8D60CC15441580F0A9924465141742A13BE0CC15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>318747 - 58337
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000840000001F85EBA1A64551411F85EBC14EC15441295C8F42A6455141A4703DEA4FC154413D0AD7C3A5455141713D0A4751C154410AD7A390A44551410AD7A34053C154410AD7A3A0C0455141000000404FC154417B14AE47C9455141000000404DC1544185EB51E8D1455141EC51B8CE4AC15441D7A3708DD745514114AE47A148C154413D0AD753DD455141713D0AE745C154413D0AD7D3E24551411F85EB1142C154417B14AE07E7455141E17A148E3EC154411F85EB31ED455141C3F5286C38C1544100000090F2455141C3F5286C33C1544133333313F745514148E17AA430C15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000850000000AF814E60146514104AF24C629C154415C8FC235054651418FC2F58826C15441C3F5289C0746514114AE476123C1544152B81EC50946514114AE47A11FC15441295C8FF2074651419A9999F91CC154419A99994908465141713D0A171BC15441CDCCCCCC0A4651413D0AD7A319C154419A9999890C4651411F85EB6118C1544148E17A940E465141AE47E14A16C15441295C8F620B46514148E17A2413C15441F6285CDF0A46514185EB519812C15441E17A14CE084651415C8FC2D513C154410000003007465141713D0AE714C154413D0AD7530546514114AE47B116C15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>198525 - 198720
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D00000066C51D4753F55041B8F5A7A8420C5541E6E8A7DB52F550417879C420440C55410D5E097951F5504185CB522F460C5541E7BDE45650F55041386FB846470C5541C11DC0344FF55041041AA048480C554178FA219E4EF55041DFFECB1F490C55416F17F7B952F55041B04871F64B0C5541EDBCE11655F55041C096EC844D0C5541977771F859F5504113B59039500C5541D2C0A3755FF55041C47FF3C4520C5541969AA99163F55041C856B318540C55411796D9FF65F55041903BC5FE530C554143EE31506AF550418169138B530C55417BF4CFDC6AF55041B7A046BD510C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001800000014AE47B164F5504148E17A64540C5541AE47E19A62F550417B14AED7530C5541E17A14BE5FF5504152B81EE5520C5541F6285CBF5CF550410AD7A390510C554185EB51585AF55041CDCCCC6C500C5541CDCCCCCC57F550410AD7A3104F0C5541AE47E10A55F55041E17A147E4D0C554185EB515853F550413D0AD7634C0C5541E17A143E4EF55041D7A370DD480C55413D0AD7434DF55041E17A142E4A0C5541333333734CF550417B14AE474B0C5541B81E855B4BF55041E17A146E4C0C5541D7A370FD4AF55041D7A370CD4C0C5541295C8FB24AF550419A9999B94C0C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>198525 - 1443905
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D00000066C51D4753F55041B8F5A7A8420C5541E6E8A7DB52F550417879C420440C55410D5E097951F5504185CB522F460C5541E7BDE45650F55041386FB846470C5541C11DC0344FF55041041AA048480C554178FA219E4EF55041DFFECB1F490C55416F17F7B952F55041B04871F64B0C5541EDBCE11655F55041C096EC844D0C5541977771F859F5504113B59039500C5541D2C0A3755FF55041C47FF3C4520C5541969AA99163F55041C856B318540C55411796D9FF65F55041903BC5FE530C554143EE31506AF550418169138B530C55417BF4CFDC6AF55041B7A046BD510C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001800000014AE47B164F5504148E17A64540C5541AE47E19A62F550417B14AED7530C5541E17A14BE5FF5504152B81EE5520C5541F6285CBF5CF550410AD7A390510C554185EB51585AF55041CDCCCC6C500C5541CDCCCCCC57F550410AD7A3104F0C5541AE47E10A55F55041E17A147E4D0C554185EB515853F550413D0AD7634C0C5541E17A143E4EF55041D7A370DD480C55413D0AD7434DF55041E17A142E4A0C5541333333734CF550417B14AE474B0C5541B81E855B4BF55041E17A146E4C0C5541D7A370FD4AF55041D7A370CD4C0C5541295C8FB24AF550419A9999B94C0C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>198525 - 4130688
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D00000066C51D4753F55041B8F5A7A8420C5541E6E8A7DB52F550417879C420440C55410D5E097951F5504185CB522F460C5541E7BDE45650F55041386FB846470C5541C11DC0344FF55041041AA048480C554178FA219E4EF55041DFFECB1F490C55416F17F7B952F55041B04871F64B0C5541EDBCE11655F55041C096EC844D0C5541977771F859F5504113B59039500C5541D2C0A3755FF55041C47FF3C4520C5541969AA99163F55041C856B318540C55411796D9FF65F55041903BC5FE530C554143EE31506AF550418169138B530C55417BF4CFDC6AF55041B7A046BD510C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001800000014AE47B164F5504148E17A64540C5541AE47E19A62F550417B14AED7530C5541E17A14BE5FF5504152B81EE5520C5541F6285CBF5CF550410AD7A390510C554185EB51585AF55041CDCCCC6C500C5541CDCCCCCC57F550410AD7A3104F0C5541AE47E10A55F55041E17A147E4D0C554185EB515853F550413D0AD7634C0C5541E17A143E4EF55041D7A370DD480C55413D0AD7434DF55041E17A142E4A0C5541333333734CF550417B14AE474B0C5541B81E855B4BF55041E17A146E4C0C5541D7A370FD4AF55041D7A370CD4C0C5541295C8FB24AF550419A9999B94C0C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>319825 - 56431
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E0000003333331355C15041CDCCCC4C0F4B5541333333A35CC15041333333B30F4B55415C8FC25572C150419A9999D9104B5541295C8FC274C15041AE47E16A0B4B5541F6285C2F76C15041B81E85BB0A4B55410AD7A30077C15041D7A370FD084B554152B81E657EC1504148E17AB4004B5541F6285C4F87C1504148E17A64FA4A55418FC2F5685FC1504100000030DF4A5541E17A140E5FC1504133333343DF4A5541713D0AB745C150411F85EBB1E44A55419A99992940C15041666666E6E54A55418FC2F5283EC1504185EB51180E4B55413333331355C15041CDCCCC4C0F4B5541
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000E17A140E5FC1504133333343DF4A5541D9341E2B5AC1504115FF624FE04A5541AB79389C54C15041E3046F80E14A5541F296A65E50C15041B1B22969E24A5541B3FDB06A49C150419523C2E6E34A554138E099B445C15041E50473B2E44A55410F89B6B441C150416A1FA790E54A55419A99992940C15041666666E6E54A554192770F353FC150410C0CE612F94A5541D9E93E2C3EC15041110FEF0F0E4B55416EE0484E3EC15041C761481A0E4B55413333331355C15041CDCCCC4C0F4B5541333333A35CC15041333333B30F4B55415C8FC25572C150419A9999D9104B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>319873 - 130563
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E00000052B81E85ADC050410AD7A3B0FA4A55411F85EB41ADC050419A999939F64A5541AE47E17AACC050415C8FC205E94A55413D0AD70387C05041295C8FC2F04A5541AE47E16A84C050419A999999F14A5541CDCCCC2C81C05041F6285C0FF34A5541000000D07DC05041E17A14FEF54A5541295C8FA278C05041D7A370ADFE4A5541EC51B8EE79C0504166666646FF4A55411F85EB617CC050410AD7A3A0FE4A55413D0AD73395C050411F85EB31F94A5541666666269DC0504133333323F94A5541AE47E1BAA7C050413D0AD723FB4A554152B81E85ADC050410AD7A3B0FA4A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000A18758D579C05041B46CD2AAFC4A5541A92395E878C050414908FB37FE4A55414B4D2FD378C05041E3EDD4C3FE4A5541D19862FF79C05041B685E53DFF4A5541480C8C617AC0504172870D28FF4A55411F85EB617CC050410AD7A3A0FE4A55418266444593C05041DC892B9EF94A5541EA9CB80195C05041BD50443BF94A5541C5D6220995C05041BD50443BF94A55413D0AD73395C050411F85EB31F94A5541666666269DC0504133333323F94A5541942052609EC0504103D29D5EF94A55413E5C8FDAA7C05041E30E2716FB4A55418B0D2704A9C05041E3B53F0AFB4A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>319873 - 418284
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E00000052B81E85ADC050410AD7A3B0FA4A55411F85EB41ADC050419A999939F64A5541AE47E17AACC050415C8FC205E94A55413D0AD70387C05041295C8FC2F04A5541AE47E16A84C050419A999999F14A5541CDCCCC2C81C05041F6285C0FF34A5541000000D07DC05041E17A14FEF54A5541295C8FA278C05041D7A370ADFE4A5541EC51B8EE79C0504166666646FF4A55411F85EB617CC050410AD7A3A0FE4A55413D0AD73395C050411F85EB31F94A5541666666269DC0504133333323F94A5541AE47E1BAA7C050413D0AD723FB4A554152B81E85ADC050410AD7A3B0FA4A5541
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000A18758D579C05041B46CD2AAFC4A5541A92395E878C050414908FB37FE4A55414B4D2FD378C05041E3EDD4C3FE4A5541D19862FF79C05041B685E53DFF4A5541480C8C617AC0504172870D28FF4A55411F85EB617CC050410AD7A3A0FE4A55418266444593C05041DC892B9EF94A5541EA9CB80195C05041BD50443BF94A5541C5D6220995C05041BD50443BF94A55413D0AD73395C050411F85EB31F94A5541666666269DC0504133333323F94A5541942052609EC0504103D29D5EF94A55413E5C8FDAA7C05041E30E2716FB4A55418B0D2704A9C05041E3B53F0AFB4A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>319903 - 56432
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000295C8F8253C050411F85EB61494C5541713D0A4752C050418FC2F5E8494C55418FC2F53851C05041C3F528EC454C55415C8FC27550C0504166666676424C55410AD7A32045C0504148E17A84424C5541CDCCCCBC45C05041B81E852B494C5541D7A370FD46C05041713D0AF74E4C5541295C8F7248C05041B81E858B534C5541713D0A574AC05041A4703DAA584C5541666666664CC05041B81E856B5D4C5541C3F5284C50C05041000000D0644C55413D0AD7F356C050410AD7A350704C5541713D0A2759C050413D0AD7336E4C5541E17A145E62C05041713D0A17604C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000E110425758C0504145A5FC6C424C5541286FCAD554C05041C999A49A424C55419426020755C05041B7FA127D434C5541EC51B89E55C05041713D0A37464C5541295C8F8253C050411F85EB61494C554183F9919952C05041D042A3C5494C5541E97F024C52C05041423ED5E6494C5541713D0A4752C050418FC2F5E8494C55418FC2F53851C05041C3F528EC454C554127FFA18250C050418B1ED0B0424C55412677176550C05041071C7B76424C5541FD3729B44AC05041C1438D7D424C5541759F60C948C050413209EF7F424C5541F32C0C4445C0504159E34E84424C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>319903 - 130565
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000295C8F8253C050411F85EB61494C5541713D0A4752C050418FC2F5E8494C55418FC2F53851C05041C3F528EC454C55415C8FC27550C0504166666676424C55410AD7A32045C0504148E17A84424C5541CDCCCCBC45C05041B81E852B494C5541D7A370FD46C05041713D0AF74E4C5541295C8F7248C05041B81E858B534C5541713D0A574AC05041A4703DAA584C5541666666664CC05041B81E856B5D4C5541C3F5284C50C05041000000D0644C55413D0AD7F356C050410AD7A350704C5541713D0A2759C050413D0AD7336E4C5541E17A145E62C05041713D0A17604C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000DC10425758C0504142A5FC6C424C5541246FCAD554C05041C899A49A424C55419626020755C05041B9FA127D434C5541EC51B89E55C05041713D0A37464C5541295C8F8253C050411F85EB61494C554187F9919952C05041D042A3C5494C5541ED7F024C52C05041403ED5E6494C5541713D0A4752C050418FC2F5E8494C55418FC2F53851C05041C3F528EC454C554124FFA18250C05041861ED0B0424C55412B77176550C050410B1C7B76424C5541FD3729B44AC05041C0438D7D424C5541729F60C948C050412D09EF7F424C5541F42C0C4445C050415DE34E84424C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>319903 - 418286
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000295C8F8253C050411F85EB61494C5541713D0A4752C050418FC2F5E8494C55418FC2F53851C05041C3F528EC454C55415C8FC27550C0504166666676424C55410AD7A32045C0504148E17A84424C5541CDCCCCBC45C05041B81E852B494C5541D7A370FD46C05041713D0AF74E4C5541295C8F7248C05041B81E858B534C5541713D0A574AC05041A4703DAA584C5541666666664CC05041B81E856B5D4C5541C3F5284C50C05041000000D0644C55413D0AD7F356C050410AD7A350704C5541713D0A2759C050413D0AD7336E4C5541E17A145E62C05041713D0A17604C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000DC10425758C0504142A5FC6C424C5541246FCAD554C05041C899A49A424C55419626020755C05041B9FA127D434C5541EC51B89E55C05041713D0A37464C5541295C8F8253C050411F85EB61494C554187F9919952C05041D042A3C5494C5541ED7F024C52C05041403ED5E6494C5541713D0A4752C050418FC2F5E8494C55418FC2F53851C05041C3F528EC454C554124FFA18250C05041861ED0B0424C55412B77176550C050410B1C7B76424C5541FD3729B44AC05041C0438D7D424C5541729F60C948C050412D09EF7F424C5541F42C0C4445C050415DE34E84424C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976925 - 58870
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000D7A370FDC2A750415C8FC2E5465C54411F85EB51C1A750417B14AE674A5C54415C8FC235D3A7504185EB5198515C5441D7A370ADD4A750418FC2F5684E5C54419A999989D8A7504133333303465C5441713D0AD7DBA7504185EB51383F5C54413D0AD773DFA75041666666E6375C5441F6285C7FE3A750410AD7A3702F5C54417B14AE17E6A75041AE47E19A295C5441EC51B8DEE8A750415C8FC295235C54411F85EB51EBA75041C3F5285C1E5C544166666606DCA75041D7A3709D145C5441713D0A97D0A75041E17A140E285C5441E17A14DECDA75041A4703D1A2D5C5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000005C8FC235D3A7504185EB5198515C5441D7A370ADD4A750418FC2F5684E5C54419A999989D8A7504133333303465C5441713D0AD7DBA7504185EB51383F5C54413ECBD933DCA7504154FE417C3E5C5441A73F7247E1A750411A406A14345C54412A8C388BE2A75041CAF63F6F315C54413367D465E3A75041872F09A62F5C54416FC51844E4A75041F83E44B62D5C54417B14AE17E6A75041AE47E19A295C544146D7649DE6A75041AAF41079285C54417C7C85B2E7A750413217EE0E265C54411F85EB51EBA75041C3F5285C1E5C544166666606DCA75041D7A3709D145C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>320557 - 3146838
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000470000005C8FC2B5117C51411F85EB717D6F5441EC51B82E0F7C5141B81E855B7F6F5441666666B6077C514185EB5158876F5441B81E85BBFF7B5141C3F5287C906F544166666646FC7B5141A4703D8A936F5441F6285CCFF97B51417B14AEA7956F5441B81E859BF27B514114AE4751996F5441C3F5287CEA7B5141713D0A579D6F54411F85EB41E67B51413D0AD713A06F5441F6285CFFE37B51413D0AD773A76F5441000000C0E67B5141B81E85EBAC6F5441D7A3701DF27B5141A4703DCAB16F5441713D0A37F27B51415C8FC2E5B26F5441CDCCCCBCF97B5141C3F5284CB76F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000033000000E81569C3477C51418E082691BB6F5441603AFB8C4B7C51411369F5E4B76F544181478DBF517C5141A36F3EFEBA6F54415F929B20547C5141A843F40CBE6F5441977B8B54547C5141BC77A652C06F5441A9EF6135547C51418F686BA6C36F544109589913557C5141656F93D4C36F544168C7C65C567C514170221471C46F544147839BA65A7C514167CED8C1C66F5441CB7228C95C7C5141193EF4E8C76F54414E8285A65F7C5141ED97C5DDC96F5441968D7758637C514176B31E6CCC6F5441FF78926E667C51410DC4AA8ECE6F5441721FE6D8677C5141AA9C8C7FCF6F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>320557 - 3308208
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000470000005C8FC2B5117C51411F85EB717D6F5441EC51B82E0F7C5141B81E855B7F6F5441666666B6077C514185EB5158876F5441B81E85BBFF7B5141C3F5287C906F544166666646FC7B5141A4703D8A936F5441F6285CCFF97B51417B14AEA7956F5441B81E859BF27B514114AE4751996F5441C3F5287CEA7B5141713D0A579D6F54411F85EB41E67B51413D0AD713A06F5441F6285CFFE37B51413D0AD773A76F5441000000C0E67B5141B81E85EBAC6F5441D7A3701DF27B5141A4703DCAB16F5441713D0A37F27B51415C8FC2E5B26F5441CDCCCCBCF97B5141C3F5284CB76F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000033000000E81569C3477C51418E082691BB6F5441603AFB8C4B7C51411369F5E4B76F544181478DBF517C5141A36F3EFEBA6F54415F929B20547C5141A843F40CBE6F5441977B8B54547C5141BC77A652C06F5441A9EF6135547C51418F686BA6C36F544109589913557C5141656F93D4C36F544168C7C65C567C514170221471C46F544147839BA65A7C514167CED8C1C66F5441CB7228C95C7C5141193EF4E8C76F54414E8285A65F7C5141ED97C5DDC96F5441968D7758637C514176B31E6CCC6F5441FF78926E667C51410DC4AA8ECE6F5441721FE6D8677C5141AA9C8C7FCF6F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>320630 - 3144577
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000850000003D0AD763357F514114AE47611F6F5441E17A142E317F5141000000201D6F54417B14AE07247F5141295C8FC2136F5441EC51B86E227F5141295C8F12166F544152B81E851F7F5141E17A143E186F54418FC2F5181A7F5141000000201A6F5441713D0A37157F51415C8FC2351A6F54413D0AD7C30F7F5141333333031A6F54419A9999C90C7F5141295C8FC2176F5441EC51B8AE0A7F51410AD7A3D0166F544148E17AD4077F5141333333B3166F5441EC51B8BE067F51417B14AE37136F544152B81E25057F514114AE4731106F5441F6285CBF027F5141E17A14AE0D6F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000220000009363CF4F027F5141FABB4403306F5441C5D120740C7F51410D10B9522B6F5441F60E9A1D107F5141DA897DB4296F544182726232157F51419B59EA0F296F544142DFD5C81D7F5141324CAE47296F54412A8077F7257F5141EA02E0CC296F54419F43A15A357F51413BA380671F6F54415BAC724E317F5141445456311D6F5441451137082F7F5141E67967981B6F5441B3373A05247F5141CF3C1CC6136F544136B65322227F5141B3F64B1C166F5441D15927E81E7F514101A2DEAC196F5441CA516D4E167F51418538B2791B6F5441B40281AA107F5141ABA1298E1A6F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321833 - 28568
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001B000000666666D6C71551418FC2F598418454418FC2F5A8BB155141333333F34A84544100000070AD155141AE47E1AA5484544152B81EF59B155141D7A3706D60845441B81E853B8F155141000000E068845441B81E859B8E155141A4703D4A69845441333333938F155141713D0AE76A8454413D0AD77390155141A4703D9A6C84544114AE4781901551413D0AD7B36C845441AE47E12A93155141295C8F026B845441295C8F529A1551413D0AD79366845441A4703D6A9E1551411F85EB416484544114AE4781A51551411F85EB3160845441A4703D2AAD155141F6285CFF5B845441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000FDF5C03B9515514106902BE464845441231193059C155141D614AA5B6084544150B51FB5A1155141D2AFD48E5C8454414A48189FAE15514186C6C0D5538454418D50A9A9B91551411C5D71504C845441ADBE00F1B9155141CB98121E4C845441ABDE0F09C815514137CE347041845441BBF45825CE1551412A5E506E3C845441A3667020DB15514182A40AC231845441313FE2DEE115514109A831342C845441F5CBFB81E7155141B65FE66D2784544196621599E8155141D623818126845441D2E817DBF0155141457C21121F845441E1FCBBF3F5155141D578A2771A845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321833 - 72134
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001B000000666666D6C71551418FC2F598418454418FC2F5A8BB155141333333F34A84544100000070AD155141AE47E1AA5484544152B81EF59B155141D7A3706D60845441B81E853B8F155141000000E068845441B81E859B8E155141A4703D4A69845441333333938F155141713D0AE76A8454413D0AD77390155141A4703D9A6C84544114AE4781901551413D0AD7B36C845441AE47E12A93155141295C8F026B845441295C8F529A1551413D0AD79366845441A4703D6A9E1551411F85EB416484544114AE4781A51551411F85EB3160845441A4703D2AAD155141F6285CFF5B845441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000FDF5C03B9515514106902BE464845441231193059C155141D614AA5B6084544150B51FB5A1155141D2AFD48E5C8454414A48189FAE15514186C6C0D5538454418D50A9A9B91551411C5D71504C845441ADBE00F1B9155141CB98121E4C845441ABDE0F09C815514137CE347041845441BBF45825CE1551412A5E506E3C845441A3667020DB15514182A40AC231845441313FE2DEE115514109A831342C845441F5CBFB81E7155141B65FE66D2784544196621599E8155141D623818126845441D2E817DBF0155141457C21121F845441E1FCBBF3F5155141D578A2771A845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321858 - 1062002
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000003A0000000AD7A3402C1A51417B14AEB73D845441EC51B8CE2A1A51411F85EB512A845441CDCCCCCC281A5141C3F528AC1D845441A4703D8A331A5141CDCCCC0C0C845441A4703D3A341A5141B81E85EB0A8454419A9999E9391A51417B14AE9701845441333333F33C1A51418FC2F5E80284544185EB5148411A514166666626048454415C8FC2F5491A5141D7A370DD058454419A999959451A51410AD7A380F2835441A4703D9A431A5141AE47E12AEB8354413D0AD753421A5141000000D0E58354419A999919411A514185EB51A8E0835441C3F528AC311A5141AE47E19AE1835441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000702DEA231A1A5141FC104FEF04845441A0C3A6F6191A51412EE95EAF0484544113C26A70191A514168536EA6038454410D3262DA181A514172F54E7E0284544162D092F3161A514125938478FE83544147C38CCA151A5141969BD6A5FB835441D97B2FDB131A5141C8E994F0F6835441394E2CCF121A51413911F568F78354415AB11632131A5141E6BF3FA3F8835441BF0451E7141A5141FB2E7DDCFD835441A2956E57171A5141039E1333058454412755DF31181A514140EB6EA90784544152B81E95191A5141333333830B8454417B14AEC71D1A5141333333230A845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321858 - 3010343
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000003A0000000AD7A3402C1A51417B14AEB73D845441EC51B8CE2A1A51411F85EB512A845441CDCCCCCC281A5141C3F528AC1D845441A4703D8A331A5141CDCCCC0C0C845441A4703D3A341A5141B81E85EB0A8454419A9999E9391A51417B14AE9701845441333333F33C1A51418FC2F5E80284544185EB5148411A514166666626048454415C8FC2F5491A5141D7A370DD058454419A999959451A51410AD7A380F2835441A4703D9A431A5141AE47E12AEB8354413D0AD753421A5141000000D0E58354419A999919411A514185EB51A8E0835441C3F528AC311A5141AE47E19AE1835441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000130000005AD89B652B1A5141492E01AA178454416D7AF78B2C1A5141BBED5486178454417B12CB382E1A5141306CB3C6148454411C8DA5F62E1A5141CB142F8F13845441D6DA7A7A2F1A51418841DEB6128454414E1EB9D52F1A5141E8582721128454416CDFB1A7301A51415349A0C810845441A4703D8A331A5141CDCCCC0C0C845441A4703D3A341A5141B81E85EB0A8454416D20BCD5371A51415388520005845441C370524F341A514181A3ED9D06845441FBCAFB47291A5141B67A919A0B845441FCA0FFAE241A5141E4A7A0990D845441B7F018C7261A51413EFAC2D111845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321858 - 3827226
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000003A0000000AD7A3402C1A51417B14AEB73D845441EC51B8CE2A1A51411F85EB512A845441CDCCCCCC281A5141C3F528AC1D845441A4703D8A331A5141CDCCCC0C0C845441A4703D3A341A5141B81E85EB0A8454419A9999E9391A51417B14AE9701845441333333F33C1A51418FC2F5E80284544185EB5148411A514166666626048454415C8FC2F5491A5141D7A370DD058454419A999959451A51410AD7A380F2835441A4703D9A431A5141AE47E12AEB8354413D0AD753421A5141000000D0E58354419A999919411A514185EB51A8E0835441C3F528AC311A5141AE47E19AE1835441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000130000005AD89B652B1A5141492E01AA178454416D7AF78B2C1A5141BBED5486178454417B12CB382E1A5141306CB3C6148454411C8DA5F62E1A5141CB142F8F13845441D6DA7A7A2F1A51418841DEB6128454414E1EB9D52F1A5141E8582721128454416CDFB1A7301A51415349A0C810845441A4703D8A331A5141CDCCCC0C0C845441A4703D3A341A5141B81E85EB0A8454416D20BCD5371A51415388520005845441C370524F341A514181A3ED9D06845441FBCAFB47291A5141B67A919A0B845441FCA0FFAE241A5141E4A7A0990D845441B7F018C7261A51413EFAC2D111845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>321858 - 3827251
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000003A0000000AD7A3402C1A51417B14AEB73D845441EC51B8CE2A1A51411F85EB512A845441CDCCCCCC281A5141C3F528AC1D845441A4703D8A331A5141CDCCCC0C0C845441A4703D3A341A5141B81E85EB0A8454419A9999E9391A51417B14AE9701845441333333F33C1A51418FC2F5E80284544185EB5148411A514166666626048454415C8FC2F5491A5141D7A370DD058454419A999959451A51410AD7A380F2835441A4703D9A431A5141AE47E12AEB8354413D0AD753421A5141000000D0E58354419A999919411A514185EB51A8E0835441C3F528AC311A5141AE47E19AE1835441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000702DEA231A1A5141FC104FEF04845441A0C3A6F6191A51412EE95EAF0484544113C26A70191A514168536EA6038454410D3262DA181A514172F54E7E0284544162D092F3161A514125938478FE83544147C38CCA151A5141969BD6A5FB835441D97B2FDB131A5141C8E994F0F6835441394E2CCF121A51413911F568F78354415AB11632131A5141E6BF3FA3F8835441BF0451E7141A5141FB2E7DDCFD835441A2956E57171A5141039E1333058454412755DF31181A514140EB6EA90784544152B81E95191A5141333333830B8454417B14AEC71D1A5141333333230A845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>322183 - 3013384
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000034000000000000F0621B51411F85EBC185815441D7A3708D681B514148E17A447D815441713D0A37701B5141666666767281544185EB51A8771B514152B81EE5698154415C8FC2C57B1B51419A9999B9638154411F85EBF17C1B514185EB517861815441C3F5286C7C1B51411F85EBC1608154413D0AD793791B5141713D0A4760815441EC51B86E751B5141CDCCCC1C5F8154415C8FC2156F1B51417B14AEA75A81544148E17A146A1B51415C8FC2E55781544166666666671B51413D0AD7B3558154417B14AE57641B51410AD7A34053815441D7A370ED5E1B51419A9999694F815441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000BB3C8EAC5B1B5141D2DA79B78C815441B0C21B425C1B5141E5513F1F8D815441ECE8C2295C1B5141BA04822D8D815441EC51B84E5F1B5141B81E856B8C8154413D0AD7A3601B51419A9999F989815441000000F0621B51411F85EBC185815441D7A3708D681B514148E17A447D815441713D0A37701B5141666666767281544185EB51A8771B514152B81EE5698154415C8FC2C57B1B51419A9999B9638154411F85EBF17C1B514185EB517861815441C3F5286C7C1B51411F85EBC1608154413D0AD793791B5141713D0A4760815441EC51B86E751B5141CDCCCC1C5F815441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>322183 - 3392696
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000034000000000000F0621B51411F85EBC185815441D7A3708D681B514148E17A447D815441713D0A37701B5141666666767281544185EB51A8771B514152B81EE5698154415C8FC2C57B1B51419A9999B9638154411F85EBF17C1B514185EB517861815441C3F5286C7C1B51411F85EBC1608154413D0AD793791B5141713D0A4760815441EC51B86E751B5141CDCCCC1C5F8154415C8FC2156F1B51417B14AEA75A81544148E17A146A1B51415C8FC2E55781544166666666671B51413D0AD7B3558154417B14AE57641B51410AD7A34053815441D7A370ED5E1B51419A9999694F815441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000BB3C8EAC5B1B5141D2DA79B78C815441B0C21B425C1B5141E5513F1F8D815441ECE8C2295C1B5141BA04822D8D815441EC51B84E5F1B5141B81E856B8C8154413D0AD7A3601B51419A9999F989815441000000F0621B51411F85EBC185815441D7A3708D681B514148E17A447D815441713D0A37701B5141666666767281544185EB51A8771B514152B81EE5698154415C8FC2C57B1B51419A9999B9638154411F85EBF17C1B514185EB517861815441C3F5286C7C1B51411F85EBC1608154413D0AD793791B5141713D0A4760815441EC51B86E751B5141CDCCCC1C5F815441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>322195 - 2995598
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000032000000F6285C6F571D5141CDCCCC6CA6815441C3F5282C621D5141D7A3700DA781544148E17A34631D5141F6285CEFA181544166666606661D514148E17AD498815441CDCCCCEC681D5141333333D391815441A4703DBA6A1D5141000000E08D81544185EB51C86A1D5141EC51B87E8C815441B81E854B6A1D51417B14AE378B8154418FC2F538691D51418FC2F5588A8154417B14AEE7671D51417B14AE278A815441AE47E10A571D5141F6285C5F89815441295C8FC24B1D514185EB51F8888154413D0AD7334A1D51413D0AD7F388815441C3F5289C471D5141CDCCCCEC88815441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000F27B123B381D514132931C6AA081544151E0068B3B1D51417D51EA498E815441E41FDE8B3B1D5141D40A0E4A8E81544172C0148C3B1D5141F177E3488E815441323CDF363D1D51412258EC908E81544163FBCB8B521D514110D0401B92815441FE1A0E09631D5141C514D7D794815441C2560C60671D514115F8399095815441EE7BC8F8671D51417D7EA020948154416730A507691D5141770A5F989181544107E656BB6A1D51410909EBD78D8154418DF060C86A1D5141D6D0AB7C8C815441D761664C6A1D5141EB7A853B8B8154418FC2F538691D51418FC2F5588A815441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>322195 - 3807333
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000032000000F6285C6F571D5141CDCCCC6CA6815441C3F5282C621D5141D7A3700DA781544148E17A34631D5141F6285CEFA181544166666606661D514148E17AD498815441CDCCCCEC681D5141333333D391815441A4703DBA6A1D5141000000E08D81544185EB51C86A1D5141EC51B87E8C815441B81E854B6A1D51417B14AE378B8154418FC2F538691D51418FC2F5588A8154417B14AEE7671D51417B14AE278A815441AE47E10A571D5141F6285C5F89815441295C8FC24B1D514185EB51F8888154413D0AD7334A1D51413D0AD7F388815441C3F5289C471D5141CDCCCCEC88815441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000F27B123B381D514132931C6AA081544151E0068B3B1D51417D51EA498E815441E41FDE8B3B1D5141D40A0E4A8E81544172C0148C3B1D5141F177E3488E815441323CDF363D1D51412258EC908E81544163FBCB8B521D514110D0401B92815441FE1A0E09631D5141C514D7D794815441C2560C60671D514115F8399095815441EE7BC8F8671D51417D7EA020948154416730A507691D5141770A5F989181544107E656BB6A1D51410909EBD78D8154418DF060C86A1D5141D6D0AB7C8C815441D761664C6A1D5141EB7A853B8B8154418FC2F538691D51418FC2F5588A815441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>323591 - 189774
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000B000000E17A147E25C9504185EB51F86FA654410AD7A3C0FEC850415C8FC2056CA65441F6285C2FFDC85041A4703D5A6CA654415C8FC235FCC85041295C8FA26CA654411F85EB21FAC85041CDCCCCBC6DA65441C3F528CCF6C850415C8FC22570A65441AE47E1AAF4C850411F85EBF171A65441E17A145EF3C85041C3F5287C73A65441295C8FB2F0C85041EC51B86E78A65441666666B61FC9504185EB51B87CA65441E17A147E25C9504185EB51F86FA65441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000001184D7322C9504146EB36AE76A65441034A147E25C95041505752F86FA654418467B806FFC8504188A7E60C6CA65441EAB62A65FEC850412D7B04196CA65441F6285C2FFDC85041A4703D5A6CA654415C8FC235FCC85041295C8FA26CA654411F85EB21FAC85041CDCCCCBC6DA65441C3F528CCF6C850415C8FC22570A6544115821048F5C8504183C4456D71A65441AE47E1AAF4C850411F85EBF171A654411A872A5EF3C8504187D70E7C73A654413719155EF3C85041D935297C73A65441C6AC90B2F0C850419E70B86E78A654415C39C789F7C8504176CE6B0E79A65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>323591 - 389148
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000B000000E17A147E25C9504185EB51F86FA654410AD7A3C0FEC850415C8FC2056CA65441F6285C2FFDC85041A4703D5A6CA654415C8FC235FCC85041295C8FA26CA654411F85EB21FAC85041CDCCCCBC6DA65441C3F528CCF6C850415C8FC22570A65441AE47E1AAF4C850411F85EBF171A65441E17A145EF3C85041C3F5287C73A65441295C8FB2F0C85041EC51B86E78A65441666666B61FC9504185EB51B87CA65441E17A147E25C9504185EB51F86FA65441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000001184D7322C9504146EB36AE76A65441034A147E25C95041505752F86FA654418467B806FFC8504188A7E60C6CA65441EAB62A65FEC850412D7B04196CA65441F6285C2FFDC85041A4703D5A6CA654415C8FC235FCC85041295C8FA26CA654411F85EB21FAC85041CDCCCCBC6DA65441C3F528CCF6C850415C8FC22570A6544115821048F5C8504183C4456D71A65441AE47E1AAF4C850411F85EBF171A654411A872A5EF3C8504187D70E7C73A654413719155EF3C85041D935297C73A65441C6AC90B2F0C850419E70B86E78A654415C39C789F7C8504176CE6B0E79A65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>323853 - 234309
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000EC51B82E18C65041D7A370FDA5AB54410AD7A3B016C650415C8FC2F5A4AB5441CDCCCC1C15C65041EC51B83EA4AB54413D0AD7E30AC6504152B81EF5A1AB544148E17AA40CC65041A4703DBAC8AB5441295C8F420EC650415C8FC2A5C8AB5441A4703DBA19C6504152B81E15C8AB54415C8FC29520C65041F6285CBFC7AB54419A9999491FC65041333333E3AAAB5441EC51B82E18C65041D7A370FDA5AB5441
+</a>
+
+<b>
+0106000000010000000103000000010000000800000017113CBA19C65041A4C91E15C8AB544184FDF2F51CC650415660AFECC7AB54411364C29520C650418F935BBFC7AB54411A43675220C65041575F29E5C1AB54419A9999491FC65041333333E3AAAB54411F1424661DC650417C37F395A9AB54419C6EB82E18C65041CF0D72FDA5AB544117113CBA19C65041A4C91E15C8AB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>324422 - 191558
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000000000001E9050410AD7A3C03D265541000000E020905041295C8F523D26554185EB51582290504185EB51483C26554185EB511826905041295C8FC23B265541CDCCCCAC21905041F6285C1F3A26554152B81E351F905041295C8FA2382655419A9999A91B90504152B81E9536265541AE47E10A169050413D0AD7A3342655413333333308905041D7A3704D3026554114AE4711FB8F5041C3F5286C2B265541CDCCCC1CF98F5041666666262E265541713D0A37F18F50417B14AED72B2655418FC2F558ED8F50410AD7A3402D265541E17A141EF28F50410AD7A37031265541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000008F773FF21905041542031873C26554185EB51582290504185EB51483C265541F0CF5A8F229050411BDEA6403C2655417CA3712924905041A8B2A0773B2655415911F9C52190504161A0312B3B265541377F80621F905041F7048BB83A265541A95AA2C91E905041A7499DB43826554114ED07FF1C9050418620281439265541A048204F1A9050417C17E7D636265541B2889B43199050417377A95C372655418656E56517905041029346B835265541750D2934169050413EA5B5043626554191EDE1A2149050418E5762CB3526554115097FFE129050410033843235265541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>325165 - 146824
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000020000000C00000052B81ED5E788514114AE47913FA15441713D0AF7E588514148E17AB43EA154415C8FC215E5885141A4703DFA3DA154411F85EB91E38851415C8FC22541A15441EC51B86EE5885141EC51B8AE42A15441E17A14EEE8885141E17A14AE44A15441713D0AD7EB8851413D0AD78345A1544185EB5158EE8851410AD7A3A045A15441D7A370DDEF8851413D0AD7F343A15441713D0AC7F0885141713D0A2741A154415C8FC275E98851413D0AD7133DA1544152B81ED5E788514114AE47913FA154410800000000000040EE885141D7A3700D41A15441C3F5284CEE8851419A9999E9 [...]
+</a>
+
+<b>
+010600000001000000010300000003000000A2000000CDCCCCCCF0885141AE47E13A47A1544182D7AB09F18851410697021F48A1544158196E1EF188514172E7BC5548A154416ADD6529F188514118D7F26648A1544114AE4751F38851418FC2F5C84BA1544110AFE3FDF48851419C5389474DA1544186A45E58F58851411D914C984DA1544195F8333AF88851414873A01250A15441EC51B81EF988514148E17AD450A1544100000050FA8851419A9999D952A154410952E740FB88514129ADC56E54A15441D1FC3942FB88514127B1F97054A15441EE3A695BFC8851415EE1DE3256A15441295C8F02FD8851410AD7A32057A15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>325176 - 146827
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000190000001F85EBD1E188514152B81E0542A15441EC51B8AEE1885141295C8F9242A1544185EB51D8E1885141D7A3702D43A15441F6285C9FE38851411F85EBA144A15441A4703D3AE4885141B81E85AB48A15441AE47E12AE28851419A9999E948A1544100000090E188514148E17AF448A15441C3F5285CE1885141F6285CEF46A15441713D0A17E0885141000000F046A154419A9999A9E08851419A9999194CA154413D0AD7F3E0885141666666B64DA154419A9999A9E188514152B81E954BA1544148E17AA4E18851411F85EB914AA154418FC2F568E2885141666666F649A15441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000036000000ACF92928E78851410AD8A27247A1544148E17A54E58851413D0AD7E345A154419C1F0A98E4885141684EFF3344A1544158A40F8EE48851414649211D44A154419102931DE3885141B220C1C142A15441313F880CE288514173302E2642A1544117C93109E2885141313A4C2442A15441E11BB308E288514163C6042442A15441BF726304E28851415040962142A1544126E241F2E188514100295C1742A154414BC5CAE8E18851411A65051242A154415BBD99E6E18851417EF1C81042A154413AEFB2DAE1885141D161120A42A15441F39EF5D3E18851418036450642A15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>325406 - 1182046
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000020000000103000000010000000B000000713D0A471A86514152B81EF5B09B5441333333332086514185EB5158B79B54411F85EBF12C8651418FC2F518C59B5441A4703DFA4786514152B81E45BB9B54411F85EBA150865141F6285C1FB89B54411F85EB214D86514185EB5158B49B54419A999959418651411F85EBA1A79B54413D0AD7433386514100000070989B5441A4703D0A2B865141CDCCCCEC9C9B544133333393138651419A9999B9A99B5441713D0A471A86514152B81EF5B09B544101030000000100000007000000295C8FC20D86514133333373A39B5441D7A370DD1286514152B81EF5A89B5441F6285C [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000867F56D932865141B0511014989B5441F6285C8F32865141C3F528AC979B54414A6863232D8651415EE89DD8919B5441F4DCB05825865141538E7609969B5441DF7BC3330E8651417E68190DA29B5441D9480FD80D865141D513658AA39B544130838AC211865141CC85EAC3A79B5441F94CA3EF128651419C1932EBA89B5441968553E41286514138535DF1A89B54417DE79AC51386514110AAFDEFA99B54411C7FF82D16865141F534B282AC9B5441B12EDE491A8651415727B8F7B09B54415571026E1D865141FCA53C5BB49B5441333333332086514185EB5158B79B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>325406 - 3378659
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000020000000103000000010000000B000000713D0A471A86514152B81EF5B09B5441333333332086514185EB5158B79B54411F85EBF12C8651418FC2F518C59B5441A4703DFA4786514152B81E45BB9B54411F85EBA150865141F6285C1FB89B54411F85EB214D86514185EB5158B49B54419A999959418651411F85EBA1A79B54413D0AD7433386514100000070989B5441A4703D0A2B865141CDCCCCEC9C9B544133333393138651419A9999B9A99B5441713D0A471A86514152B81EF5B09B544101030000000100000007000000295C8FC20D86514133333373A39B5441D7A370DD1286514152B81EF5A89B5441F6285C [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000867F56D932865141B0511014989B5441F6285C8F32865141C3F528AC979B54414A6863232D8651415EE89DD8919B5441F4DCB05825865141538E7609969B5441DF7BC3330E8651417E68190DA29B5441D9480FD80D865141D513658AA39B544130838AC211865141CC85EAC3A79B5441F94CA3EF128651419C1932EBA89B5441968553E41286514138535DF1A89B54417DE79AC51386514110AAFDEFA99B54411C7FF82D16865141F534B282AC9B5441B12EDE491A8651415727B8F7B09B54415571026E1D865141FCA53C5BB49B5441333333332086514185EB5158B79B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326475 - 1354014
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001200000048E17AF482235141713D0A0708BB544148E17A847C235141E17A14CE06BB544100000030732351410AD7A33006BB5441F6285CEF6B2351411F85EBE105BB544185EB51686A235141D7A3709D05BB544148E17AC465235141EC51B83E05BB5441295C8FF25E23514148E17A7404BB544114AE476155235141713D0AE703BB54417B14AE774D235141A4703D4A03BB54413D0AD7934C235141D7A370FD07BB5441A4703DFA62235141E17A148E0ABB5441000000307D235141CDCCCCBC0CBB5441B81E85BB8223514185EB51580DBB5441CDCCCC5C8B2351410AD7A3200FBB5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000270000003F14EA9799235141491719CF0DBB54416F3B2DEE99235141DED6E0590BBB544123A89DDC9A235141A1CD77AC0ABB54414DCDCCFB9A23514159C5E3F708BB5441D67E24E3992351417049780B06BB54413D0AD7A398235141CDCCCC4C01BB54416666667696235141333333A3FCBA54419A9999399523514152B81E45F9BA544152B81E3595235141D7A3708DF7BA54419A99996995235141E17A143EF6BA544148E17A249623514148E17AC4F4BA5441C3F528BC9723514152B81ED5F1BA54413D0AD7A394235141713D0A57F0BA5441295C8F228F235141666666C6EEBA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326475 - 3484953
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001200000048E17AF482235141713D0A0708BB544148E17A847C235141E17A14CE06BB544100000030732351410AD7A33006BB5441F6285CEF6B2351411F85EBE105BB544185EB51686A235141D7A3709D05BB544148E17AC465235141EC51B83E05BB5441295C8FF25E23514148E17A7404BB544114AE476155235141713D0AE703BB54417B14AE774D235141A4703D4A03BB54413D0AD7934C235141D7A370FD07BB5441A4703DFA62235141E17A148E0ABB5441000000307D235141CDCCCCBC0CBB5441B81E85BB8223514185EB51580DBB5441CDCCCC5C8B2351410AD7A3200FBB5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000270000003F14EA9799235141491719CF0DBB54416F3B2DEE99235141DED6E0590BBB544123A89DDC9A235141A1CD77AC0ABB54414DCDCCFB9A23514159C5E3F708BB5441D67E24E3992351417049780B06BB54413D0AD7A398235141CDCCCC4C01BB54416666667696235141333333A3FCBA54419A9999399523514152B81E45F9BA544152B81E3595235141D7A3708DF7BA54419A99996995235141E17A143EF6BA544148E17A249623514148E17AC4F4BA5441C3F528BC9723514152B81ED5F1BA54413D0AD7A394235141713D0A57F0BA5441295C8F228F235141666666C6EEBA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326475 - 36809
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001200000048E17AF482235141713D0A0708BB544148E17A847C235141E17A14CE06BB544100000030732351410AD7A33006BB5441F6285CEF6B2351411F85EBE105BB544185EB51686A235141D7A3709D05BB544148E17AC465235141EC51B83E05BB5441295C8FF25E23514148E17A7404BB544114AE476155235141713D0AE703BB54417B14AE774D235141A4703D4A03BB54413D0AD7934C235141D7A370FD07BB5441A4703DFA62235141E17A148E0ABB5441000000307D235141CDCCCCBC0CBB5441B81E85BB8223514185EB51580DBB5441CDCCCC5C8B2351410AD7A3200FBB5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000006B8224826A23514180022ADF04BB544185EB51686A235141D7A3709D05BB5441D2BF289C732351418EFBC43706BB5441F1AD96FA7A23514186B81DB406BB54411D3CD9A6812351411AB3AEC707BB54410FFF9E83842351410F18B86908BB5441DCA29D05882351415BA9BA4709BB5441E17DECFE8B23514186A23C430ABB5441511F0FDC8E23514156297DF80ABB5441632CB1F591235141569FB2BC0BBB54414E00FDB794235141577D506B0CBB5441D63C650197235141A1599F050DBB5441588FC65299235141879212BA0DBB5441BA4CE9DE992351412C503AC90BBB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326475 - 76546
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001200000048E17AF482235141713D0A0708BB544148E17A847C235141E17A14CE06BB544100000030732351410AD7A33006BB5441F6285CEF6B2351411F85EBE105BB544185EB51686A235141D7A3709D05BB544148E17AC465235141EC51B83E05BB5441295C8FF25E23514148E17A7404BB544114AE476155235141713D0AE703BB54417B14AE774D235141A4703D4A03BB54413D0AD7934C235141D7A370FD07BB5441A4703DFA62235141E17A148E0ABB5441000000307D235141CDCCCCBC0CBB5441B81E85BB8223514185EB51580DBB5441CDCCCC5C8B2351410AD7A3200FBB5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000180000006B8224826A23514180022ADF04BB544185EB51686A235141D7A3709D05BB5441D2BF289C732351418EFBC43706BB5441F1AD96FA7A23514186B81DB406BB54411D3CD9A6812351411AB3AEC707BB54410FFF9E83842351410F18B86908BB5441DCA29D05882351415BA9BA4709BB5441E17DECFE8B23514186A23C430ABB5441511F0FDC8E23514156297DF80ABB5441632CB1F591235141569FB2BC0BBB54414E00FDB794235141577D506B0CBB5441D63C650197235141A1599F050DBB5441588FC65299235141879212BA0DBB5441BA4CE9DE992351412C503AC90BBB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>60205 - 955850
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000030000003300000054E3EC6912B450416FF15BC50CD95441060BE1F223B450414A0F31960ED95441B08B35573FB450418599FDC310D95441F1100ACC64B4504178F25D9F1AD954411DA890A560B4504120E0C8F731D9544152B81E4578B450417B14AE5737D95441EC51B80E79B45041F6285C6F37D95441666666F67EB450415C8FC2F537D954415C8FC2658AB45041713D0AD738D954416DD0744A90B4504195D6FE7710D9544113B88D307EB45041EEDE6FA80CD9544112575F4973B4504131A5C4CC09D95441CB7DF5586BB450418C5F1CE205D95441EF9AC1C474B45041256C8568E9D85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000219D12F168B450412299689EBDD854419A5E98B75EB450411BA50563B6D854410A956D5C58B450410BC33470B2D854411469E53E50B45041A1680840AFD854413950621B49B450417D2B0765ACD8544164A6D02C41B45041EA8C86F7AAD854413F4ED51F2BB45041B124CE13ACD85441A67BED4921B450417FF07C98B5D85441259932B01CB45041CBD97083BAD854413390825010B45041A8B769DACAD85441360F75DF0BB450416ECCD3BCEAD85441A8721E000CB45041B79272BCEAD85441319F71270CB450415183FDBBEAD85441E86B049914B45041025FB094EAD85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326726 - 3185315
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000007000000D7A3701D6D2151411F85EB81BCBA544148E17AD46D215141C3F528BCB8BA54417B14AE276E215141E17A14BEB4BA544133333373602151410AD7A3F0B1BA5441B81E85DB60215141A4703D5ABBBA54419A9999496021514114AE47D1BCBA5441D7A3701D6D2151411F85EB81BCBA54410103000000020000001300000066666606A92151410AD7A340F8BA5441EC51B8BEAD2151418FC2F5F8FABA5441F6285C0FB3215141A4703DBAF4BA5441AE47E19AB82151410AD7A3D0EEBA544100000030C02151417B14AE87E7BA5441295C8F62BB21514185EB51B8E4BA544152B81E [...]
+</a>
+
+<b>
+010600000001000000010300000002000000230000004F2C43DFB2215141F9E8C0F2F4BA5441C489391CB321514149CA85ACF4BA544147E13A63B4215141EC44D84FF3BA54415E66DC58B621514170C2F738F1BA5441B7A419F5B621514164A95F92F0BA5441EB81DB74B82151412EBA2EF9EEBA5441CC4A08BEB92151410D37E9B8EDBA544100000030C02151417B14AE87E7BA54415CA44FEFBD215141A0A04036E6BA5441CE3C4F49BC2151416994553FE5BA54413655E0B7BA215141623A5B43E4BA5441F64CF45DB8215141B348E1A6E2BA5441668438C8B62151412348D890E1BA54411C5AA3A7B62151415887EE10E2BA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326726 - 3393694
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000007000000D7A3701D6D2151411F85EB81BCBA544148E17AD46D215141C3F528BCB8BA54417B14AE276E215141E17A14BEB4BA544133333373602151410AD7A3F0B1BA5441B81E85DB60215141A4703D5ABBBA54419A9999496021514114AE47D1BCBA5441D7A3701D6D2151411F85EB81BCBA54410103000000020000001300000066666606A92151410AD7A340F8BA5441EC51B8BEAD2151418FC2F5F8FABA5441F6285C0FB3215141A4703DBAF4BA5441AE47E19AB82151410AD7A3D0EEBA544100000030C02151417B14AE87E7BA5441295C8F62BB21514185EB51B8E4BA544152B81E [...]
+</a>
+
+<b>
+010600000001000000010300000002000000230000004F2C43DFB2215141F9E8C0F2F4BA5441C489391CB321514149CA85ACF4BA544147E13A63B4215141EC44D84FF3BA54415E66DC58B621514170C2F738F1BA5441B7A419F5B621514164A95F92F0BA5441EB81DB74B82151412EBA2EF9EEBA5441CC4A08BEB92151410D37E9B8EDBA544100000030C02151417B14AE87E7BA54415CA44FEFBD215141A0A04036E6BA5441CE3C4F49BC2151416994553FE5BA54413655E0B7BA215141623A5B43E4BA5441F64CF45DB8215141B348E1A6E2BA5441668438C8B62151412348D890E1BA54411C5AA3A7B62151415887EE10E2BA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326726 - 253155
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000007000000D7A3701D6D2151411F85EB81BCBA544148E17AD46D215141C3F528BCB8BA54417B14AE276E215141E17A14BEB4BA544133333373602151410AD7A3F0B1BA5441B81E85DB60215141A4703D5ABBBA54419A9999496021514114AE47D1BCBA5441D7A3701D6D2151411F85EB81BCBA54410103000000020000001300000066666606A92151410AD7A340F8BA5441EC51B8BEAD2151418FC2F5F8FABA5441F6285C0FB3215141A4703DBAF4BA5441AE47E19AB82151410AD7A3D0EEBA544100000030C02151417B14AE87E7BA5441295C8F62BB21514185EB51B8E4BA544152B81E [...]
+</a>
+
+<b>
+010600000001000000010300000002000000230000004F2C43DFB2215141F9E8C0F2F4BA5441C489391CB321514149CA85ACF4BA544147E13A63B4215141EC44D84FF3BA54415E66DC58B621514170C2F738F1BA5441B7A419F5B621514164A95F92F0BA5441EB81DB74B82151412EBA2EF9EEBA5441CC4A08BEB92151410D37E9B8EDBA544100000030C02151417B14AE87E7BA54415CA44FEFBD215141A0A04036E6BA5441CE3C4F49BC2151416994553FE5BA54413655E0B7BA215141623A5B43E4BA5441F64CF45DB8215141B348E1A6E2BA5441668438C8B62151412348D890E1BA54411C5AA3A7B62151415887EE10E2BA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326726 - 274996
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000007000000D7A3701D6D2151411F85EB81BCBA544148E17AD46D215141C3F528BCB8BA54417B14AE276E215141E17A14BEB4BA544133333373602151410AD7A3F0B1BA5441B81E85DB60215141A4703D5ABBBA54419A9999496021514114AE47D1BCBA5441D7A3701D6D2151411F85EB81BCBA54410103000000020000001300000066666606A92151410AD7A340F8BA5441EC51B8BEAD2151418FC2F5F8FABA5441F6285C0FB3215141A4703DBAF4BA5441AE47E19AB82151410AD7A3D0EEBA544100000030C02151417B14AE87E7BA5441295C8F62BB21514185EB51B8E4BA544152B81E [...]
+</a>
+
+<b>
+010600000001000000010300000002000000230000004F2C43DFB2215141F9E8C0F2F4BA5441C489391CB321514149CA85ACF4BA544147E13A63B4215141EC44D84FF3BA54415E66DC58B621514170C2F738F1BA5441B7A419F5B621514164A95F92F0BA5441EB81DB74B82151412EBA2EF9EEBA5441CC4A08BEB92151410D37E9B8EDBA544100000030C02151417B14AE87E7BA54415CA44FEFBD215141A0A04036E6BA5441CE3C4F49BC2151416994553FE5BA54413655E0B7BA215141623A5B43E4BA5441F64CF45DB8215141B348E1A6E2BA5441668438C8B62151412348D890E1BA54411C5AA3A7B62151415887EE10E2BA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>327122 - 1342040
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B00000085EB51C80021514185EB51985E0C5541EC51B84E032151415C8FC255510C554185EB51C8DE205141333333634A0C55417B14AE17DE205141F6285C3F4A0C5541333333B3E1205141000000D0580C554133333363E42051415C8FC2D5620C554100000030E72051415C8FC245670C55413D0AD723E92051410AD7A330690C554133333363FB2051418FC2F5B8740C5541D7A370ADFC2051419A999929740C554185EB51C80021514185EB51985E0C5541
+</a>
+
+<b>
+0106000000010000000103000000010000001400000085EB51C80021514185EB51985E0C5541EC51B84E032151415C8FC255510C55411C98D7DEF8205141D94989594F0C55415652D6A7EC20514139E9BD064D0C5541FCC4226FE6205141F966CAD74B0C5541101CE456E220514159D666104B0C554152B4E9E5DF205141BFF385994A0C5541143BC806DE20514107D3DE094A0C55417B14AE17DE205141F6285C3F4A0C5541FDC46B8ADF205141C2A13218500C5541333333B3E1205141000000D0580C554133333363E42051415C8FC2D5620C554100000030E72051415C8FC245670C55413D0AD723E92051410AD7A330690C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>327122 - 3551450
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B00000085EB51C80021514185EB51985E0C5541EC51B84E032151415C8FC255510C554185EB51C8DE205141333333634A0C55417B14AE17DE205141F6285C3F4A0C5541333333B3E1205141000000D0580C554133333363E42051415C8FC2D5620C554100000030E72051415C8FC245670C55413D0AD723E92051410AD7A330690C554133333363FB2051418FC2F5B8740C5541D7A370ADFC2051419A999929740C554185EB51C80021514185EB51985E0C5541
+</a>
+
+<b>
+0106000000010000000103000000010000001400000085EB51C80021514185EB51985E0C5541EC51B84E032151415C8FC255510C55411C98D7DEF8205141D94989594F0C55415652D6A7EC20514139E9BD064D0C5541FCC4226FE6205141F966CAD74B0C5541101CE456E220514159D666104B0C554152B4E9E5DF205141BFF385994A0C5541143BC806DE20514107D3DE094A0C55417B14AE17DE205141F6285C3F4A0C5541FDC46B8ADF205141C2A13218500C5541333333B3E1205141000000D0580C554133333363E42051415C8FC2D5620C554100000030E72051415C8FC245670C55413D0AD723E92051410AD7A330690C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>327161 - 214528
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000C3F5280C1E2751418FC2F538EF0A5541000000601E27514166666646F00A5541A4703D8A1E2751410AD7A3B0F10A5541000000601E2751419A9999F9F20A55413D0AD70323275141CDCCCC3CF30A55418FC2F5C82727514114AE4791F30A5541B81E85EB2C275141713D0A07F40A55410000000031275141D7A3708DF40A55413D0AD74336275141EC51B83EF50A554114AE4731392751418FC2F568F50A554114AE47513C275141B81E859BF50A5541000000B03F275141EC51B88EF50A5541AE47E19A3F2751410AD7A3E0F40A55417B14AE4746275141A4703D4AF50A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000AC813B072E275141D20F8C2BF40A554184FFEC772B275141EA89C0E5F30A55418FC2F5C82727514114AE4791F30A554183C2BD1325275141DD4B5261F30A554197F4FFCC24275141DD4B5261F30A554182A9C9BC212751416FE74E30F30A5541E9FC6B9520275141C6779619F30A5541000000601E2751419A9999F9F20A5541D7A3702D1E275141D7A370EDF30A55410FD622CB1D275141B00CCE44F50A5541E46782B71D275141B7037BADF50A5541A8C2B0A01D27514149E018D4F50A55415C8FC2F51C27514148E17A94F70A5541EC51B8CE1B2751410AD7A320F90A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>327161 - 382994
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000C3F5280C1E2751418FC2F538EF0A5541000000601E27514166666646F00A5541A4703D8A1E2751410AD7A3B0F10A5541000000601E2751419A9999F9F20A55413D0AD70323275141CDCCCC3CF30A55418FC2F5C82727514114AE4791F30A5541B81E85EB2C275141713D0A07F40A55410000000031275141D7A3708DF40A55413D0AD74336275141EC51B83EF50A554114AE4731392751418FC2F568F50A554114AE47513C275141B81E859BF50A5541000000B03F275141EC51B88EF50A5541AE47E19A3F2751410AD7A3E0F40A55417B14AE4746275141A4703D4AF50A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000AC813B072E275141D20F8C2BF40A554184FFEC772B275141EA89C0E5F30A55418FC2F5C82727514114AE4791F30A554183C2BD1325275141DD4B5261F30A554197F4FFCC24275141DD4B5261F30A554182A9C9BC212751416FE74E30F30A5541E9FC6B9520275141C6779619F30A5541000000601E2751419A9999F9F20A5541D7A3702D1E275141D7A370EDF30A55410FD622CB1D275141B00CCE44F50A5541E46782B71D275141B7037BADF50A5541A8C2B0A01D27514149E018D4F50A55415C8FC2F51C27514148E17A94F70A5541EC51B8CE1B2751410AD7A320F90A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328316 - 3098885
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000033000000A4703D5A1A1E514100000020E0F95441713D0A87101E514114AE47D1D2F954418FC2F5C8071E5141AE47E17AC7F95441B81E859B031E514148E17A34BEF95441F6285CDFFE1D5141EC51B8EEB3F9544152B81E15FE1D51417B14AEB7B2F95441E17A14EEF81D514152B81ED5AAF95441AE47E10AF51D5141B81E85BBA4F954417B14AEE7F01D51411F85EB21A0F954418FC2F568EF1D5141666666969FF95441713D0AB7ED1D514114AE4741A0F954418FC2F598EC1D5141C3F5284CA1F954419A9999D9E21D5141F6285CEFADF9544152B81E15DD1D5141B81E85BBB4F95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000059A8876EC61D5141DABB6D18D8F9544138A07DBAC61D51413D205BBBD8F95441F9CC5DEAC81D5141E39EE028D7F95441B3BEB2E0C91D514177034582D6F954418DAA7C4ACB1D514147BE2D9AD5F9544175FD462DCC1D5141202A250DD5F954411D2C860FCD1D514130469892D4F95441E4D0ED21CE1D51419977F5FDD3F95441BDC6E37BCE1D51413C322FCBD3F954411729DFF2CE1D5141AB498D7ED3F95441C46CE809D01D51412F6CD5CAD2F95441A5AAA5ECD01D5141065ACC38D2F954411440D8B2D11D5141CAFC8FBCD1F95441641B5283D31D5141466CB7A3D0F95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328316 - 3453447
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000033000000A4703D5A1A1E514100000020E0F95441713D0A87101E514114AE47D1D2F954418FC2F5C8071E5141AE47E17AC7F95441B81E859B031E514148E17A34BEF95441F6285CDFFE1D5141EC51B8EEB3F9544152B81E15FE1D51417B14AEB7B2F95441E17A14EEF81D514152B81ED5AAF95441AE47E10AF51D5141B81E85BBA4F954417B14AEE7F01D51411F85EB21A0F954418FC2F568EF1D5141666666969FF95441713D0AB7ED1D514114AE4741A0F954418FC2F598EC1D5141C3F5284CA1F954419A9999D9E21D5141F6285CEFADF9544152B81E15DD1D5141B81E85BBB4F95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000059A8876EC61D5141DABB6D18D8F9544138A07DBAC61D51413D205BBBD8F95441F9CC5DEAC81D5141E39EE028D7F95441B3BEB2E0C91D514177034582D6F954418DAA7C4ACB1D514147BE2D9AD5F9544175FD462DCC1D5141202A250DD5F954411D2C860FCD1D514130469892D4F95441E4D0ED21CE1D51419977F5FDD3F95441BDC6E37BCE1D51413C322FCBD3F954411729DFF2CE1D5141AB498D7ED3F95441C46CE809D01D51412F6CD5CAD2F95441A5AAA5ECD01D5141065ACC38D2F954411440D8B2D11D5141CAFC8FBCD1F95441641B5283D31D5141466CB7A3D0F95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328425 - 3096114
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001300000066666686921F51413D0AD7D3B2FA544114AE4791861F5141295C8F82ACFA544148E17AD45B1F5141E17A149ED9FA5441E17A148E5B1F5141D7A3702DDCFA5441000000D05A1F5141713D0A77DEFA54410AD7A3D0591F514152B81E55E1FA54413D0AD7D3591F51415C8FC2D5E4FA5441EC51B85E611F5141E17A149EE6FA54415C8FC275671F5141B81E855BE9FA544152B81EC56E1F5141EC51B8AEE9FA54411F85EB41731F51419A9999B9E9FA544185EB5168781F51411F85EBA1E4FA5441AE47E16A7B1F5141B81E853BE1FA54419A999979901F5141B81E856BC5FA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000DA745BD65B1F51416D8E6E39D9FA5441670EAEFC611F5141B0E3781ED3FA544105A0A0646D1F51411E7C9914C7FA5441AB21301C781F51414635E5C4BBFA5441D32E5737831F51412989130CB0FA54413BB07D78851F5141CB8DEBAAADFA5441E3195C60861F51413333818BACFA54419413AE477D1F51413A3FD32CA8FA5441119948567A1F51415C4D5FD6A6FA5441565CA49F791F5141D1C6A743A8FA544197D178FC741F514122E4DC1AA7FA5441B495D9326E1F5141652852ACADFA5441B5AB30F6681F51412BF229ADB2FA5441ED6A9665611F5141A92A5CE7B9FA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328425 - 3363722
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001300000066666686921F51413D0AD7D3B2FA544114AE4791861F5141295C8F82ACFA544148E17AD45B1F5141E17A149ED9FA5441E17A148E5B1F5141D7A3702DDCFA5441000000D05A1F5141713D0A77DEFA54410AD7A3D0591F514152B81E55E1FA54413D0AD7D3591F51415C8FC2D5E4FA5441EC51B85E611F5141E17A149EE6FA54415C8FC275671F5141B81E855BE9FA544152B81EC56E1F5141EC51B8AEE9FA54411F85EB41731F51419A9999B9E9FA544185EB5168781F51411F85EBA1E4FA5441AE47E16A7B1F5141B81E853BE1FA54419A999979901F5141B81E856BC5FA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000DA745BD65B1F51416D8E6E39D9FA5441670EAEFC611F5141B0E3781ED3FA544105A0A0646D1F51411E7C9914C7FA5441AB21301C781F51414635E5C4BBFA5441D32E5737831F51412989130CB0FA54413BB07D78851F5141CB8DEBAAADFA5441E3195C60861F51413333818BACFA54419413AE477D1F51413A3FD32CA8FA5441119948567A1F51415C4D5FD6A6FA5441565CA49F791F5141D1C6A743A8FA544197D178FC741F514122E4DC1AA7FA5441B495D9326E1F5141652852ACADFA5441B5AB30F6681F51412BF229ADB2FA5441ED6A9665611F5141A92A5CE7B9FA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328425 - 170898
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001300000066666686921F51413D0AD7D3B2FA544114AE4791861F5141295C8F82ACFA544148E17AD45B1F5141E17A149ED9FA5441E17A148E5B1F5141D7A3702DDCFA5441000000D05A1F5141713D0A77DEFA54410AD7A3D0591F514152B81E55E1FA54413D0AD7D3591F51415C8FC2D5E4FA5441EC51B85E611F5141E17A149EE6FA54415C8FC275671F5141B81E855BE9FA544152B81EC56E1F5141EC51B8AEE9FA54411F85EB41731F51419A9999B9E9FA544185EB5168781F51411F85EBA1E4FA5441AE47E16A7B1F5141B81E853BE1FA54419A999979901F5141B81E856BC5FA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002100000076E2DEB09E1F5141103277BDD6FA5441B21630589F1F514167BA36E9D5FA5441D49D0C43A11F5141EF33988ED8FA54410BCD4FF5A11F51411ED9A65AD5FA5441F8ACB331A21F51418489810ED4FA5441FDB49A22A21F5141F8511195D2FA544106C56804A21F51417F3A3DDFD0FA54411EEDEBB8A11F5141DCDA49B1CFFA544147350B31A11F51412F6B88A1CEFA54418DAD944EA01F51419A234A46CDFA54413DDEDF109E1F514113F4C0BDCBFA544116D381119B1F5141D9813897C9FA5441713D0AE7911F5141A4703DDAC4FA5441A4309479901F5141FB438C6BC5FA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328425 - 346191
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001300000066666686921F51413D0AD7D3B2FA544114AE4791861F5141295C8F82ACFA544148E17AD45B1F5141E17A149ED9FA5441E17A148E5B1F5141D7A3702DDCFA5441000000D05A1F5141713D0A77DEFA54410AD7A3D0591F514152B81E55E1FA54413D0AD7D3591F51415C8FC2D5E4FA5441EC51B85E611F5141E17A149EE6FA54415C8FC275671F5141B81E855BE9FA544152B81EC56E1F5141EC51B8AEE9FA54411F85EB41731F51419A9999B9E9FA544185EB5168781F51411F85EBA1E4FA5441AE47E16A7B1F5141B81E853BE1FA54419A999979901F5141B81E856BC5FA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000076E2DEB09E1F5141103277BDD6FA5441B21630589F1F514167BA36E9D5FA5441D49D0C43A11F5141EF33988ED8FA54419355A8EEA11F5141DD2D4279D5FA5441F8ACB331A21F51418489810ED4FA5441FDB49A22A21F5141F8511195D2FA544106C56804A21F51417F3A3DDFD0FA54411EEDEBB8A11F5141DCDA49B1CFFA544147350B31A11F51412F6B88A1CEFA54418DAD944EA01F51419A234A46CDFA5441C84266E29D1F5141483E699CCBFA544116D381119B1F5141D9813897C9FA5441713D0AE7911F5141A4703DDAC4FA5441A4309479901F5141FB438C6BC5FA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328497 - 346191
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000019000000AE47E16A7B1F5141B81E853BE1FA544185EB5168781F51411F85EBA1E4FA54411F85EB41731F51419A9999B9E9FA544152B81EC56E1F5141EC51B8AEE9FA54415C8FC275671F5141B81E855BE9FA544114AE4701691F51415C8FC215F0FA54410AD7A3506A1F51413D0AD713F3FA5441EC51B89E6B1F5141F6285C6FF6FA5441CDCCCC9C711F51418FC2F568FEFA5441D7A3707D751F5141E17A143EF4FA54413D0AD7B37A1F5141713D0A97E9FA5441E17A14FE831F514114AE4771EDFA5441A4703DCA8A1F51411F85EB11F1FA54415C8FC2358F1F5141B81E85EBF4FA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000076E2DEB09E1F5141103277BDD6FA5441B21630589F1F514167BA36E9D5FA5441D49D0C43A11F5141EF33988ED8FA54419355A8EEA11F5141DD2D4279D5FA5441F8ACB331A21F51418489810ED4FA5441FDB49A22A21F5141F8511195D2FA544106C56804A21F51417F3A3DDFD0FA54411EEDEBB8A11F5141DCDA49B1CFFA544147350B31A11F51412F6B88A1CEFA54418DAD944EA01F51419A234A46CDFA5441C84266E29D1F5141483E699CCBFA544116D381119B1F5141D9813897C9FA5441713D0AE7911F5141A4703DDAC4FA5441A4309479901F5141FB438C6BC5FA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328595 - 1291101
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000B81E85DBCB1C51415C8FC27560F754418FC2F5B8CF1C51411F85EB215DF75441B81E857BCF1C5141295C8FC258F754411F85EB31C61C51415C8FC2654FF75441E17A14DEBE1C514148E17A8446F754410AD7A370B71C51413D0AD7633DF75441C3F5287CB31C514185EB51A838F75441295C8FB2AF1C5141F6285C2F35F754415C8FC235AF1C5141295C8FE234F754411F85EBD1A81C5141000000F030F7544152B81E65A81C514148E17A4432F75441AE47E19AA51C51411F85EB013BF754415C8FC265A41C5141F6285CCF3EF75441B81E857BA21C5141713D0AD744F75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000EB7D36B6AE1C51411837A08553F75441CA5F1E4EAF1C5141BE4065C752F754410497766FAF1C5141476CA39D52F7544123271BB7AE1C514113350D8F51F75441D7DBC5DFAD1C5141CD17005350F754415BC65944AD1C51418CB78F794FF754411976FB7FAC1C5141DC7E5F6C4EF7544190B117CAAB1C51411621EA754DF754418DDED05BAB1C5141CD153BEA4CF7544123B39F38AA1C5141253463794BF7544117876092A81C51413088A5A349F754414539EE49A71C51414EF1927A48F754412F85C018A61C51418DCAC67E47F754416EE4E477A31C51411CB0278F45F75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328595 - 3649755
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000B81E85DBCB1C51415C8FC27560F754418FC2F5B8CF1C51411F85EB215DF75441B81E857BCF1C5141295C8FC258F754411F85EB31C61C51415C8FC2654FF75441E17A14DEBE1C514148E17A8446F754410AD7A370B71C51413D0AD7633DF75441C3F5287CB31C514185EB51A838F75441295C8FB2AF1C5141F6285C2F35F754415C8FC235AF1C5141295C8FE234F754411F85EBD1A81C5141000000F030F7544152B81E65A81C514148E17A4432F75441AE47E19AA51C51411F85EB013BF754415C8FC265A41C5141F6285CCF3EF75441B81E857BA21C5141713D0AD744F75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000EB7D36B6AE1C51411837A08553F75441CA5F1E4EAF1C5141BE4065C752F754410497766FAF1C5141476CA39D52F7544123271BB7AE1C514113350D8F51F75441D7DBC5DFAD1C5141CD17005350F754415BC65944AD1C51418CB78F794FF754411976FB7FAC1C5141DC7E5F6C4EF7544190B117CAAB1C51411621EA754DF754418DDED05BAB1C5141CD153BEA4CF7544123B39F38AA1C5141253463794BF7544117876092A81C51413088A5A349F754414539EE49A71C51414EF1927A48F754412F85C018A61C51418DCAC67E47F754416EE4E477A31C51411CB0278F45F75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>328677 - 195138
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001C00000085EB5158B41F514148E17A6431FA54411F85EB11AD1F51417B14AEB738FA54411F85EB41A51F5141E17A148E40FA5441295C8FE2A51F5141F6285C2F41FA544100000080A61F51416666663642FA5441AE47E13AA71F51410000007043FA5441000000F0A71F5141E17A148E44FA54415C8FC285A91F5141E17A149E47FA5441AE47E17AB41F51415C8FC2B540FA5441B81E857BC01F51413D0AD76339FA544185EB51D8C01F51413D0AD72339FA5441F6285C7FC11F514114AE478138FA5441AE47E17AC01F51418FC2F5D836FA54411F85EBD1BE1F51419A99995936FA5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000036000000B81E857BC01F51413D0AD76339FA54419AF9E1D3C01F51418C94961F39FA54414010058FC01F5141BDE055DC38FA5441960D631FC01F5141D6172C8638FA544134EAAD01C01F5141A582CA7338FA5441D686B140BF1F5141CF37792938FA54414CDDFAFDBD1F51410F8848F437FA54418E8E5020BD1F5141880160B937FA544101A06F76BC1F51416AD2757B37FA5441E9C55C34BC1F514140ECD86237FA5441852C47F1BB1F51413FABED4237FA54416AD9BD3DBB1F5141B44F0DF036FA54418F88CED0BA1F5141659677C036FA54418E32EC74BA1F5141F464258136FA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>329014 - 3096114
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001000000048E17A744C1F514148E17A94B8FA54418FC2F5184D1F5141C3F5285CC1FA54417B14AE37501F5141295C8FF2C2FA5441295C8F82531F5141B81E858BC4FA54419A999939551F514185EB5188C5FA5441AE47E10A741F5141713D0A17A8FA54415C8FC2A56F1F51419A999909A6FA5441666666366B1F5141A4703DEAA2FA54413D0AD713661F5141F6285C3FA0FA54415C8FC215621F5141F6285CDF9FFA5441333333C35E1F5141AE47E1CAA0FA5441AE47E11A5D1F5141F6285C7FA1FA54410AD7A340551F5141666666A6A5FA5441333333534B1F5141CDCCCCECA8FA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000DA745BD65B1F51416D8E6E39D9FA5441670EAEFC611F5141B0E3781ED3FA544105A0A0646D1F51411E7C9914C7FA5441AB21301C781F51414635E5C4BBFA5441D32E5737831F51412989130CB0FA54413BB07D78851F5141CB8DEBAAADFA5441E3195C60861F51413333818BACFA54419413AE477D1F51413A3FD32CA8FA5441119948567A1F51415C4D5FD6A6FA5441565CA49F791F5141D1C6A743A8FA544197D178FC741F514122E4DC1AA7FA5441B495D9326E1F5141652852ACADFA5441B5AB30F6681F51412BF229ADB2FA5441ED6A9665611F5141A92A5CE7B9FA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>329014 - 3363722
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001000000048E17A744C1F514148E17A94B8FA54418FC2F5184D1F5141C3F5285CC1FA54417B14AE37501F5141295C8FF2C2FA5441295C8F82531F5141B81E858BC4FA54419A999939551F514185EB5188C5FA5441AE47E10A741F5141713D0A17A8FA54415C8FC2A56F1F51419A999909A6FA5441666666366B1F5141A4703DEAA2FA54413D0AD713661F5141F6285C3FA0FA54415C8FC215621F5141F6285CDF9FFA5441333333C35E1F5141AE47E1CAA0FA5441AE47E11A5D1F5141F6285C7FA1FA54410AD7A340551F5141666666A6A5FA5441333333534B1F5141CDCCCCECA8FA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000DA745BD65B1F51416D8E6E39D9FA5441670EAEFC611F5141B0E3781ED3FA544105A0A0646D1F51411E7C9914C7FA5441AB21301C781F51414635E5C4BBFA5441D32E5737831F51412989130CB0FA54413BB07D78851F5141CB8DEBAAADFA5441E3195C60861F51413333818BACFA54419413AE477D1F51413A3FD32CA8FA5441119948567A1F51415C4D5FD6A6FA5441565CA49F791F5141D1C6A743A8FA544197D178FC741F514122E4DC1AA7FA5441B495D9326E1F5141652852ACADFA5441B5AB30F6681F51412BF229ADB2FA5441ED6A9665611F5141A92A5CE7B9FA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415163 - 1827175
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000110000007B14AE5706C250419A9999A9F63E54413D0AD7C3DBC150418FC2F568F53E544148E17AE4DBC15041000000C0283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E54413D0AD7E306C25041B81E850BFB3E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000AE91B8C6DBC15041122208F1F93E5441FCF373D3DBC15041BA5A41B4FA3E5441BD752992DCC150417E633D060C3F544120B8CE7FE1C15041DA0A7BF1283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415163 - 3180189
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000110000007B14AE5706C250419A9999A9F63E54413D0AD7C3DBC150418FC2F568F53E544148E17AE4DBC15041000000C0283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E54413D0AD7E306C25041B81E850BFB3E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000600000020B8CE7FE1C15041DA0A7BF1283F5441BD752992DCC150417E633D060C3F5441FCF373D3DBC15041BA5A41B4FA3E5441AE91B8C6DBC15041122208F1F93E544148E17AE4DBC15041000000C0283F544120B8CE7FE1C15041DA0A7BF1283F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415163 - 3579672
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000110000007B14AE5706C250419A9999A9F63E54413D0AD7C3DBC150418FC2F568F53E544148E17AE4DBC15041000000C0283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E54413D0AD7E306C25041B81E850BFB3E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000600000020B8CE7FE1C15041DA0A7BF1283F5441BD752992DCC150417E633D060C3F5441FCF373D3DBC15041BA5A41B4FA3E5441AE91B8C6DBC15041122208F1F93E544148E17AE4DBC15041000000C0283F544120B8CE7FE1C15041DA0A7BF1283F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415163 - 4455930
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000110000007B14AE5706C250419A9999A9F63E54413D0AD7C3DBC150418FC2F568F53E544148E17AE4DBC15041000000C0283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E54413D0AD7E306C25041B81E850BFB3E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000AE91B8C6DBC15041122208F1F93E5441FCF373D3DBC15041BA5A41B4FA3E5441BD752992DCC150417E633D060C3F544120B8CE7FE1C15041DA0A7BF1283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>329767 - 5321975
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000110000001F85EB21170551415C8FC20588BE5441A4703D1AEB045141CDCCCC1C90BE54413D0AD7A3EB045141EC51B82E93BE5441A4703D7AE50451413D0AD75394BE544114AE4791ED045141AE47E18AABBE544114AE47A1F104514133333333B7BE5441C3F528CCF50451418FC2F528C3BE5441295C8FB2FD04514152B81ED5D9BE5441713D0A07FF045141E17A14BEDABE54413D0AD76318055141333333E3D9BE5441000000101905514185EB51E8D8BE54410AD7A3000D055141295C8F42B6BE54413D0AD7130E0551419A999939B6BE54413D0AD7A3380551410AD7A3D0B4BE5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000070000002812BA72E6045141AA57E51C97BE5441557586D2E90451418C17A5CBA0BE544143665166EF0451413D76547C9FBE5441E74A706D20055141D2C4293094BE5441B46A62661A0551415C1C183C8BBE544133A9A4320F05514156D00FA98DBE54412812BA72E6045141AA57E51C97BE5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>330836 - 3168106
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000015000000C3F5280CF7065141E17A14CEDBC9544152B81E75F80651418FC2F5A8DDC95441B81E85FB070751415C8FC2D5E2C95441666666160C07514152B81E95E3C954411F85EBE11007514185EB5118E4C954411F85EBD112075141AE47E1BAE2C954419A999979200751413D0AD793CDC9544148E17A9422075141B81E854BC9C95441C3F5280C230751418FC2F578C6C95441713D0AC70C075141C3F5282CBFC9544100000010080751418FC2F528C3C95441295C8F62050751415C8FC2E5C4C954419A9999690207514152B81EF5C5C95441B81E85CB00075141E17A145EC6C95441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000A6BEDA8500075141BF991D5CCEC95441A2DBAAE2FF0651416CA66111CEC95441861227990007514188EB14CCCCC954416D0C582F0207514171926F0ACBC954416F3CA46902075141A8078A8CC7C95441E73ABD8A0207514160704DE9C5C954416EAA6592020751418A343E20C3C95441F6285CBF010751410AD7A3D0C3C95441B81E85CB00075141E17A145EC6C9544185EB517800075141AE47E19AC7C9544185EB5168FF06514185EB5158C7C95441D7A370BDFD0651417B14AE77CEC95441B81E85BBF8065141AE47E14ACDC9544148E17A54F80651413D0AD7A3CFC95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>330836 - 3555668
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000015000000C3F5280CF7065141E17A14CEDBC9544152B81E75F80651418FC2F5A8DDC95441B81E85FB070751415C8FC2D5E2C95441666666160C07514152B81E95E3C954411F85EBE11007514185EB5118E4C954411F85EBD112075141AE47E1BAE2C954419A999979200751413D0AD793CDC9544148E17A9422075141B81E854BC9C95441C3F5280C230751418FC2F578C6C95441713D0AC70C075141C3F5282CBFC9544100000010080751418FC2F528C3C95441295C8F62050751415C8FC2E5C4C954419A9999690207514152B81EF5C5C95441B81E85CB00075141E17A145EC6C95441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000A6BEDA8500075141BF991D5CCEC95441A2DBAAE2FF0651416CA66111CEC95441861227990007514188EB14CCCCC954416D0C582F0207514171926F0ACBC954416F3CA46902075141A8078A8CC7C95441E73ABD8A0207514160704DE9C5C954416EAA6592020751418A343E20C3C95441F6285CBF010751410AD7A3D0C3C95441B81E85CB00075141E17A145EC6C9544185EB517800075141AE47E19AC7C9544185EB5168FF06514185EB5158C7C95441D7A370BDFD0651417B14AE77CEC95441B81E85BBF8065141AE47E14ACDC9544148E17A54F80651413D0AD7A3CFC95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>331293 - 344706
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000EC51B8BE15085141CDCCCC1CF7C55441D7A3709D17085141713D0A87F6C554419A99994919085141AE47E12AF7C554418FC2F5D81A08514133333373F8C554415C8FC2C51C08514114AE4741F8C554418FC2F5781E085141AE47E1FAF0C55441E17A146E1A085141AE47E16AEFC55441295C8F72170851410AD7A360EEC55441F6285CEF0F08514114AE47E1F3C55441713D0A970B0851410AD7A380F6C554417B14AE7707085141000000F0F7C554415C8FC2050408514148E17A14F8C5544148E17AA402085141EC51B84EFEC55441F6285C8F070851419A9999B914C65441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000250000003F4D64EF0F08514174B741E1F3C554412BC1868F0D08514171042650F5C55441713D0A970B08514115D7A380F6C554419B14AE7707085141150000F0F7C554415C8FC2050408514148E17A14F8C5544121748DA402085141D180644EFEC55441EB00270505085141196E252509C654410B295C8F070851418F9999B914C654410AD7A3900F08514132B81E1513C65441228D081D0E0851417B05B78A11C65441BE7D84300C085141EEF17A110FC654413C76423A0B085141B1E1C8010DC654414F73B8D00A085141F1C9D4FB09C65441E47C560D0C085141D2BB7E3208C65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415253 - 1827431
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000015000000C3F5289C22C1504185EB5178F83E54418FC2F53822C1504152B81E05F93E5441C3F5282C21C150410AD7A370F93E54413D0AD73320C1504152B81E05F93E5441666666D61FC15041CDCCCC3CF83E5441000000F01FC150417B14AE77F73E54413D0AD73320C1504100000000F73E54416666664621C150419A999999F63E54410AD7A3801FC1504114AE4721F63E5441EC51B86E1EC15041713D0A07F53E5441A4703D2A1EC15041EC51B88EF33E5441EC51B8EE1DC150419A999959F03E544148E17AE401C1504185EB5158DE3E54410AD7A36001C150413D0AD703DE3E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000008000000D7A3709DD0C050418FC2F5B8BE3E54419A9999C9CEC050418FC2F5E8BE3E5441295C8F32CDC050411F85EBD1BF3E5441295C8F02BFC050418FC2F5D8CF3E5441D9AFAEA8F6C050419D2B1E72F33E54417EB430D601C150416245304FDE3E5441A4703DBAFEC05041295C8F52DC3E5441D7A3709DD0C050418FC2F5B8BE3E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415253 - 4456115
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000015000000C3F5289C22C1504185EB5178F83E54418FC2F53822C1504152B81E05F93E5441C3F5282C21C150410AD7A370F93E54413D0AD73320C1504152B81E05F93E5441666666D61FC15041CDCCCC3CF83E5441000000F01FC150417B14AE77F73E54413D0AD73320C1504100000000F73E54416666664621C150419A999999F63E54410AD7A3801FC1504114AE4721F63E5441EC51B86E1EC15041713D0A07F53E5441A4703D2A1EC15041EC51B88EF33E5441EC51B8EE1DC150419A999959F03E544148E17AE401C1504185EB5158DE3E54410AD7A36001C150413D0AD703DE3E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000008000000D7A3709DD0C050418FC2F5B8BE3E54419A9999C9CEC050418FC2F5E8BE3E5441295C8F32CDC050411F85EBD1BF3E5441295C8F02BFC050418FC2F5D8CF3E5441D9AFAEA8F6C050419D2B1E72F33E54417EB430D601C150416245304FDE3E5441A4703DBAFEC05041295C8F52DC3E5441D7A3709DD0C050418FC2F5B8BE3E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>331917 - 2916410
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000C00000085EB51688F0C5141295C8F12F18C5441A4703DFA8E0C5141333333B3F48C5441666666468E0C5141295C8FA2FA8C54418FC2F598A60C5141295C8F72078D54419A999959A20C51413D0AD703108D5441713D0A37BD0C51410AD7A3301E8D5441CDCCCC8CBF0C5141EC51B87E198D544185EB5168C10C514114AE47A1158D544152B81ED5C40C51410AD7A3800E8D5441295C8F62C40C51411F85EB210D8D5441F6285C8FAA0C51413D0AD773FF8C544185EB51688F0C5141295C8F12F18C5441
+</a>
+
+<b>
+010600000001000000010300000001000000090000009A999959A20C51413D0AD703108D544183427156AB0C51417B32DAC1148D5441713D0A37BD0C51410AD7A3301E8D54410F283A69BF0C5141BF1B3FC6198D544184208FBCBF0C51414658581B198D5441941F6724C00C51419B984543188D544187474F49C10C51412909CEE1158D544151FBBB7BA60C51413D9F82AD078D54419A999959A20C51413D0AD703108D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>331917 - 3802273
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000C00000085EB51688F0C5141295C8F12F18C5441A4703DFA8E0C5141333333B3F48C5441666666468E0C5141295C8FA2FA8C54418FC2F598A60C5141295C8F72078D54419A999959A20C51413D0AD703108D5441713D0A37BD0C51410AD7A3301E8D5441CDCCCC8CBF0C5141EC51B87E198D544185EB5168C10C514114AE47A1158D544152B81ED5C40C51410AD7A3800E8D5441295C8F62C40C51411F85EB210D8D5441F6285C8FAA0C51413D0AD773FF8C544185EB51688F0C5141295C8F12F18C5441
+</a>
+
+<b>
+010600000001000000010300000001000000090000009A999959A20C51413D0AD703108D544183427156AB0C51417B32DAC1148D5441713D0A37BD0C51410AD7A3301E8D54410F283A69BF0C5141BF1B3FC6198D544184208FBCBF0C51414658581B198D5441941F6724C00C51419B984543188D544187474F49C10C51412909CEE1158D544151FBBB7BA60C51413D9F82AD078D54419A999959A20C51413D0AD703108D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>332992 - 2915739
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000022000000B81E858B530D5141CDCCCCEC6F8C54410AD7A360540D5141F6285C5F718C54415C8FC285560D514148E17AD4708C5441E17A144E520D5141713D0A477F8C5441E17A147E590D5141D7A3705D808C544152B81EB55F0D514152B81E85818C5441295C8F32660D5141A4703DDA6A8C544152B81E056F0D51410AD7A3506C8C544114AE47F1740D51417B14AE876D8C54410AD7A300770D51419A999909688C5441E17A149E790D5141E17A144E618C54415C8FC2857B0D5141AE47E11A5C8C54413D0AD7637C0D5141666666D6588C5441333333537D0D51419A9999C9528C5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000DC452DB2470D5141112F85DE548C544152ADF5FF670D51419AC7B603538C54412B5D43937D0D514141B9D8AF518C5441EADB7A207E0D5141E6C9913B4F8C5441D12BDC607E0D51418966CDE24D8C54417CC6D5A97E0D5141950D025C4C8C544143CD8B207F0D514107004AE0498C544148E17A84800D514148E17A64438C544185EB5148800D5141AE47E1AA3E8C544152B81E457F0D51410AD7A370398C54417B14AE877D0D514114AE47D1358C5441295C8F92670D5141E17A14AE368C5441D7A3708D570D514114AE4741388C5441A4703DEA530D5141CDCCCC8C388C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>332992 - 3672768
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000022000000B81E858B530D5141CDCCCCEC6F8C54410AD7A360540D5141F6285C5F718C54415C8FC285560D514148E17AD4708C5441E17A144E520D5141713D0A477F8C5441E17A147E590D5141D7A3705D808C544152B81EB55F0D514152B81E85818C5441295C8F32660D5141A4703DDA6A8C544152B81E056F0D51410AD7A3506C8C544114AE47F1740D51417B14AE876D8C54410AD7A300770D51419A999909688C5441E17A149E790D5141E17A144E618C54415C8FC2857B0D5141AE47E11A5C8C54413D0AD7637C0D5141666666D6588C5441333333537D0D51419A9999C9528C5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000DC452DB2470D5141112F85DE548C544152ADF5FF670D51419AC7B603538C54412B5D43937D0D514141B9D8AF518C5441EADB7A207E0D5141E6C9913B4F8C5441D12BDC607E0D51418966CDE24D8C54417CC6D5A97E0D5141950D025C4C8C544143CD8B207F0D514107004AE0498C544148E17A84800D514148E17A64438C544185EB5148800D5141AE47E1AA3E8C544152B81E457F0D51410AD7A370398C54417B14AE877D0D514114AE47D1358C5441295C8F92670D5141E17A14AE368C5441D7A3708D570D514114AE4741388C5441A4703DEA530D5141CDCCCC8C388C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335063 - 43752
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000030000000F6285C9F0F355141D7A3704D27385541E17A147E0A355141AE47E15A31385541D7A370AD023551410AD7A3503B38554152B81E55FD34514148E17AD440385541295C8FF2F8345141EC51B80E45385541A4703D8AF1345141E17A141E4B385541295C8FB2EC345141EC51B8CE4E385541A4703DDAF2345141B81E85BB52385541A4703D4AF6345141E17A141E55385541B81E85EBF8345141AE47E14A573855417B14AE17FD34514152B81EF5593855411F85EB5104355141666666B65D385541E17A147E0A355141EC51B8BE5F385541295C8F6212355141EC51B8BE61385541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000FB8BC5423E355141A05926585E38554185EB51083F3551413D0AD7335E385541919D0B1A4035514188C7DE1D5E385541BB54E457403551414303E8185E3855415C8FC2154235514152B81EF55D3855418B315ECC43355141FA7BF6F75D38554155B423C444355141FB9991F95D385541C717991845355141BE9017D75D385541DA4A2B9341355141548E7F745D38554192190CE0333551418F01DB555E3855413DDD333F2A35514199518D6F5F38554155CBCC8D21355141D1307C0A60385541B8A44C641B3551416C56BD346038554145E52F2F14355141077CFE5E60385541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>516928 - 3278216
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000F00000048E17A5401EA5041C3F5285CA8FA544148E17AB400EA5041CDCCCCFCADFA54419A9999C9FFE95041000000D0AFFA54411F85EB31FFE950413D0AD723B1FA54415C8FC2E5FFE950415C8FC235B1FA5441A4703D2A07EA5041C3F528ECB1FA54418FC2F5D807EA504133333303C9FA54418FC2F53811EA5041F6285C5FC9FA54416666660612EA504185EB5178B4FA544114AE471116EA50418FC2F568B5FA54416666663618EA5041A4703D9AADFA5441D7A3708D18EA5041713D0A57A7FA54417B14AE8713EA504148E17A04A7FA5441E17A141E01EA5041D7A370ADA6FA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000002B1B5D2A07EA5041C54558F0B1FA5441659DDAAC08EA50415CC66E92C9FA5441EA8CB59808EA50411CDF4B12CAFA544125F571980EEA504128AB961DCAFA5441AF298C6410EA5041C252BA29CAFA5441D22C587E10EA50411143BEA8C9FA5441D0B05E7A10EA5041D72021C5C7FA5441DAEA4B7510EA5041C5A22FC2C5FA5441E441C25D10EA504116261B6DBCFA54418281F14810EA50416CE0562CB4FA5441EF39B25F10EA50415338AB7BB3FA5441FF396F7015EA50415438C00BB4FA54412475A79116EA5041B4220715ACFA54412B8716B115EA5041EC51B81EA7FA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335974 - 256560
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000200000065000000D7A3704D037B504148E17A44462B55415C8FC2C5FD7A504133333303492B55419A999909F97A5041CDCCCC5C4B2B5541C3F5280CF67A504114AE47D14D2B5541B81E856BF37A504114AE47C14E2B5541A4703D1AF37A5041000000D04E2B55411F85EB61F17A5041F6285C1F4F2B5541EC51B85EF17A504152B81E25532B55411F85EBD1F27A50413D0AD783522B5541D7A3701DF57A5041295C8FD2572B5541EC51B8FEF27A504100000080582B5541F6285C6FF37A50415C8FC2E5592B5541D7A370ADF67A50415C8FC2755B2B5541333333D3F87A50415C8FC2355A2B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000003E86EFF7407B504139DF73ED2E2B554143E7F5C8437B5041189B713D332B554128DA8F624C7B5041632FAF572D2B55411EDCE13A537B504122263403282B5541295C8F724F7B50419A9999A9262B554114AE47114B7B5041EC51B82E232B5541666666D6467B5041B81E857B262B554114AE4791407B5041333333032B2B55417B14AEF7407B5041CDCCCCEC2E2B55413E86EFF7407B504139DF73ED2E2B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335974 - 262659
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000200000065000000D7A3704D037B504148E17A44462B55415C8FC2C5FD7A504133333303492B55419A999909F97A5041CDCCCC5C4B2B5541C3F5280CF67A504114AE47D14D2B5541B81E856BF37A504114AE47C14E2B5541A4703D1AF37A5041000000D04E2B55411F85EB61F17A5041F6285C1F4F2B5541EC51B85EF17A504152B81E25532B55411F85EBD1F27A50413D0AD783522B5541D7A3701DF57A5041295C8FD2572B5541EC51B8FEF27A504100000080582B5541F6285C6FF37A50415C8FC2E5592B5541D7A370ADF67A50415C8FC2755B2B5541333333D3F87A50415C8FC2355A2B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000003E86EFF7407B504139DF73ED2E2B554143E7F5C8437B5041189B713D332B554128DA8F624C7B5041632FAF572D2B55411EDCE13A537B504122263403282B5541295C8F724F7B50419A9999A9262B554114AE47114B7B5041EC51B82E232B5541666666D6467B5041B81E857B262B554114AE4791407B5041333333032B2B55417B14AEF7407B5041CDCCCCEC2E2B55413E86EFF7407B504139DF73ED2E2B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336027 - 184171
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000095000000E17A142E3F79504100000050272E554148E17AB4417950411F85EB41252E554185EB510842795041CDCCCCFC222E5541000000D042795041F6285CFF222E5541E17A147E42795041B81E85CB1F2E5541CDCCCC9C42795041E17A148E1E2E5541000000D042795041B81E857B1C2E5541E17A143E437950415C8FC205182E5541295C8F82437950410AD7A340152E5541B81E85AB44795041EC51B8EE102E5541666666A64579504152B81E950A2E55415C8FC2F545795041F6285CAF022E55418FC2F5E8457950415C8FC215012E5541E17A149E44795041AE47E1CAFF2D5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000295C8FD21B7950419A9999794D2E554114AE47411F7950419A9999F94C2E55411F85EBA126795041E17A148E4B2E554188B022CC2C79504157E70AE74A2E55416EF08D022D79504136D0D5034A2E5541B7FAE00A2D7950411EDAEC01492E5541004190B21C7950414B97D7434A2E554130F0C1291B7950417108B26D4A2E5541773DC39E0F795041D1E186294B2E55418FC2F5280E79504185EB51884D2E5541538001100E7950410086EB864F2E55414F40BD5414795041CFD93A8A4E2E5541F3E8CD5C1479504102BDF5884E2E55410AD7A300157950415C8FC2854E2E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336027 - 256624
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000095000000E17A142E3F79504100000050272E554148E17AB4417950411F85EB41252E554185EB510842795041CDCCCCFC222E5541000000D042795041F6285CFF222E5541E17A147E42795041B81E85CB1F2E5541CDCCCC9C42795041E17A148E1E2E5541000000D042795041B81E857B1C2E5541E17A143E437950415C8FC205182E5541295C8F82437950410AD7A340152E5541B81E85AB44795041EC51B8EE102E5541666666A64579504152B81E950A2E55415C8FC2F545795041F6285CAF022E55418FC2F5E8457950415C8FC215012E5541E17A149E44795041AE47E1CAFF2D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000099B940CF15795041D85CBBBF392E55419D4B31B515795041718A96B7392E55419A9999D915795041A4703D6A3B2E554114AE47D114795041EC51B8FE3D2E5541AE47E12A137950411F85EB01402E5541606FD64712795041152EF03A402E554106F3D70312795041F3DC299C402E5541D335AE671079504190FC9AC9422E55415529A6591079504130240EDB422E554199D704D00F7950413D4D014F442E5541221720F51A795041DEFFACE7442E55419E0DD8D31D7950416B4D9012452E55416898D78621795041D444B34A452E5541F187D793207950415B51149E402E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336027 - 398923
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000095000000E17A142E3F79504100000050272E554148E17AB4417950411F85EB41252E554185EB510842795041CDCCCCFC222E5541000000D042795041F6285CFF222E5541E17A147E42795041B81E85CB1F2E5541CDCCCC9C42795041E17A148E1E2E5541000000D042795041B81E857B1C2E5541E17A143E437950415C8FC205182E5541295C8F82437950410AD7A340152E5541B81E85AB44795041EC51B8EE102E5541666666A64579504152B81E950A2E55415C8FC2F545795041F6285CAF022E55418FC2F5E8457950415C8FC215012E5541E17A149E44795041AE47E1CAFF2D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000099B940CF15795041D85CBBBF392E55419D4B31B515795041718A96B7392E55419A9999D915795041A4703D6A3B2E554114AE47D114795041EC51B8FE3D2E5541AE47E12A137950411F85EB01402E5541606FD64712795041152EF03A402E554106F3D70312795041F3DC299C402E5541D335AE671079504190FC9AC9422E55415529A6591079504130240EDB422E554199D704D00F7950413D4D014F442E5541221720F51A795041DEFFACE7442E55419E0DD8D31D7950416B4D9012452E55416D98D78621795041D144B34A452E5541F187D793207950415B51149E402E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336030 - 262907
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000060000000D7A3706D82795041295C8F02902D5541E17A14AE86795041B81E85EB912D55415C8FC2C5877950418FC2F5D8922D5541A4703D5A89795041AE47E13A932D554152B81EA58B795041CDCCCCBC922D554114AE47E18D7950417B14AE07922D554152B81EA58E795041713D0AE78F2D554152B81E8590795041295C8F22912D55418FC2F54891795041000000908F2D5541F6285C6F91795041E17A14DE8E2D55418FC2F5A8917950411F85EBD18D2D554185EB51E891795041C3F5289C8B2D5541F6285CFF91795041B81E85CB8A2D5541D7A3702D92795041B81E854B882D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000007D00000025DD7AC481795041493DB88E5F2D5541D7A3708D81795041C3F5287C5E2D5541713D0A0783795041CDCCCC2C5D2D5541A98316B78379504117E103055D2D554122B628AC83795041C00B15EE5C2D554165D2F4E8827950414D56B96E5B2D5541944BC2D581795041D58E66065A2D5541AAD45EEF80795041AA1715BE582D55413D0AD7A382795041D7A3706D562D5541C3F528BC807950415C8FC215562D55417B14AE477E79504148E17A64542D554185EB51587D79504100000010532D5541D7A3708D7A795041713D0A47522D55411F85EB617A79504148E17AB4542D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336185 - 197446
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000C00000052B81EC5F65A5041333333C3322F5541713D0A37F55A504185EB51A8312F5541C3F528ACF35A5041EC51B88E302F5541AE47E1EAF05A50418FC2F5982E2F5541E17A143EDA5A5041E17A14FE6A2F55419A9999C9DC5A5041333333836D2F554166666636DE5A5041B81E85EB6E2F5541C3F5288CDE5A50410AD7A3406F2F554148E17AB4DF5A504133333333702F554148E17A34E15A5041E17A146E712F554114AE4751F85A5041D7A370DD332F554152B81EC5F65A5041333333C3322F5541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000AD6227ACF35A50418F83BC8E302F55415E08E079F25A5041F58FD1B42F2F5541430EE1EAF05A50417C5BF6982E2F5541E17A143EDA5A5041E17A14FE6A2F554156CE268ADC5A504140F65F446D2F5541D1A18BC9DC5A50419C962E836D2F5541ED246636DE5A50410F4284EB6E2F5541BBE1298CDE5A5041B682A4406F2F55412F9C92A5DE5A5041093371556F2F5541E6C06DB4DF5A504190742833702F5541EE987A34E15A5041883F146E712F5541492C4851F85A5041AD0F71DD332F5541233E430DF85A50415655FBAC332F5541A00F1EC5F65A504154BB32C3322F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336750 - 3054526
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000340000003333333333B4504114AE47F1602F5441713D0A8730B45041E17A14BE5A2F5441AE47E19A2AB45041000000004D2F544185EB516827B4504100000050402F54413D0AD7B326B450410AD7A370332F54419A99995927B450417B14AEC72A2F5441A4703DEA27B450411F85EB31232F54417B14AEC721B45041B81E85BB202F544114AE470122B450415C8FC215202F54413D0AD70305B450413D0AD7A3172F54411F85EBA104B450410AD7A3B0192F544185EB518804B4504152B81EB5192F5441EC51B8CE00B450418FC2F5482E2F5441713D0AC7FDB350410AD7A3A03F2F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000DC5023A155B4504134801CC3932F5441BF56353056B450412061FB76922F54410EB6726755B45041D1685E24912F544181CE28AE52B45041A44829ED8D2F544141AF3AA751B450416E10C0B68C2F54410EEF74E450B450412CF27B418C2F5441E6896F454FB450412A493E058C2F54411C3301B14CB45041630BA8BE8B2F54411A72C1334AB45041E16FE7CE8B2F5441C90EE37547B45041E99BCCE08B2F5441CCEF1A7843B4504121E69DFB8B2F544122B37BBA40B45041FC32D3118C2F544169D1665D3DB45041F19C142D8C2F544131449D343AB45041CA34A9558C2F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336750 - 3318825
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000340000003333333333B4504114AE47F1602F5441713D0A8730B45041E17A14BE5A2F5441AE47E19A2AB45041000000004D2F544185EB516827B4504100000050402F54413D0AD7B326B450410AD7A370332F54419A99995927B450417B14AEC72A2F5441A4703DEA27B450411F85EB31232F54417B14AEC721B45041B81E85BB202F544114AE470122B450415C8FC215202F54413D0AD70305B450413D0AD7A3172F54411F85EBA104B450410AD7A3B0192F544185EB518804B4504152B81EB5192F5441EC51B8CE00B450418FC2F5482E2F5441713D0AC7FDB350410AD7A3A03F2F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000DC5023A155B4504134801CC3932F5441BF56353056B450412061FB76922F54410EB6726755B45041D1685E24912F544181CE28AE52B45041A44829ED8D2F544141AF3AA751B450416E10C0B68C2F54410EEF74E450B450412CF27B418C2F5441E6896F454FB450412A493E058C2F54411C3301B14CB45041630BA8BE8B2F54411A72C1334AB45041E16FE7CE8B2F5441C90EE37547B45041E99BCCE08B2F5441CCEF1A7843B4504121E69DFB8B2F544122B37BBA40B45041FC32D3118C2F544169D1665D3DB45041F19C142D8C2F544131449D343AB45041CA34A9558C2F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336857 - 1873543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000570000009A999929B9B45041AE47E1BAF42E54413D0AD773C2B45041A4703D3AF72E54410AD7A3E0C7B450410AD7A3C0F12E5441B81E850BC9B450418FC2F5E8F22E54419A9999F9CBB45041EC51B89EED2E544100000050BCB450413D0AD7B3DD2E5441E17A144EACB4504133333313CD2E54415C8FC225A7B450419A9999A9C72E544100000090A1B45041C3F528BCC12E5441295C8FA29AB45041CDCCCC1CBB2E5441C3F5285C94B45041E17A14AEB92E5441713D0AB791B45041E17A14BEB22E5441EC51B84E8EB4504185EB5128A92E5441C3F5285C8CB45041CDCCCCCCA32E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006100000034F65B4577B45041DF906A3EBF2E54414798071A7AB450413210F03ABD2E5441DDD55C2F7AB45041D9EEB64DBD2E5441A51B3A367AB4504143E92449BD2E5441CDCCCC6C97B45041A4703D0AD72E54419A999929B9B45041AE47E1BAF42E54413D0AD773C2B45041A4703D3AF72E54410AD7A3E0C7B450410AD7A3C0F12E5441B81E850BC9B450418FC2F5E8F22E54419A9999F9CBB45041EC51B89EED2E544100000050BCB450413D0AD7B3DD2E5441E17A144EACB4504133333313CD2E54415C8FC225A7B450419A9999A9C72E544100000090A1B45041C3F528BCC12E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>336857 - 3318369
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000570000009A999929B9B45041AE47E1BAF42E54413D0AD773C2B45041A4703D3AF72E54410AD7A3E0C7B450410AD7A3C0F12E5441B81E850BC9B450418FC2F5E8F22E54419A9999F9CBB45041EC51B89EED2E544100000050BCB450413D0AD7B3DD2E5441E17A144EACB4504133333313CD2E54415C8FC225A7B450419A9999A9C72E544100000090A1B45041C3F528BCC12E5441295C8FA29AB45041CDCCCC1CBB2E5441C3F5285C94B45041E17A14AEB92E5441713D0AB791B45041E17A14BEB22E5441EC51B84E8EB4504185EB5128A92E5441C3F5285C8CB45041CDCCCCCCA32E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006100000034F65B4577B45041DF906A3EBF2E54414798071A7AB450413210F03ABD2E5441DDD55C2F7AB45041D9EEB64DBD2E5441A51B3A367AB4504143E92449BD2E5441CDCCCC6C97B45041A4703D0AD72E54419A999929B9B45041AE47E1BAF42E54413D0AD773C2B45041A4703D3AF72E54410AD7A3E0C7B450410AD7A3C0F12E5441B81E850BC9B450418FC2F5E8F22E54419A9999F9CBB45041EC51B89EED2E544100000050BCB450413D0AD7B3DD2E5441E17A144EACB4504133333313CD2E54415C8FC225A7B450419A9999A9C72E544100000090A1B45041C3F528BCC12E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>337363 - 4138727
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001000000000000070B227514166666656303B554148E17A64B2275141E17A14EE303B5541333333A3C8275141CDCCCC3C373B5541666666C6D5275141295C8F823B3B55415C8FC235DE275141295C8F323F3B55417B14AE97E1275141C3F5285C403B5541A4703D9AE42751415C8FC265123B554100000070E627514152B81E95F63A554166666656DB2751413D0AD763F83A5541A4703DEAD32751415C8FC255FA3A554100000060CF2751415C8FC265FC3A5541333333A3CA27514185EB5198FF3A55417B14AE87C62751415C8FC235033B5541E17A141EC3275141A4703D0A073B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000AE52DAA1B2275141115D12602D3B554179E926B9B4275141448B6C8F2D3B55416DE7FBE9B42751415C8FC2B5303B55417B48811BC8275141B0836341363B5541D7A3709DD2275141A4703D7A393B5541A245B6A3E0275141508D97263F3B55410C022BDFE127514123DBF9663E3B55415FCC70A5E2275141C8538D68333B5541447C59E9E3275141A6E4DD0F213B5541779BF5D1E42751419502533A123B55411E068B55E62751410AC02726F83A554121B07290E3275141C74B3729F83A554161D1C07CE3275141454E1A10F73A554166666656DB2751413D0AD763F83A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>338634 - 3652543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001100000033333363C0D050410AD7A370428F5441713D0A67C0D05041B81E85FB438F54419A999959C0D0504148E17A14458F5441AE47E16AC0D05041CDCCCC5C5E8F5441F6285C2FC0D05041D7A3700D668F54413D0AD7E3BED050411F85EB617B8F54413D0AD773BDD05041E17A147E938F5441713D0A77B4D0504152B81E95EB8F5441E17A140EB9D0504148E17AC4EC8F54418FC2F5D8C2D05041D7A370BD928F5441A4703D0AC4D050411F85EB917B8F5441C3F5289CC4D05041713D0A276F8F544148E17A44C5D05041F6285CAF618F544100000080C5D05041EC51B81E438F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000E21C44A0C5D0504148F39A103E8F54410AD7A3A0C5D050413D0AD7E33D8F544133333363C0D050410AD7A370428F5441713D0A67C0D05041B81E85FB438F54419A999959C0D0504148E17A14458F5441AE47E16AC0D05041CDCCCC5C5E8F5441F6285C2FC0D05041D7A3700D668F54413D0AD7E3BED050411F85EB617B8F54413D0AD773BDD05041E17A147E938F5441713D0A77B4D0504152B81E95EB8F5441E17A140EB9D0504148E17AC4EC8F54418FC2F5D8C2D05041D7A370BD928F5441A4703D0AC4D050411F85EB917B8F5441C3F5289CC4D05041713D0A276F8F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>339299 - 184546
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000005000000333333B3F1D050419A9999996991544100000020F3D05041EC51B8DE6D9154411F85EB3124D150417B14AED771915441AE47E19A23D150413D0AD7436D915441333333B3F1D050419A99999969915441
+</a>
+
+<b>
+010600000001000000010300000001000000070000008BC3B89DFAD05041A1323A416A915441C11834B3F1D05041FEE799996991544100000020F3D05041EC51B8DE6D915441EED6EA3124D150419CE2ADD771915441C45955AC23D15041E37340CB6D915441AE47E19A23D150413D0AD7436D9154418BC3B89DFAD05041A1323A416A915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>339299 - 422568
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000005000000333333B3F1D050419A9999996991544100000020F3D05041EC51B8DE6D9154411F85EB3124D150417B14AED771915441AE47E19A23D150413D0AD7436D915441333333B3F1D050419A99999969915441
+</a>
+
+<b>
+010600000001000000010300000001000000070000008BC3B89DFAD05041A1323A416A915441C11834B3F1D05041FEE799996991544100000020F3D05041EC51B8DE6D915441EED6EA3124D150419CE2ADD771915441C45955AC23D15041E37340CB6D915441AE47E19A23D150413D0AD7436D9154418BC3B89DFAD05041A1323A416A915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>341665 - 1223605
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000020000000B81E854BE38E514148E17A44399A5441CDCCCC0CEF8E5141CDCCCCDC359A54417B14AE07EA8E5141CDCCCC2C309A54411F85EB61E68E5141B81E850B2C9A5441AE47E18AE18E51418FC2F5D82C9A5441EC51B81EDE8E5141E17A140E289A54418FC2F5E8E08E5141000000501B9A5441666666D6E38E51419A9999D9199A5441CDCCCC5CE68E5141B81E85EB179A544152B81E95E88E5141B81E850B0F9A5441E17A144EE98E514114AE47D10A9A544100000000EA8E5141EC51B87E089A544152B81E25D98E514133333373089A5441713D0AF7D28E5141295C8FF2089A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000BAE959F4E08E514143B53348099A544152B901F1DA8E5141915E1C40099A5441BBC3BB4CD58E514190DEEF3A0A9A544148A86C06D48E51413DCDA0B60A9A5441705F901CD38E5141E1DBE3100B9A54417B14AE37D38E5141713D0A370C9A54417B14AE57D38E51413D0AD7E30E9A5441C3F5286CD38E5141B81E857B119A5441A4703D2AD38E514114AE4761139A5441E17A14AED28E51419A999939159A54419A999999D18E5141F6285CBF179A5441713D0AD7CD8E51419A9999191E9A544114AE47E1C78E5141AE47E13A289A5441F6285CBFC38E5141B81E858B2F9A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>341665 - 3312397
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000020000000B81E854BE38E514148E17A44399A5441CDCCCC0CEF8E5141CDCCCCDC359A54417B14AE07EA8E5141CDCCCC2C309A54411F85EB61E68E5141B81E850B2C9A5441AE47E18AE18E51418FC2F5D82C9A5441EC51B81EDE8E5141E17A140E289A54418FC2F5E8E08E5141000000501B9A5441666666D6E38E51419A9999D9199A5441CDCCCC5CE68E5141B81E85EB179A544152B81E95E88E5141B81E850B0F9A5441E17A144EE98E514114AE47D10A9A544100000000EA8E5141EC51B87E089A544152B81E25D98E514133333373089A5441713D0AF7D28E5141295C8FF2089A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000BAE959F4E08E514143B53348099A544152B901F1DA8E5141915E1C40099A5441BBC3BB4CD58E514190DEEF3A0A9A544148A86C06D48E51413DCDA0B60A9A5441705F901CD38E5141E1DBE3100B9A54417B14AE37D38E5141713D0A370C9A54417B14AE57D38E51413D0AD7E30E9A5441C3F5286CD38E5141B81E857B119A5441A4703D2AD38E514114AE4761139A5441E17A14AED28E51419A999939159A54419A999999D18E5141F6285CBF179A5441713D0AD7CD8E51419A9999191E9A544114AE47E1C78E5141AE47E13A289A5441F6285CBFC38E5141B81E858B2F9A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>342847 - 226032
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000004000000010300000001000000BF000000A4703D5AD9E750410000006080A85441C3F528BCD9E750419A99999981A85441C3F5288CDDE75041C3F528FC81A85441AE47E14ADEE7504148E17AA481A85441000000D0DFE75041CDCCCCAC81A854415C8FC225E1E7504152B81E6581A854415C8FC255E1E7504148E17AB481A8544133333373E2E750413D0AD73382A854419A999969E3E750418FC2F5C883A854418FC2F5F8E3E750410000006084A854415C8FC2B5E5E750417B14AE7784A8544148E17A94E6E750410AD7A32084A8544133333343E7E7504148E17AB481A854413D0AD703E7E75041E17A14CE80A85441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A4703D1A96E750416666660640A85441A4703D4A96E75041295C8F623EA85441A4703DEA95E75041A4703DBA3DA85441A4703D6A85E75041295C8F0238A85441BD4A86DF84E750411E5E863038A85441791B9FDE84E7504124F9D23038A854419EA5CFC484E75041726D603938A854415071BBC384E750416BF3BB3938A854411F85EBA183E750416666664639A854416666660683E75041EC51B8DE3AA854416666667682E75041295C8FB23CA85441666666D682E75041EC51B82E3FA854411F85EBF190E75041A4703DDA41A85441A4703D8A95E75041295C8FE242A85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>342847 - 422968
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000004000000010300000001000000BF000000A4703D5AD9E750410000006080A85441C3F528BCD9E750419A99999981A85441C3F5288CDDE75041C3F528FC81A85441AE47E14ADEE7504148E17AA481A85441000000D0DFE75041CDCCCCAC81A854415C8FC225E1E7504152B81E6581A854415C8FC255E1E7504148E17AB481A8544133333373E2E750413D0AD73382A854419A999969E3E750418FC2F5C883A854418FC2F5F8E3E750410000006084A854415C8FC2B5E5E750417B14AE7784A8544148E17A94E6E750410AD7A32084A8544133333343E7E7504148E17AB481A854413D0AD703E7E75041E17A14CE80A85441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A4703D1A96E750416666660640A85441A4703D4A96E75041295C8F623EA85441A4703DEA95E75041A4703DBA3DA85441A4703D6A85E75041295C8F0238A85441BD4A86DF84E750411E5E863038A85441791B9FDE84E7504124F9D23038A854419EA5CFC484E75041726D603938A854415071BBC384E750416BF3BB3938A854411F85EBA183E750416666664639A854416666660683E75041EC51B8DE3AA854416666667682E75041295C8FB23CA85441666666D682E75041EC51B82E3FA854411F85EBF190E75041A4703DDA41A85441A4703D8A95E75041295C8FE242A85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>342860 - 407645
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000005000000010300000003000000BE000000AE47E1FA18E950417B14AE975FA65441AE47E13A18E95041B81E85CB5EA65441EC51B80E17E95041B81E859B5EA65441EC51B8EE15E95041F6285C4F5CA65441295C8F5215E950417B14AE075CA65441EC51B8CE14E950417B14AE175BA65441295C8FA213E95041B81E852B5CA65441295C8FE212E95041333333135CA65441295C8FF211E95041333333F35AA65441713D0AC710E95041B81E85AB5AA65441713D0AA70FE950417B14AE9759A65441AE47E1FA0FE95041F6285CEF58A65441AE47E1FA0FE950417B14AEF756A65441EC51B89E0EE95041333333B355A65441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000084000000D9C1EF33B3E85041F0F6AF557CA754419F984E1EB3E850415BA6F2837CA75441D74ED2B1B2E85041AA5759397DA75441BE77E7D2B2E85041947AA0337EA75441A08DF740B3E85041A696127A7EA75441FFE5DCE4B4E850413FB8AF487CA75441C441A15AB6E85041BD4FF83E7AA75441912BB3E1B7E850419A38204A78A75441800BD703BFE8504109D6A3C06EA75441B9290A8DBFE85041C29AC03F6EA754418FC2F538C0E850418FC2F5786CA754414B5217EAC0E850410960B89D6BA7544107D30B26C1E850419CE52C4E6BA75441F693272CC1E8504145A2F34B6BA75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>342860 - 422974
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000005000000010300000003000000BE000000AE47E1FA18E950417B14AE975FA65441AE47E13A18E95041B81E85CB5EA65441EC51B80E17E95041B81E859B5EA65441EC51B8EE15E95041F6285C4F5CA65441295C8F5215E950417B14AE075CA65441EC51B8CE14E950417B14AE175BA65441295C8FA213E95041B81E852B5CA65441295C8FE212E95041333333135CA65441295C8FF211E95041333333F35AA65441713D0AC710E95041B81E85AB5AA65441713D0AA70FE950417B14AE9759A65441AE47E1FA0FE95041F6285CEF58A65441AE47E1FA0FE950417B14AEF756A65441EC51B89E0EE95041333333B355A65441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000084000000D9C1EF33B3E85041F0F6AF557CA754419F984E1EB3E850415BA6F2837CA75441D74ED2B1B2E85041AA5759397DA75441BE77E7D2B2E85041947AA0337EA75441A08DF740B3E85041A696127A7EA75441FFE5DCE4B4E850413FB8AF487CA75441C441A15AB6E85041BD4FF83E7AA75441912BB3E1B7E850419A38204A78A75441800BD703BFE8504109D6A3C06EA75441B9290A8DBFE85041C29AC03F6EA754418FC2F538C0E850418FC2F5786CA754414B5217EAC0E850410960B89D6BA7544107D30B26C1E850419CE52C4E6BA75441F693272CC1E8504145A2F34B6BA75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>344305 - 1331138
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003A000000333333F36B135141333333532AD8544152B81E856E135141713D0AF72BD8544185EB511876135141295C8FB22DD85441F6285CEF7813514114AE475130D85441AE47E1BA7B1351419A99996938D85441E17A145E841351413D0AD7D33ED85441713D0A778E1351410AD7A30042D85441A4703D7A83135141AE47E18A40D85441E17A148E80135141666666763FD85441295C8FB279135141C3F528EC38D85441F6285C2F72135141A4703D4A35D85441295C8F526A13514152B81E6532D85441000000906813514152B81EC535D85441F6285CEF65135141713D0AE737D85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005400000051A5AFF37A13514174076B1E3AD854412CF54AAF791351415A8994EA38D854410163BE3972135141FFC3424F35D85441295C8F526A13514152B81E6532D85441000000906813514152B81EC535D85441F6285CEF65135141713D0AE737D85441AE47E17A62135141AE47E1FA38D85441295C8FF25E1351410AD7A39038D85441AE47E13A55135141A4703DAA36D85441713D0AF74F135141666666163BD85441D7A3709D49135141AE47E14A3DD85441C3F528CC461351418FC2F50843D85441AE47E1BA4D13514185EB510846D85441713D0AE752135141666666B649D85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>344305 - 3701085
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003A000000333333F36B135141333333532AD8544152B81E856E135141713D0AF72BD8544185EB511876135141295C8FB22DD85441F6285CEF7813514114AE475130D85441AE47E1BA7B1351419A99996938D85441E17A145E841351413D0AD7D33ED85441713D0A778E1351410AD7A30042D85441A4703D7A83135141AE47E18A40D85441E17A148E80135141666666763FD85441295C8FB279135141C3F528EC38D85441F6285C2F72135141A4703D4A35D85441295C8F526A13514152B81E6532D85441000000906813514152B81EC535D85441F6285CEF65135141713D0AE737D85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005400000051A5AFF37A13514174076B1E3AD854412CF54AAF791351415A8994EA38D854410163BE3972135141FFC3424F35D85441295C8F526A13514152B81E6532D85441000000906813514152B81EC535D85441F6285CEF65135141713D0AE737D85441AE47E17A62135141AE47E1FA38D85441295C8FF25E1351410AD7A39038D85441AE47E13A55135141A4703DAA36D85441713D0AF74F135141666666163BD85441D7A3709D49135141AE47E14A3DD85441C3F528CC461351418FC2F50843D85441AE47E1BA4D13514185EB510846D85441713D0AE752135141666666B649D85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>344815 - 226442
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000070000007B14AEA795FA504185EB5128ACC65441A4703DCA98FA504148E17A64B1C65441B81E855BB9FA50415C8FC285B0C65441F6285CAFB4FA50419A9999B9A8C654411F85EB0195FA5041295C8F92A9C6544114AE475194FA5041713D0A97A9C654417B14AEA795FA504185EB5128ACC65441
+</a>
+
+<b>
+0106000000010000000103000000010000000800000004CFFF9AB4FA5041210D25BAA8C65441DF8A6382B3FA50418DF5A6C1A8C654413AC5770C9AFA5041755D0870A9C6544175AE7D5097FA50414F86C282A9C65441CA0C6B469BFA5041663C7C53B1C65441B81E855BB9FA50415C8FC285B0C65441EB285CAFB4FA50419A9999B9A8C6544104CFFF9AB4FA5041210D25BAA8C65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>344815 - 291462
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000070000007B14AEA795FA504185EB5128ACC65441A4703DCA98FA504148E17A64B1C65441B81E855BB9FA50415C8FC285B0C65441F6285CAFB4FA50419A9999B9A8C654411F85EB0195FA5041295C8F92A9C6544114AE475194FA5041713D0A97A9C654417B14AEA795FA504185EB5128ACC65441
+</a>
+
+<b>
+0106000000010000000103000000010000000800000004CFFF9AB4FA5041210D25BAA8C65441DF8A6382B3FA50418DF5A6C1A8C654413AC5770C9AFA5041755D0870A9C6544175AE7D5097FA50414F86C282A9C65441CA0C6B469BFA5041663C7C53B1C65441B81E855BB9FA50415C8FC285B0C65441EB285CAFB4FA50419A9999B9A8C6544104CFFF9AB4FA5041210D25BAA8C65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>344829 - 232299
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001A000000AE47E1FAA6FA504148E17A2449C55441E17A143E8EFA5041E17A14BE47C55441666666168FFA5041000000D04BC55441000000508FFA50419A9999A94DC554413D0AD7D391FA5041E17A14CE4DC55441F6285C6FA5FA5041A4703DEA4EC554419A9999B9BAFA5041EC51B81E50C554411F85EBF1CFFA50411F85EB5151C554418FC2F5B8CFFA50419A9999B950C55441000000D0CBFA50419A9999394BC554413D0AD743C9FA504148E17AA447C55441F6285C2FC1FA5041A4703D0A33C55441AE47E17ABFFA5041E17A14CE31C5544114AE4751C1FA504185EB510837C55441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000970AD743C9FA5041C7E17AA447C55441FAD15C12C6FA5041517810803FC55441A4AB2D0EC6FA5041AB3C65753FC55441F6285C2FC1FA5041A4703D0A33C5544172340C92C0FA50414DD84A9832C55441C047E17ABFFA5041167B14CE31C554414D54E749C1FA504170B5EB3E37C55441542C4825C1FA5041755B7DAD39C554414D54E749C1FA504129E59C773CC55441B0F363DCC1FA50410D36D8F83FC5544101776ECAC2FA5041B15347D542C55441198EC8CAC3FA5041E8595CB144C554413EBC7CCBC5FA5041A3BBDC5647C55441F1459C95C8FA504178A067EA4AC55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>351903 - 1282166
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000D0000008FC2F508031651419A9999190CF3544148E17AE4061651410AD7A3200EF3544185EB51E80C16514114AE470111F354418FC2F53811165141D7A3708D13F35441AE47E1BA111651415C8FC2F512F354411F85EB4114165141713D0AA70FF354417B14AED70B16514148E17AB40BF3544133333343041651417B14AEE708F35441713D0AC7FA15514148E17A0406F35441AE47E11AF2155141295C8F4204F35441AE47E1BAF1155141AE47E10A08F354413D0AD773FB155141295C8F020AF354418FC2F508031651419A9999190CF35441
+</a>
+
+<b>
+0106000000010000000103000000010000001600000048E17AE4061651410AD7A3200EF3544185EB51E80C16514114AE470111F354418FC2F53811165141D7A3708D13F354414C37898911165141EC51B8DE13F354414A0C02931216514148E17A1413F35441AD6D18571316514119F124F811F354415C8FC26513165141AE47E1E211F354412B8716390E165141A4703D6A0DF35441EC51B8AE0916514123DBF9AE0BF354414E6210A80416514191ED7C870AF354415839B4D800165141AAF1D2C508F354413D0AD703FE15514177BE9F1A06F3544119045696FA1551414E6210B005F35441713D0AAFF21551417F6ABCE403F35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>351903 - 3592729
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000D0000008FC2F508031651419A9999190CF3544148E17AE4061651410AD7A3200EF3544185EB51E80C16514114AE470111F354418FC2F53811165141D7A3708D13F35441AE47E1BA111651415C8FC2F512F354411F85EB4114165141713D0AA70FF354417B14AED70B16514148E17AB40BF3544133333343041651417B14AEE708F35441713D0AC7FA15514148E17A0406F35441AE47E11AF2155141295C8F4204F35441AE47E1BAF1155141AE47E10A08F354413D0AD773FB155141295C8F020AF354418FC2F508031651419A9999190CF35441
+</a>
+
+<b>
+0106000000010000000103000000010000001600000048E17AE4061651410AD7A3200EF3544185EB51E80C16514114AE470111F354418FC2F53811165141D7A3708D13F354414C37898911165141EC51B8DE13F354414A0C02931216514148E17A1413F35441AD6D18571316514119F124F811F354415C8FC26513165141AE47E1E211F354412B8716390E165141A4703D6A0DF35441EC51B8AE0916514123DBF9AE0BF354414E6210A80416514191ED7C870AF354415839B4D800165141AAF1D2C508F354413D0AD703FE15514177BE9F1A06F3544119045696FA1551414E6210B005F35441713D0AAFF21551417F6ABCE403F35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>346170 - 3027666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000D000000EC51B88EB25551417B14AE173C5B5441B81E853BB05551410AD7A3E03F5B5441E17A140EB655514185EB5158425B544133333343C75551410AD7A3504A5B54410AD7A300DD5551417B14AE57535B54419A999979EF5551415C8FC2055B5B5441295C8FB20256514100000060635B544185EB51D80256514152B81EF5625B5441666666660D565141EC51B82E4D5B5441F6285C8FE9555141F6285C5F385B544133333353C65551419A9999E9235B544114AE4761B4555141A4703DBA395B5441EC51B88EB25551417B14AE173C5B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000002E64B39DC5555141DC046A8D495B54411CCE8313C555514160EA9802485B5441A895BB5DC4555141F13848C7455B5441546DE3DBC3555141C5A7D7F3435B5441F03C1340C3555141DB364788425B544128DC7208C255514102CEAE36415B54411D5BF268C0555141296516E53F5B5441E0C1897BBE555141610476AD3E5B5441B43019A8BC55514199A3D5753D5B5441CABF883CBB555141246B0DC03C5B54416C16301BB95551415C0A6D883B5B5441485E6415B655514139ECB45B425B54412E64B39DC5555141DC046A8D495B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>346170 - 3444574
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000D000000EC51B88EB25551417B14AE173C5B5441B81E853BB05551410AD7A3E03F5B5441E17A140EB655514185EB5158425B544133333343C75551410AD7A3504A5B54410AD7A300DD5551417B14AE57535B54419A999979EF5551415C8FC2055B5B5441295C8FB20256514100000060635B544185EB51D80256514152B81EF5625B5441666666660D565141EC51B82E4D5B5441F6285C8FE9555141F6285C5F385B544133333353C65551419A9999E9235B544114AE4761B4555141A4703DBA395B5441EC51B88EB25551417B14AE173C5B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000002E64B39DC5555141DC046A8D495B54411CCE8313C555514160EA9802485B5441A895BB5DC4555141F13848C7455B5441546DE3DBC3555141C5A7D7F3435B5441F03C1340C3555141DB364788425B544128DC7208C255514102CEAE36415B54411D5BF268C0555141296516E53F5B5441E0C1897BBE555141610476AD3E5B5441B43019A8BC55514199A3D5753D5B5441CABF883CBB555141246B0DC03C5B54416C16301BB95551415C0A6D883B5B5441485E6415B655514139ECB45B425B54412E64B39DC5555141DC046A8D495B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>416115 - 34480
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001B00000014AE47115C355141EC51B8FEF81F5541E17A14FE5A3551413D0AD7C3F61F5541666666D65A355141AE47E13AF41F5541A4703DEA5A355141295C8F62F11F5541EC51B8AE5B3551419A9999D9EE1F5541C3F5284C5D355141295C8FB2EC1F5541A4703D9A6035514133333303E61F55413D0AD72361355141C3F528DCE21F554148E17A3465355141EC51B83EDC1F5541A4703D5A6D35514148E17AB4D41F5541713D0AE7683551417B14AE97D41F55417B14AE175A355141EC51B87ED81F5541AE47E1BA5135514148E17A04DB1F5541AE47E17A45355141CDCCCCCCDE1F5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000140B46E15A3551411BA2B6ABF21F554132900CE85A3551418A1C875BF51F5541E4BB048C5B35514144A8C4E1F71F5541276F69D55C3551413B47E37DF71F5541437035165D35514143338BEFF21F55415D76977A5E355141A11D0100EE1F55413B848DA461355141AA04134EE81F5541E18FEB4C64355141ECEDBC1DE31F5541179719F265355141D4E2C495E01F5541F6A40F1C693551410FDB30D0DE1F55417ABE63EE6E35514131CD3AA6DB1F5541B0C59193703551416DC5A6E0D91F55419AB503E86C35514103B2B472D51F5541BD542F906A355141380F4B49D71F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>416115 - 74286
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001B00000014AE47115C355141EC51B8FEF81F5541E17A14FE5A3551413D0AD7C3F61F5541666666D65A355141AE47E13AF41F5541A4703DEA5A355141295C8F62F11F5541EC51B8AE5B3551419A9999D9EE1F5541C3F5284C5D355141295C8FB2EC1F5541A4703D9A6035514133333303E61F55413D0AD72361355141C3F528DCE21F554148E17A3465355141EC51B83EDC1F5541A4703D5A6D35514148E17AB4D41F5541713D0AE7683551417B14AE97D41F55417B14AE175A355141EC51B87ED81F5541AE47E1BA5135514148E17A04DB1F5541AE47E17A45355141CDCCCCCCDE1F5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000140B46E15A3551411BA2B6ABF21F554132900CE85A3551418A1C875BF51F5541E4BB048C5B35514144A8C4E1F71F5541276F69D55C3551413B47E37DF71F5541437035165D35514143338BEFF21F55415D76977A5E355141A11D0100EE1F55413B848DA461355141AA04134EE81F5541E18FEB4C64355141ECEDBC1DE31F5541179719F265355141D4E2C495E01F5541F6A40F1C693551410FDB30D0DE1F55417ABE63EE6E35514131CD3AA6DB1F5541B0C59193703551416DC5A6E0D91F55419AB503E86C35514103B2B472D51F5541BD542F906A355141380F4B49D71F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>347539 - 3020177
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000017000000CDCCCCDC59F75041000000B074255441EC51B80E54F75041A4703DDA7425544114AE47F152F750418FC2F5887125544185EB517852F750411F85EB21702554416666660651F75041666666D66B255441D7A370FD48F75041E17A140E6D255441AE47E12A38F750417B14AE4770255441CDCCCCBC40F7504152B81E157A255441C3F5284C41F75041A4703D3A7B2554413D0AD75344F750413D0AD76381255441AE47E18A46F750416666668681255441CDCCCC0C49F75041A4703D4A8325544152B81E354DF75041713D0AB784255441E17A145E51F75041EC51B8AE85255441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000280000004FBA471534F75041D7AD32CB6C25544178D1972134F75041E7CEE7DA6C2554419F0C25C833F75041992587FC6C255441B81E850B30F75041C3F528FC6E2554417B14AE9730F75041EC51B80E7225544194B198AE31F750415EF2F9087725544186FAA7D336F750419D118B7E772554418267456739F75041A9660F7F7825544137AF43513BF7504177F695517A2554416F0D04DE40F7504177EFDA297B255441847F2F4E41F75041B90E5C3E7B255441CDCCCCBC40F7504152B81E157A255441AE47E12A38F750417B14AE47702554415DC2201E49F75041168120096D255441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>347539 - 3574020
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000017000000CDCCCCDC59F75041000000B074255441EC51B80E54F75041A4703DDA7425544114AE47F152F750418FC2F5887125544185EB517852F750411F85EB21702554416666660651F75041666666D66B255441D7A370FD48F75041E17A140E6D255441AE47E12A38F750417B14AE4770255441CDCCCCBC40F7504152B81E157A255441C3F5284C41F75041A4703D3A7B2554413D0AD75344F750413D0AD76381255441AE47E18A46F750416666668681255441CDCCCC0C49F75041A4703D4A8325544152B81E354DF75041713D0AB784255441E17A145E51F75041EC51B8AE85255441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000280000004FBA471534F75041D7AD32CB6C25544178D1972134F75041E7CEE7DA6C2554419F0C25C833F75041992587FC6C255441B81E850B30F75041C3F528FC6E2554417B14AE9730F75041EC51B80E7225544194B198AE31F750415EF2F9087725544186FAA7D336F750419D118B7E772554418267456739F75041A9660F7F7825544137AF43513BF7504177F695517A2554416F0D04DE40F7504177EFDA297B255441847F2F4E41F75041B90E5C3E7B255441CDCCCCBC40F7504152B81E157A255441AE47E12A38F750417B14AE47702554415DC2201E49F75041168120096D255441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>347539 - 151179
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000017000000CDCCCCDC59F75041000000B074255441EC51B80E54F75041A4703DDA7425544114AE47F152F750418FC2F5887125544185EB517852F750411F85EB21702554416666660651F75041666666D66B255441D7A370FD48F75041E17A140E6D255441AE47E12A38F750417B14AE4770255441CDCCCCBC40F7504152B81E157A255441C3F5284C41F75041A4703D3A7B2554413D0AD75344F750413D0AD76381255441AE47E18A46F750416666668681255441CDCCCC0C49F75041A4703D4A8325544152B81E354DF75041713D0AB784255441E17A145E51F75041EC51B8AE85255441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000028000000B0519F4D6FF7504120D3D06664255441D7E30D436FF750417B5128A263255441B81E852B6FF7504148E17A0460255441B71BBC926BF75041BC41BB7F6025544123C9B49864F7504109C5CC6E6125544194D0BB9E5EF75041850E983B62255441D90F3C2E59F750417E90FCF562255441B81E85CB58F750413333330363255441EC51B8CE50F750410AD7A380642554418FF5CAF94AF7504115D7A3CB65255441A7A62F5B41F750417D31A1ED67255441D7A370ED3FF75041EC51B83E68255441E26938FB3CF75041FD183D4F69255441CDCCCC2C37F7504185EB51686B255441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>347539 - 361571
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000017000000CDCCCCDC59F75041000000B074255441EC51B80E54F75041A4703DDA7425544114AE47F152F750418FC2F5887125544185EB517852F750411F85EB21702554416666660651F75041666666D66B255441D7A370FD48F75041E17A140E6D255441AE47E12A38F750417B14AE4770255441CDCCCCBC40F7504152B81E157A255441C3F5284C41F75041A4703D3A7B2554413D0AD75344F750413D0AD76381255441AE47E18A46F750416666668681255441CDCCCC0C49F75041A4703D4A8325544152B81E354DF75041713D0AB784255441E17A145E51F75041EC51B8AE85255441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000028000000B0519F4D6FF7504120D3D06664255441D7E30D436FF750417B5128A263255441B81E852B6FF7504148E17A0460255441B71BBC926BF75041BC41BB7F6025544123C9B49864F7504109C5CC6E6125544194D0BB9E5EF75041850E983B62255441D90F3C2E59F750417E90FCF562255441B81E85CB58F750413333330363255441EC51B8CE50F750410AD7A380642554418FF5CAF94AF7504115D7A3CB65255441A7A62F5B41F750417D31A1ED67255441D7A370ED3FF75041EC51B83E68255441E26938FB3CF75041FD183D4F69255441CDCCCC2C37F7504185EB51686B255441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348248 - 1755044
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000012000000D7A3700D0DE85041E17A147EAE8454417B14AEC709E85041F6285C7FAC845441333333D305E850411F85EBE1AA845441EC51B88E04E85041F6285C0FAB845441A4703D2A03E85041295C8F82AC8454417B14AE2701E850415C8FC2E5AF845441AE47E14AFFE7504152B81EA5B2845441B81E85ABFCE7504185EB51E8B4845441EC51B86EF9E75041D7A3705DB6845441E17A145EF4E7504148E17A04B884544114AE47E1F4E750413D0AD703DB845441D7A3706DF5E75041D7A3706D00855441295C8F92F7E750410AD7A3A0FF8454419A99996908E850413D0AD7B3F9845441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000AE47E14AFFE7504152B81EA5B2845441B81E85ABFCE7504185EB51E8B4845441EC51B86EF9E75041D7A3705DB6845441E17A145EF4E7504148E17A04B884544152B81E25ECE750413D0AD7B3BA845441713D0A17EBE75041AE47E1FABB845441AE47E1DAEAE75041295C8FC2BD84544148E17AE4EAE750419A999979C684544166666686EBE75041B81E859BDA845441713D0A47EBE750418FC2F548E2845441B81E85BBEBE750413D0AD763018554418FC2F5D8ECE75041CDCCCC8C028554410AD7A360EEE75041D7A3700D03855441D7A3706DF5E75041D7A3706D00855441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348248 - 3634375
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000012000000D7A3700D0DE85041E17A147EAE8454417B14AEC709E85041F6285C7FAC845441333333D305E850411F85EBE1AA845441EC51B88E04E85041F6285C0FAB845441A4703D2A03E85041295C8F82AC8454417B14AE2701E850415C8FC2E5AF845441AE47E14AFFE7504152B81EA5B2845441B81E85ABFCE7504185EB51E8B4845441EC51B86EF9E75041D7A3705DB6845441E17A145EF4E7504148E17A04B884544114AE47E1F4E750413D0AD703DB845441D7A3706DF5E75041D7A3706D00855441295C8F92F7E750410AD7A3A0FF8454419A99996908E850413D0AD7B3F9845441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000AE47E14AFFE7504152B81EA5B2845441B81E85ABFCE7504185EB51E8B4845441EC51B86EF9E75041D7A3705DB6845441E17A145EF4E7504148E17A04B884544152B81E25ECE750413D0AD7B3BA845441713D0A17EBE75041AE47E1FABB845441AE47E1DAEAE75041295C8FC2BD84544148E17AE4EAE750419A999979C684544166666686EBE75041B81E859BDA845441713D0A47EBE750418FC2F548E2845441B81E85BBEBE750413D0AD763018554418FC2F5D8ECE75041CDCCCC8C028554410AD7A360EEE75041D7A3700D03855441D7A3706DF5E75041D7A3706D00855441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348319 - 3058813
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000049000000713D0A279FF050417B14AED7927854411F85EB91A2F05041EC51B80E99785441CDCCCCBCA5F0504185EB51589878544152B81E35A9F05041F6285CFF967854417B14AE67B4F05041000000309178544152B81E05ADF0504185EB511884785441D7A370DDA8F0504185EB51087E785441B81E85DBA4F050411F85EB017A7854415C8FC2B59EF05041713D0A7775785441713D0A6796F05041E17A145E707854410AD7A3908FF05041CDCCCC7C6C785441A4703D4A88F05041D7A370BD68785441666666B67DF050415C8FC2F563785441EC51B8CE77F05041CDCCCCDC61785441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000D6133FC035F05041E4C39061637854412E8762D635F050411CC0ED6763785441B90D17FD35F0504184BD0D7363785441EEB14AD243F05041751DE56C67785441EC51B80E4EF05041E17A145E6A785441360C753950F05041FC00916965785441606CB29D50F0504118590B8164785441FB06AFD750F050417317D02663785441D63908DD50F0504162A5AAF362785441BA4D36B250F050410154F50B62785441A4703D9A50F05041A4703D8A617854413E21A56750F05041B123873161785441BDED18E24FF0504164495E47607854418A3B971B4FF0504174D2488E5F785441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348319 - 3341396
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000049000000713D0A279FF050417B14AED7927854411F85EB91A2F05041EC51B80E99785441CDCCCCBCA5F0504185EB51589878544152B81E35A9F05041F6285CFF967854417B14AE67B4F05041000000309178544152B81E05ADF0504185EB511884785441D7A370DDA8F0504185EB51087E785441B81E85DBA4F050411F85EB017A7854415C8FC2B59EF05041713D0A7775785441713D0A6796F05041E17A145E707854410AD7A3908FF05041CDCCCC7C6C785441A4703D4A88F05041D7A370BD68785441666666B67DF050415C8FC2F563785441EC51B8CE77F05041CDCCCCDC61785441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000D6133FC035F05041E4C39061637854412E8762D635F050411CC0ED6763785441B90D17FD35F0504184BD0D7363785441EEB14AD243F05041751DE56C67785441EC51B80E4EF05041E17A145E6A785441360C753950F05041FC00916965785441606CB29D50F0504118590B8164785441FB06AFD750F050417317D02663785441D63908DD50F0504162A5AAF362785441BA4D36B250F050410154F50B62785441A4703D9A50F05041A4703D8A617854413E21A56750F05041B123873161785441BDED18E24FF0504164495E47607854418A3B971B4FF0504174D2488E5F785441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348484 - 59238
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000002B00000085EB51C854F2504185EB51A8DF785441666666964DF250417B14AE27D47854419A9999F94EF250417B14AE57D2785441713D0A7750F250419A9999A9D2785441295C8FE25AF25041B81E856BCC78544152B81ED559F2504148E17A34C778544185EB514858F25041EC51B88EBB785441C3F528CC57F2504133333363B6785441EC51B82E58F2504133333333B2785441C3F528EC57F25041713D0A17AF7854410000002056F25041713D0A27AA785441AE47E1DA47F25041F6285CBF97785441713D0A773FF25041F6285CFFA6785441F6285C7F40F250417B14AE27B6785441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000085C8DAB841F25041360D478EBC785441DFCA5EC641F25041DA1434BABC78544177FCE60E58F250416D96ECB7B97854419540B4CE57F250416DD7517EB678544155E6EBCB57F25041E001AA72B67854418311AEBA4FF25041077BD1E3B8785441D12B95F747F2504181FA93E4B9785441021C354446F25041A1108F27BA785441BFF2575241F2504125017776BA785441F000298F41F25041368758B4BB78544185C8DAB841F25041360D478EBC785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348484 - 136672
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000002B00000085EB51C854F2504185EB51A8DF785441666666964DF250417B14AE27D47854419A9999F94EF250417B14AE57D2785441713D0A7750F250419A9999A9D2785441295C8FE25AF25041B81E856BCC78544152B81ED559F2504148E17A34C778544185EB514858F25041EC51B88EBB785441C3F528CC57F2504133333363B6785441EC51B82E58F2504133333333B2785441C3F528EC57F25041713D0A17AF7854410000002056F25041713D0A27AA785441AE47E1DA47F25041F6285CBF97785441713D0A773FF25041F6285CFFA6785441F6285C7F40F250417B14AE27B6785441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000AB40B4CE57F2504147D8517EB67854419440B4CE57F2504156D7517EB678544158E6EBCB57F25041DC01AA72B67854418111AEBA4FF25041077BD1E3B8785441CC2B95F747F250417EFA93E4B9785441011C354446F250419F108F27BA785441BFF2575241F2504129017776BA7854418AC8DAB841F25041510D478EBC785441DCCA5EC641F25041DB1434BABC78544179FCE60E58F250416C96ECB7B9785441AB40B4CE57F2504147D8517EB6785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348484 - 275734
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000002B00000085EB51C854F2504185EB51A8DF785441666666964DF250417B14AE27D47854419A9999F94EF250417B14AE57D2785441713D0A7750F250419A9999A9D2785441295C8FE25AF25041B81E856BCC78544152B81ED559F2504148E17A34C778544185EB514858F25041EC51B88EBB785441C3F528CC57F2504133333363B6785441EC51B82E58F2504133333333B2785441C3F528EC57F25041713D0A17AF7854410000002056F25041713D0A27AA785441AE47E1DA47F25041F6285CBF97785441713D0A773FF25041F6285CFFA6785441F6285C7F40F250417B14AE27B6785441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000AB40B4CE57F2504147D8517EB67854419440B4CE57F2504156D7517EB678544158E6EBCB57F25041DC01AA72B67854418111AEBA4FF25041077BD1E3B8785441CC2B95F747F250417EFA93E4B9785441011C354446F250419F108F27BA785441BFF2575241F2504129017776BA7854418AC8DAB841F25041510D478EBC785441DCCA5EC641F25041DB1434BABC78544179FCE60E58F250416C96ECB7B9785441AB40B4CE57F2504147D8517EB6785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348584 - 3160979
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002C00000085EB518892EA5041333333A3A28A54410AD7A3D09EEA50413D0AD793A48A54419A999949A9EA5041713D0A57A78A5441CDCCCCCCC3EA5041CDCCCC6CB08A544185EB51C8C5EA50411F85EB81B08A54419A999969C7EA50417B14AE47AF8A5441666666A6CEEA50415C8FC2C59D8A54417B14AE17CBEA50417B14AE779B8A544166666656C3EA50410AD7A340978A544148E17AA4C0EA5041713D0A97978A544152B81E45BDEA50418FC2F568968A54413D0AD713BBEA5041A4703D0A938A5441AE47E14AB8EA5041F6285CAF908A54418FC2F5A8A0EA50413D0AD763868A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000CC2623E56AEA50416BEAA383A38A544148E17AD474EA504185EB5128A28A5441666666B67DEA504100000030A18A54418FC2F5D886EA504166666676A18A544185EB518892EA5041333333A3A28A54410AD7A3D09EEA50413D0AD793A48A54419A999949A9EA5041713D0A57A78A5441CDCCCCCCC3EA5041CDCCCC6CB08A544185EB51C8C5EA50411F85EB81B08A54419A999969C7EA50417B14AE47AF8A5441666666A6CEEA50415C8FC2C59D8A54417B14AE17CBEA50417B14AE779B8A544166666656C3EA50410AD7A340978A544148E17AA4C0EA5041713D0A97978A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>348584 - 3474393
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002C00000085EB518892EA5041333333A3A28A54410AD7A3D09EEA50413D0AD793A48A54419A999949A9EA5041713D0A57A78A5441CDCCCCCCC3EA5041CDCCCC6CB08A544185EB51C8C5EA50411F85EB81B08A54419A999969C7EA50417B14AE47AF8A5441666666A6CEEA50415C8FC2C59D8A54417B14AE17CBEA50417B14AE779B8A544166666656C3EA50410AD7A340978A544148E17AA4C0EA5041713D0A97978A544152B81E45BDEA50418FC2F568968A54413D0AD713BBEA5041A4703D0A938A5441AE47E14AB8EA5041F6285CAF908A54418FC2F5A8A0EA50413D0AD763868A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000CC2623E56AEA50416BEAA383A38A544148E17AD474EA504185EB5128A28A5441666666B67DEA504100000030A18A54418FC2F5D886EA504166666676A18A544185EB518892EA5041333333A3A28A54410AD7A3D09EEA50413D0AD793A48A54419A999949A9EA5041713D0A57A78A5441CDCCCCCCC3EA5041CDCCCC6CB08A544185EB51C8C5EA50411F85EB81B08A54419A999969C7EA50417B14AE47AF8A5441666666A6CEEA50415C8FC2C59D8A54417B14AE17CBEA50417B14AE779B8A544166666656C3EA50410AD7A340978A544148E17AA4C0EA5041713D0A97978A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>349899 - 50286
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000014000000C3F528DCA8E050419A999909B17C54419A9999B9ACE05041D7A3703DCB7C5441CDCCCCCCAEE05041C3F5285CD97C544133333333ADE05041713D0AF7E97C5441F6285C1FACE05041A4703D2AF57C5441CDCCCC6CABE05041713D0A87FC7C54410AD7A330AAE05041A4703D8A097D5441AE47E19AC8E05041F6285CBFF77C5441AE47E18AEFE0504185EB51F8E07C5441AE47E13AE2E0504185EB5188DD7C544148E17A84E2E05041C3F528CCDC7C544100000030E4E0504148E17A84D87C5441AE47E1DAF0E05041CDCCCCCCCD7C544100000020F3E050411F85EB41C97C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000B2711851F4E05041D7CCFCCE8A7C544185BD8A46F4E05041AA186FC48A7C5441B8335823E3E050417DE8EC62947C544170B33C36D4E050413B27AD029D7C5441F29216B9C6E0504196A3E714A57C54410257F1C6BBE050417BCCDE9AAB7C5441BBD6D5D9ACE05041380B9F3AB47C54411C995B67ADE05041A0A80E1DB57C5441E1B2055CB6E05041D9EBBEEAAF7C5441A7614E2AC7E050415928F32FA67C5441F0EF707BCAE0504134E16187A47C54413CA8D07FDDE050413CCA5240997C54410F6A47BAF2E05041DC15D4168D7C54413E4C6060F4E05041B8949A3A8C7C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>349899 - 84637
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000014000000C3F528DCA8E050419A999909B17C54419A9999B9ACE05041D7A3703DCB7C5441CDCCCCCCAEE05041C3F5285CD97C544133333333ADE05041713D0AF7E97C5441F6285C1FACE05041A4703D2AF57C5441CDCCCC6CABE05041713D0A87FC7C54410AD7A330AAE05041A4703D8A097D5441AE47E19AC8E05041F6285CBFF77C5441AE47E18AEFE0504185EB51F8E07C5441AE47E13AE2E0504185EB5188DD7C544148E17A84E2E05041C3F528CCDC7C544100000030E4E0504148E17A84D87C5441AE47E1DAF0E05041CDCCCCCCCD7C544100000020F3E050411F85EB41C97C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000B2711851F4E05041D7CCFCCE8A7C544185BD8A46F4E05041AA186FC48A7C5441B8335823E3E050417DE8EC62947C544170B33C36D4E050413B27AD029D7C5441F29216B9C6E0504196A3E714A57C54410257F1C6BBE050417BCCDE9AAB7C5441BBD6D5D9ACE05041380B9F3AB47C54411C995B67ADE05041A0A80E1DB57C5441E1B2055CB6E05041D9EBBEEAAF7C5441A7614E2AC7E050415928F32FA67C5441F0EF707BCAE0504134E16187A47C54413CA8D07FDDE050413CCA5240997C54410F6A47BAF2E05041DC15D4168D7C54413E4C6060F4E05041B8949A3A8C7C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>350067 - 1360857
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000140000007B14AEA78E4951418FC2F5C8B8B85441666666469149514133333343BDB854417B14AE879449514114AE4771C3B8544148E17AF496495141A4703D5AC7B85441CDCCCC4C9A495141713D0A87CBB8544148E17AB49D4951413D0AD723CFB854418FC2F578A249514152B81E15D4B854417B14AEA7A349514100000030D2B854417B14AE57A5495141295C8FA2CEB8544114AE47F1A64951417B14AE07CCB8544114AE4731A9495141A4703D2ACAB85441333333B3AE495141C3F5283CC7B854418FC2F578AB495141295C8F82C1B85441F6285CFFA649514152B81E15BAB85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003D0000009A9999B995495141C3F5283CA7B8544186C4E23396495141D66B42AFA7B8544147BAA4E799495141FE03522BABB85441FC2D65099B4951411C2CB940ACB8544145C7CD879C495141E71D17E2ADB854416E2481799E49514113F54901B0B85441C72F223CA149514133473714B3B854417303B421A3495141C4515962B5B854415C675580A549514155B29C43B8B854419CF2DCE8A64951414C4FC7F9B9B8544101C0477BA749514154CACCE2BAB854411E2F630EA94951418326DE7FBDB85441086D641AAA4951410529B23CBFB8544102A172A0AB49514146A99AC8C1B85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>350067 - 3732077
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000140000007B14AEA78E4951418FC2F5C8B8B85441666666469149514133333343BDB854417B14AE879449514114AE4771C3B8544148E17AF496495141A4703D5AC7B85441CDCCCC4C9A495141713D0A87CBB8544148E17AB49D4951413D0AD723CFB854418FC2F578A249514152B81E15D4B854417B14AEA7A349514100000030D2B854417B14AE57A5495141295C8FA2CEB8544114AE47F1A64951417B14AE07CCB8544114AE4731A9495141A4703D2ACAB85441333333B3AE495141C3F5283CC7B854418FC2F578AB495141295C8F82C1B85441F6285CFFA649514152B81E15BAB85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003D0000009A9999B995495141C3F5283CA7B8544186C4E23396495141D66B42AFA7B8544147BAA4E799495141FE03522BABB85441FC2D65099B4951411C2CB940ACB8544145C7CD879C495141E71D17E2ADB854416E2481799E49514113F54901B0B85441C72F223CA149514133473714B3B854417303B421A3495141C4515962B5B854415C675580A549514155B29C43B8B854419CF2DCE8A64951414C4FC7F9B9B8544101C0477BA749514154CACCE2BAB854411E2F630EA94951418326DE7FBDB85441086D641AAA4951410529B23CBFB8544102A172A0AB49514146A99AC8C1B85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>350789 - 54259
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000295C8F528AB15041B81E854B50905441AE47E1BA88B1504133333373569054417B14AE7789B150413D0AD743579054411F85EB71A4B150411F85EB215390544185EB51C8AEB15041295C8F224F9054413D0AD7A3BAB15041D7A3705D4A905441333333738AB15041713D0A374F905441295C8F528AB15041B81E854B50905441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000FCEBC199ADB15041AC4565AD4B90544188E144738AB15041E67508374F905441295C8F528AB15041B81E854B509054419EA5043F89B150413AB17C7454905441C2DD6A2C89B15041F5EF60BC5490544176A7BCC988B1504145DA056956905441A5F93F7789B15041998F5E3F579054419029F176A4B15041047DE11A53905441D4E9E9B8AEB15041476B86254F9054418EF17C76BAB150417F1DAF6F4A90544120FAE976BAB15041E940836F4A905441B4EFB996BAB150412F20B7624A90544146ED999EBAB1504197238C5F4A905441C2A0F933B8B15041F8513A9C4A905441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>350806 - 54261
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002A00000048E17AE43DB75041B81E85FB948F5441A4703D9A3EB75041F6285C3F8F8F544114AE47E13FB750415C8FC2B5898F5441B81E85BB40B75041295C8FD2868F544148E17AD441B7504185EB51C8838F54417B14AE8744B75041EC51B8DE7C8F5441B81E858B46B75041AE47E17A798F5441CDCCCCFC4CB75041295C8F02718F544152B81E4551B7504185EB51E86B8F5441B81E852B53B7504133333343698F54417B14AEA755B750410AD7A310658F5441295C8F4257B7504152B81EA55B8F5441D7A3703D5AB7504185EB51184B8F54418FC2F5D857B7504114AE47B1488F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000044000000A07124463EB750417BD2F2966B8F544172ED6E3C3CB75041B35A25F0728F54411AF08E6B3AB750412307D61A7A8F5441FE4C8EE238B750412F85DF05818F5441BCC146DD38B75041D74E3796818F5441F8EBD8D238B75041CCBB59B3828F5441E2A417A638B75041AECC1358898F5441DB41A29A38B750415AFF2F4D8C8F5441030AE16439B75041803A1B14958F5441B4B382293AB7504128FE8E889D8F54416A7404523AB75041396CD68D9D8F5441EF4B607C3AB7504153A35B939D8F544163136D1E3BB7504178BFEEA49D8F5441A90B6FD63DB75041C2032F039E8F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>351156 - 185836
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000050000000AD7A37065B6504114AE4701BC905441F6285CDF68B650419A999959B9905441000000203CB650413D0AD7D39A9054413D0AD7B33AB6504148E17AA49E9054410AD7A37065B6504114AE4701BC905441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000D79FD68E67B65041134BE55DBA90544135D2F01E68B650417D246FEEB9905441821D5CDF68B6504173A29959B9905441B9DCF5DE68B6504178D25359B990544142F280A062B650411F0B0317B590544181F106BE57B650416D8557AAAD9054412552713E3DB65041DA5839979B905441BEE91FAF3CB650412F5077359B905441C022FF433BB650419A9485079F9054419A2969043CB6504171F6B78B9F905441187B76164AB6504105B47B36A9905441887CB42158B6504181B691DCB29054419D61AC6665B65041D9B76EFABB905441C243A47065B650415AB44601BC905441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>351156 - 423613
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000050000000AD7A37065B6504114AE4701BC905441F6285CDF68B650419A999959B9905441000000203CB650413D0AD7D39A9054413D0AD7B33AB6504148E17AA49E9054410AD7A37065B6504114AE4701BC905441
+</a>
+
+<b>
+01060000000100000001030000000100000010000000D79FD68E67B65041134BE55DBA90544135D2F01E68B650417D246FEEB9905441821D5CDF68B6504173A29959B9905441B9DCF5DE68B6504178D25359B990544142F280A062B650411F0B0317B590544181F106BE57B650416D8557AAAD9054412552713E3DB65041DA5839979B905441BEE91FAF3CB650412F5077359B905441C022FF433BB650419A9485079F9054419A2969043CB6504171F6B78B9F905441187B76164AB6504105B47B36A9905441887CB42158B6504181B691DCB29054419D61AC6665B65041D9B76EFABB905441C243A47065B650415AB44601BC905441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423320 - 218527
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000A00000085EB5198E4BD50417B14AE9725375541F6285CCFE3BD50413D0AD71328375541CDCCCC7CE2BD5041F6285C5F3437554148E17A74E3BD5041A4703D0A35375541E17A142EF1BD5041A4703D5A2F375541AE47E1FA04BE504148E17A442137554152B81EF5E8BD5041C3F528FC1837554133333313E8BD5041D7A3707D19375541000000E0E6BD5041AE47E16A1D37554185EB5198E4BD50417B14AE9725375541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000FFE7D598E7BD50414EB7ED0D1B37554144C000E0E6BD5041DA18E26A1D375541B7675298E4BD5041F660AF9725375541FFFC5BCFE3BD5041F4A2D8132837554144D7CC7CE2BD5041AFC75B5F343755412806B0A4E2BD5041EF1CE17A3437554148E17A74E3BD5041A4703D0A35375541E17A142EF1BD5041A4703D5A2F3755414FC78291FDBD5041E40C338A263755411B1EE1FA04BE5041FED47A442137554152B81EF5E8BD5041C3F528FC1837554133333313E8BD5041D7A3707D19375541FFE7D598E7BD50414EB7ED0D1B375541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>353230 - 56972
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000002000000260000003D0AD7532F8F5041295C8F62EE415541A4703D6A338F5041C3F528CCED4155418FC2F5F8358F5041EC51B8FEE84155410AD7A300378F5041F6285C0FE7415541CDCCCC4C388F50413D0AD7B3E341554114AE47D1328F50411F85EB91DD415541A4703D0A378F5041295C8FF2D241554185EB51E83C8F5041B81E85BBC94155419A9999B9358F504185EB5138CB41554148E17A842C8F50410AD7A320CD4155417B14AE97258F5041CDCCCC0CD04155417B14AE07248F5041D7A370FDC44155410AD7A370228F5041B81E856BBB4155415C8FC295128F5041295C8FD2C5415541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006C000000000000A0118F5041EC51B8EEF04155412A427E9C118F50414CB928DEF0415541DBE74A98118F5041335B52CAF0415541F702406F118F50414C697F08F0415541E90FA962118F504180D06F07F04155419A999919118F504114AE4701F041554165AFACDF108F5041F6D8827CEE415541713D0AD7108F5041295C8F42EE415541CDCCCCFC108F5041713D0A37EC415541AAE4B618118F50413A3B6DA5EB41554172625F35118F5041CB06EF0FEB415541DB209B53118F504134EFED6DEA4155416A8AAC65118F50410DAF7FC5E9415541A0883D6F118F50418316526CE9415541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>353230 - 129553
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000260000003D0AD7532F8F5041295C8F62EE415541A4703D6A338F5041C3F528CCED4155418FC2F5F8358F5041EC51B8FEE84155410AD7A300378F5041F6285C0FE7415541CDCCCC4C388F50413D0AD7B3E341554114AE47D1328F50411F85EB91DD415541A4703D0A378F5041295C8FF2D241554185EB51E83C8F5041B81E85BBC94155419A9999B9358F504185EB5138CB41554148E17A842C8F50410AD7A320CD4155417B14AE97258F5041CDCCCC0CD04155417B14AE07248F5041D7A370FDC44155410AD7A370228F5041B81E856BBB4155415C8FC295128F5041295C8FD2C5415541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000008E000000D9B15F3C248F50413100B03FE3415541CA49AE6C248F504151D26C37E34155411BCB83DE258F504141342BF8E2415541B46974AF268F504110866ED4E241554142C4F6ED278F50413839F49DE2415541D571E3AF288F50414038FC79E2415541F4BED4292A8F5041112D412FE24155418986BB732C8F5041787A67BBE1415541F92632AA2C8F5041D399A2B0E1415541EC77F8422E8F5041CBDECE5FE1415541523405912E8F50419C136050E1415541402A9A392F8F504116A50A2FE1415541A3173FCC2F8F504106AC0B12E1415541119B0CEE328F5041A9118126E1415541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>353896 - 198665
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B000000295C8F42598E504133333373BA355541666666364A8E5041713D0A47BA3555413D0AD723418E5041C3F5284CB9355541E17A14BE408E5041713D0AF7BA3555411F85EB714B8E5041333333F3BB355541666666F65A8E5041713D0A07BC355541AE47E1AA688E50413D0AD723BC355541D7A3701D698E50410AD7A3B0BA355541CDCCCC1C688E504185EB5168BA355541B81E854B5F8E5041EC51B86EBA355541295C8F42598E504133333373BA355541
+</a>
+
+<b>
+01060000000100000001030000000100000015000000F5130A22418E504176ECB753B9355541E17A14BE408E5041713D0AF7BA355541B040BC644A8E504126FB6CDABB355541D3CE24864A8E50419F1C80DDBB355541A2A68DD94A8E5041C24F2DE5BB35554154CED37D538E5041C7C77CFDBB3555419B3966F65A8E50411B170A07BC35554144309900618E5041E574BB13BC355541F1B3AA69628E5041CB36B216BC3555416F4670C1638E50416CC69017BC355541CF3FEE40658E5041A00682F7BB355541D9C25E27658E50412B451978BA355541C223A0F4638E5041E5AC5772BA35554197E4806C5C8E5041BCC7DB77BA355541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>353896 - 389843
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B000000295C8F42598E504133333373BA355541666666364A8E5041713D0A47BA3555413D0AD723418E5041C3F5284CB9355541E17A14BE408E5041713D0AF7BA3555411F85EB714B8E5041333333F3BB355541666666F65A8E5041713D0A07BC355541AE47E1AA688E50413D0AD723BC355541D7A3701D698E50410AD7A3B0BA355541CDCCCC1C688E504185EB5168BA355541B81E854B5F8E5041EC51B86EBA355541295C8F42598E504133333373BA355541
+</a>
+
+<b>
+01060000000100000001030000000100000015000000F5130A22418E504176ECB753B9355541E17A14BE408E5041713D0AF7BA355541B040BC644A8E504126FB6CDABB355541D3CE24864A8E50419F1C80DDBB355541A2A68DD94A8E5041C24F2DE5BB35554154CED37D538E5041C7C77CFDBB3555419B3966F65A8E50411B170A07BC35554144309900618E5041E574BB13BC355541F1B3AA69628E5041CB36B216BC3555416F4670C1638E50416CC69017BC355541CF3FEE40658E5041A00682F7BB355541D9C25E27658E50412B451978BA355541C223A0F4638E5041E5AC5772BA35554197E4806C5C8E5041BCC7DB77BA355541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>354082 - 366670
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000060000005C8FC235B0CD5041A4703D6A0EC8544185EB510877CD5041C3F528CC22C85441AE47E1DA79CD50413333339329C8544185EB51B8ADCD50415C8FC21517C85441D7A370ADAFCD504148E17A4410C854415C8FC235B0CD5041A4703D6A0EC85441
+</a>
+
+<b>
+01060000000100000001030000000100000008000000797BACF9AFCD50410ABD453B0FC854415C8FC235B0CD5041A4703D6A0EC854417DE89D9B8FCD5041E31074091AC85441A11F520877CD5041E47229CC22C85441AE47E1DA79CD50413333339329C854414F1651B8ADCD50415FDBC21517C854412EDA6FADAFCD50418F867A4410C85441797BACF9AFCD50410ABD453B0FC85441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>354690 - 1347683
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000120000008FC2F538C5325141EC51B85E260D5541F6285C9FBB325141B81E850B240D554114AE4711AD325141CDCCCC3C280D5541B81E853B9D325141B81E85CB2C0D5541000000F09D3251417B14AE77320D554114AE47D19F325141D7A3709D410D55413D0AD753AA32514166666676430D5541F6285C1FB0325141CDCCCC0C450D5541AE47E1BAB4325141A4703DFA450D554152B81E25B9325141C3F5287C460D5541A4703D9ACA32514100000030410D5541AE47E16ACE325141CDCCCC7C3D0D5541CDCCCC3CD132514114AE47413A0D55415C8FC295D2325141B81E85EB360D5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000EE465636CA3251413A70843B2D0D5541D703690ECA325141F1DEB0032D0D5541C7426DB2C7325141978530B7290D5541CCFD1397C6325141D94BCA4F280D55418FC2F538C5325141EC51B85E260D5541C00DD6B8C23251415CF820CD250D5541AC933CB1BB325141D6AF1C26240D554114AE4711AD325141CDCCCC3C280D5541B81E853B9D325141B81E85CB2C0D5541000000F09D3251417B14AE77320D554114AE47D19F325141D7A3709D410D55413D0AD753AA32514166666676430D5541F6285C1FB0325141CDCCCC0C450D5541AE47E1BAB4325141A4703DFA450D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>354690 - 1347700
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000120000008FC2F538C5325141EC51B85E260D5541F6285C9FBB325141B81E850B240D554114AE4711AD325141CDCCCC3C280D5541B81E853B9D325141B81E85CB2C0D5541000000F09D3251417B14AE77320D554114AE47D19F325141D7A3709D410D55413D0AD753AA32514166666676430D5541F6285C1FB0325141CDCCCC0C450D5541AE47E1BAB4325141A4703DFA450D554152B81E25B9325141C3F5287C460D5541A4703D9ACA32514100000030410D5541AE47E16ACE325141CDCCCC7C3D0D5541CDCCCC3CD132514114AE47413A0D55415C8FC295D2325141B81E85EB360D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000007000000029092459C5325141F27C0275260D554199B42CC8C63251411C52A76F280D5541EE465636CA3251413A70843B2D0D554159008158CC325141E6A976DF2F0D5541A4232121D03251414900F8B3330D55415C8FC295D2325141B81E85EB360D5541E64EBC34D13251414277EA113A0D5541CDCCCC3CD132514114AE47413A0D5541AE47E16ACE325141CDCCCC7C3D0D5541A4703D9ACA32514100000030410D554152B81E25B9325141C3F5287C460D5541B81E858BB8325141E17A142E480D554148E17A64BF325141333333734A0D554148E17A34C43251415C8FC2C54B0D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>354939 - 361807
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000023000000C3F528DCFD4251411F85EBD16A0655413333338300435141CDCCCC9C52065541EC51B8AE02435141295C8F02450655417B14AE470243514152B81EB540065541A4703DCA00435141A4703D5A3C06554185EB5118F542514148E17AA4390655410AD7A390F14251410000001048065541666666F6F24251410AD7A3504E065541B81E858BF742514152B81E055606554114AE47D1F7425141F6285CFF5606554152B81E15F742514185EB51F85A065541AE47E14AF542514185EB51F85C065541666666F6F24251418FC2F5F85F0655411F85EB41EE425141295C8F0263065541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003200000085EB5118F542514148E17AA439065541E4A97DC1F142514137E37148470655418B6FE8E5F1425141FE767E8D4906554105FB6FCFF242514133AE51A24D0655414BC069B3F54251419F2F52EB52065541B81E858BF742514152B81E055606554114AE47D1F7425141F6285CFF5606554152B81E15F742514185EB51F85A065541E7CFB500F64251410D63282D5C06554126C0855DF4425141C06B2F2A5E065541666666F6F24251418FC2F5F85F065541E9E17A53EF425141ADD3F35162065541F896A6CFEC425141603F400F64065541AEB9617FEB4251419349550F67065541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>355664 - 1285355
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000000F0000009A9999299C455141295C8F926101554152B81E759845514148E17AB46201554114AE47A19C455141713D0A476D0155411F85EBC19F45514148E17A546D015541295C8F229F45514100000070700155419A999949A0455141E17A140E73015541295C8F42A24551413D0AD7E372015541713D0AD7A845514114AE47C1720155415C8FC235AD455141EC51B88E70015541AE47E1BAB14551419A9999096D015541E17A142EB34551410AD7A3206A015541713D0A37B0455141A4703DBA64015541D7A3709DAC4551413D0AD7435E015541666666C6A5455141C3F5288C5F015541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000710927FBAE45514182D7B8FE6D0155413C29E046B0455141637F46096B01554134B58E4DB0455141F7B58C056B015541C6497355B0455141ADD4CBF36A0155418A791800AB45514121CBF69F6D0155410FDF1AFFA3455141831FEB336F0155418FA1B630A4455141FDCDA8D86D015541B191D1C5A5455141AB56B91C6D0155415FC73F38A74551413BF1DF706C015541F166938FA9455141CD2DD65A6B01554134B908C4A94551415C352E446B015541B8F8BA7DAE455141B9FBB93969015541608FF88DAF4551415C1E26C468015541D58D9CC2B0455141547B556468015541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>355664 - 3560216
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000000F0000009A9999299C455141295C8F926101554152B81E759845514148E17AB46201554114AE47A19C455141713D0A476D0155411F85EBC19F45514148E17A546D015541295C8F229F45514100000070700155419A999949A0455141E17A140E73015541295C8F42A24551413D0AD7E372015541713D0AD7A845514114AE47C1720155415C8FC235AD455141EC51B88E70015541AE47E1BAB14551419A9999096D015541E17A142EB34551410AD7A3206A015541713D0A37B0455141A4703DBA64015541D7A3709DAC4551413D0AD7435E015541666666C6A5455141C3F5288C5F015541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000710927FBAE45514182D7B8FE6D0155413C29E046B0455141637F46096B01554134B58E4DB0455141F7B58C056B015541C6497355B0455141ADD4CBF36A0155418A791800AB45514121CBF69F6D0155410FDF1AFFA3455141831FEB336F0155418FA1B630A4455141FDCDA8D86D015541B191D1C5A5455141AB56B91C6D0155415FC73F38A74551413BF1DF706C015541F166938FA9455141CD2DD65A6B01554134B908C4A94551415C352E446B015541B8F8BA7DAE455141B9FBB93969015541608FF88DAF4551415C1E26C468015541D58D9CC2B0455141547B556468015541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>355748 - 3061145
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001100000014AE4771552551411F85EB414DFB54413D0AD70348255141E17A14BE44FB5441AE47E14A41255141CDCCCC3C40FB544114AE47013F255141F6285C8F3FFB5441EC51B8DE03255141295C8F7240FB5441F6285C8F02255141713D0AB741FB54419A999939022551411F85EBD148FB54418FC2F578FF245141A4703D7A4CFB54413D0AD7A32E2551411F85EB6157FB5441666666E630255141D7A370BD55FB544152B81EA533255141A4703DEA52FB5441CDCCCCCC342551411F85EB814FFB5441333333D335255141D7A3707D4FFB5441B81E85CB442551413D0AD7434FFB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000072053F992E25514113A0CD6957FB5441666666E630255141D7A370BD55FB544152B81EA533255141A4703DEA52FB5441CDCCCCCC342551411F85EB814FFB5441333333D335255141D7A3707D4FFB5441B81E85CB442551413D0AD7434FFB5441EC51B8CE45255141AE47E13A4FFB544114AE47A157255141666666F64EFB544114AE4771552551411F85EB414DFB54413D0AD70348255141E17A14BE44FB5441AE47E14A41255141CDCCCC3C40FB544114AE47013F255141F6285C8F3FFB5441EC51B8DE03255141295C8F7240FB5441F6285C8F02255141713D0AB741FB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>355748 - 3348326
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001100000014AE4771552551411F85EB414DFB54413D0AD70348255141E17A14BE44FB5441AE47E14A41255141CDCCCC3C40FB544114AE47013F255141F6285C8F3FFB5441EC51B8DE03255141295C8F7240FB5441F6285C8F02255141713D0AB741FB54419A999939022551411F85EBD148FB54418FC2F578FF245141A4703D7A4CFB54413D0AD7A32E2551411F85EB6157FB5441666666E630255141D7A370BD55FB544152B81EA533255141A4703DEA52FB5441CDCCCCCC342551411F85EB814FFB5441333333D335255141D7A3707D4FFB5441B81E85CB442551413D0AD7434FFB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000072053F992E25514113A0CD6957FB5441666666E630255141D7A370BD55FB544152B81EA533255141A4703DEA52FB5441CDCCCCCC342551411F85EB814FFB5441333333D335255141D7A3707D4FFB5441B81E85CB442551413D0AD7434FFB5441EC51B8CE45255141AE47E13A4FFB544114AE47A157255141666666F64EFB544114AE4771552551411F85EB414DFB54413D0AD70348255141E17A14BE44FB5441AE47E14A41255141CDCCCC3C40FB544114AE47013F255141F6285C8F3FFB5441EC51B8DE03255141295C8F7240FB5441F6285C8F02255141713D0AB741FB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>285956 - 216973
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000085EB51180AD95041B81E854BC3C95441A4703D8A08D95041D7A3701DC4C95441AE47E15A06D9504185EB5108CBC95441F6285CDFFED850418FC2F538D5C954413D75E9CAF6D85041956A7263DEC954415C8FC275F6D850410AD7A390DFC95441A4703D9AF2D85041E17A144EE8C95441F6285C9F07D950418FC2F518EFC954411F85EB0122D95041A4703D9AF7C95441A4703DFA25D9504185EB5178F0C954416C98DDCA2DD95041E8C71933E1C954412B6D4E322AD9504181B8E727DFC95441B092CFB828D9504105DE68AEDDC95441738E8F4C27D95041B087DF3FDBC95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000F6285CDFFED850418FC2F538D5C954417A23AB30F9D8504146366335DCC95441D5E3C275F6D85041E7F4A390DFC95441810C3E9AF2D850413FAD144EE8C95441DB6BF709F4D850419FA9E8C4E8C954417761F940F5D8504135C76829E9C954410F87245AF8D8504129AAB729EAC954417E529C79FBD8504171AB0F2CEBC954417FAE4E36FCD850412C9C0969EBC95441A3F5876AFCD8504101D2E979EBC954410BC75C9F07D95041975BF518EFC95441A96BBADE21D95041964856D9F7C954416BB7EC0C25D95041C26FD921F2C9544160D0DB0026D950419C1D636BF0C95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>285956 - 361645
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001600000085EB51180AD95041B81E854BC3C95441A4703D8A08D95041D7A3701DC4C95441AE47E15A06D9504185EB5108CBC95441F6285CDFFED850418FC2F538D5C954413D75E9CAF6D85041956A7263DEC954415C8FC275F6D850410AD7A390DFC95441A4703D9AF2D85041E17A144EE8C95441F6285C9F07D950418FC2F518EFC954411F85EB0122D95041A4703D9AF7C95441A4703DFA25D9504185EB5178F0C954416C98DDCA2DD95041E8C71933E1C954412B6D4E322AD9504181B8E727DFC95441B092CFB828D9504105DE68AEDDC95441738E8F4C27D95041B087DF3FDBC95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000F6285CDFFED850418FC2F538D5C954417A23AB30F9D8504146366335DCC95441D5E3C275F6D85041E7F4A390DFC95441810C3E9AF2D850413FAD144EE8C95441DB6BF709F4D850419FA9E8C4E8C954417761F940F5D8504135C76829E9C954410F87245AF8D8504129AAB729EAC954417E529C79FBD8504171AB0F2CEBC954417FAE4E36FCD850412C9C0969EBC95441A3F5876AFCD8504101D2E979EBC954410BC75C9F07D95041975BF518EFC95441A96BBADE21D95041964856D9F7C954416BB7EC0C25D95041C26FD921F2C9544160D0DB0026D950419C1D636BF0C95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>356576 - 26005
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000014000000EC51B80E6B40514148E17AA42CEF5441CDCCCC1C65405141666666562EEF544185EB51485D405141E17A143E31EF5441713D0AC7584051419A99995933EF5441666666365A4051413D0AD7E337EF5441A4703D0A65405141666666B633EF5441D7A370BD714051411F85EB2131EF54411F85EB51854051418FC2F5D82FEF544152B81E558740514152B81E352FEF544148E17A248B405141000000902CEF5441295C8F82A84051411F85EB811BEF544100000000A74051415C8FC2350FEF5441295C8FF2A6405141295C8FF20BEF5441C3F5286C984051417B14AEE70FEF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000035E1E69266405141B00DBDEB2DEF5441832C890468405141ADD359822DEF54414B2835AA6A405141CE2E23C12CEF54414506B13E6C40514170496B832CEF5441234EF3046D40514146EC2A652CEF5441E17A141E724051410AD7A3C02BEF544148E17AF478405141C3F5286C22EF54417B14AE27714051413333339319EF544152B81E656E40514185EB51B81AEF5441295C8F326E405141A4703D6A1DEF544185EB51A86E405141F6285C6F20EF54415C8FC28572405141713D0AC728EF5441A4ADE383664051419F0C84C12DEF544135E1E69266405141B00DBDEB2DEF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>356576 - 70386
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000014000000EC51B80E6B40514148E17AA42CEF5441CDCCCC1C65405141666666562EEF544185EB51485D405141E17A143E31EF5441713D0AC7584051419A99995933EF5441666666365A4051413D0AD7E337EF5441A4703D0A65405141666666B633EF5441D7A370BD714051411F85EB2131EF54411F85EB51854051418FC2F5D82FEF544152B81E558740514152B81E352FEF544148E17A248B405141000000902CEF5441295C8F82A84051411F85EB811BEF544100000000A74051415C8FC2350FEF5441295C8FF2A6405141295C8FF20BEF5441C3F5286C984051417B14AEE70FEF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000035E1E69266405141B00DBDEB2DEF5441832C890468405141ADD359822DEF54414B2835AA6A405141CE2E23C12CEF54414506B13E6C40514170496B832CEF5441234EF3046D40514146EC2A652CEF5441E17A141E724051410AD7A3C02BEF544148E17AF478405141C3F5286C22EF54417B14AE27714051413333339319EF544152B81E656E40514185EB51B81AEF5441295C8F326E405141A4703D6A1DEF544185EB51A86E405141F6285C6F20EF54415C8FC28572405141713D0AC728EF5441A4ADE383664051419F0C84C12DEF544135E1E69266405141B00DBDEB2DEF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>357597 - 347758
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B0000007B14AE97DA515141295C8F32F3F55441D7A370DDCE51514100000020F3F55441295C8F22CE515141AE47E11AF3F55441EC51B82EBC5151418FC2F5A81AF654419A999969BD515141AE47E15A1AF654410AD7A300C4515141D7A3705D19F6544100000080CC515141AE47E1CA1AF654418FC2F538D9515141AE47E12A1FF65441666666C6E05151415C8FC2E525F65441295C8FB2E051514133333373F3F554417B14AE97DA515141295C8F32F3F55441
+</a>
+
+<b>
+01060000000100000001030000000100000025000000B2F910DFD951514180306B31F3F55441DAF53BBACE515141048DFC20F3F55441D15C46FDC35151412C214A920BF6544152326798BD515141F12FB1071AF65441094EB4E8C35151412AA5770A19F654412E5EA08BCC515141E28BED661AF6544189F8909CD9515141B9E7F5F81EF65441333E9733DC51514176FD74D221F6544161AD56C6E0515141F915C8BD25F65441D7343BC6E0515141FF51EE7725F65441FD078CC5E0515141E59082BA23F65441847CEEC4E0515141F00EEB2922F654411EEAD0C3E0515141F633CA531FF654416EA2B5C1E051514181AF8DF819F65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>366242 - 3055864
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002B00000033333313AA2A5141295C8FC2A21955418FC2F528A72A5141713D0A079B195541CDCCCCDCA42A5141B81E858B9619554185EB51A8A32A514114AE47319419554152B81EA5952A5141EC51B8DE94195541666666A6902A51411F85EBF19519554148E17AB48E2A5141F6285C9F99195541713D0AB78E2A5141666666F69F19554152B81EE58A2A5141EC51B83EA4195541B81E85DB7D2A51418FC2F598A2195541E17A145E7A2A5141C3F528DCA2195541CDCCCC3C6F2A5141D7A3702DA4195541E17A14AE682A514148E17AE4A1195541713D0AD7672A5141B81E85EB9B195541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000B3A8BA42742A5141E238D1A87B1955418FC2F5D8702A5141C3F528AC7E195541E17A148E6C2A5141AE47E1FA7F195541E667FEE86A2A514158A5A47D7F19554141DE25346B2A51414FDFB88B81195541FFA8B49A6B2A514117FB222786195541896EA8016D2A5141A1C0168E87195541A316161C6F2A5141475BCF5A8719554156A798E9702A5141FAADC64086195541C31F306A722A5141BDCFE78C841955411EFD0E1E742A51417505592684195541E7372B53742A5141042C87198419554108C70F2C772A5141042C871984195541B5C97A2B792A5141C255353D84195541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>366242 - 3322890
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002B00000033333313AA2A5141295C8FC2A21955418FC2F528A72A5141713D0A079B195541CDCCCCDCA42A5141B81E858B9619554185EB51A8A32A514114AE47319419554152B81EA5952A5141EC51B8DE94195541666666A6902A51411F85EBF19519554148E17AB48E2A5141F6285C9F99195541713D0AB78E2A5141666666F69F19554152B81EE58A2A5141EC51B83EA4195541B81E85DB7D2A51418FC2F598A2195541E17A145E7A2A5141C3F528DCA2195541CDCCCC3C6F2A5141D7A3702DA4195541E17A14AE682A514148E17AE4A1195541713D0AD7672A5141B81E85EB9B195541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000B3A8BA42742A5141E238D1A87B1955418FC2F5D8702A5141C3F528AC7E195541E17A148E6C2A5141AE47E1FA7F195541E667FEE86A2A514158A5A47D7F19554141DE25346B2A51414FDFB88B81195541FFA8B49A6B2A514117FB222786195541896EA8016D2A5141A1C0168E87195541A316161C6F2A5141475BCF5A8719554156A798E9702A5141FAADC64086195541C31F306A722A5141BDCFE78C841955411EFD0E1E742A51417505592684195541E7372B53742A5141042C87198419554108C70F2C772A5141042C871984195541B5C97A2B792A5141C255353D84195541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>358080 - 49047
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000210000006666669628565141713D0AD799E85441C3F5289C1D5651419A99996996E854419A99990911565141CDCCCC7C92E85441B81E859B03565141AE47E14A8EE85441000000800256514148E17A0497E8544166666696015651418FC2F5289AE85441B81E852B01565141D7A3704D9CE854418FC2F51801565141666666569DE85441F6285C2F0156514148E17A149EE854413D0AD7E301565141A4703DFA9EE85441A4703D9A02565141333333E39FE854410AD7A3B00156514152B81EB5A2E85441AE47E1FA005651417B14AE57A5E85441CDCCCCACFF555141666666F6ADE85441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000713D0A971B565141F6285C3FB0E8544124EC72811A565141563556E4AFE85441CE7BC78D1956514123DF8976B0E85441AB61E8071856514120D3C0E1B0E85441D24257DC15565141C13EBA2FB1E85441E58A0D5913565141940080EBB0E85441FEEA55FF0F565141B2BD9301B0E85441FB81C1FA0D565141EC1F2904AFE85441AF3571C50B5651412282BE06AEE85441D0FE4D700A56514176A1671FACE854410C79759C0856514135CA7483ABE85441EF76284006565141058071AAABE85441CF68124F04565141FF67DF80ACE85441AC9FD5F901565141E4A2DD7DAEE85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>358080 - 89186
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000210000006666669628565141713D0AD799E85441C3F5289C1D5651419A99996996E854419A99990911565141CDCCCC7C92E85441B81E859B03565141AE47E14A8EE85441000000800256514148E17A0497E8544166666696015651418FC2F5289AE85441B81E852B01565141D7A3704D9CE854418FC2F51801565141666666569DE85441F6285C2F0156514148E17A149EE854413D0AD7E301565141A4703DFA9EE85441A4703D9A02565141333333E39FE854410AD7A3B00156514152B81EB5A2E85441AE47E1FA005651417B14AE57A5E85441CDCCCCACFF555141666666F6ADE85441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000713D0A971B565141F6285C3FB0E8544124EC72811A565141563556E4AFE85441CE7BC78D1956514123DF8976B0E85441AB61E8071856514120D3C0E1B0E85441D24257DC15565141C13EBA2FB1E85441E58A0D5913565141940080EBB0E85441FEEA55FF0F565141B2BD9301B0E85441FB81C1FA0D565141EC1F2904AFE85441AF3571C50B5651412282BE06AEE85441D0FE4D700A56514176A1671FACE854410C79759C0856514135CA7483ABE85441EF76284006565141058071AAABE85441CF68124F04565141FF67DF80ACE85441AC9FD5F901565141E4A2DD7DAEE85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>358491 - 1293336
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000024000000713D0AB754645141AE47E1EA12C954411F85EB6153645141EC51B82E13C95441CDCCCCDC4F645141A4703D4A13C95441EC51B88E4C645141A4703D4A13C95441295C8F9249645141AE47E1EA12C954413D0AD7A346645141713D0A4712C9544114AE47114364514185EB512811C95441E17A14AE416451418FC2F56810C9544114AE47E140645141713D0A7710C95441A4703D8A40645141D7A3700D11C95441A4703D5A40645141B81E856B14C95441333333633F645141E17A147E21C95441C3F5286C3E6451410AD7A3902EC954411F85EB3146645141000000303EC95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002600000014AE47714F6451419A99995949C95441A227A09E53645141936C3C7A45C954416EF012FD55645141103F034843C9544155775BA95A645141F0C7F7F23EC954413A37BE275B6451415C7DCC7D3EC95441A089001F5B6451419090238A3EC954413D0AD7635B645141CDCCCC4C3EC9544185EB51085D645141666666063CC954417B14AE675D645141295C8F9239C954411F85EBB15C645141B81E854B39C95441E17A142E5C6451417B14AE1739C95441AAAFC5BD5B64514183C1933338C95441B7B480ED5A645141303DF45136C95441146A37105A645141EBA7619734C95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>358491 - 3330364
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000024000000713D0AB754645141AE47E1EA12C954411F85EB6153645141EC51B82E13C95441CDCCCCDC4F645141A4703D4A13C95441EC51B88E4C645141A4703D4A13C95441295C8F9249645141AE47E1EA12C954413D0AD7A346645141713D0A4712C9544114AE47114364514185EB512811C95441E17A14AE416451418FC2F56810C9544114AE47E140645141713D0A7710C95441A4703D8A40645141D7A3700D11C95441A4703D5A40645141B81E856B14C95441333333633F645141E17A147E21C95441C3F5286C3E6451410AD7A3902EC954411F85EB3146645141000000303EC95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002600000014AE47714F6451419A99995949C95441A227A09E53645141936C3C7A45C954416EF012FD55645141103F034843C9544155775BA95A645141F0C7F7F23EC954413A37BE275B6451415C7DCC7D3EC95441A089001F5B6451419090238A3EC954413D0AD7635B645141CDCCCC4C3EC9544185EB51085D645141666666063CC954417B14AE675D645141295C8F9239C954411F85EBB15C645141B81E854B39C95441E17A142E5C6451417B14AE1739C95441AAAFC5BD5B64514183C1933338C95441B7B480ED5A645141303DF45136C95441146A37105A645141EBA7619734C95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489573 - 109012
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000D200000085EB5198F7235141000000F09A205541E17A144E0224514114AE47F1982055419A999979042451419A9999799A2055417B14AEA705245141000000A09B205541666666660B245141E17A14FE98205541B81E853B0B24514185EB515897205541C3F5289C0D2451411F85EB31982055413D0AD75315245141333333F39A2055419A9999890B2451411F85EB4196205541E17A145E0C24514152B81EA5932055413D0AD7830B2451418FC2F5589320554114AE47910A245141F6285CAF93205541000000100A24514166666606942055415C8FC2F5092451410AD7A39094205541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007E0100002EE0C82D07245141B1E3DA57932055411D8A065909245141297B680893205541E6BB083D0C2451418993DE4092205541333333030D24514166666606922055416E68EDC20F2451413FF7AD4D91205541971E0BED1424514111DC4EDC8F20554148E17A5415245141EC51B8BE8F205541D5F48F81152451419AA2D0B28F205541251E52C519245141DC7D92908E205541B41EBC541D2451415532C0908D205541340733A01F24514182DA75C68C205541E245FAEB22245141DF15E2A18B2055417A025B3F252451416A8A1BD18A2055416763635526245141F757D16C8A205541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489573 - 259378
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000D200000085EB5198F7235141000000F09A205541E17A144E0224514114AE47F1982055419A999979042451419A9999799A2055417B14AEA705245141000000A09B205541666666660B245141E17A14FE98205541B81E853B0B24514185EB515897205541C3F5289C0D2451411F85EB31982055413D0AD75315245141333333F39A2055419A9999890B2451411F85EB4196205541E17A145E0C24514152B81EA5932055413D0AD7830B2451418FC2F5589320554114AE47910A245141F6285CAF93205541000000100A24514166666606942055415C8FC2F5092451410AD7A39094205541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007E0100002EE0C82D07245141B1E3DA57932055411D8A065909245141297B680893205541E6BB083D0C2451418993DE4092205541333333030D24514166666606922055416E68EDC20F2451413FF7AD4D91205541971E0BED1424514111DC4EDC8F20554148E17A5415245141EC51B8BE8F205541D5F48F81152451419AA2D0B28F205541251E52C519245141DC7D92908E205541B41EBC541D2451415532C0908D205541340733A01F24514182DA75C68C205541E245FAEB22245141DF15E2A18B2055417A025B3F252451416A8A1BD18A2055416763635526245141F757D16C8A205541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>358919 - 47497
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000EC51B84E916151413D0AD73351C45441E17A144E8F61514152B81E754DC4544152B81E85886151411F85EBE151C45441B81E85CB816151415C8FC2F556C45441A4703D0A81615141333333F358C45441295C8FB280615141666666965CC45441713D0A978161514148E17AB460C45441666666F68261514148E17A9465C454418FC2F59883615141D7A3705D66C454410AD7A3208461514152B81E0567C454419A99999986615141333333A367C45441000000B08961514114AE474168C45441A4703D3A8C615141AE47E1AA68C454413D0AD7738F6151418FC2F59868C45441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000295C8F12996151418FC2F5985BC45441268FDDAC98615141D0946FAE5BC45441CD39265598615141469FEFDE5BC454419DC75AA89A6151419972978F5FC45441CD35DED49A615141603C3DD65FC4544160BA283F9B615141F949EF7E60C45441EC51B89E9D6151413333334364C45441B81E850B9E615141C3F5287C66C454415CE12D079E615141AED5E09C66C4544175DDD3DC9D615141449A19DC67C45441D7A370AD9D61514114AE474169C45441407533D99E6151414E3E92A066C45441F00DBAE39E615141F252296F66C45441A71A6C539E6151412946B5FF63C45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>358919 - 83941
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000EC51B84E916151413D0AD73351C45441E17A144E8F61514152B81E754DC4544152B81E85886151411F85EBE151C45441B81E85CB816151415C8FC2F556C45441A4703D0A81615141333333F358C45441295C8FB280615141666666965CC45441713D0A978161514148E17AB460C45441666666F68261514148E17A9465C454418FC2F59883615141D7A3705D66C454410AD7A3208461514152B81E0567C454419A99999986615141333333A367C45441000000B08961514114AE474168C45441A4703D3A8C615141AE47E1AA68C454413D0AD7738F6151418FC2F59868C45441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000295C8F12996151418FC2F5985BC45441268FDDAC98615141D0946FAE5BC45441CD39265598615141469FEFDE5BC454419DC75AA89A6151419972978F5FC45441CD35DED49A615141603C3DD65FC4544160BA283F9B615141F949EF7E60C45441EC51B89E9D6151413333334364C45441B81E850B9E615141C3F5287C66C454415CE12D079E615141AED5E09C66C4544175DDD3DC9D615141449A19DC67C45441D7A370AD9D61514114AE474169C45441407533D99E6151414E3E92A066C45441F00DBAE39E615141F252296F66C45441A71A6C539E6151412946B5FF63C45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>244053 - 1407305
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002D0000004E92E1CB4D0251410F05437F69105541295C8FA253025141AE47E11A671055413D0AD7136102514185EB51A85B1055413D0AD71361025141A4703D4A5B105541C3F528AC600251413D0AD7534A105541C3F528FC5E025141333333C34B1055418FC2F5F85D025141E17A143E451055415C8FC2855C025141AE47E1DA3B1055417B14AEE75B025141EC51B81E3C105541C3F528BC5A02514148E17A8438105541C3F528EC59025141F6285CCF3810554148E17A94590251417B14AE0738105541C3F5286C52025141000000903A10554166666696490251410AD7A3803E105541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000004C92E1CB4D0251410D05437F69105541295C8FA253025141AE47E11A671055413D0AD7136102514185EB51A85B1055413D0AD71361025141A4703D4A5B105541C3F528AC600251413D0AD7534A105541C3F528FC5E025141333333C34B1055418FC2F5F85D025141E17A143E451055415C8FC2855C025141AE47E1DA3B1055417B14AEE75B025141EC51B81E3C105541C3F528BC5A02514148E17A8438105541C3F528EC59025141F6285CCF3810554148E17A94590251417B14AE0738105541C3F5286C52025141000000903A10554166666696490251410AD7A3803E105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>244053 - 3658849
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002D0000004E92E1CB4D0251410F05437F69105541295C8FA253025141AE47E11A671055413D0AD7136102514185EB51A85B1055413D0AD71361025141A4703D4A5B105541C3F528AC600251413D0AD7534A105541C3F528FC5E025141333333C34B1055418FC2F5F85D025141E17A143E451055415C8FC2855C025141AE47E1DA3B1055417B14AEE75B025141EC51B81E3C105541C3F528BC5A02514148E17A8438105541C3F528EC59025141F6285CCF3810554148E17A94590251417B14AE0738105541C3F5286C52025141000000903A10554166666696490251410AD7A3803E105541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D0000004C92E1CB4D0251410D05437F69105541295C8FA253025141AE47E11A671055413D0AD7136102514185EB51A85B1055413D0AD71361025141A4703D4A5B105541C3F528AC600251413D0AD7534A105541C3F528FC5E025141333333C34B1055418FC2F5F85D025141E17A143E451055415C8FC2855C025141AE47E1DA3B1055417B14AEE75B025141EC51B81E3C105541C3F528BC5A02514148E17A8438105541C3F528EC59025141F6285CCF3810554148E17A94590251417B14AE0738105541C3F5286C52025141000000903A10554166666696490251410AD7A3803E105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>360152 - 2728095
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000333333D3D168514152B81E558F8E54413D0AD7D3CE685141B81E852B978E5441F6285C8FCE685141EC51B8DE978E5441B81E85EBCA685141EC51B8AE9F8E54417B14AED7C668514152B81E35A78E54415C8FC2B5C8685141A4703D4AB58E54417B14AE37CE6851417B14AEE7B08E5441E17A14EED0685141F6285C4FAE8E5441F6285CEFD2685141713D0A97AC8E5441F6285CEFD5685141EC51B88EAA8E54413D0AD703DC685141333333A3A78E5441713D0A37E0685141D7A3709DA88E544114AE47B1E0685141E17A14DE768E544114AE4791D7685141E17A14FE788E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000AE47E1AAC3685141295C8F12988E54417B14AEE7C2685141E17A14DE9C8E54410AD7A340C26851415C8FC235AD8E5441C3F528CCC268514166666646B58E54419A999919C3685141D7A3705DB88E544148E17AA4C36851413D0AD743B88E54411F85EB81C56851411F85EB71B78E5441AF102C9BC6685141DB954CF6B68E5441D11690B5C868514106D9C048B58E54419A999959C868514114AE4791B28E54417B14AED7C668514152B81E35A78E5441B81E85EBCA685141EC51B8AE9F8E5441F6285C8FCE685141EC51B8DE978E54413D0AD7D3CE685141B81E852B978E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>360152 - 3398239
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000333333D3D168514152B81E558F8E54413D0AD7D3CE685141B81E852B978E5441F6285C8FCE685141EC51B8DE978E5441B81E85EBCA685141EC51B8AE9F8E54417B14AED7C668514152B81E35A78E54415C8FC2B5C8685141A4703D4AB58E54417B14AE37CE6851417B14AEE7B08E5441E17A14EED0685141F6285C4FAE8E5441F6285CEFD2685141713D0A97AC8E5441F6285CEFD5685141EC51B88EAA8E54413D0AD703DC685141333333A3A78E5441713D0A37E0685141D7A3709DA88E544114AE47B1E0685141E17A14DE768E544114AE4791D7685141E17A14FE788E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000AE47E1AAC3685141295C8F12988E54417B14AEE7C2685141E17A14DE9C8E54410AD7A340C26851415C8FC235AD8E5441C3F528CCC268514166666646B58E54419A999919C3685141D7A3705DB88E544148E17AA4C36851413D0AD743B88E54411F85EB81C56851411F85EB71B78E5441AF102C9BC6685141DB954CF6B68E5441D11690B5C868514106D9C048B58E54419A999959C868514114AE4791B28E54417B14AED7C668514152B81E35A78E5441B81E85EBCA685141EC51B8AE9F8E5441F6285C8FCE685141EC51B8DE978E54413D0AD7D3CE685141B81E852B978E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>360585 - 361497
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000090000000AD7A33086ED504185EB512875875441E17A141E83ED50410AD7A340B28754413D0AD7638DED50410AD7A360B587544148E17AA494ED5041000000A0B6875441E17A14BE94ED504152B81E95B4875441AE47E1FA96ED5041B81E85FB7E875441E17A14BE93ED504152B81ED57587544185EB516892ED50418FC2F5E8748754410AD7A33086ED504185EB512875875441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000EDA9AAB383ED50415AB730A2A68754412C13553086ED5041231F702E7587544160D12FDB66ED50410D8AD2D375875441CDCCCCFC5BED50411F85EB01768754418FC2F5D859ED5041AE47E1DAA2875441BABFA53E5FED50416F803D63A5875441D2E6E23669ED5041BF173FA3A9875441843150906DED5041CFDD2781AB87544168A365B873ED50416671BFC4AD875441713D0A577CED50410AD7A330B08754418059B40583ED5041C2029B4BB2875441EDA9AAB383ED50415AB730A2A6875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>363216 - 3178547
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002F000000A4703D9AF6AF5041EC51B87EC83C5441F6285C3FF6AF5041295C8F62C73C5441295C8F22F1AF504152B81E55C63C54415C8FC265EEAF50410AD7A310CD3C54415C8FC215ECAF5041666666E6D23C544100000050E9AF5041A4703D0ADA3C5441A4703DBAF2AF5041AE47E18ADB3C5441F6285C4F03B0504100000030DE3C54419A99996912B050418FC2F598E03C5441295C8F621BB05041A4703DFAD93C5441D7A3707D22B050411F85EB51D63C5441D7A370DD28B05041C3F5284CD23C5441000000D02FB050413D0AD7A3CE3C544148E17A1436B05041EC51B8EECA3C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000EC51B86E24B0504133333343B13C5441713D0A1740B050418FC2F5C8B33C54418FC2F5184AB05041B81E85FBB33C54412DFD968156B05041E8BB2496B33C5441E6E1E5C353B050417CAF8B75AB3C5441DE6806D652B0504138A5578DA43C5441B6E7BDDC52B0504161C75F8FA23C5441AE47E14A4EB050419A999959A23C5441507CBF084EB05041D313085BA53C544114AE47014EB050411F85EBB1A53C5441713D0A774CB05041713D0A37B13C54419A9999594BB0504133333343B13C5441F1F4886C4AB0504198DFF9DEB13C5441D7A3706D49B050411F85EBB1B23C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>363216 - 3577090
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002F000000A4703D9AF6AF5041EC51B87EC83C5441F6285C3FF6AF5041295C8F62C73C5441295C8F22F1AF504152B81E55C63C54415C8FC265EEAF50410AD7A310CD3C54415C8FC215ECAF5041666666E6D23C544100000050E9AF5041A4703D0ADA3C5441A4703DBAF2AF5041AE47E18ADB3C5441F6285C4F03B0504100000030DE3C54419A99996912B050418FC2F598E03C5441295C8F621BB05041A4703DFAD93C5441D7A3707D22B050411F85EB51D63C5441D7A370DD28B05041C3F5284CD23C5441000000D02FB050413D0AD7A3CE3C544148E17A1436B05041EC51B8EECA3C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000EC51B86E24B0504133333343B13C5441713D0A1740B050418FC2F5C8B33C54418FC2F5184AB05041B81E85FBB33C54412DFD968156B05041E8BB2496B33C5441E6E1E5C353B050417CAF8B75AB3C5441DE6806D652B0504138A5578DA43C5441B6E7BDDC52B0504161C75F8FA23C5441AE47E14A4EB050419A999959A23C5441507CBF084EB05041D313085BA53C544114AE47014EB050411F85EBB1A53C5441713D0A774CB05041713D0A37B13C54419A9999594BB0504133333343B13C5441F1F4886C4AB0504198DFF9DEB13C5441D7A3706D49B050411F85EBB1B23C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>363425 - 186116
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000009000000D7A3703DD9A45041B81E858B066454417B14AEF7C0A450411F85EB51F7635441295C8F62BEA450415C8FC235FA635441C3F5281CBBA45041A4703DAAFD63544114AE4751B8A45041000000C000645441E17A14CED1A45041CDCCCCCC11645441AE47E1FAD3A45041713D0A870E6454411F85EB91D6A45041EC51B8AE0A645441D7A3703DD9A45041B81E858B06645441
+</a>
+
+<b>
+010600000001000000010300000001000000060000001758EB91D6A45041C694B8AE0A645441D3A78F62BEA45041F408C335FA635441ECC5291CBBA450411CA53DAAFD635441536DE0FAD3A45041F3510A870E645441680B376CD5A450413AD2BD620C6454411758EB91D6A45041C694B8AE0A645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>363425 - 371606
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000009000000D7A3703DD9A45041B81E858B066454417B14AEF7C0A450411F85EB51F7635441295C8F62BEA450415C8FC235FA635441C3F5281CBBA45041A4703DAAFD63544114AE4751B8A45041000000C000645441E17A14CED1A45041CDCCCCCC11645441AE47E1FAD3A45041713D0A870E6454411F85EB91D6A45041EC51B8AE0A645441D7A3703DD9A45041B81E858B06645441
+</a>
+
+<b>
+010600000001000000010300000001000000060000001758EB91D6A45041C694B8AE0A645441D3A78F62BEA45041F408C335FA635441ECC5291CBBA450411CA53DAAFD635441536DE0FAD3A45041F3510A870E645441680B376CD5A450413AD2BD620C6454411758EB91D6A45041C694B8AE0A645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>364974 - 388663
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000004800000052B81EE50E315141A4703D5A05055541666666860E3151419A9999890305554114AE47A10C315141B81E857BF8045541713D0A470931514152B81E05E4045541F6285C9F0831514152B81E05E004554185EB51E80F31514100000070DF045541295C8FF2153151413D0AD793DE045541F6285C1F1831514100000070DE045541AE47E1CA1631514133333333DD045541C3F5281C14315141D7A370FDDB045541D7A3706D11315141000000F0DA045541CDCCCC1C0F31514133333333DA045541333333030E31514114AE4721D90455413D0AD7130C3151419A999989D8045541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000C4144E460D315141B4B8E4A5DF04554121B2862F0D31514100FEB6A7DF04554106A8C02E0D315141C4D3C6A7DF045541EFA6E1220D3151418AD2B9A8DF045541CA3DF8FF0C315141807284ABDF04554116295C9F083151415DB81E05E0045541BC3D0A470931514152B81E05E40455411B5E39060C3151414256FFAAF404554193F9ECC415315141D42CEB75F40455413C3CFC811C31514115879AA1F3045541D7126AC126315141B1EBB5CEF2045541B5E8951E29315141437BD095F20455415959D348283151419F0A93EBF0045541ED04E43C28315141BA6F31E5F0045541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>365816 - 3515256
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000002D000000000000E076F45041B81E85CB1323544185EB51D884F45041F6285C5F0E2354410000001090F45041CDCCCCDC0C2354415C8FC24597F45041D7A3701D0C23544148E17A1499F450419A9999590B235441666666C695F45041A4703D7A002354419A9999A991F45041F6285CAFF1225441A4703D6A89F45041C3F528DCE62254416666661684F450418FC2F518DF225441333333C380F450411F85EB81DA225441AE47E19A7EF45041B81E853BD822544152B81E856EF45041EC51B87ED12254410000005066F45041CDCCCCACCC225441EC51B8AE61F45041B81E854BCC225441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000005F000000D79C27FF82F4504169BE7997DD225441333333C380F450411F85EB81DA2254411F85EB917FF4504100000040D9225441F3C0C42B7EF450418FE9838EDA225441BC901EA87BF45041E8224ADDDB225441AF9AD36B78F45041721971EFDC22544118451DCD73F4504168958E26DF225441E319F84D72F450419DE31C04E0225441C3F5280C72F450410AD7A360DF2254418119389374F45041DF86AFFCDD22544169E0BC1678F450416C541F59DC225441DD46D6B679F45041EABBF1C4DB22544160BD1ACF7BF450415CDD8519DB22544147BF20987DF45041AD458126DA225441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>365652 - 2984452
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000001F85EBA1E19250410AD7A3C0E70C5541E17A14DEDB92504152B81EB5FD0C5541713D0A97DC925041295C8FF2FE0C554152B81ED5EC925041713D0A37030D55410AD7A390F79250419A999909060D55411F85EBC1F89250413D0AD753050D554100000070FD9250411F85EBA1EE0C55413D0AD763FF9250418FC2F528E50C55419A999919E4925041295C8F62DE0C55411F85EBA1E19250410AD7A3C0E70C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000700000068402D8EE09250411C58D55DF70C55417247C007F59250412E80FC15F90C554145A9452EFB92504115A88793F90C55418AA45386FB925041017F85E8F70C554146F2CAE1DD9250418F0E70D5F50C55417BA00599DD92504177A3401EF70C554168402D8EE09250411C58D55DF70C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>365652 - 5171779
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000001F85EBA1E19250410AD7A3C0E70C5541E17A14DEDB92504152B81EB5FD0C5541713D0A97DC925041295C8FF2FE0C554152B81ED5EC925041713D0A37030D55410AD7A390F79250419A999909060D55411F85EBC1F89250413D0AD753050D554100000070FD9250411F85EBA1EE0C55413D0AD763FF9250418FC2F528E50C55419A999919E4925041295C8F62DE0C55411F85EBA1E19250410AD7A3C0E70C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000700000068402D8EE09250411C58D55DF70C55417247C007F59250412E80FC15F90C554145A9452EFB92504115A88793F90C55418AA45386FB925041017F85E8F70C554146F2CAE1DD9250418F0E70D5F50C55417BA00599DD92504177A3401EF70C554168402D8EE09250411C58D55DF70C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>366443 - 3467613
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000034000000EC51B83E452D5141D7A3708D0E1D5541295C8F52502D51410AD7A370101D55415C8FC2755E2D51419A9999D9121D5541A4703D0A5C2D5141E17A14DE0B1D5541CDCCCC7C592D5141E17A142E031D55410AD7A350572D5141000000C0FC1C55411F85EBC1552D5141713D0AD7F71C55411F85EB01552D5141666666B6F51C55419A9999A9542D5141E17A143EF41C5541CDCCCCBC532D5141B81E850BEF1C55415C8FC2B5522D51411F85EB51E71C554133333373522D51415C8FC235E21C554166666696502D51418FC2F578E11C55418FC2F5D84C2D5141000000E0E11C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002100000014AE47B1FA2C514166666656CB1C554114AE4701F62C51417B14AE17D11C5541AB949F90F22C51419B21BF9BD31C55419001B138FA2C51416F0B0C1BD61C55419E09C072F92C51415890E591D91C55412B49A420F82C51417D51D186DF1C55418434F275F82C51410B0EDD9CDF1C5541B9544E39192D514143B67814E81C5541A6598A2D2A2D51410A962676EC1C554178AFC3CC402D514108EAD14EF21C5541455FC2AD552D5141124D3DB6F71C5541FE6F4F8D542D5141D757F5C8F31C55416A78312F542D5141EF4E498EF11C55414FC96FD7532D5141907330A1EF1C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>346107 - 163158
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000F6285C3F1A0351418FC2F5D8D88C54415C8FC2550E03514148E17A04C98C54415C8FC29509035141CDCCCC0CD08C54410AD7A330050351410AD7A3A0D78C54411F85EBD1010351419A9999D9DE8C5441666666F600035141713D0A47E28C5441AE47E13A01035141EC51B8DEE58C54415C8FC2B5020351415C8FC205EA8C5441000000B0030351410AD7A390EF8C5441D7A3705D04035141295C8FE2F48C5441295C8F22040351417B14AE57FA8C5441295C8F7203035141E17A144EFE8C54411F85EB4103035141EC51B84EFF8C5441D7A370AD0E035141EC51B88EFE8C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000F6285C3F1A0351418FC2F5D8D88C54415C8FC2550E03514148E17A04C98C5441378F7FD30A0351414F4F6136CE8C5441DC9BC29509035141CA88CD0CD08C5441F6C86E1F08035141DD382F92D28C54410AD7A330050351410AD7A3A0D78C54411F85EBD1010351419A9999D9DE8C5441F67B66F60003514141E70947E28C54414E8BAE0001035141AAB01FD1E28C5441AE47E13A01035141EC51B8DEE58C5441D1063D93010351416C85A1D6E68C5441FAE9C3B50203514113C9C205EA8C5441273000B0030351419CB8A290EF8C5441C5A939D003035141837BAF8DF08C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>346107 - 354607
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000014000000F6285C3F1A0351418FC2F5D8D88C54415C8FC2550E03514148E17A04C98C54415C8FC29509035141CDCCCC0CD08C54410AD7A330050351410AD7A3A0D78C54411F85EBD1010351419A9999D9DE8C5441666666F600035141713D0A47E28C5441AE47E13A01035141EC51B8DEE58C54415C8FC2B5020351415C8FC205EA8C5441000000B0030351410AD7A390EF8C5441D7A3705D04035141295C8FE2F48C5441295C8F22040351417B14AE57FA8C5441295C8F7203035141E17A144EFE8C54411F85EB4103035141EC51B84EFF8C5441D7A370AD0E035141EC51B88EFE8C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000F6285C3F1A0351418FC2F5D8D88C54415C8FC2550E03514148E17A04C98C5441378F7FD30A0351414F4F6136CE8C5441DC9BC29509035141CA88CD0CD08C5441F6C86E1F08035141DD382F92D28C54410AD7A330050351410AD7A3A0D78C54411F85EBD1010351419A9999D9DE8C5441F67B66F60003514141E70947E28C54414E8BAE0001035141AAB01FD1E28C5441AE47E13A01035141EC51B8DEE58C5441D1063D93010351416C85A1D6E68C5441FAE9C3B50203514113C9C205EA8C5441273000B0030351419CB8A290EF8C5441C5A939D003035141837BAF8DF08C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>724440 - 725334
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000A05C1591839E50412BA9D82FEA465541B5A0ECB8839E50417418779FEA465541927C9204879E5041BA5986E8E746554119FB2E8E8A9E50410CDA79D9E5465541C8EFAB21819E504126C8DBACCD46554154F107F97D9E5041EFE507C9CF46554175A986F27C9E5041DFBBC419D14655412F6C6F487B9E5041874C9AFAD2465541CCC4745E7B9E504188FB4B38D3465541000000607B9E504166666636D3465541A05C1591839E50412BA9D82FEA465541
+</a>
+
+<b>
+01060000000100000001030000000100000009000000A4703DAA839E504166666676EA465541000000607B9E504166666636D3465541713D0AB7749E504152B81E65DB465541E17A144E7A9E5041A4703D6AE6465541E17A145E7F9E5041713D0A47F0465541713D0A977F9E504152B81ED5F0465541F6285C3F849E50418FC2F528EC4655418FC2F518849E5041CDCCCCACEB465541A4703DAA839E504166666676EA465541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>724440 - 1639487
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000A05C1591839E50412BA9D82FEA465541B5A0ECB8839E50417418779FEA465541927C9204879E5041BA5986E8E746554119FB2E8E8A9E50410CDA79D9E5465541C8EFAB21819E504126C8DBACCD46554154F107F97D9E5041EFE507C9CF46554175A986F27C9E5041DFBBC419D14655412F6C6F487B9E5041874C9AFAD2465541CCC4745E7B9E504188FB4B38D3465541000000607B9E504166666636D3465541A05C1591839E50412BA9D82FEA465541
+</a>
+
+<b>
+01060000000100000001030000000100000009000000A4703DAA839E504166666676EA465541000000607B9E504166666636D3465541713D0AB7749E504152B81E65DB465541E17A144E7A9E5041A4703D6AE6465541E17A145E7F9E5041713D0A47F0465541713D0A977F9E504152B81ED5F0465541F6285C3F849E50418FC2F528EC4655418FC2F518849E5041CDCCCCACEB465541A4703DAA839E504166666676EA465541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>724440 - 5290556
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000A05C1591839E50412BA9D82FEA465541B5A0ECB8839E50417418779FEA465541927C9204879E5041BA5986E8E746554119FB2E8E8A9E50410CDA79D9E5465541C8EFAB21819E504126C8DBACCD46554154F107F97D9E5041EFE507C9CF46554175A986F27C9E5041DFBBC419D14655412F6C6F487B9E5041874C9AFAD2465541CCC4745E7B9E504188FB4B38D3465541000000607B9E504166666636D3465541A05C1591839E50412BA9D82FEA465541
+</a>
+
+<b>
+01060000000100000001030000000100000009000000A4703DAA839E504166666676EA465541000000607B9E504166666636D3465541713D0AB7749E504152B81E65DB465541E17A144E7A9E5041A4703D6AE6465541E17A145E7F9E5041713D0A47F0465541713D0A977F9E504152B81ED5F0465541F6285C3F849E50418FC2F528EC4655418FC2F518849E5041CDCCCCACEB465541A4703DAA839E504166666676EA465541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>368160 - 187145
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001E00000085EB51E855BC5041666666664D375441D7A3708D55BC5041C3F5282C4E37544148E17A2442BC5041CDCCCC4C78375441000000D044BC5041295C8F227A375441F6285C6F49BC5041333333B37D37544148E17AF44CBC50415C8FC235803754411F85EB7151BC50411F85EBD183375441F6285CBF52BC504152B81EB584375441D7A370BD57BC50415C8FC26588375441000000305CBC5041C3F5289C8B3754410AD7A3C05FBC5041333333138E375441B81E857B62BC50411F85EB51903754411F85EB4163BC5041295C8F5291375441A4703DDA63BC5041295C8F9292375441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000470DBD8555BC50413B19E03C4E3754416E61930654BC504180F0847A4D375441B81E85FB51BC5041CDCCCC8C4C375441000000604CBC504152B81EF549375441C3F528AC49BC50418FC2F578483754417B14AE7744BC5041EC51B8DE45375441F6285CDF3EBC50415C8FC26543375441F6285C0F3DBC50410AD7A360423754417B14AE373CBC5041C3F5286C41375441D7A3704D3DBC504152B81EB53F3754415C8FC2453ABC5041E17A141E3E37544185EB512839BC5041C3F5287C3D37544152B81E8536BC5041666666B643375441EC51B81E3BBC50413333334348375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>368165 - 187177
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000100000012000000D7A3709DB1BC50411F85EB91C137544100000090B4BC5041D7A370ADC1375441A4703D3AB8BC5041E17A142EC237544114AE4721BCBC5041C3F5284CC3375441CDCCCC5CBFBC50411F85EB81C43754413D0AD783BFBC50413D0AD7E3B13754418FC2F588BFBC50419A9999199C37544133333373BFBC50417B14AE9795375441CDCCCC1CBDBC50411F85EB3193375441A4703D1ABABC50411F85EB018D375441A4703DAAB5BC5041666666068F375441A4703D8AB1BC5041000000509037544133333393B1BC5041CDCCCC8C943754413D0AD7A3B1BC504185EB51089C375441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000C5D5955DBCBC50411893D9A8913754417FEA6664BBBC5041DEE89DA88F37544142F1EB57BBBC5041E2F46D928F375441B9CAE53FBBBC50411BA0935D8F37544121E29D7FBABC5041A0D6D1E18D37544100D34FA7B9BC5041DEA6AC528E3754419B0749EAB7BC50411C207B768E3754418CEF326BB4BC5041DE2B0636903754413DBB3A89B2BC50414C460227913754419DC9ABBAB1BC5041AC1BAF9293375441604E3B9EB1BC504136EFF00A98375441B9036D9EB1BC5041333806449837544116F127ABB1BC5041EAA91B44983754411D1869AAB1BC5041ECA9D12898375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>368433 - 187145
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000160000007B14AE7744BC5041EC51B8DE45375441F6285CDF3EBC50415C8FC26543375441F6285C0F3DBC50410AD7A360423754417B14AE373CBC5041C3F5286C41375441D7A3704D3DBC504152B81EB53F3754415C8FC2453ABC5041E17A141E3E37544185EB512839BC5041C3F5287C3D37544152B81E8536BC5041666666B643375441EC51B81E3BBC50413333334348375441000000E034BC50418FC2F5D85637544152B81E152DBC5041AE47E10A6937544114AE47A12DBC504114AE47B169375441D7A3705D34BC5041333333936E3754413333338335BC5041333333536F375441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000470DBD8555BC50413B19E03C4E3754416E61930654BC504180F0847A4D375441B81E85FB51BC5041CDCCCC8C4C375441000000604CBC504152B81EF549375441C3F528AC49BC50418FC2F578483754417B14AE7744BC5041EC51B8DE45375441F6285CDF3EBC50415C8FC26543375441F6285C0F3DBC50410AD7A360423754417B14AE373CBC5041C3F5286C41375441D7A3704D3DBC504152B81EB53F3754415C8FC2453ABC5041E17A141E3E37544185EB512839BC5041C3F5287C3D37544152B81E8536BC5041666666B643375441EC51B81E3BBC50413333334348375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>368927 - 187142
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000100000040000000333333E383BB50413D0AD7030D375441713D0A1784BB50417B14AEB70E37544152B81E4585BB50410AD7A30010375441333333E385BB50415C8FC2C510375441AE47E19A86BB50410AD7A370113754419A9999E986BB5041A4703DFA1237544148E17A0487BB5041A4703D6A1437544185EB51A886BB5041C3F5281C1637544148E17A2486BB5041B81E856B183754410AD7A3E085BB50410AD7A3501A37544148E17AE485BB5041EC51B87E1B3754417B14AE1786BB50418FC2F5581D375441D7A370FD85BB5041D7A370FD1E3754419A9999E986BB50410AD7A36022375441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000440000009C48AB4E86BB504151B44D4D08375441A22E6D0A86BB5041A51F38D208375441D59E8C1886BB504155E1ACEC09375441D1FFB63A84BB5041C8BFA4890C3754418BB1E35186BB50418510A77E1037544183D174B186BB50417E3038DE10375441602A0BBD87BB50413A8B45ED0E375441C77667A288BB5041ADF28C220D3754412CB6896189BB5041C8BFA4890C3754419302E6468ABB50412A5AD4570B3754416768B6788BBB50418CF403260A375441350DA9698DBB5041006FA29408375441FB4A542591BB5041FDC9AFA3063754414EFD0D5E92BB5041AA6F912506375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>369381 - 44980
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001A000000AE47E17ACBA050417B14AEB7CF7D544185EB5148B9A050411F85EB51D07D54411F85EB61B9A050419A999929D57D544133333373C2A050415C8FC2E5D57D54410AD7A380C9A05041713D0AF7D57D54410AD7A310D2A05041A4703D3AD57D5441AE47E13AE2A05041AE47E19AD27D544133333373F0A05041713D0AD7CE7D5441A4703DDAFEA0504152B81E45CB7D544185EB51E800A1504114AE47E1CC7D5441666666E601A150410AD7A3C0CC7D5441F6285C2F07A15041713D0A57CC7D54419A9999E90CA15041B81E858BCC7D544114AE475115A15041EC51B88ECE7D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000CF1E5F8C0CA15041ADE22E88CC7D54417DCC3C7F05A150418283C478CC7D5441C150CFE601A15041FD8B2CC3CC7D544158B9659502A15041B54FACFAD07D5441C870D04B04A15041C0D6D32ACF7D5441A694A29A0DA15041BBDFE351CF7D5441AF67E48915A15041618A1438D27D54411C7ED5441AA150411E08F55AD47D5441500087D420A15041D78EE5A4D67D5441D9E017A524A15041C0BB3568D77D54411958D6BB24A15041A66C612FD67D54417038EDFA19A1504100A315A8D07D544199FFF9AD18A150413DD33112D07D54413BBF6B3E11A1504129580495CD7D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>369381 - 80874
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001A000000AE47E17ACBA050417B14AEB7CF7D544185EB5148B9A050411F85EB51D07D54411F85EB61B9A050419A999929D57D544133333373C2A050415C8FC2E5D57D54410AD7A380C9A05041713D0AF7D57D54410AD7A310D2A05041A4703D3AD57D5441AE47E13AE2A05041AE47E19AD27D544133333373F0A05041713D0AD7CE7D5441A4703DDAFEA0504152B81E45CB7D544185EB51E800A1504114AE47E1CC7D5441666666E601A150410AD7A3C0CC7D5441F6285C2F07A15041713D0A57CC7D54419A9999E90CA15041B81E858BCC7D544114AE475115A15041EC51B88ECE7D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000CF1E5F8C0CA15041ADE22E88CC7D54417DCC3C7F05A150418283C478CC7D5441C150CFE601A15041FD8B2CC3CC7D544158B9659502A15041B54FACFAD07D5441C870D04B04A15041C0D6D32ACF7D5441A694A29A0DA15041BBDFE351CF7D5441AF67E48915A15041618A1438D27D54411C7ED5441AA150411E08F55AD47D5441500087D420A15041D78EE5A4D67D5441D9E017A524A15041C0BB3568D77D54411958D6BB24A15041A66C612FD67D54417038EDFA19A1504100A315A8D07D544199FFF9AD18A150413DD33112D07D54413BBF6B3E11A1504129580495CD7D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>393829 - 978656
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A000000F6285C8F0CDA50413D0AD783407D5441713D0AA73FDA5041C3F5285C3F7D54410AD7A31066DA5041D7A3707D3E7D544185EB515865DA504148E17A94337D54415C8FC2153FDA50411F85EB71347D544185EB51880EDA5041AE47E18A357D544185EB51C8E8D950415C8FC265367D54413D0AD783E8D950417B14AE27387D5441E17A141EE7D95041CDCCCC5C417D5441F6285C8F0CDA50413D0AD783407D5441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000295F3A72E5D95041C8A6C5D24C7D5441E747C28AEFD95041775AC6864C7D544152B81E850ADA5041B81E85FB4B7D5441F9BF218C0FDA5041292B5FDE4B7D5441F79D6CBD2DDA50417197512F4B7D5441713D0A4740DA50413D0AD7C34A7D5441BD7019EC5FDA50410B016E0C4A7D54418EB5F5CF66DA5041FF892BDA497D544109A2050666DA504119C7F3823E7D5441E862875663DA5041F65D408D3E7D5441E096D30641DA50411C4331543F7D5441EC1E6DA32EDA5041AB8D9FBE3F7D5441073E57B921DA50414E5E5C09407D54419B1B190212DA5041007B4F64407D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>345275 - 1234162
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003E000000AE47E1CA19845141B81E852B4CB754411F85EBF121845141B81E85EB44B75441AE47E14A218451413D0AD72344B7544185EB51A81E8451413D0AD70343B754414AE58D2D168451419A9040C83EB75441C9AC23C71284514138258C623DB75441787129AD0C845141BBCB75383CB754416A1D6E40088451410F2CAF793BB75441625FC6C703845141449E86F63AB75441353E555AFD8351419BFEBF373AB754417B4AD32EF8835141DA06ABA839B754411E7532BDF6835141CA4470CC39B75441DB8DF30FF5835141C5AE5CD839B754419D3CC856F3835141B0560E083AB75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000044000000AE47E1CA19845141B81E852B4CB754411F85EBF121845141B81E85EB44B75441AE47E14A218451413D0AD72344B7544185EB51A81E8451413D0AD70343B7544146E58D2D168451419F9040C83EB75441CEAC23C7128451413D258C623DB75441737129AD0C845141BFCB75383CB75441185C75540A845141E475F3CB3BB754416A1D6E4008845141132CAF793BB75441B3E90A7A0384514189EE38E33AB75441353E555AFD8351419EFEBF373AB75441804AD32EF8835141DF06ABA839B754411D7532BDF6835141CC4470CC39B75441D78DF30FF5835141C2AE5CD839B75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>370176 - 2994765
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001F0000005C8FC295059450418FC2F5784C445541C3F528AC05945041B81E854B4844554166666696059450415C8FC2F53F4455418FC2F528F99350410AD7A3803844554133333313F1935041AE47E10A34445541E17A14CEED935041D7A3707D324455419A9999F9E99350417B14AEB730445541F6285C8FE3935041295C8F323B445541C3F5286CE19350419A9999293F44554152B81E15E093504185EB51284244554133333313DD93504133333393414455411F85EB61DC9350410AD7A37041445541B81E85CBD3935041000000C03F445541EC51B86ED193504185EB514846445541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000130000008FB3769805945041EAB60CD64C4455414F79997D08945041C46E75074D445541293102AF089450416B4252A052445541C2515FE90794504156AC38A683445541E17A146E0A9450410AD7A32084445541EC51B8DE1394504185EB51F8854455419A9999F91E9450413D0AD783874455413D0AD7931F94504148E17A3480445541D7A3705D1F94504185EB5118794455410AD7A3F01E945041EC51B8AE73445541A4703DBA1E94504148E17AF46D445541295C8F321E9450416666669667445541E17A143E1D94504185EB51B85D445541EC51B85E1C945041A4703DEA56445541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>370176 - 3584761
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001F0000005C8FC295059450418FC2F5784C445541C3F528AC05945041B81E854B4844554166666696059450415C8FC2F53F4455418FC2F528F99350410AD7A3803844554133333313F1935041AE47E10A34445541E17A14CEED935041D7A3707D324455419A9999F9E99350417B14AEB730445541F6285C8FE3935041295C8F323B445541C3F5286CE19350419A9999293F44554152B81E15E093504185EB51284244554133333313DD93504133333393414455411F85EB61DC9350410AD7A37041445541B81E85CBD3935041000000C03F445541EC51B86ED193504185EB514846445541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000130000008FB3769805945041EAB60CD64C4455414F79997D08945041C46E75074D445541293102AF089450416B4252A052445541C2515FE90794504156AC38A683445541E17A146E0A9450410AD7A32084445541EC51B8DE1394504185EB51F8854455419A9999F91E9450413D0AD783874455413D0AD7931F94504148E17A3480445541D7A3705D1F94504185EB5118794455410AD7A3F01E945041EC51B8AE73445541A4703DBA1E94504148E17AF46D445541295C8F321E9450416666669667445541E17A143E1D94504185EB51B85D445541EC51B85E1C945041A4703DEA56445541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>370351 - 3095133
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81EC592935041EC51B83EE33F55410AD7A3B093935041A4703D6AE33F5541D7A3708D97935041CDCCCC2CC13F55413D0AD7038F935041713D0A77BF3F5541B81E856B88935041295C8F22BD3F55415C8FC21585935041D7A370ADDA3F554148E17AA48A935041666666A6DF3F5541D7A3707D8C9350413D0AD713E13F55417B14AEE78E93504185EB5188E23F554152B81EC592935041EC51B83EE33F5541
+</a>
+
+<b>
+010600000001000000010300000001000000060000000AD7A3B093935041A4703D6AE33F5541F8884B2697935041BDCA26BFC43F5541ED5D5186979350418A9C5F2BC13F5541C60382EE9293504193FFDD3FC03F55414637CA188F935041418D5F91E23F55410AD7A3B093935041A4703D6AE33F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>370351 - 3445545
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81EC592935041EC51B83EE33F55410AD7A3B093935041A4703D6AE33F5541D7A3708D97935041CDCCCC2CC13F55413D0AD7038F935041713D0A77BF3F5541B81E856B88935041295C8F22BD3F55415C8FC21585935041D7A370ADDA3F554148E17AA48A935041666666A6DF3F5541D7A3707D8C9350413D0AD713E13F55417B14AEE78E93504185EB5188E23F554152B81EC592935041EC51B83EE33F5541
+</a>
+
+<b>
+010600000001000000010300000001000000060000000AD7A3B093935041A4703D6AE33F5541F8884B2697935041BDCA26BFC43F5541ED5D5186979350418A9C5F2BC13F5541C60382EE9293504193FFDD3FC03F55414637CA188F935041418D5F91E23F55410AD7A3B093935041A4703D6AE33F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371340 - 2253555
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000000000A07FD65041D7A3709D0BAA5441A4703D9A8CD65041713D0AF710AA54415C8FC2E58ED650410AD7A39009AA5441295C8F0291D65041D7A3709D00AA54410AD7A3F07CD65041A4703D5AF7A95441C3F528CC58D650417B14AE47DEA95441EC51B86E53D6504185EB51A8E3A95441EC51B8CE4CD65041713D0A47EAA95441C3F5281C5BD65041A4703DBAF5A95441F6285C9F74D650415C8FC2E505AA5441000000A07FD65041D7A3709D0BAA5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000000000404DD65041713D0A1701AA544185EB513859D65041A4703D9A0AAA54413D0AD7636FD650413D0AD7F317AA5441A4703DBA75D6504114AE47D11BAA5441D7A3700D86D65041AE47E1DA24AA5441F6285C9F88D65041E17A14CE1DAA5441A4703D9A8CD65041713D0AF710AA5441000000A07FD65041D7A3709D0BAA5441BBC347B374D65041D5971CF005AA54410766479F6AD6504175AC298FFFA95441CAFB7E7B68D65041B564F933FEA954411296F7045CD65041C576CB4DF6A95441C3F5281C5BD65041A4703DBAF5A95441EC51B8CE4CD65041713D0A47EAA95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371340 - 3519632
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000000000A07FD65041D7A3709D0BAA5441A4703D9A8CD65041713D0AF710AA54415C8FC2E58ED650410AD7A39009AA5441295C8F0291D65041D7A3709D00AA54410AD7A3F07CD65041A4703D5AF7A95441C3F528CC58D650417B14AE47DEA95441EC51B86E53D6504185EB51A8E3A95441EC51B8CE4CD65041713D0A47EAA95441C3F5281C5BD65041A4703DBAF5A95441F6285C9F74D650415C8FC2E505AA5441000000A07FD65041D7A3709D0BAA5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000000000404DD65041713D0A1701AA544185EB513859D65041A4703D9A0AAA54413D0AD7636FD650413D0AD7F317AA5441A4703DBA75D6504114AE47D11BAA5441D7A3700D86D65041AE47E1DA24AA5441F6285C9F88D65041E17A14CE1DAA5441A4703D9A8CD65041713D0AF710AA5441000000A07FD65041D7A3709D0BAA5441BBC347B374D65041D5971CF005AA54410766479F6AD6504175AC298FFFA95441CAFB7E7B68D65041B564F933FEA954411296F7045CD65041C576CB4DF6A95441C3F5281C5BD65041A4703DBAF5A95441EC51B8CE4CD65041713D0A47EAA95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371340 - 44245
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000000000A07FD65041D7A3709D0BAA5441A4703D9A8CD65041713D0AF710AA54415C8FC2E58ED650410AD7A39009AA5441295C8F0291D65041D7A3709D00AA54410AD7A3F07CD65041A4703D5AF7A95441C3F528CC58D650417B14AE47DEA95441EC51B86E53D6504185EB51A8E3A95441EC51B8CE4CD65041713D0A47EAA95441C3F5281C5BD65041A4703DBAF5A95441F6285C9F74D650415C8FC2E505AA5441000000A07FD65041D7A3709D0BAA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000000000A07FD65041D7A3709D0BAA5441BBC347B374D65041D5971CF005AA54410766479F6AD6504175AC298FFFA95441CAFB7E7B68D65041B564F933FEA954411296F7045CD65041C576CB4DF6A95441C3F5281C5BD65041A4703DBAF5A95441000000B05AD6504166666626F6A95441295C8F7268D650418FC2F538FFA95441295C8F6274D650419A99996906AA5441000000A07FD65041D7A3709D0BAA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371340 - 80706
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000000000A07FD65041D7A3709D0BAA5441A4703D9A8CD65041713D0AF710AA54415C8FC2E58ED650410AD7A39009AA5441295C8F0291D65041D7A3709D00AA54410AD7A3F07CD65041A4703D5AF7A95441C3F528CC58D650417B14AE47DEA95441EC51B86E53D6504185EB51A8E3A95441EC51B8CE4CD65041713D0A47EAA95441C3F5281C5BD65041A4703DBAF5A95441F6285C9F74D650415C8FC2E505AA5441000000A07FD65041D7A3709D0BAA5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000000000A07FD65041D7A3709D0BAA5441BBC347B374D65041D5971CF005AA54410766479F6AD6504175AC298FFFA95441CAFB7E7B68D65041B564F933FEA954411296F7045CD65041C576CB4DF6A95441C3F5281C5BD65041A4703DBAF5A95441000000B05AD6504166666626F6A95441295C8F7268D650418FC2F538FFA95441295C8F6274D650419A99996906AA5441000000A07FD65041D7A3709D0BAA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371442 - 386843
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000295C8FD2D4C750419A999919D09E544185EB5108D9C750411F85EB51D69E544133333353D9C750413D0AD7A3D49E54415C8FC215DDC7504185EB51C8D99E5441C3F5281CE1C750417B14AE57DE9E5441EC51B8AEE7C75041000000D0E39E5441AE47E13AEBC75041C3F5281CE69E544114AE47A1F3C75041CDCCCC8CEB9E5441EC51B89E08C85041EC51B83EF39E544114AE47210BC850417B14AE87ED9E544148E17A140AC8504148E17AD4E99E5441C3F5282C0BC8504100000090E49E54411F85EBD103C8504152B81E95E19E54419A9999B902C850411F85EB81DD9E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000008DCFE3B4F3C750411B32FD93EB9E5441512111C802C85041CE85C61AF19E5441B55B6F9108C850414884D939F39E5441EF062A9A07C85041E8A8DBF9EE9E5441BA4AB9E107C85041CE9410C3EA9E544142DA960708C85041120D5A3FE89E5441143FC8B9FEC750416642DD23E79E5441B510ECC9EFC7504102C38BF8E29E544143629208EDC75041A6F0BF22E59E54416A5447D6EBC75041BB92CC80E69E54413C76A334F3C75041E9137146EB9E54418DCFE3B4F3C750411B32FD93EB9E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371457 - 316448
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000007B000000B81E856B29E0504152B81E7564A55441CDCCCCFC29E05041B81E85CB5DA5544185EB51C828E050415C8FC2D558A55441CDCCCC3C25E0504152B81EC54EA554410AD7A33022E05041713D0AE746A5544148E17A141FE05041CDCCCC1C3FA554413D0AD7931AE05041C3F5288C3BA554413333338315E050413333336336A55441333333A313E05041AE47E10A34A55441AE47E16A12E05041E17A145E31A55441E17A140E12E05041EC51B88E2DA55441000000E011E0504152B81EF52AA554413D0AD76311E05041D7A3701D28A55441EC51B8BE0EE05041AE47E18A27A55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004A000000DC68AEA7F8DF5041DB91D7D3B3A5544152B81EC5F9DF504133333343B3A554416EC37FC5FCDF50415F41AE6FB1A55441280C0AC704E05041D921A390ACA55441370A38E908E0504164CDC6CBA9A55441666666460CE05041AE47E18AA7A55441E1E5029E10E05041CD29BDD6A6A554417688C2C513E05041252ED653A6A55441295C8FA213E050410AD7A3F0A1A55441EC51B8DE10E05041D7A3702D99A55441F0E673D910E05041E63ED81196A55441F457A3D010E05041E9FAB8DE90A55441ED48D67312E0504182DE3E0A88A554417E10BCFB1BE050411B990D9A93A55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>371826 - 232923
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000F6285C4F27D65041C3F528BC7EAA5441D7A3707D26D650410AD7A35080AA5441713D0A3728D65041EC51B8CE83AA544152B81E752AD650417B14AE2787AA544152B81EF52AD65041000000C087AA54417B14AEC74DD6504185EB51F876AA5441AE47E11A4BD65041333333F372AA5441CDCCCCFC46D650413D0AD7436FAA54418FC2F5F844D6504185EB51E86BAA54413D0AD7133FD65041C3F528EC76AA5441F6285C4F27D65041C3F528BC7EAA5441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000042D7170345D65041B55034F96BAA54415FE5F5F844D650418C2E52E86BAA54411643203D43D650413266A3256FAA54413D0AD7133FD65041C3F528EC76AA5441F6285C4F27D65041C3F528BC7EAA5441D7A3707D26D650410AD7A35080AA5441D9A1339D27D65041E8CE409782AA544154A40A3728D650414304B7CE83AA54414CFA1E752AD650412F6FAD2787AA544152B81EF52AD65041000000C087AA54414D0F1AC64DD650412F2502F976AA54415472ADC74DD650413F3252F876AA5441784424F64BD65041CB0EB53C74AA5441735DE11A4BD65041EA5333F372AA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>777984 - 5222569
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000020000002900000085EB51D8AA5E51419A9999E9E984544152B81EC5B25E514114AE4761E6845441E17A14EEBE5E5141F6285C7FE1845441C3F528CCCB5E51419A9999B9DB845441A4703DFACD5E514185EB51E8DA845441440E3FDEE75E5141AAD0586FCB8454413063D51BCB5E5141CFA0D25A98845441DCE44966C85E51413DB3D2ED9384544134527CBCC65E514123CA28D190845441702136F7C45E514108E17EB48D8454413E780DC4C25E5141EA19DB92898454410DCFE490C05E5141508B98F5848454413393EEB3BC5E51413DEA85DB7C8454410AD7A300965E5141295C8F028D845441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000580000000FF00C1FE25E51410CEE8CDECE84544166666696EB5E5141B81E857BC98454413D0AD793EE5E514133333383C4845441333333B3F75E51417B14AE37C18454410AD7A350FE5E514114AE47B1BF845441295C8F32FF5E51417B14AE47BF84544148E17AF4FF5E51417B14AEB7BE8454411F85EBA1005F51410AD7A3A0BE8454419A9999190E5F5141D7A370ADB7845441AE47E1BA155F514166666616B3845441EC51B8BE1C5F514100000060AF8454410AD7A3C0215F51415C8FC2A5AC84544185EB51A8235F5141C3F5289CAB845441666666D62A5F5141666666D6A6845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>372269 - 2887542
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000250000005C8FC2556ED650413D0AD7D318AA5441295C8F926BD65041AE47E1AA16AA54411F85EB7161D650413333334311AA5441AE47E10A5CD6504148E17A240EAA54413D0AD7A357D650419A9999190BAA5441EC51B88E53D65041A4703DFA07AA544152B81E654DD65041333333F302AA54419A9999294ED650411F85EB910AAA544148E17AF451D65041E17A142E0DAA544114AE475155D650418FC2F5380FAA54413D0AD7A359D65041D7A370DD11AA5441CDCCCCEC60D65041B81E851B16AA544148E17A5469D65041EC51B8DE1AAA54418FC2F5F86CD650415C8FC2451DAA5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000130000003327FE6669D65041FC5FEC8F22AA54411F85EB1169D650417B14AE6722AA544141DAF6C361D650419C5287641EAA544179C107EB5FD6504184F5BF601DAA5441E17A143E57D65041CDCCCC9C18AA54411F85EB0157D65041D7A370ED18AA5441A4703D6A56D650419A9999B919AA54417B14AE8755D650418FC2F5D81AAA544148E17A445BD650413D0AD7C320AA5441D7A3709D5FD6504152B81E8524AA54415C8FC2F56BD65041666666062BAA5441E17A14EE73D650415C8FC23530AA5441295C8FE279D65041D7A3705D34AA544148E17AE47DD6504114AE47412CAA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>372269 - 3311764
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000250000005C8FC2556ED650413D0AD7D318AA5441295C8F926BD65041AE47E1AA16AA54411F85EB7161D650413333334311AA5441AE47E10A5CD6504148E17A240EAA54413D0AD7A357D650419A9999190BAA5441EC51B88E53D65041A4703DFA07AA544152B81E654DD65041333333F302AA54419A9999294ED650411F85EB910AAA544148E17AF451D65041E17A142E0DAA544114AE475155D650418FC2F5380FAA54413D0AD7A359D65041D7A370DD11AA5441CDCCCCEC60D65041B81E851B16AA544148E17A5469D65041EC51B8DE1AAA54418FC2F5F86CD650415C8FC2451DAA5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000130000003327FE6669D65041FC5FEC8F22AA54411F85EB1169D650417B14AE6722AA544141DAF6C361D650419C5287641EAA544179C107EB5FD6504184F5BF601DAA5441E17A143E57D65041CDCCCC9C18AA54411F85EB0157D65041D7A370ED18AA5441A4703D6A56D650419A9999B919AA54417B14AE8755D650418FC2F5D81AAA544148E17A445BD650413D0AD7C320AA5441D7A3709D5FD6504152B81E8524AA54415C8FC2F56BD65041666666062BAA5441E17A14EE73D650415C8FC23530AA5441295C8FE279D65041D7A3705D34AA544148E17AE47DD6504114AE47412CAA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>417296 - 1382174
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000150000000AD7A3E01330514133333303A91055419A9999D901305141A4703DDAA71055419A9999690030514114AE4701A7105541CDCCCC0CFE2F5141A4703D2AAA105541A4703DCAFD2F514185EB51B8AB105541B81E857BFE2F514185EB51D8AC105541B81E855B03305141713D0AE7AE105541F6285C4F073051419A9999F9B010554114AE47410F30514148E17A24B51055417B14AE8712305141EC51B8CEB6105541666666B61E3051418FC2F5F8B7105541333333232D305141713D0A47BB105541CDCCCC4C293051419A999999B6105541F6285CAF24305141EC51B86EB2105541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000B2B0AEB61B3051417A73F67FAC105541CFC476611930514123E48948AB105541A192FEEF17305141E79014B0AA105541432301ED13305141F7544D08A91055413097973A09305141CC12CA53A8105541EC584E8403305141BC0730EBA71055415B77D1DC01305141DE7372DAA7105541F5A5196C00305141BD48A502A71055412789210BFE2F514113CF3834AA105541E1D0C1D2FD2F51410A0748B0AB105541876F7F77FE2F5141C925C9D1AC105541F082EFF40230514184ED08BAAE105541480CFE5F04305141117F9E6FAF105541D09700F10D30514106701674B4105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>372624 - 392552
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A00000048E17A9476D050411F85EB7149935441CDCCCCAC79D0504152B81EE54F935441295C8FE279D0504148E17A54509354418FC2F55880D050417B14AEA75D9354415C8FC22584D05041D7A3707D65935441713D0AE797D05041C3F5288C6A935441000000A09AD050411F85EB6164935441713D0A679FD05041D7A3708D599354415C8FC2A5A1D0504185EB51785493544148E17A9476D050411F85EB7149935441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000000000A09AD050411F85EB6164935441713D0A679FD05041D7A3708D599354415C8FC2A5A1D0504185EB517854935441A7FD96499ED05041E93C1F9C5393544173D1D6FC94D050410AD01FCD699354410A87B3FD94D05041135158CD69935441B25AEC4695D05041783317E069935441713D0AE797D05041C3F5288C6A935441000000A09AD050411F85EB6164935441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>373242 - 234899
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000004400000085EB511872E45041D7A370ED66A054419A99997974E4504148E17A145FA054418FC2F51875E45041EC51B8BE59A054411F85EB5176E45041000000005AA054410AD7A3307BE45041F6285CCF5BA054419A9999697FE450415C8FC2B55DA05441EC51B8AE83E450415C8FC2D560A054413D0AD7238AE450415C8FC25563A054418FC2F50894E450415C8FC22566A05441295C8F129DE4504185EB516868A05441E17A142EA4E45041000000E06BA054413D0AD7D3A7E45041000000B06EA05441E17A140EABE45041AE47E14A71A054413D0AD703AFE45041AE47E11A74A05441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000630000003D0AD7835AE450415C8FC2B569A05441699D65585DE450414B9770DF63A05441666666665DE45041295C8FC263A054416FB9F2EF5DE45041E5D8B75963A054417F30441761E450419B585DF260A054413D0AD71363E45041EC51B86E5FA054415C8FC29567E45041D7A370CD5EA054419A9999E96BE45041713D0A2760A05441D7A3706D6FE45041F6285C4F63A0544185EB511872E45041D7A370ED66A054411AAAF4B472E45041F24BF8E864A054419A99997974E4504148E17A145FA0544149C5A1D574E450412098BDFF5BA054418FC2F51875E45041EC51B8BE59A05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>373295 - 190308
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000D00000052B81EF5B4CB5041333333F3E99E5441333333B3A1CB5041D7A370BDF09E5441EC51B8FEA9CB50411F85EB61FB9E5441D7A3707DD0CB5041295C8FE2FA9E5441F6285C8FEACB50413D0AD703F99E54410AD7A3C0E8CB504114AE4751F69E54417B14AED7E2CB5041E17A147EED9E544166666686E2CB50419A9999A9EC9E5441D7A370EDDFCB5041000000E0E59E544133333333DDCB50419A999919E69E5441CDCCCCCCCECB50417B14AEE7E79E5441AE47E13AC1CB5041AE47E13AE69E544152B81EF5B4CB5041333333F3E99E5441
+</a>
+
+<b>
+0106000000010000000103000000010000001600000023CCAE80BACB50414B22E844E89E54410A46D854BACB50415EDE3152E89E54413162FC27B2CB5041F05E03FBEA9E5441846869B6A1CB5041DF888FC1F09E5441650B782BA5CB5041E4331731F59E5441D62EC19BA9CB50414D7EF2E2FA9E5441239A88CDD9CB50419B8F8C37FA9E544117A1B3A6DACB504168BBF827FA9E54417BFA23EADACB50416D5C2223FA9E5441073716DADBCB50417B42EC11FA9E5441C781F8E0E7CB5041712005C4F89E54418FDF7A67E5CB5041CF81083BF59E54416A97FE83E1CB504159EA0D93EF9E5441144AB681DDCB50412B7A1438E69E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>373520 - 3147768
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000110000000AD7A38027D150418FC2F598EF8F544185EB51582CD1504114AE4711D88F54413D0AD78337D15041D7A370CDA48F54417B14AED741D15041295C8F12748F544152B81E254AD1504114AE4731458F5441B81E857B4FD150419A9999A9268F54413333333353D1504114AE47F10E8F5441295C8FA250D1504100000020148F54413D0AD7834DD15041E17A144E268F54419A99993948D15041C3F528EC448F5441C3F528BC3FD15041AE47E16A738F5441713D0A6735D15041E17A144EA48F5441666666562AD150413D0AD7A3D78F54417B14AEA725D15041D7A3704DEF8F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D00000007B21D6A50D150412696B569158F54411EC3DE164ED15041E4F5FB47188F54415C8FC2B54BD150413D0AD713268F54418FC2F56846D1504185EB5178448F5441666666D63DD1504133333313738F5441713D0A9733D15041E17A141EA48F54410AD7A31028D150411F85EB11D78F544148E17AB423D15041A4703D0AEF8F54419A9999291DD150415C8FC2850B905441B81E850B1FD1504114AE47110C90544153E3AA9825D150412E36C58EEF8F5441316E096B27D1504139C88E64E68F5441ED9431FD28D150418A614D74DE8F5441C79209DA2AD150418C1C7EB2D58F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>373520 - 400731
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000110000000AD7A38027D150418FC2F598EF8F544185EB51582CD1504114AE4711D88F54413D0AD78337D15041D7A370CDA48F54417B14AED741D15041295C8F12748F544152B81E254AD1504114AE4731458F5441B81E857B4FD150419A9999A9268F54413333333353D1504114AE47F10E8F5441295C8FA250D1504100000020148F54413D0AD7834DD15041E17A144E268F54419A99993948D15041C3F528EC448F5441C3F528BC3FD15041AE47E16A738F5441713D0A6735D15041E17A144EA48F5441666666562AD150413D0AD7A3D78F54417B14AEA725D15041D7A3704DEF8F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D00000007B21D6A50D150412696B569158F54411EC3DE164ED15041E4F5FB47188F54415C8FC2B54BD150413D0AD713268F54418FC2F56846D1504185EB5178448F5441666666D63DD1504133333313738F5441713D0A9733D15041E17A141EA48F54410AD7A31028D150411F85EB11D78F544148E17AB423D15041A4703D0AEF8F54413656152C20D1504180347E6BFE8F544136E0A10922D15041EC9407D0FE8F544153E3AA9825D150412E36C58EEF8F5441316E096B27D1504139C88E64E68F5441ED9431FD28D150418A614D74DE8F5441C79209DA2AD150418C1C7EB2D58F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893650 - 3079127
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000024000000C3F5284CC96B504114AE47F1951955417B14AE57CA6B504152B81EE59519554100000050CC6B50415C8FC2C59519554114AE4711CF6B50416666669695195541333333B3D46B5041713D0A379519554166666676D76B504185EB5108951955417B14AEA7DB6B504152B81EC594195541713D0A87DE6B5041A4703D3A941955411F85EBE1E06B504185EB51C893195541A4703D3AE36B5041713D0A579319554185EB5158E76B50410AD7A3909219554114AE47C1E76B5041CDCCCC7C921955410AD7A350EE6B5041EC51B84E91195541AE47E15AEE6B5041333333638C195541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000001972B001C96B5041DC2F22E486195541572F2A04C96B5041AEB0896987195541123C5608C96B50410CB45D4A88195541C3F5284CC96B504114AE47F1951955417B14AE57CA6B504152B81EE59519554100000050CC6B50415C8FC2C59519554152B81E45CC6B5041AE47E1BA92195541F6285CFFCB6B504185EB518886195541C3F528DCCA6B50419A9999A97C19554114AE47C1CA6B50419A9999197B1955410AD7A3C0C76B5041C3F5281C7B19554148E17A04C86B5041333333837D19554198D814C7C86B50411E916CAA8419554114AE4701C96B5041E17A14CE86195541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893650 - 3393140
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000024000000C3F5284CC96B504114AE47F1951955417B14AE57CA6B504152B81EE59519554100000050CC6B50415C8FC2C59519554114AE4711CF6B50416666669695195541333333B3D46B5041713D0A379519554166666676D76B504185EB5108951955417B14AEA7DB6B504152B81EC594195541713D0A87DE6B5041A4703D3A941955411F85EBE1E06B504185EB51C893195541A4703D3AE36B5041713D0A579319554185EB5158E76B50410AD7A3909219554114AE47C1E76B5041CDCCCC7C921955410AD7A350EE6B5041EC51B84E91195541AE47E15AEE6B5041333333638C195541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000001972B001C96B5041DC2F22E486195541572F2A04C96B5041AEB0896987195541123C5608C96B50410CB45D4A88195541C3F5284CC96B504114AE47F1951955417B14AE57CA6B504152B81EE59519554100000050CC6B50415C8FC2C59519554152B81E45CC6B5041AE47E1BA92195541F6285CFFCB6B504185EB518886195541C3F528DCCA6B50419A9999A97C19554114AE47C1CA6B50419A9999197B1955410AD7A3C0C76B5041C3F5281C7B19554148E17A04C86B5041333333837D19554198D814C7C86B50411E916CAA8419554114AE4701C96B5041E17A14CE86195541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>374782 - 24824
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001C00000014AE47E10EC75041B81E850B604A5441713D0AE70FC750418FC2F5E8604A544152B81E4510C75041295C8F12624A54415C8FC25511C750419A999969624A5441B81E850B12C7504100000010634A5441AE47E16A12C75041EC51B8CE634A5441F6285CBF12C750411F85EBA1644A5441EC51B81E13C75041B81E850B654A5441295C8FD213C750415C8FC255654A5441000000F014C750410AD7A320654A5441D7A370ED15C75041713D0AB7644A54410AD7A3E016C75041CDCCCC6C644A54418FC2F58817C75041E17A142E644A54411F85EB2117C750417B14AEB7564A5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000070000006E76AC08C7C6504101C03FFA744A54416F00000FC7C65041C3585401754A5441B889DC45C8C65041C75592FA744A54410F4830B1C7C65041B725533B694A5441CBBB9173C6C65041B3281542694A5441B8EB4973C6C650415B01B042694A54416E76AC08C7C6504101C03FFA744A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>374782 - 70211
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001C00000014AE47E10EC75041B81E850B604A5441713D0AE70FC750418FC2F5E8604A544152B81E4510C75041295C8F12624A54415C8FC25511C750419A999969624A5441B81E850B12C7504100000010634A5441AE47E16A12C75041EC51B8CE634A5441F6285CBF12C750411F85EBA1644A5441EC51B81E13C75041B81E850B654A5441295C8FD213C750415C8FC255654A5441000000F014C750410AD7A320654A5441D7A370ED15C75041713D0AB7644A54410AD7A3E016C75041CDCCCC6C644A54418FC2F58817C75041E17A142E644A54411F85EB2117C750417B14AEB7564A5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000070000006E76AC08C7C6504101C03FFA744A54416F00000FC7C65041C3585401754A5441B889DC45C8C65041C75592FA744A54410F4830B1C7C65041B725533B694A5441CBBB9173C6C65041B3281542694A5441B8EB4973C6C650415B01B042694A54416E76AC08C7C6504101C03FFA744A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>417628 - 1380825
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000D7A3705D9845514185EB5188E90B5541713D0AF79845514100000080F60B554185EB5108994551417B14AE57FC0B55418FC2F5889945514133333363FF0B5541000000009A455141666666D6010C55419A9999799B4551419A999979060C55415C8FC2359C455141CDCCCC2C080C554148E17A84A0455141C3F528BC0F0C55415C8FC2C5AD455141A4703D9A0D0C5541A4703D1AA345514114AE4761F40B55415C8FC225A745514148E17A64F30B5541C3F5282CA1455141A4703DDAE10B55417B14AEE79F455141C3F528DCE00B55410000002098455141E17A149EE20B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001100000074B39DB0AB455141B1E2F4AD080C5541A4703D1AA345514114AE4761F40B55415C8FC225A745514148E17A64F30B5541C3F5282CA1455141A4703DDAE10B55417B14AEE79F455141C3F528DCE00B55410000002098455141E17A149EE20B55413D0AD783974551417B14AEC7E20B5541D7A3705D9845514185EB5188E90B5541713D0AF79845514100000080F60B554185EB5108994551417B14AE57FC0B55418FC2F5889945514133333363FF0B5541000000009A455141666666D6010C55419A9999799B4551419A999979060C55415C8FC2359C455141CDCCCC2C080C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>417628 - 3621310
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000010000000D7A3705D9845514185EB5188E90B5541713D0AF79845514100000080F60B554185EB5108994551417B14AE57FC0B55418FC2F5889945514133333363FF0B5541000000009A455141666666D6010C55419A9999799B4551419A999979060C55415C8FC2359C455141CDCCCC2C080C554148E17A84A0455141C3F528BC0F0C55415C8FC2C5AD455141A4703D9A0D0C5541A4703D1AA345514114AE4761F40B55415C8FC225A745514148E17A64F30B5541C3F5282CA1455141A4703DDAE10B55417B14AEE79F455141C3F528DCE00B55410000002098455141E17A149EE20B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001100000074B39DB0AB455141B1E2F4AD080C5541A4703D1AA345514114AE4761F40B55415C8FC225A745514148E17A64F30B5541C3F5282CA1455141A4703DDAE10B55417B14AEE79F455141C3F528DCE00B55410000002098455141E17A149EE20B55413D0AD783974551417B14AEC7E20B5541D7A3705D9845514185EB5188E90B5541713D0AF79845514100000080F60B554185EB5108994551417B14AE57FC0B55418FC2F5889945514133333363FF0B5541000000009A455141666666D6010C55419A9999799B4551419A999979060C55415C8FC2359C455141CDCCCC2C080C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>380289 - 215129
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001C0000001F85EBF11E465141C3F5287CE4095541A4703D0A28465141EC51B81EE9095541C3F5285C284651418FC2F528E8095541295C8FE2294651418FC2F5A8E90955415C8FC2F52B465141D7A370CDE8095541D7A370BD2D4651410AD7A350E80955418FC2F50830465141A4703DFAE709554148E17A24324651417B14AED7E70955417B14AEA73B4651418FC2F578E8095541713D0A973E465141EC51B8BEE00955410AD7A38039465141B81E852BE0095541713D0AF7354651411F85EBB1DF09554100000070354651411F85EB71DB095541666666163C4651415C8FC245D1095541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003F000000BB0FA8BF3A4651419D7DDC8DBC0955413B118EA8394651410217DA9ABC095541D7A3709D37465141333333B3BC095541713D0AD7354651411F85EBD1C3095541B81E853B33465141295C8FA2CB0955415C8FC29530465141CDCCCC9CD609554185EB51C82F4651411F85EB71D60955411B2D964D2E465141182CB875D6095541D9D00D852D46514120104307D7095541A547F4C82B4651419DC89708D80955412939FBAE2A465141F3BEF483D8095541A083C2A0284651417D0540D6D8095541F6285CBF2746514114AE4711DA09554133333323274651415C8FC2E5DA095541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>424153 - 4301646
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000050000007B14AE2764C05041333333A3FC365541A4703D9A36C050410AD7A3D0F4365541EC51B88E36C05041C3F5281CF636554152B81ED563C0504100000010FE3655417B14AE2764C05041333333A3FC365541
+</a>
+
+<b>
+0106000000010000000103000000010000000800000093BEA1D65DC050418B0E7802FD36554152B81ED563C0504100000010FE3655417B14AE2764C05041333333A3FC365541A4703D9A36C050410AD7A3D0F4365541C3F5289C36C05041EC51B86EF5365541F6285C5F49C05041713D0AB7F8365541713D0A4754C050410AD7A3E0FA36554193BEA1D65DC050418B0E7802FD365541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>380669 - 215121
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002000000085EB5148CA4B51418FC2F528CB0B5541EC51B8EECE4B514114AE4721CC0B5541E17A14EED64B5141C3F5283CB20B5541D7A370DDD74B51418FC2F538AF0B55410AD7A3E0D84B5141666666F6AB0B5541EC51B85ED94B5141AE47E1AAAA0B55411F85EB51DB4B51415C8FC285A50B5541295C8F82DB4B514152B81E05A50B5541A4703DAADC4B5141B81E85EB9C0B5541F6285C1FDC4B5141713D0A67970B554185EB51B8DC4B5141CDCCCC0C920B55415C8FC2A5DB4B51411F85EB51900B5541295C8F22DA4B51418FC2F5488F0B554100000020D54B5141A4703D5A8E0B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000F94A62EEB44B514102704DC2BA0B5541666666D6B34B514185EB5178C60B5541750209EBBC4B51416F0E1F5EC80B5541A07EC450C04B51410ACFD30CC90B554135EBBC7AC14B514185C16628C60B5541656ADCECC34B514169446773BD0B5541E069947DC54B5141D7456D25B90B55419FD17FE2C64B51415D378E99B50B55410869BF08C84B514146C80ECFB10B5541BDE826EAC84B51411FC9E343AF0B5541342AD53AC94B5141B5A09E9CAC0B554156914616BC4B514174EF7F0FAA0B55414515272DB94B5141B08EF384A90B5541B399A4A1B64B5141DF3CCF0BA90B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>186114 - 4489536
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C000000B81E85FB3FDD50411F85EB01BD905441E17A146E41DD5041D7A370EDB19054415C8FC2A543DD5041CDCCCC1CA19054413333338315DD504152B81EA5AA905441CDCCCC4C15DD5041EC51B8FEAD9054413333338312DD504100000060BE90544148E17A7411DD5041D7A3705DC6905441C3F5284C11DD504100000090C7905441EC51B86E10DD504148E17A04D090544185EB51F810DD50418FC2F5E8CF9054418FC2F5B83EDD504185EB51A8C6905441B81E85FB3FDD50411F85EB01BD905441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000ED0A181812DD504168F73E89C1905441556EEC9811DD504101B3164AC590544148E17A7411DD5041D7A3705DC6905441C3F5284C11DD504100000090C7905441EC51B86E10DD504148E17A04D090544185EB51F810DD50418FC2F5E8CF9054418FC2F5B83EDD504185EB51A8C6905441B81E85FB3FDD50411F85EB01BD905441524EC11240DD50416DAC1050BC905441B1706B9D40DD5041FE79A52AB8905441ED0A181812DD504168F73E89C1905441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>394356 - 3186204
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000020000008400000052B81EB50C9C50417B14AE67AA1354410AD7A3C0119C5041A4703D7AAC135441666666F6159C5041AE47E17AAD135441D7A370BD1A9C50417B14AE57AC1354410AD7A3D01E9C504114AE4701AA1354418FC2F538269C5041D7A370FDA5135441666666462B9C50418FC2F5D8A0135441000000F0289C50410AD7A3209F135441D7A370FD059C50413D0AD7238513544148E17AA4049C5041D7A3703D84135441EC51B8FE009C5041B81E85BB7E135441E17A141EF69B50418FC2F5C8751354413D0AD713F69B504152B81E9574135441F6285C4FF69B5041713D0A1773135441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000C3F528CCEC9B50413D0AD743CC135441699AA8E6EC9B504112122B51CA13544172EC9AE6EC9B50418B2DA021CA135441EABD73F9EC9B5041AA407FEFC8135441BF422E32ED9B504107D0DF17C513544115F15584ED9B504155168426C31354418A5264D2ED9B50419C7BCB35C1135441D7A3709DF19B50410AD7A3E0BB13544158D89D0AEF9B5041FAC7929EB7135441FFB6DE7EEA9B5041C398C1A6B513544167EE324DE79B50414CCBEB44B51354414B1F92ECE49B5041647496BCB41354411C4CFCBBE29B50411AB67F44B3135441597E3912E19B504141ABD936B2135441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>394356 - 3591106
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000020000008400000052B81EB50C9C50417B14AE67AA1354410AD7A3C0119C5041A4703D7AAC135441666666F6159C5041AE47E17AAD135441D7A370BD1A9C50417B14AE57AC1354410AD7A3D01E9C504114AE4701AA1354418FC2F538269C5041D7A370FDA5135441666666462B9C50418FC2F5D8A0135441000000F0289C50410AD7A3209F135441D7A370FD059C50413D0AD7238513544148E17AA4049C5041D7A3703D84135441EC51B8FE009C5041B81E85BB7E135441E17A141EF69B50418FC2F5C8751354413D0AD713F69B504152B81E9574135441F6285C4FF69B5041713D0A1773135441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000C3F528CCEC9B50413D0AD743CC135441699AA8E6EC9B504112122B51CA13544172EC9AE6EC9B50418B2DA021CA135441EABD73F9EC9B5041AA407FEFC8135441BF422E32ED9B504107D0DF17C513544115F15584ED9B504155168426C31354418A5264D2ED9B50419C7BCB35C1135441D7A3709DF19B50410AD7A3E0BB13544158D89D0AEF9B5041FAC7929EB7135441FFB6DE7EEA9B5041C398C1A6B513544167EE324DE79B50414CCBEB44B51354414B1F92ECE49B5041647496BCB41354411C4CFCBBE29B50411AB67F44B3135441597E3912E19B504141ABD936B2135441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>381490 - 3178374
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000B81E852BFCF650415C8FC2D55E765441C3F5285CF7F650410AD7A3F0477654415C8FC2D5F1F65041000000D0497654418FC2F5E8DBF65041295C8FA253765441A4703DBAE5F650419A99992985765441A4703D7A02F750418FC2F5D880765441C3F5282C03F75041E17A14BE807654416666661600F750419A99999972765441B81E852BFCF650415C8FC2D55E765441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000CF83CA50F6F65041378CCC014A7654416C01ECCEF6F65041E34901074B7654417B7BDD08F7F65041AA22007F4B7654417227AD64F7F6504117CD8D634C765441933B018BF7F65041073744B84C765441BB6F0DC1F7F65041507583494D7654412BE1143EF8F65041B5929F804E765441852A0D9AF8F6504166D517AB4F76544109429C91F9F650418D5D898152765441C5F4B195F9F65041F3648E8752765441C3F5285CF7F650410AD7A3F04776544122A17992F5F6504161C5E6884876544101B1B493F5F6504182B6568B487654412D6AC0A4F5F650412FC98F8548765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>381490 - 3575359
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000009000000B81E852BFCF650415C8FC2D55E765441C3F5285CF7F650410AD7A3F0477654415C8FC2D5F1F65041000000D0497654418FC2F5E8DBF65041295C8FA253765441A4703DBAE5F650419A99992985765441A4703D7A02F750418FC2F5D880765441C3F5282C03F75041E17A14BE807654416666661600F750419A99999972765441B81E852BFCF650415C8FC2D55E765441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000CF83CA50F6F65041378CCC014A7654416C01ECCEF6F65041E34901074B7654417B7BDD08F7F65041AA22007F4B7654417227AD64F7F6504117CD8D634C765441933B018BF7F65041073744B84C765441BB6F0DC1F7F65041507583494D7654412BE1143EF8F65041B5929F804E765441852A0D9AF8F6504166D517AB4F76544109429C91F9F650418D5D898152765441C5F4B195F9F65041F3648E8752765441C3F5285CF7F650410AD7A3F04776544122A17992F5F6504161C5E6884876544101B1B493F5F6504182B6568B487654412D6AC0A4F5F650412FC98F8548765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>382954 - 3159147
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000295C8FE27EBF504114AE475129F9544148E17AF493BF504152B81E1533F95441A4703D0A9FBF50413333332336F954417B14AE079FBF5041666666E630F95441B81E856B90BF5041295C8F3228F9544152B81E5584BF504148E17AF420F95441295C8FE27EBF504114AE475129F95441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000D2E4E15582BF5041550AA9EA2AF95441295C8FE27EBF504114AE475129F954412D3D6BAD7CBF50418852A69E2CF95441A24507E47CBF5041E98AB60A2EF954419438FD7989BF50412DDD179336F9544148E17AF491BF5041C3F5284C3CF95441FF7107D797BF50410FD82CE73CF9544184B523909DBF50411FFD46033DF954411668469E9EBF5041684591D63BF954411806C7089FBF50416333F83636F954416B3EEAFB9BBF504160D3974B35F95441F5D6DAED93BF50410D53231733F95441E5DEF9AB8DBF50414CE2023F30F954416E1AAFD987BF50419E8FF7782DF95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>382954 - 3567028
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000295C8FE27EBF504114AE475129F9544148E17AF493BF504152B81E1533F95441A4703D0A9FBF50413333332336F954417B14AE079FBF5041666666E630F95441B81E856B90BF5041295C8F3228F9544152B81E5584BF504148E17AF420F95441295C8FE27EBF504114AE475129F95441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000D2E4E15582BF5041550AA9EA2AF95441295C8FE27EBF504114AE475129F954412D3D6BAD7CBF50418852A69E2CF95441A24507E47CBF5041E98AB60A2EF954419438FD7989BF50412DDD179336F9544148E17AF491BF5041C3F5284C3CF95441FF7107D797BF50410FD82CE73CF9544184B523909DBF50411FFD46033DF954411668469E9EBF5041684591D63BF954411806C7089FBF50416333F83636F954416B3EEAFB9BBF504160D3974B35F95441F5D6DAED93BF50410D53231733F95441E5DEF9AB8DBF50414CE2023F30F954416E1AAFD987BF50419E8FF7782DF95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>382958 - 3027631
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E000000F6285CCF0EBE504185EB51C8920D5541333333C30BBE50411F85EB819C0D55413D0AD75310BE5041B81E857B970D55411F85EBD11BBE50413D0AD783960D5541B81E853B3DBE50411F85EB21A00D5541713D0AE755BE504133333353AC0D5541000000605FBE50411F85EB01B10D5541295C8F3267BE5041EC51B8CEA70D55418FC2F5F86BBE50419A999929A20D5541713D0A2757BE50419A999999940D55416666664644BE5041D7A3704D880D5541E17A143E2EBE5041333333F3810D554152B81E3516BE504148E17A047B0D5541F6285CCF0EBE504185EB51C8920D5541
+</a>
+
+<b>
+010600000001000000010300000001000000100000004D843CB612BE5041209C5B3F860D5541B85F8BF211BE5041754708B4880D5541A5202DF633BE504187C5CF35930D554143EB433D47BE504108A5151E9A0D55415410EF4A45BE50415791EB519D0D5541862064E610BE5041557D7E118C0D5541F6285CCF0EBE504185EB51C8920D5541333333C30BBE50411F85EB819C0D55413D0AD75310BE5041B81E857B970D55411F85EBD11BBE50413D0AD783960D5541B81E853B3DBE50411F85EB21A00D5541713D0AE755BE504133333353AC0D5541000000605FBE50411F85EB01B10D5541295C8F3267BE5041EC51B8CEA70D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>382958 - 3270269
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E000000F6285CCF0EBE504185EB51C8920D5541333333C30BBE50411F85EB819C0D55413D0AD75310BE5041B81E857B970D55411F85EBD11BBE50413D0AD783960D5541B81E853B3DBE50411F85EB21A00D5541713D0AE755BE504133333353AC0D5541000000605FBE50411F85EB01B10D5541295C8F3267BE5041EC51B8CEA70D55418FC2F5F86BBE50419A999929A20D5541713D0A2757BE50419A999999940D55416666664644BE5041D7A3704D880D5541E17A143E2EBE5041333333F3810D554152B81E3516BE504148E17A047B0D5541F6285CCF0EBE504185EB51C8920D5541
+</a>
+
+<b>
+010600000001000000010300000001000000100000004D843CB612BE5041209C5B3F860D5541B85F8BF211BE5041754708B4880D5541A5202DF633BE504187C5CF35930D554143EB433D47BE504108A5151E9A0D55415410EF4A45BE50415791EB519D0D5541862064E610BE5041557D7E118C0D5541F6285CCF0EBE504185EB51C8920D5541333333C30BBE50411F85EB819C0D55413D0AD75310BE5041B81E857B970D55411F85EBD11BBE50413D0AD783960D5541B81E853B3DBE50411F85EB21A00D5541713D0AE755BE504133333353AC0D5541000000605FBE50411F85EB01B10D5541295C8F3267BE5041EC51B8CEA70D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>383010 - 182094
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000002F000000295C8F2271A950419A9999399DFD544185EB51F875A95041A4703D1A97FD5441EC51B84E7CA950411F85EB0192FD5441333333C37CA95041EC51B87E92FD54417B14AE2782A950413333334398FD5441AE47E17A88A9504185EB51C89EFD54419A99990989A95041F6285CFF9CFD5441713D0A5790A95041713D0A9797FD544148E17A4497A950418FC2F56892FD5441CDCCCC0C9AA9504114AE475191FD544148E17A8498A95041A4703DDA90FD5441F6285C0F94A95041A4703DBA8AFD544148E17A948CA950413333337380FD54410AD7A3E08AA95041E17A149E7FFD5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002900000094C450F875A95041415F3E1A97FD5441851636FE75A95041CDF4801597FD5441339B64277CA95041712CDCD791FD54415C8FC2B578A950418FC2F5288EFD54413333330377A9504185EB51288EFD5441E17A145E72A95041E17A141E93FD5441F6285C2F6BA950417B14AE379BFD5441B81E854B67A9504185EB51C8A5FD5441A4703D2A66A9504185EB5148A9FD5441F6285CDF64A950419A999909ACFD5441F6285C2F62A950410AD7A3B0B4FD5441D48E5F9561A9504163D158BBB7FD54414D929B1262A950419D2BD2D8B7FD54416549B20562A95041B22801B1B9FD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>383010 - 356418
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000002F000000295C8F2271A950419A9999399DFD544185EB51F875A95041A4703D1A97FD5441EC51B84E7CA950411F85EB0192FD5441333333C37CA95041EC51B87E92FD54417B14AE2782A950413333334398FD5441AE47E17A88A9504185EB51C89EFD54419A99990989A95041F6285CFF9CFD5441713D0A5790A95041713D0A9797FD544148E17A4497A950418FC2F56892FD5441CDCCCC0C9AA9504114AE475191FD544148E17A8498A95041A4703DDA90FD5441F6285C0F94A95041A4703DBA8AFD544148E17A948CA950413333337380FD54410AD7A3E08AA95041E17A149E7FFD5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002900000094C450F875A95041415F3E1A97FD5441851636FE75A95041CDF4801597FD5441339B64277CA95041712CDCD791FD54415C8FC2B578A950418FC2F5288EFD54413333330377A9504185EB51288EFD5441E17A145E72A95041E17A141E93FD5441F6285C2F6BA950417B14AE379BFD5441B81E854B67A9504185EB51C8A5FD5441A4703D2A66A9504185EB5148A9FD5441F6285CDF64A950419A999909ACFD5441F6285C2F62A950410AD7A3B0B4FD5441D48E5F9561A9504163D158BBB7FD54414D929B1262A950419D2BD2D8B7FD54416549B20562A95041B22801B1B9FD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>383095 - 182096
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F5289C41A95041CDCCCC7C46FE5441666666863BA95041D7A3700D44FE54411F85EBB13CA95041333333C34EFE54418FC2F5083DA9504152B81EB55DFE54417B14AE273EA950410AD7A36064FE54419A99994944A9504185EB51F86BFE5441AE47E16A4CA950410AD7A33078FE5441F6285C3F4EA95041713D0A7778FE5441333333D350A95041F6285CAF75FE5441C3F5287C50A9504152B81EB573FE544114AE47214FA950411F85EBD170FE544114AE47014BA95041AE47E15A6CFE544148E17A5448A950410AD7A3506AFE5441AE47E12A45A95041B81E853B60FE5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000AE47E12A45A95041B81E853B60FE54414166865B44A95041CF87C2255DFE5441C30AD8C340A950414A1E340356FE5441EC5FE11A40A95041695AFFDF4EFE5441CCADD61341A95041063EAF4746FE5441EFA9D7F840A95041ED35723B46FE54414976D7F33CA9504130C9F56844FE5441D19F0BA73DA95041BFEDCDDC4EFE5441D19F0BA73DA95041CFCCE16A5AFE5441BBB4842B3EA950419AA58F1262FE54412969323345A950415B6F46216BFE5441EA03AE074DA95041EB7A799478FE54418DC65B3F4EA95041BC460A7778FE5441242B33D350A950411AFA5BAF75FE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>383095 - 375784
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000012000000C3F5289C41A95041CDCCCC7C46FE5441666666863BA95041D7A3700D44FE54411F85EBB13CA95041333333C34EFE54418FC2F5083DA9504152B81EB55DFE54417B14AE273EA950410AD7A36064FE54419A99994944A9504185EB51F86BFE5441AE47E16A4CA950410AD7A33078FE5441F6285C3F4EA95041713D0A7778FE5441333333D350A95041F6285CAF75FE5441C3F5287C50A9504152B81EB573FE544114AE47214FA950411F85EBD170FE544114AE47014BA95041AE47E15A6CFE544148E17A5448A950410AD7A3506AFE5441AE47E12A45A95041B81E853B60FE5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000AE47E12A45A95041B81E853B60FE54414166865B44A95041CF87C2255DFE5441C30AD8C340A950414A1E340356FE5441EC5FE11A40A95041695AFFDF4EFE5441CCADD61341A95041063EAF4746FE5441EFA9D7F840A95041ED35723B46FE54414976D7F33CA9504130C9F56844FE5441D19F0BA73DA95041BFEDCDDC4EFE5441D19F0BA73DA95041CFCCE16A5AFE5441BBB4842B3EA950419AA58F1262FE54412969323345A950415B6F46216BFE5441EA03AE074DA95041EB7A799478FE54418DC65B3F4EA95041BC460A7778FE5441242B33D350A950411AFA5BAF75FE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>383362 - 32482
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000270000005C8FC2B509B7504148E17A54FF1155417B14AE4709B7504185EB5188FF115541A4703DAA08B750419A999979FF115541EC51B8BE07B7504185EB5168FF115541D7A370DD06B75041E17A145EFF1155417B14AEE705B750410AD7A370FF1155419A99991905B750411F85EBA1FF115541C3F528DC04B75041333333B3FF1155418FC2F55804B750413D0AD7C3FF115541713D0A0702B75041EC51B82E001255411F85EBC101B75041713D0A57001255418FC2F54801B7504152B81E75001255410000009000B75041295C8F72001255411F85EB0100B75041CDCCCC2C00125541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D00000083F400D010B75041DD649F4DFC115541B4C0BB3D10B75041F0C8866DFD115541CDCCCC3C10B7504114AE4771FD1155417D1E0E3B10B750415051CC72FD115541B81E85CB0FB750413D0AD7D3FD1155413AEB8FBD0FB75041748277D7FD11554180D7DF910FB75041BD9BD1E2FD115541666666860EB7504185EB5128FE115541E508CA810EB7504102104D28FE115541BB1650D309B750415652D04AFF115541D2F13F7F09B75041C087266EFF1155417B14AE4709B7504185EB5188FF115541A4703DAA08B750419A999979FF115541EC51B8BE07B7504185EB5168FF115541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>383362 - 71405
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000270000005C8FC2B509B7504148E17A54FF1155417B14AE4709B7504185EB5188FF115541A4703DAA08B750419A999979FF115541EC51B8BE07B7504185EB5168FF115541D7A370DD06B75041E17A145EFF1155417B14AEE705B750410AD7A370FF1155419A99991905B750411F85EBA1FF115541C3F528DC04B75041333333B3FF1155418FC2F55804B750413D0AD7C3FF115541713D0A0702B75041EC51B82E001255411F85EBC101B75041713D0A57001255418FC2F54801B7504152B81E75001255410000009000B75041295C8F72001255411F85EB0100B75041CDCCCC2C00125541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D00000083F400D010B75041DD649F4DFC115541B4C0BB3D10B75041F0C8866DFD115541CDCCCC3C10B7504114AE4771FD1155417D1E0E3B10B750415051CC72FD115541B81E85CB0FB750413D0AD7D3FD1155413AEB8FBD0FB75041748277D7FD11554180D7DF910FB75041BD9BD1E2FD115541666666860EB7504185EB5128FE115541E508CA810EB7504102104D28FE115541BB1650D309B750415652D04AFF115541D2F13F7F09B75041C087266EFF1155417B14AE4709B7504185EB5188FF115541A4703DAA08B750419A999979FF115541EC51B8BE07B7504185EB5168FF115541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>384255 - 2925933
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001400000000000010A0A35041713D0AF756FD54418FC2F5C8ABA35041EC51B8DE56FD544114AE47C1AFA35041713D0AD756FD5441AE47E14ABAA35041D7A3708D5DFD544114AE4701C0A350418FC2F5B857FD54418FC2F5C8D5A3504148E17A6441FD544114AE47C1D5A35041713D0AF73FFD544148E17AE4C3A35041A4703D5A2EFD544185EB5188C1A3504185EB51782DFD5441CDCCCC2CB1A35041B81E855B31FD54418FC2F54898A350416666664637FD54411F85EBC18AA35041AE47E14A35FD5441AE47E10A87A350411F85EB3133FD544185EB51A885A3504185EB517837FD5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000003A14B58086A3504156896C1A4EFD54412F700AE195A35041FC8E22EC36FD54410A44265095A350416DE9DFD636FD54419A061C9994A35041BFA1FEBB36FD544135F26D3194A35041CB78A2AC36FD5441123263B68EA350410CAE42DF35FD54411F85EBC18AA35041AE47E14A35FD5441AE47E10A87A350411F85EB3133FD544185EB51A885A3504185EB517837FD54410AD7A3A084A35041C3F528CC3EFD54413333337384A35041713D0AC745FD54418FC2F5E884A3504148E17AC44BFD5441EC51B89E86A350417B14AE1752FD5441666666A68AA35041D7A3703D5CFD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>384255 - 3725721
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001400000000000010A0A35041713D0AF756FD54418FC2F5C8ABA35041EC51B8DE56FD544114AE47C1AFA35041713D0AD756FD5441AE47E14ABAA35041D7A3708D5DFD544114AE4701C0A350418FC2F5B857FD54418FC2F5C8D5A3504148E17A6441FD544114AE47C1D5A35041713D0AF73FFD544148E17AE4C3A35041A4703D5A2EFD544185EB5188C1A3504185EB51782DFD5441CDCCCC2CB1A35041B81E855B31FD54418FC2F54898A350416666664637FD54411F85EBC18AA35041AE47E14A35FD5441AE47E10A87A350411F85EB3133FD544185EB51A885A3504185EB517837FD5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000003A14B58086A3504156896C1A4EFD54412F700AE195A35041FC8E22EC36FD54410A44265095A350416DE9DFD636FD54419A061C9994A35041BFA1FEBB36FD544135F26D3194A35041CB78A2AC36FD5441123263B68EA350410CAE42DF35FD54411F85EBC18AA35041AE47E14A35FD5441AE47E10A87A350411F85EB3133FD544185EB51A885A3504185EB517837FD54410AD7A3A084A35041C3F528CC3EFD54413333337384A35041713D0AC745FD54418FC2F5E884A3504148E17AC44BFD5441EC51B89E86A350417B14AE1752FD5441666666A68AA35041D7A3703D5CFD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>387015 - 1720912
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E0000009A9999D92EB45041B81E858BCE2C5541295C8F6234B45041A4703DEAC62C5541B81E851B2EB45041713D0AF7C52C554185EB514820B45041F6285CDFC42C5541AE47E19A1FB45041E17A14CEC42C5541E17A14CE1BB45041AE47E11ACA2C5541D7A370AD16B45041B81E85EBD02C5541F6285C7F13B450411F85EB41D42C55413D0AD75318B4504100000060DA2C55413D0AD7131AB4504185EB5118DC2C55417B14AE0720B45041CDCCCC6CE02C5541AE47E10A22B4504166666626DE2C55415C8FC2052BB45041B81E856BD32C55419A9999D92EB45041B81E858BCE2C5541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BCE3AE9E1AB45041E48820AECB2C55411283C0EA16B45041BA490CE2D02C554196438BDC13B450412DB29D67D42C55417B14AE5719B4504160E5D092DA2C55415EBA493422B450415C8FC2C5DF2C55419318047624B4504137894150E02C5541C520B0DA2CB45041F2D24D72E32C5541AAF1D23530B45041CBA145D6E22C5541AAF1D22D35B45041D578E9FEE32C55413AF67A963BB45041AFACD04AD92C5541713D0ABF3EB45041736891F5D32C55414E6210F843B450419EEFA75EC92C55416891ED043DB450412B8716C1C82C5541FED4780930B450411D5A6473C62C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>387015 - 4366387
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E0000009A9999D92EB45041B81E858BCE2C5541295C8F6234B45041A4703DEAC62C5541B81E851B2EB45041713D0AF7C52C554185EB514820B45041F6285CDFC42C5541AE47E19A1FB45041E17A14CEC42C5541E17A14CE1BB45041AE47E11ACA2C5541D7A370AD16B45041B81E85EBD02C5541F6285C7F13B450411F85EB41D42C55413D0AD75318B4504100000060DA2C55413D0AD7131AB4504185EB5118DC2C55417B14AE0720B45041CDCCCC6CE02C5541AE47E10A22B4504166666626DE2C55415C8FC2052BB45041B81E856BD32C55419A9999D92EB45041B81E858BCE2C5541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BCE3AE9E1AB45041E48820AECB2C55411283C0EA16B45041BA490CE2D02C554196438BDC13B450412DB29D67D42C55417B14AE5719B4504160E5D092DA2C55415EBA493422B450415C8FC2C5DF2C55419318047624B4504137894150E02C5541C520B0DA2CB45041F2D24D72E32C5541AAF1D23530B45041CBA145D6E22C5541AAF1D22D35B45041D578E9FEE32C55413AF67A963BB45041AFACD04AD92C5541713D0ABF3EB45041736891F5D32C55414E6210F843B450419EEFA75EC92C55416891ED043DB450412B8716C1C82C5541FED4780930B450411D5A6473C62C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>387424 - 2991175
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000C0000008FC2F58856F6504148E17AF42B765441713D0A275FF650415C8FC2A52976544152B81E0563F650410AD7A3601A7654411F85EB915DF65041D7A3709DF87554413D0AD76358F650417B14AE87D875544114AE47C155F650415C8FC2B5D87554417B14AEE74EF650418FC2F5B8D975544114AE47514AF65041E17A14CEDA7554419A99997945F65041C3F5286CDC75544152B81E1543F65041000000E0DD755441000000504FF65041295C8F022E7654418FC2F58856F6504148E17AF42B765441
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000096A3F43B4FF650413EEF9DDD2D765441D8A3192C5FF65041F1F2C79129765441FC017F0363F65041D3909A671A765441FF0416BF5CF65041C7F18783F3755441CC43887158F650412C7F7DDCD875544117219A2E53F65041608C1E17D9755441392333FC4DF65041349086F0D9755441E80472DC49F650418BF41AF5DA755441D3AE1B2547F6504168EE5CDDDB7554417313134245F650411643E18DDC75544145ADB41B44F65041D878A540DD75544182935F1843F650414C01CBEDDD75544118FDB38C49F65041BC5FED3F08765441DFFC0ED04CF6504144C373A11D765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>387424 - 3306376
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000C0000008FC2F58856F6504148E17AF42B765441713D0A275FF650415C8FC2A52976544152B81E0563F650410AD7A3601A7654411F85EB915DF65041D7A3709DF87554413D0AD76358F650417B14AE87D875544114AE47C155F650415C8FC2B5D87554417B14AEE74EF650418FC2F5B8D975544114AE47514AF65041E17A14CEDA7554419A99997945F65041C3F5286CDC75544152B81E1543F65041000000E0DD755441000000504FF65041295C8F022E7654418FC2F58856F6504148E17AF42B765441
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000096A3F43B4FF650413EEF9DDD2D765441D8A3192C5FF65041F1F2C79129765441FC017F0363F65041D3909A671A765441FF0416BF5CF65041C7F18783F3755441CC43887158F650412C7F7DDCD875544117219A2E53F65041608C1E17D9755441392333FC4DF65041349086F0D9755441E80472DC49F650418BF41AF5DA755441D3AE1B2547F6504168EE5CDDDB7554417313134245F650411643E18DDC75544145ADB41B44F65041D878A540DD75544182935F1843F650414C01CBEDDD75544118FDB38C49F65041BC5FED3F08765441DFFC0ED04CF6504144C373A11D765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>388207 - 2959703
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000900000052B81EF5B68150418FC2F508570F5541CDCCCCACC08150415C8FC295620F554148E17A14C3815041F6285C4F630F55413D0AD773D6815041E17A149E5D0F5541A4703D3ADB8150411F85EB715D0F55418FC2F588DF815041A4703D4A5D0F55417B14AE37EE81504148E17AC45C0F5541F6285C2FDF81504114AE47D1400F554152B81EF5B68150418FC2F508570F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000500000064652ADECF815041CE4EAC9E3D0F5541AA0B09C1B38150411359F01D530F55412452536DB9815041C17F8EF8590F55411736068ED68150419FEC7C95450F554164652ADECF815041CE4EAC9E3D0F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>388207 - 3618854
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000900000052B81EF5B68150418FC2F508570F5541CDCCCCACC08150415C8FC295620F554148E17A14C3815041F6285C4F630F55413D0AD773D6815041E17A149E5D0F5541A4703D3ADB8150411F85EB715D0F55418FC2F588DF815041A4703D4A5D0F55417B14AE37EE81504148E17AC45C0F5541F6285C2FDF81504114AE47D1400F554152B81EF5B68150418FC2F508570F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000500000064652ADECF815041CE4EAC9E3D0F5541AA0B09C1B38150411359F01D530F55412452536DB9815041C17F8EF8590F55411736068ED68150419FEC7C95450F554164652ADECF815041CE4EAC9E3D0F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>133745 - 2988031
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000002000000270000009A999919ED08514133333373198B5441EC51B8BEF8085141295C8F92228B54411F85EBB1FF08514185EB5168268B54413D0AD763060951418FC2F5882A8B544114AE479114095141713D0A77348B5441EC51B8FE2C095141713D0AB7428B5441713D0A072E09514185EB5118428B544114AE47112C095141AE47E1DA0E8B54415C8FC2852A095141D7A3700DE78A5441AE47E17A2A095141F6285CEFE58A5441D7A3707D290951410AD7A3F0DA8A54413D0AD723290951413D0AD703D18A54410AD7A32025095141D7A3707DC28A544114AE473124095141D7A3701DBF8A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BB5F400FF4085141C78DEAE61E8B5441DA537DA2F5085141BB67CE22208B54413ED8884FF3085141B1B6FD7BD68A54411F85EBF1EC085141E17A144ED88A544166666656E50851417B14AE17DA8A54410AD7A350E408514185EB51D8DA8A54418FC2F5B8DF085141713D0AA7DF8A5441666666D6DE08514166666636E48A544166666676E00851413D0AD753E88A5441A4703DAAE20851419A999959EE8A5441AE47E1DAE2085141295C8FB2F38A5441AE47E15AE2085141A4703D0AF88A544152B81E45E40851419A9999F9FD8A544138B6E478E60851410C5836EA028B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>133745 - 3408736
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000002000000270000009A999919ED08514133333373198B5441EC51B8BEF8085141295C8F92228B54411F85EBB1FF08514185EB5168268B54413D0AD763060951418FC2F5882A8B544114AE479114095141713D0A77348B5441EC51B8FE2C095141713D0AB7428B5441713D0A072E09514185EB5118428B544114AE47112C095141AE47E1DA0E8B54415C8FC2852A095141D7A3700DE78A5441AE47E17A2A095141F6285CEFE58A5441D7A3707D290951410AD7A3F0DA8A54413D0AD723290951413D0AD703D18A54410AD7A32025095141D7A3707DC28A544114AE473124095141D7A3701DBF8A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BB5F400FF4085141C78DEAE61E8B5441DA537DA2F5085141BB67CE22208B54413ED8884FF3085141B1B6FD7BD68A54411F85EBF1EC085141E17A144ED88A544166666656E50851417B14AE17DA8A54410AD7A350E408514185EB51D8DA8A54418FC2F5B8DF085141713D0AA7DF8A5441666666D6DE08514166666636E48A544166666676E00851413D0AD753E88A5441A4703DAAE20851419A999959EE8A5441AE47E1DAE2085141295C8FB2F38A5441AE47E15AE2085141A4703D0AF88A544152B81E45E40851419A9999F9FD8A544138B6E478E60851410C5836EA028B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>394916 - 261968
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000030000000103000000050000002C010000AE47E1CAE19E5041EC51B8FEF81B544148E17AD4E09E5041295C8F42F91B5441D7A3706DDE9E5041F6285C1FFA1B54417B14AEA7D29E50411F85EB91FF1B54415C8FC2C5CC9E5041295C8F62021C5441AE47E10AC49E5041AE47E17A051C54417B14AEE7BB9E504133333373081C5441AE47E1FAB79E5041713D0A37091C5441B81E851BB19E504114AE47910A1C5441D7A370CDAC9E5041B81E857B0A1C5441AE47E1EAAB9E5041CDCCCC9C0A1C54418FC2F508A89E50418FC2F5B80B1C544152B81EC59F9E5041000000300E1C5441666666F6A09E5041A4703D6A0A1C5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000300000090000000AE47E1DA229E5041E17A147E321C54411313DA69209E5041299F3C5C321C544152B81E351F9E5041B81E854B321C5441CC5962111F9E5041E1B76320321C5441F6285C3F1C9E50418FC2F5B82E1C54418FC2F5D8199E5041713D0AA72B1C544152B81ED5169E5041AE47E10A2C1C544185EB51F80F9E50411F85EB11241C54417B14AE770E9E5041D7A3704D241C54413D0AD7E30A9E5041C3F5281C261C544185EB51E8069E5041AE47E11A281C544199F56C1B069E50416DFF1671281C54415C8FC285029E5041333333F3291C544185EB5198FF9D50419A9999192B1C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389154 - 968671
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000002E000000AE47E11A1098504148E17AA465215441E17A142E139850411F85EBE162215441F6285C9F17985041D7A3709D5E2154419A9999A91A985041000000105C215441A4703DAA1C9850415C8FC2E559215441A4703DAA199850417B14AEF754215441666666A6159850419A9999794F215441D7A3707D11985041A4703DFA4921544152B81E150E985041F6285C3F45215441D7A3700D0B9850413333335345215441EC51B88E0B985041A4703D8A422154418FC2F5580C9850418FC2F5D83F2154417B14AE170D985041D7A3704D3E2154411F85EB610E985041A4703D8A3D215441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000390000004E36937314985041F7F8C6BF312154411462536F14985041B8D319A7312154419A9999A9109850413D0AD7D331215441C8677A7910985041304E19D33121544197482D590E98504118C598F6312154413D6770430E98504149BAB148312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A215441AA879E5B09985041031706272B215441968BF5CD089850414FCD423B2B2154412C7A0D27089850413FEBB2041D2154419A9999A9FA9750415C8FC2151F21544152B81E35FA97504166666636212154410AD7A390F9975041B81E853B24215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389215 - 968671
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003500000048E17A942A985041AE47E1CA4E2154419A99992928985041295C8F124B215441713D0A5723985041B81E852B442154415C8FC2852F98504148E17A143C215441EC51B87E2D985041EC51B8AE332154415C8FC2052B985041C3F528AC29215441CDCCCC1C2B985041295C8FF226215441EC51B86E27985041B81E85EB1A215441EC51B83E239850413D0AD7E31B215441666666261E985041F6285C8F1D215441666666161D9850415C8FC2D519215441713D0A071B985041EC51B89E12215441666666261A985041666666360D215441666666461A98504152B81E8509215441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000390000004E36937314985041F7F8C6BF312154411462536F14985041B8D319A7312154419A9999A9109850413D0AD7D331215441C8677A7910985041304E19D33121544197482D590E98504118C598F6312154413D6770430E98504149BAB148312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A215441AA879E5B09985041031706272B215441968BF5CD089850414FCD423B2B2154412C7A0D27089850413FEBB2041D2154419A9999A9FA9750415C8FC2151F21544152B81E35FA97504166666636212154410AD7A390F9975041B81E853B24215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389215 - 1819783
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003500000048E17A942A985041AE47E1CA4E2154419A99992928985041295C8F124B215441713D0A5723985041B81E852B442154415C8FC2852F98504148E17A143C215441EC51B87E2D985041EC51B8AE332154415C8FC2052B985041C3F528AC29215441CDCCCC1C2B985041295C8FF226215441EC51B86E27985041B81E85EB1A215441EC51B83E239850413D0AD7E31B215441666666261E985041F6285C8F1D215441666666161D9850415C8FC2D519215441713D0A071B985041EC51B89E12215441666666261A985041666666360D215441666666461A98504152B81E8509215441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000390000005336937314985041F8F8C6BF312154411262536F14985041BCD319A7312154419A9999A9109850413D0AD7D331215441C5677A7910985041304E19D33121544198482D590E98504113C598F6312154413B6770430E9850414DBAB148312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A215441AB879E5B09985041061706272B215441938BF5CD089850414FCD423B2B215441317A0D27089850413AEBB2041D2154419A9999A9FA9750415C8FC2151F21544152B81E35FA97504166666636212154410AD7A390F9975041B81E853B24215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389215 - 4450309
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003500000048E17A942A985041AE47E1CA4E2154419A99992928985041295C8F124B215441713D0A5723985041B81E852B442154415C8FC2852F98504148E17A143C215441EC51B87E2D985041EC51B8AE332154415C8FC2052B985041C3F528AC29215441CDCCCC1C2B985041295C8FF226215441EC51B86E27985041B81E85EB1A215441EC51B83E239850413D0AD7E31B215441666666261E985041F6285C8F1D215441666666161D9850415C8FC2D519215441713D0A071B985041EC51B89E12215441666666261A985041666666360D215441666666461A98504152B81E8509215441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000390000005336937314985041F8F8C6BF312154411262536F14985041BCD319A7312154419A9999A9109850413D0AD7D331215441C5677A7910985041304E19D33121544198482D590E98504113C598F6312154413B6770430E9850414DBAB148312154418FC2F5F80D985041D7A3701D30215441713D0A670D9850413D0AD7E32A215441AB879E5B09985041061706272B215441938BF5CD089850414FCD423B2B215441317A0D27089850413AEBB2041D2154419A9999A9FA9750415C8FC2151F21544152B81E35FA97504166666636212154410AD7A390F9975041B81E853B24215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>389277 - 396354
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3808A98504148E17A145E1C54413333335396985041713D0A97621C54410AD7A3A0A5985041E17A146E681C5441D7A370BDB2985041EC51B86E6D1C5441295C8F22C3985041E17A141E731C5441A4703D5AC3985041A4703D3A721C54410AD7A3C0C3985041D7A370CD6F1C5441CDCCCC0CA49850417B14AE57641C5441F6285CFF89985041E17A14FE5A1C54410AD7A3808A98504148E17A145E1C5441
+</a>
+
+<b>
+010600000001000000010300000001000000110000000AD7A3A0A5985041E17A146E681C54415CCDB47EAA9850418C4576496A1C5441E10B72BDB29850414317B76E6D1C5441ABF07D41BF985041D54ABBC5711C54418DB0FED2C2985041049A7D02731C54418B538E22C39850411C1F141E731C5441A3F13C5AC398504163C83D3A721C5441A5185AA6C398504101B6CF6C701C54418FF857AEC398504192985C3C701C544119C0A3C0C3985041CC2E71CD6F1C5441C90D1627B69850411D7AE8E26A1C5441CDCCCC0CA49850417B14AE57641C54417A905CFF899850410BA014FE5A1C5441A412A4808A985041CA6A7A145E1C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>395054 - 2130970
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000003E0000005C8FC265BCAF50411F85EB11B71F54415C8FC2E5C2AF50411F85EB51BD1F544185EB5148C9AF50411F85EBF1C11F544114AE47C1CCAF504152B81ED5C31F54419A999949D6AF5041EC51B88EC61F54418FC2F578DEAF50417B14AED7C91F5441EC51B8AEE2AF504133333323CB1F5441A4703D3AE5AF504148E17A64C71F544114AE4701E9AF5041AE47E1BAC81F544185EB51C8ECAF50415C8FC225CA1F544148E17AF4EEAF50410AD7A300CB1F54410AD7A380F2AF5041E17A147ECC1F54418FC2F598F5AF50419A9999E9CD1F5441C3F5287CFCAF5041F6285C2FD11F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000067000000043EFFEB31B05041212B6D1AE51F5441ADA0761743B05041665B5949ED1F54419A99991943B05041A4703D4AED1F5441B81E859B49B05041F6285C1FEF1F5441F6285CDF4CB050411F85EB31F01F5441295C8F5251B05041C3F5280CF21F54411F85EBF157B0504185EB5178F51F5441F6285C2F5AB05041CDCCCCFCF61F544158FD99895BB05041B9E121EDF71F5441F6285C9F61B0504166666626FC1F544148E17A5469B05041EC51B82E03205441D839935069B050412A40853403205441C1FE02B569B05041106BBE86032054416FD66CCB71B050416A30BE6BFB1F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>395097 - 235229
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002A01000066666676F2B65041E17A148E7D185441295C8F02EDB65041B81E857B81185441F6285C1FEAB650411F85EB9183185441666666A6F3B65041E17A149E8A1854413D0AD743F4B65041295C8F828B18544133333363F7B650417B14AE0792185441666666F6FAB65041F6285C4F8F185441C3F528ACFEB6504152B81E858C1854413D0AD793FFB650417B14AED78B18544185EB519802B750411F85EB81891854418FC2F5B805B750418FC2F528871854413333333308B75041EC51B84E8518544114AE47110CB75041EC51B84E821854413333338309B75041F6285CDF7E185441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000D7A3702D31B75041B81E854B4618544193D3EC2831B75041793C2A4C461854419D71126A31B750414D951A634B185441E17A14EE31B75041C3F5286C4A18544185EB51B833B750419A999949491854413177CEF033B75041F69D3A3649185441A1B75D0D34B75041036125FE491854419FB75D0D34B75041046125FE491854419FB75D0D34B75041076125FE4918544152B81E0534B7504114AE47014A18544152B81EB532B750415C8FC2F54A1854411F85EBA131B7504114AE47A14C1854412746BB3431B75041805FC8524D1854412D2EC41431B750417C184ED04F185441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>395097 - 397580
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002A01000066666676F2B65041E17A148E7D185441295C8F02EDB65041B81E857B81185441F6285C1FEAB650411F85EB9183185441666666A6F3B65041E17A149E8A1854413D0AD743F4B65041295C8F828B18544133333363F7B650417B14AE0792185441666666F6FAB65041F6285C4F8F185441C3F528ACFEB6504152B81E858C1854413D0AD793FFB650417B14AED78B18544185EB519802B750411F85EB81891854418FC2F5B805B750418FC2F528871854413333333308B75041EC51B84E8518544114AE47110CB75041EC51B84E821854413333338309B75041F6285CDF7E185441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000D7A3702D31B75041B81E854B4618544193D3EC2831B75041793C2A4C461854419D71126A31B750414D951A634B185441E17A14EE31B75041C3F5286C4A18544185EB51B833B750419A999949491854413177CEF033B75041F69D3A3649185441A1B75D0D34B75041036125FE491854419FB75D0D34B75041046125FE491854419FB75D0D34B75041076125FE4918544152B81E0534B7504114AE47014A18544152B81EB532B750415C8FC2F54A1854411F85EBA131B7504114AE47A14C1854412746BB3431B75041805FC8524D1854412D2EC41431B750417C184ED04F185441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>395171 - 1746675
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000030000006A000000C3F528CCB4A05041A4703DFA091A5441F6285CBFBBA05041CDCCCCACFF195441F6285C2FBFA050418FC2F5A8FA19544100000040BEA0504100000070F9195441B81E856BBBA05041AE47E12AF6195441713D0A67B8A050415C8FC2E5F21954417B14AEB7B3A05041EC51B87EEE195441666666E6ADA05041EC51B85EE9195441F6285C8FA9A050418FC2F598E51954413D0AD753A7A05041D7A3707DE31954418FC2F5C8A5A05041AE47E1DAE1195441713D0A77A4A0504100000040E0195441C3F528BCA2A0504148E17AF4DD19544114AE47F1A0A0504185EB5148DB195441 [...]
+</a>
+
+<b>
+010600000001000000010300000003000000BB00000026266E09B7A05041C52026C3F0195441713D0A87B8A05041CDCCCC2CF21954413D0AD763BBA050419A999939F51954410AD7A370BEA05041EC51B89EF81954418FC2F598BFA05041F6285C0FFA195441E17A148EC1A05041A4703D3AFC195441EC51B8FEC3A05041D7A3702DFF1954417B14AE37C6A0504133333333021A544132A254D7D0A050412CC45232F21954416982E619DDA05041D47A38A7E019544100708831DBA05041448B5B50D11954417B14AE47DDA050418FC2F538CE195441AE47E18ADFA0504148E17AF4CA195441E17A144EDEA0504185EB5138C9195441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>395171 - 3214062
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000030000006A000000C3F528CCB4A05041A4703DFA091A5441F6285CBFBBA05041CDCCCCACFF195441F6285C2FBFA050418FC2F5A8FA19544100000040BEA0504100000070F9195441B81E856BBBA05041AE47E12AF6195441713D0A67B8A050415C8FC2E5F21954417B14AEB7B3A05041EC51B87EEE195441666666E6ADA05041EC51B85EE9195441F6285C8FA9A050418FC2F598E51954413D0AD753A7A05041D7A3707DE31954418FC2F5C8A5A05041AE47E1DAE1195441713D0A77A4A0504100000040E0195441C3F528BCA2A0504148E17AF4DD19544114AE47F1A0A0504185EB5148DB195441 [...]
+</a>
+
+<b>
+010600000001000000010300000003000000BB00000026266E09B7A05041C52026C3F0195441713D0A87B8A05041CDCCCC2CF21954413D0AD763BBA050419A999939F51954410AD7A370BEA05041EC51B89EF81954418FC2F598BFA05041F6285C0FFA195441E17A148EC1A05041A4703D3AFC195441EC51B8FEC3A05041D7A3702DFF1954417B14AE37C6A0504133333333021A544132A254D7D0A050412CC45232F21954416982E619DDA05041D47A38A7E019544100708831DBA05041448B5B50D11954417B14AE47DDA050418FC2F538CE195441AE47E18ADFA0504148E17AF4CA195441E17A144EDEA0504185EB5138C9195441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>390579 - 4074305
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B00000066666626BF27514148E17A64B4C9544114AE4741C12751410AD7A310A6C95441AE47E1AAC227514133333313A6C95441F6285CEFC227514152B81E45A3C954417B14AE07C3275141CDCCCCDCA0C954415C8FC2F5C2275141E17A142E9EC9544185EB51A8C2275141713D0A179BC9544114AE47F1C127514185EB513896C95441713D0A77BF275141E17A146E8DC95441295C8F92BE2751413D0AD7738AC95441F6285C8FBD275141666666D687C95441D7A370BDB727514152B81E4589C954411F85EB31B8275141B81E859B8AC95441B81E85ABB82751418FC2F5C88CC95441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000F6285C8FBD275141666666D687C95441D7A370BDB727514152B81E4589C954411F85EB31B8275141B81E859B8AC95441B81E85ABB82751418FC2F5C88CC954413D0AD7D3B82751413D0AD7D38FC954417B14AEE7B8275141713D0A9793C954419A9999C9B82751415C8FC2E595C9544152B81E15B82751411F85EB819BC95441000000F0B62751417B14AEC7A1C9544100000020B62751411F85EBC1A5C9544152B81EF5B4275141D7A370CDAAC9544114AE4761B4275141AE47E10AADC95441AE47E1EAB82751410AD7A3A0AFC954418FC2F528BB275141F6285C2FB1C95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>390579 - 5186262
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B00000066666626BF27514148E17A64B4C9544114AE4741C12751410AD7A310A6C95441AE47E1AAC227514133333313A6C95441F6285CEFC227514152B81E45A3C954417B14AE07C3275141CDCCCCDCA0C954415C8FC2F5C2275141E17A142E9EC9544185EB51A8C2275141713D0A179BC9544114AE47F1C127514185EB513896C95441713D0A77BF275141E17A146E8DC95441295C8F92BE2751413D0AD7738AC95441F6285C8FBD275141666666D687C95441D7A370BDB727514152B81E4589C954411F85EB31B8275141B81E859B8AC95441B81E85ABB82751418FC2F5C88CC95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000AE47E1AAC227514133333313A6C954410AD7A330C72751419A999919A6C95441D4AC8C47C6275141D8F1C5179CC954412B2F759FC42751417FFE5AFD93C9544103685B7EC22751419CF487EA8AC954411F85EB81C127514152B81ED586C95441F6285C8FBD275141666666D687C954411C027677C0275141BD10D8FB90C95441DA82DD47C2275141C194118698C9544190CE6FEFC2275141191E7DED9DC95441AE47E1AAC227514133333313A6C95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>392117 - 1353179
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000360000009A9999C9F9215141D7A3708D9BBE54417B14AEC7FE21514185EB51E89BBE54411F85EB510222514185EB51B89ABE54419A9999B90322514148E17A0499BE5441D7A3706D052251419A9999A998BE5441EC51B80E06225141713D0A2798BE54419A99996906225141713D0A8797BE5441A4703D7A09225141D7A3706D98BE544185EB51980E225141EC51B88E9ABE5441B81E853B102251417B14AEF79ABE54411F85EB911422514148E17A949BBE5441E17A147E182251411F85EB019CBE5441CDCCCC7C1922514148E17A3499BE5441F6285CCF1A225141EC51B8EE95BE5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000F44F7FF6192251415CA8570798BE54410248432D192251416AF2F0139CBE5441EC51B8CE1F225141295C8FC29CBE544185EB51E8242251413D0AD7B37FBE5441B81E858B27225141713D0AF76BBE54411F85EBD128225141AE47E13A60BE54413D0AD7B327225141B81E85BB57BE5441DDC5BA2321225141A816F28A56BE5441257509F0202251411BF6FAA557BE5441333333A320225141B81E858B58BE5441C3F528CC20225141D7A3709D59BE5441A3B40E2F222251415FF6F3475DBE5441666666D62222514152B81ED561BE54410AD7A3E01E225141666666B67EBE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>392117 - 1353182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000360000009A9999C9F9215141D7A3708D9BBE54417B14AEC7FE21514185EB51E89BBE54411F85EB510222514185EB51B89ABE54419A9999B90322514148E17A0499BE5441D7A3706D052251419A9999A998BE5441EC51B80E06225141713D0A2798BE54419A99996906225141713D0A8797BE5441A4703D7A09225141D7A3706D98BE544185EB51980E225141EC51B88E9ABE5441B81E853B102251417B14AEF79ABE54411F85EB911422514148E17A949BBE5441E17A147E182251411F85EB019CBE5441CDCCCC7C1922514148E17A3499BE5441F6285CCF1A225141EC51B8EE95BE5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000330000000AD7A3E01E225141666666B67EBE54416C45EA901E2251414A5CFFAD7EBE5441000000D016225141CDCCCCDC7DBE544185EB5118102251411F85EB817DBE5441D7A3705D0B22514185EB51A87DBE5441666666F60A2251413D0AD7C378BE5441AE47E1EA0A2251415C8FC2B576BE5441333333530B2251413333334372BE5441F6285CCF0B225141333333136FBE54419A9999390D2251417B14AEE765BE5441AE47E1BA0E225141EC51B8AE63BE5441F6285C6F0F22514148E17AF45FBE5441F6285C0F10225141C3F5283C5BBE5441666666561022514114AE47D157BE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>392117 - 3468495
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000360000009A9999C9F9215141D7A3708D9BBE54417B14AEC7FE21514185EB51E89BBE54411F85EB510222514185EB51B89ABE54419A9999B90322514148E17A0499BE5441D7A3706D052251419A9999A998BE5441EC51B80E06225141713D0A2798BE54419A99996906225141713D0A8797BE5441A4703D7A09225141D7A3706D98BE544185EB51980E225141EC51B88E9ABE5441B81E853B102251417B14AEF79ABE54411F85EB911422514148E17A949BBE5441E17A147E182251411F85EB019CBE5441CDCCCC7C1922514148E17A3499BE5441F6285CCF1A225141EC51B8EE95BE5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000330000000AD7A3E01E225141666666B67EBE54416C45EA901E2251414A5CFFAD7EBE5441000000D016225141CDCCCCDC7DBE544185EB5118102251411F85EB817DBE5441D7A3705D0B22514185EB51A87DBE5441666666F60A2251413D0AD7C378BE5441AE47E1EA0A2251415C8FC2B576BE5441333333530B2251413333334372BE5441F6285CCF0B225141333333136FBE54419A9999390D2251417B14AEE765BE5441AE47E1BA0E225141EC51B8AE63BE5441F6285C6F0F22514148E17AF45FBE5441F6285C0F10225141C3F5283C5BBE5441666666561022514114AE47D157BE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>392117 - 3469099
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000360000009A9999C9F9215141D7A3708D9BBE54417B14AEC7FE21514185EB51E89BBE54411F85EB510222514185EB51B89ABE54419A9999B90322514148E17A0499BE5441D7A3706D052251419A9999A998BE5441EC51B80E06225141713D0A2798BE54419A99996906225141713D0A8797BE5441A4703D7A09225141D7A3706D98BE544185EB51980E225141EC51B88E9ABE5441B81E853B102251417B14AEF79ABE54411F85EB911422514148E17A949BBE5441E17A147E182251411F85EB019CBE5441CDCCCC7C1922514148E17A3499BE5441F6285CCF1A225141EC51B8EE95BE5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000F44F7FF6192251415CA8570798BE54410248432D192251416AF2F0139CBE5441EC51B8CE1F225141295C8FC29CBE544185EB51E8242251413D0AD7B37FBE5441B81E858B27225141713D0AF76BBE54411F85EBD128225141AE47E13A60BE54413D0AD7B327225141B81E85BB57BE5441DDC5BA2321225141A816F28A56BE5441257509F0202251411BF6FAA557BE5441333333A320225141B81E858B58BE5441C3F528CC20225141D7A3709D59BE5441A3B40E2F222251415FF6F3475DBE5441666666D62222514152B81ED561BE54410AD7A3E01E225141666666B67EBE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>392178 - 432615
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000051000000AE47E19AB027514133333333BBC6544166666686AB275141F6285C6FBDC654418FC2F5D8A027514148E17A94C6C6544185EB5118A12751417B14AEF7C9C65441295C8F02A127514114AE4701CDC6544166666656A12751415C8FC285CFC65441B81E85EBA1275141CDCCCCACD1C6544114AE47B1A3275141333333A3D5C654410AD7A310A427514114AE4781D6C65441E17A140EA5275141B81E859BD8C654411F85EB21A5275141AE47E1FADAC65441CDCCCC8CA1275141A4703DFAE0C65441EC51B8AEA0275141D7A370BDE3C654415C8FC205A02751419A999939E5C65441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004E00000095A6157CA5275141EB6F5A00F9C6544177881292A62751410626CD0CF9C65441F0D64AFCA7275141C73E9BE1F8C65441D85BF47FAA275141AF962A39F8C654412AA772F6AA2751411114EDECF7C654413F85AB8EA42751412AA52D0FE3C65441EAC44C26A7275141062B526ADBC654411A3B3CE2A627514192E672D3D7C6544105E33BC3A227514135867157C7C654411B1256A5B3275141CFD0098FC1C65441141B9A57BF2751419BD55036C2C65441EC51B84EBF275141EC51B89EC1C654413D0AD743BF275141713D0AE7C0C65441E4BAA153BA2751410DCC7D9FC0C65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>396251 - 236110
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000014000000295C8F62C320514166666666E2CA54410AD7A360C0205141AE47E1EAE7CA544148E17A84BB2051418FC2F528FCCA544166666636BD205141EC51B8FEFBCA54418FC2F548BF2051411F85EBE1FBCA54413D0AD793C920514152B81E55FBCA5441B81E852BCE205141AE47E1FAFBCA5441CDCCCCFCD420514148E17A14FDCA544152B81E45D8205141713D0A07FDCA54415C8FC2F5DB20514100000090FBCA54411F85EBA1DE2051411F85EB71F8CA5441AE47E10AE3205141F6285C8FEBCA5441C3F5288CE52051413D0AD7F3E3CA5441AE47E15AE9205141333333C3DBCA5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000E2A1A7F8BF20514135BBFD9BE9CA5441EF24145EC0205141EB1994EFE7CA54415C8FC275BE205141F6285C6FEBCA5441CB75A82ABE205141220DB6F5EBCA54415485EB71BA205141EC7A149EF2CA544184EED491AE20514167DAD9F5F7CA54419A999979A92051410AD7A340FACA5441B43BC50EA92051416E7F93FCFBCA54410B0000B0A820514165666686FDCA544141FB0E91A9205141520B247AFDCA54415475EAEFAF205141585B4E21FDCA54414884AB91B0205141BCC17E18FDCA5441330AD7B3B3205141B7CCCCECFCCA5441F3484F61BB205141241C672CFCCA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>397509 - 1008901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000017000000CDCCCCDC4FFA5041A4703D7A3B3854418FC2F5C84FFA5041666666964C38544152B81E154FFA5041E17A14CE55385441CDCCCC9C4EFA5041A4703D7A5938544114AE474150FA50411F85EBE15A38544114AE474150FA50416666669660385441CDCCCC0C57FA5041A4703DBA643854418FC2F5485CFA5041666666F65F38544114AE47B15DFA5041666666D6573854418FC2F5885DFA5041666666565038544152B81E9560FA5041A4703D5A4738544152B81E8561FA504166666656413854418FC2F5285EFA5041E17A145E3E38544152B81E755DFA5041A4703DCA3B385441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000E904B8D050FA5041081D56603B385441A12ECCF750FA5041613B5C5C3D385441E572F14750FA5041D43314524C3854415134530D50FA504168BC2F4055385441760B853A50FA504189D3B6755838544114AE474150FA50411F85EBE15A3854414F55A40551FA50419FF572B55C385441E904B8D050FA5041C2B679786038544177564EDC54FA5041B3A5E437633854416D6946AD58FA50416E61BFE7633854415E18A3995CFA5041B3F931FE6138544114AE47B15DFA5041666666D657385441594C2CED5CFA504152A9524A51385441A7C675B85CFA50411EC845CE4D385441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>397509 - 3488896
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000017000000CDCCCCDC4FFA5041A4703D7A3B3854418FC2F5C84FFA5041666666964C38544152B81E154FFA5041E17A14CE55385441CDCCCC9C4EFA5041A4703D7A5938544114AE474150FA50411F85EBE15A38544114AE474150FA50416666669660385441CDCCCC0C57FA5041A4703DBA643854418FC2F5485CFA5041666666F65F38544114AE47B15DFA5041666666D6573854418FC2F5885DFA5041666666565038544152B81E9560FA5041A4703D5A4738544152B81E8561FA504166666656413854418FC2F5285EFA5041E17A145E3E38544152B81E755DFA5041A4703DCA3B385441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000E904B8D050FA5041081D56603B385441A12ECCF750FA5041613B5C5C3D385441E572F14750FA5041D43314524C3854415134530D50FA504168BC2F4055385441760B853A50FA504189D3B6755838544114AE474150FA50411F85EBE15A3854414F55A40551FA50419FF572B55C385441E904B8D050FA5041C2B679786038544177564EDC54FA5041B3A5E437633854416D6946AD58FA50416E61BFE7633854415E18A3995CFA5041B3F931FE6138544114AE47B15DFA5041666666D657385441594C2CED5CFA504152A9524A51385441A7C675B85CFA50411EC845CE4D385441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>397613 - 3584717
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000050000000103000000010000000E000000000000E0A3FB5041E17A145E633C5441F6285C8FA5FB5041666666A6603C5441E17A142EAAFB5041B81E853B5A3C544148E17AB4ACFB50413D0AD763553C5441F6285C4FA9FB5041C3F528AC523C5441E17A144EAAFB504152B81E954C3C5441EC51B87EABFB504152B81E35473C544152B81E05ADFB5041EC51B8AE443C544148E17A34A9FB50411F85EB81433C5441000000C0A0FB50415C8FC2E5403C544185EB5168A1FB504114AE47A14D3C5441CDCCCC0CA2FB50419A9999195A3C5441F6285CAFA2FB5041295C8F62663C5441000000E0A3FB5041E17A145E633C5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000410000002EACA7B5BBFB50410FB9A683603C5441948E54C1BBFB50417207B4C9603C5441261F9870E0FB5041FEE91324563C5441261F9870E0FB504147F37815533C5441F6285CBFFBFB5041000000404F3C5441CDCCCC0CFBFB5041EC51B8AE473C5441B81E853B03FC5041713D0AC7463C5441B81E85AB02FC50411F85EBF1403C5441295C8F62FCFB5041EC51B8AE383C54410AD7A310F6FB5041C3F528DC383C544185EB51E8F4FB5041713D0A67303C5441F6285C4FF9FB5041666666B62F3C544133333323F9FB50418FC2F5A82E3C5441A4703D2AFEFB50411F85EB812B3C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>418788 - 16153
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000052000000713D0AF725D150413D0AD75391245441A4703D3A22D15041AE47E1CA8B2454411F85EBA117D150419A9999797E2454417B14AE7716D15041666666E67B2454410AD7A3A015D1504133333393792454411F85EB1115D150410AD7A3907724544185EB517814D15041C3F5285C7524544114AE473114D15041B81E853B73245441B81E856B14D150413333336370245441AE47E11A15D15041713D0AA76B2454410AD7A33011D1504152B81E256B245441000000D00CD1504152B81E856A245441D7A3702D0BD1504114AE47D16A2454418FC2F5C805D150415C8FC2F56C245441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000000B113D4E03D15041F6B68C456C2454410B20EBC504D150414866D8AD6C245441F70FE9CA04D150414D05A3C56B24544186635D7706D15041303CBD4E6A245441128CCA6E03D1504113E2D8C869245441121DC97D02D1504113E2D8C869245441833856C201D1504184FD650D69245441113FC69B00D15041F687F442692454414A158CC5FFD0504113E2D8C869245441BB30190AFFD050416812837869245441D7ACFAADFDD050416812837869245441305BC74EFED05041A7384DA96B245441D6ABDEE900D15041EE50A3E06B245441CDCCCC4C02D15041E17A14FE6B245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>418788 - 62741
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000052000000713D0AF725D150413D0AD75391245441A4703D3A22D15041AE47E1CA8B2454411F85EBA117D150419A9999797E2454417B14AE7716D15041666666E67B2454410AD7A3A015D1504133333393792454411F85EB1115D150410AD7A3907724544185EB517814D15041C3F5285C7524544114AE473114D15041B81E853B73245441B81E856B14D150413333336370245441AE47E11A15D15041713D0AA76B2454410AD7A33011D1504152B81E256B245441000000D00CD1504152B81E856A245441D7A3702D0BD1504114AE47D16A2454418FC2F5C805D150415C8FC2F56C245441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000000B113D4E03D15041F6B68C456C2454410B20EBC504D150414866D8AD6C245441F70FE9CA04D150414D05A3C56B24544186635D7706D15041303CBD4E6A245441128CCA6E03D1504113E2D8C869245441121DC97D02D1504113E2D8C869245441833856C201D1504184FD650D69245441113FC69B00D15041F687F442692454414A158CC5FFD0504113E2D8C869245441BB30190AFFD050416812837869245441D7ACFAADFDD050416812837869245441305BC74EFED05041A7384DA96B245441D6ABDEE900D15041EE50A3E06B245441CDCCCC4C02D15041E17A14FE6B245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>418898 - 148565
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000280000003D0AD7232CBC5041333333039E2C54410AD7A34028BC504185EB51E89A2C54419A99992927BC5041C3F528BC9B2C54417B14AE9728BC50410AD7A3A0A02C5441AE47E1CA2EBC5041713D0AF7A42C5441A4703DDA30BC50415C8FC2B5A82C54417B14AED72FBC5041EC51B8DEAA2C5441CDCCCC4C26BC5041295C8FD2AF2C54417B14AE1726BC50419A999999B32C54419A9999B927BC5041333333F3B42C5441F6285CEF2DBC50417B14AE17B22C5441A4703D2A31BC5041D7A370BDAE2C54411F85EB3136BC504152B81EB5AA2C5441E17A14AE41BC5041B81E852BAE2C5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000052000000FDE8959927BC5041DCAB4C3B9D2C544152EAE49927BC50415EF95A3C9D2C54418E6CA59D27BC5041AD3031499D2C5441734011A527BC50410A2095629D2C5441443FBEBF27BC5041E35CD9BD9D2C5441BD9460F827BC50419FED9C7F9E2C5441A9C3F19528BC50419EB0B39AA02C5441603626DE28BC50418FA8F0D1A02C5441AE47E1CA2EBC5041713D0AF7A42C5441A4703DDA30BC50415C8FC2B5A82C54417B14AED72FBC5041EC51B8DEAA2C5441CDCCCC4C26BC5041295C8FD2AF2C5441C0AE714626BC5041F0BC4446B02C544194961C1926BC5041C079D285B32C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>418918 - 148609
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002500000085EB51485DBB504100000060A72C5441000000F03BBB50415C8FC205992C5441B81E853B3DBB50411F85EB919D2C5441713D0A473DBB5041B81E859B9E2C54410AD7A3F03DBB50417B14AE979F2C5441E17A140E3EBB5041C3F5286CA02C5441A4703D6A3FBB50410AD7A380A12C5441CDCCCCFC40BB5041295C8F92A32C544114AE47D141BB50415C8FC2C5A42C54413D0AD7C341BB50415C8FC215A62C54413D0AD77341BB5041E17A146EA82C54411F85EBE141BB504185EB5158AA2C54417B14AEC742BB50415C8FC205AC2C5441E17A14EE44BB5041A4703D0AAD2C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004C0000004ED7AB7841BB50411E8F9883A82C5441D29460E341BB5041A6330B5BAA2C54412BAC6EE341BB5041128A255BAA2C5441EB9DB1E341BB5041E9A9A25BAA2C5441761A85E641BB50411DEBEA60AA2C54417B05E3E641BB504176759A61AA2C5441FB0B951042BB5041141389AFAA2C5441DDEF3ECC42BB50415989ECFEAB2C54418A48E14643BB5041AFB53D3CAC2C5441A21FD3E244BB504142D2E904AD2C5441E17A14EE44BB5041A4703D0AAD2C5441295C8F9245BB5041C3F5284CAF2C54415C8FC2C545BB5041B81E85FBAF2C544192FD13C545BB5041AA92CA05B02C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>419022 - 3115680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000666666A6FFCB5041333333D3FB4E5441CDCCCCDCE3CB5041AE47E1CADA4E544114AE4771DDCB50418FC2F518DA4E5441C3F5283CBCCB50417B14AED7D94E54417B14AE07E9CB50419A9999190F4F5441713D0A47EECB5041AE47E19A0A4F5441666666A6FFCB5041333333D3FB4E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000007E27A829E7CB5041FCF734B7DE4E5441666666A6FFCB5041333333D3FB4E544185EB512814CC50411F85EB61EA4E54410000004019CC5041C3F5283CE64E54417B14AEA719CC5041B81E859BE04E5441CDCCCCDCE3CB5041AE47E1CADA4E544140B6B9F3E6CB50418A811877DE4E5441E46BB53BE6CB504149EFE660DD4E54416B8EA7DFE6CB50417EBBFB6ADC4E54415B563535E8CB50418D00E0B2DD4E54417E27A829E7CB5041FCF734B7DE4E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>419022 - 3415349
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000666666A6FFCB5041333333D3FB4E5441CDCCCCDCE3CB5041AE47E1CADA4E544114AE4771DDCB50418FC2F518DA4E5441C3F5283CBCCB50417B14AED7D94E54417B14AE07E9CB50419A9999190F4F5441713D0A47EECB5041AE47E19A0A4F5441666666A6FFCB5041333333D3FB4E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000007E27A829E7CB5041FCF734B7DE4E5441666666A6FFCB5041333333D3FB4E544185EB512814CC50411F85EB61EA4E54410000004019CC5041C3F5283CE64E54417B14AEA719CC5041B81E859BE04E5441CDCCCCDCE3CB5041AE47E1CADA4E544140B6B9F3E6CB50418A811877DE4E5441E46BB53BE6CB504149EFE660DD4E54416B8EA7DFE6CB50417EBBFB6ADC4E54415B563535E8CB50418D00E0B2DD4E54417E27A829E7CB5041FCF734B7DE4E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>419286 - 222666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001E000000333333231DD55041D7A370CD3A235441CDCCCC1C21D55041AE47E1AA37235441000000F023D5504100000070352354417B14AE3725D550410AD7A39034235441F6285C6F29D55041000000B031235441F6285C4F25D55041666666062F2354411F85EB611DD55041295C8FF22E23544114AE470119D550418FC2F5E82F235441295C8FD213D55041D7A370CD31235441E17A142E13D550415C8FC2E5302354413D0AD70312D550411F85EB4131235441F6285C3F0BD55041CDCCCC8C34235441295C8F820BD5504185EB510835235441EC51B8EE0AD55041D7A370CD35235441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000333333231DD55041D7A370CD3A235441DD29DB8A1DD55041BA46B07B3A235441CADE71411DD55041E975F4D3382354419380C5BA12D55041E39BF74D31235441295C8F820BD5504185EB510835235441EC51B8EE0AD55041D7A370CD35235441F78D9C7808D5504174CBC0BE362354416506245D08D550413E0C46C936235441576CC00708D55041C4A2F9E9362354414CD015B107D5504144752A0B372354419B47038307D55041646BCF1C37235441AC09A43C07D55041E7BAC23737235441EB8A3C2F07D5504171E4E43C3723544145E42A89F2D45041D7C0B3D742235441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>419286 - 359939
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001E000000333333231DD55041D7A370CD3A235441CDCCCC1C21D55041AE47E1AA37235441000000F023D5504100000070352354417B14AE3725D550410AD7A39034235441F6285C6F29D55041000000B031235441F6285C4F25D55041666666062F2354411F85EB611DD55041295C8FF22E23544114AE470119D550418FC2F5E82F235441295C8FD213D55041D7A370CD31235441E17A142E13D550415C8FC2E5302354413D0AD70312D550411F85EB4131235441F6285C3F0BD55041CDCCCC8C34235441295C8F820BD5504185EB510835235441EC51B8EE0AD55041D7A370CD35235441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000333333231DD55041D7A370CD3A235441DD29DB8A1DD55041BA46B07B3A235441CADE71411DD55041E975F4D3382354419380C5BA12D55041E39BF74D31235441295C8F820BD5504185EB510835235441EC51B8EE0AD55041D7A370CD35235441F78D9C7808D5504174CBC0BE362354416506245D08D550413E0C46C936235441576CC00708D55041C4A2F9E9362354414CD015B107D5504144752A0B372354419B47038307D55041646BCF1C37235441AC09A43C07D55041E7BAC23737235441EB8A3C2F07D5504171E4E43C3723544145E42A89F2D45041D7C0B3D742235441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>419312 - 26866
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000200000001030000000300000013000000B81E856B58D35041D7A370FD7A245441F6285C4F59D350410AD7A37079245441AE47E17A5AD350415C8FC2B5772454417B14AE575BD350418FC2F5D876245441AE47E1CA5CD350417B14AEC775245441E17A148E5DD35041B81E852B75245441AE47E14A5ED35041A4703D1A7424544114AE47515ED3504114AE47717324544185EB51985DD350410AD7A3307324544114AE47115AD350411F85EB517424544185EB517853D35041C3F5281C78245441B81E857B4DD3504148E17A847B245441000000E04DD3504185EB51087C2454413D0AD73351D350417B14AEB77C245441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000024000000ED66E3DA66D350414E571ADD8624544132780CA366D3504185AC87C6882454414435E08566D350416E1EA48E8A24544130E93AE465D35041BFD7E8E88B245441F93A989E65D35041D99895008D24544109696ABD65D35041183AE03A9024544107EEEFE765D350412F7FEA5892245441A456362566D3504135F790A293245441E2F309C366D3504131622D0A96245441E69007CD66D35041D79BE9C896245441DFC4FEBC66D35041018F1AA1972454412FAA26A366D3504172728FFD982454414F2B1C7F66D350417B3980E39A245441ED8EE69966D350411DAF16A49C245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>419312 - 68202
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000200000001030000000300000013000000B81E856B58D35041D7A370FD7A245441F6285C4F59D350410AD7A37079245441AE47E17A5AD350415C8FC2B5772454417B14AE575BD350418FC2F5D876245441AE47E1CA5CD350417B14AEC775245441E17A148E5DD35041B81E852B75245441AE47E14A5ED35041A4703D1A7424544114AE47515ED3504114AE47717324544185EB51985DD350410AD7A3307324544114AE47115AD350411F85EB517424544185EB517853D35041C3F5281C78245441B81E857B4DD3504148E17A847B245441000000E04DD3504185EB51087C2454413D0AD73351D350417B14AEB77C245441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000024000000ED66E3DA66D350414E571ADD8624544132780CA366D3504185AC87C6882454414435E08566D350416E1EA48E8A24544130E93AE465D35041BFD7E8E88B245441F93A989E65D35041D99895008D24544109696ABD65D35041183AE03A9024544107EEEFE765D350412F7FEA5892245441A456362566D3504135F790A293245441E2F309C366D3504131622D0A96245441E69007CD66D35041D79BE9C896245441DFC4FEBC66D35041018F1AA1972454412FAA26A366D3504172728FFD982454414F2B1C7F66D350417B3980E39A245441ED8EE69966D350411DAF16A49C245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>462059 - 5241514
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002200000085EB516853F05041E17A140E06FE544114AE47F154F050413D0AD75303FE54415C8FC2355BF05041C3F5282CF7FD54417B14AEF76AF05041B81E856BE9FD54411F85EBE16EF05041E17A148EE1FD54413D0AD7B372F050419A9999A9DCFD54411F85EB4176F050419A999939D6FD54410000005076F050419A999929D5FD54413D0AD76375F05041AE47E1DAD4FD54410000009072F0504152B81EC5D4FD54418FC2F56870F05041AE47E12AD5FD5441B81E854B6CF0504152B81EA5D6FD5441CDCCCC7C6AF05041295C8F62D7FD54411F85EB8163F05041713D0A97DAFD5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000008968804376F05041B4E40B1BD6FD5441A4564F4476F050415FE80C51D5FD54410AD7A36075F0504100000010D5FD54418FC2F58873F0504133333313D5FD54410AD7A33070F050411F85EBA1D5FD5441C3F5284C6EF05041F6285C3FD6FD5441E17A14AE63F0504148E17AE4DAFD54418FC2F5785EF05041CDCCCC7CDCFD54410D16EFE85AF05041B1DEC544DDFD54413EE51A895BF05041230F0AE6E1FD54411F127EBE51F05041357A56FEE3FD5441710CB74D41F050411D149E17E8FD54417C5CFEFC40F050418190F0FAEDFD5441684A027C3FF050415C79627BF6FD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>508987 - 1606794
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003E000000F6285C6F66635041F6285C0F5F2A5541295C8FB263635041295C8F525E2A55410AD7A3305F6350418FC2F5C85B2A5541B81E854B5A635041B81E85DB5A2A554152B81EA559635041B81E85BB5A2A55411F85EB31586350411F85EB615A2A55411F85EB514F63504114AE4721582A55417B14AEC74C635041A4703D0A582A5541E17A14EE4663504152B81EC55B2A5541EC51B81E4663504185EB51085B2A55411F85EBA1476350411F85EBB1552A5541CDCCCC6C47635041000000F0502A5541C3F5285C49635041B81E859B4F2A554185EB51F84B635041EC51B82E4F2A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000FF7FEC62486350419DBDDDCB4D2A5541C57160984C635041B130E7F34C2A55417A87CCBE4D63504138B8E3B84C2A5541C19FC8A651635041733C74F04B2A5541BAF7F079546350419461815F4B2A55410AD7A3F05A6350413D0AD7134A2A5541B3468FF05A6350410A648D144A2A55412ACF76F35A635041C3ABF8134A2A554114AE47215B6350410AD7A360482A55415C8FC2855A63504152B81E35442A554148E17AF456635041E17A143E462A55417B14AE6753635041B81E85AB472A55417B14AE374F635041713D0AE7482A5541FCAA6B9645635041FC168CE74A2A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>508987 - 3270319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003E000000F6285C6F66635041F6285C0F5F2A5541295C8FB263635041295C8F525E2A55410AD7A3305F6350418FC2F5C85B2A5541B81E854B5A635041B81E85DB5A2A554152B81EA559635041B81E85BB5A2A55411F85EB31586350411F85EB615A2A55411F85EB514F63504114AE4721582A55417B14AEC74C635041A4703D0A582A5541E17A14EE4663504152B81EC55B2A5541EC51B81E4663504185EB51085B2A55411F85EBA1476350411F85EBB1552A5541CDCCCC6C47635041000000F0502A5541C3F5285C49635041B81E859B4F2A554185EB51F84B635041EC51B82E4F2A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000FF7FEC62486350419DBDDDCB4D2A5541C57160984C635041B130E7F34C2A55417A87CCBE4D63504138B8E3B84C2A5541C19FC8A651635041733C74F04B2A5541BAF7F079546350419461815F4B2A55410AD7A3F05A6350413D0AD7134A2A5541B3468FF05A6350410A648D144A2A55412ACF76F35A635041C3ABF8134A2A554114AE47215B6350410AD7A360482A55415C8FC2855A63504152B81E35442A554148E17AF456635041E17A143E462A55417B14AE6753635041B81E85AB472A55417B14AE374F635041713D0AE7482A5541FCAA6B9645635041FC168CE74A2A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>508994 - 1607062
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000D7A3703DD2605041F6285CCFF42A55419A999969D86050418FC2F5B8C62A55415C8FC245D66050419A999979C62A55410AD7A3D0D46050410AD7A3D0C72A55415C8FC2E5D0605041EC51B80EE52A5541AE47E17AC8605041295C8FD2F42A55410AD7A3E0C7605041E17A14CEF62A5541D7A3703DD2605041F6285CCFF42A5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000572F7F73D4605041B929D94CE42A5541BADB2830D3605041CA5F8C13E32A55411459DB2FD3605041F0C7D210E32A554168E3F306D3605041EBA4AFA0E12A5541BA7662F8D2605041CBD2921DE12A5541F4DAF8C6D2605041756426B7E02A554191F410C0D1605041DD9AB9B0DE2A55417794F765D16050410C20B551E12A55415C8FC2E5D0605041EC51B80EE52A5541AE47E17AC8605041295C8FD2F42A55410AD7A3E0C7605041E17A14CEF62A5541D7A3703DD2605041F6285CCFF42A5541572F7F73D4605041B929D94CE42A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>508994 - 3318542
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000D7A3703DD2605041F6285CCFF42A55419A999969D86050418FC2F5B8C62A55415C8FC245D66050419A999979C62A55410AD7A3D0D46050410AD7A3D0C72A55415C8FC2E5D0605041EC51B80EE52A5541AE47E17AC8605041295C8FD2F42A55410AD7A3E0C7605041E17A14CEF62A5541D7A3703DD2605041F6285CCFF42A5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000572F7F73D4605041B929D94CE42A5541BADB2830D3605041CA5F8C13E32A55411459DB2FD3605041F0C7D210E32A554168E3F306D3605041EBA4AFA0E12A5541BA7662F8D2605041CBD2921DE12A5541F4DAF8C6D2605041756426B7E02A554191F410C0D1605041DD9AB9B0DE2A55417794F765D16050410C20B551E12A55415C8FC2E5D0605041EC51B80EE52A5541AE47E17AC8605041295C8FD2F42A55410AD7A3E0C7605041E17A14CEF62A5541D7A3703DD2605041F6285CCFF42A5541572F7F73D4605041B929D94CE42A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>398796 - 2984513
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+010600000001000000010300000001000000050000008FC2F538661C51418FC2F5382367544114AE4771661C5141CDCCCCBC20675441EC51B8CE231C514114AE47A11667544148E17AA4231C514166666606196754418FC2F538661C51418FC2F53823675441
+</a>
+
+<b>
+010600000001000000010300000001000000090000003ACF7B0D231C5141D76A2FC51D6754419DE3E7E13C1C51413F10EECD2167544141B40215571C5141A4B38FE525675441B202E8C7651C51410D54B92E2867544154556438661C5141ABF64D3F23675441BCF4CD7C561C5141F94F00D0206754413D4048BF3D1C51413FE1F2051D675441E5BB2773231C514140D393FE186754413ACF7B0D231C5141D76A2FC51D675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>399023 - 960015
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+010600000001000000010300000001000000090000000AD7A3E075215141D7A370FDBA6F54410AD7A38088215141713D0A47C66F544185EB51A893215141E17A149EB16F544185EB51B89E215141D7A3701D9D6F5441713D0A178A2151419A999989926F5441A4703DAA8521514148E17A44906F54410AD7A3107B21514185EB51E8A36F54416666666670215141AE47E1AAB76F54410AD7A3E075215141D7A370FDBA6F5441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000666666B6992151415C8FC2B5D06F5441B81E859BB02151419A999949A66F5441D7A370BDAB215141AE47E1CAA36F5441ED71D1D59E215141328D912C9D6F544108D0786C88215141CD3CD13AC66F54417B14AE0795215141F6285CDFCD6F5441666666B6992151415C8FC2B5D06F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>399047 - 3374563
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000000D0000005C8FC285232151413D0AD79349705441C3F5285C28215141AE47E1BA3F705441A4703D5A292151415C8FC2B53D705441000000E028215141000000903D705441713D0A77EA205141333333532A7054415C8FC265E9205141EC51B82E2E7054417B14AE17E72051413D0AD7B33470544148E17A14FD205141E17A148E3B705441B81E850B0D215141713D0A3740705441F6285CBF15215141000000F042705441CDCCCCFC1A2151415C8FC2F5447054411F85EB211D21514185EB51E8457054415C8FC285232151413D0AD793497054410103000000010000001A000000EC51B8 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000E29FA3CF12215141A69934BB55705441FBEA4B15112151416ECAAEF6547054410E995BDF10215141D826B8DE54705441C3F5283CFD205141D7A370FD4E705441E296CB9CFB20514138247D844E705441E3B715AEF52051413A0E53C84C705441E2B884CBEF205141575B52F84A7054412695E17AE82051411580717D6870544193C4D673EB2051419BBB48A16870544138BF21D4ED20514142BB7B8664705441E9E6097FEE205141D656AA5A647054419FD644AAEF205141A8D7D40164705441F939C8E3EF205141FB6AE72A647054414DDFA5D0F6205141E4FCC73C63705441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>45552 - 365909
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000300000001030000000100000048000000E339DA5D30DE50414D878498B2F754416ADF7B9A31DE50417973CC88B0F754416C5193D92FDE50416E48292AB3F75441FEBC829331DE504101B418E4B4F754415EF1B7F531DE50419F1F089EB6F7544141444FF933DE5041433BE549B7F75441248CE80A32DE5041AE31047FB6F754414DBBD59E31DE504186A2BDE9B4F75441C7E3051032DE5041046E027CB6F754418EB9859A33DE5041334CB910B7F754417D289DEE33DE5041746AA827B7F75441A7B1246336DE5041F3FDADCEB7F7544155A0C87438DE504197583F9EB8F75441AA1B66563ADE50414BB57D83B8F75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000914C03BB47DE5041824E0E34A4F75441049101F344DE50410C1D5EC7A4F75441E406B09741DE5041106D70D5A5F754416E4829DA3DDE50417FEE3250A6F754413921385839DE5041C4D5DA99A6F75441642E7C3835DE504109BD82E3A6F754417F7B095135DE5041FC5CA7FFA8F75441CB129F8C34DE50414781138CACF754410CAA34C833DE5041680B65E7AFF75441B0C5117434DE50410E14F4C7B2F7544157CEA05437DE50412F9E4523B6F7544133714A663ADE504167251289B8F754416B6B407B38DE504181729FA1B8F754414E31012E36DE5041B2BCA7C4B7F75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>45552 - 1527257
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000300000001030000000100000048000000E339DA5D30DE50414D878498B2F754416ADF7B9A31DE50417973CC88B0F754416C5193D92FDE50416E48292AB3F75441FEBC829331DE504101B418E4B4F754415EF1B7F531DE50419F1F089EB6F7544141444FF933DE5041433BE549B7F75441248CE80A32DE5041AE31047FB6F754414DBBD59E31DE504186A2BDE9B4F75441C7E3051032DE5041046E027CB6F754418EB9859A33DE5041334CB910B7F754417D289DEE33DE5041746AA827B7F75441A7B1246336DE5041F3FDADCEB7F7544155A0C87438DE504197583F9EB8F75441AA1B66563ADE50414BB57D83B8F75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000914C03BB47DE5041824E0E34A4F75441049101F344DE50410C1D5EC7A4F75441E406B09741DE5041106D70D5A5F754416E4829DA3DDE50417FEE3250A6F754413921385839DE5041C4D5DA99A6F75441642E7C3835DE504109BD82E3A6F754417F7B095135DE5041FC5CA7FFA8F75441CB129F8C34DE50414781138CACF754410CAA34C833DE5041680B65E7AFF75441B0C5117434DE50410E14F4C7B2F7544157CEA05437DE50412F9E4523B6F7544133714A663ADE504167251289B8F754416B6B407B38DE504181729FA1B8F754414E31012E36DE5041B2BCA7C4B7F75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>45552 - 4200663
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000300000001030000000100000048000000E339DA5D30DE50414D878498B2F754416ADF7B9A31DE50417973CC88B0F754416C5193D92FDE50416E48292AB3F75441FEBC829331DE504101B418E4B4F754415EF1B7F531DE50419F1F089EB6F7544141444FF933DE5041433BE549B7F75441248CE80A32DE5041AE31047FB6F754414DBBD59E31DE504186A2BDE9B4F75441C7E3051032DE5041046E027CB6F754418EB9859A33DE5041334CB910B7F754417D289DEE33DE5041746AA827B7F75441A7B1246336DE5041F3FDADCEB7F7544155A0C87438DE504197583F9EB8F75441AA1B66563ADE50414BB57D83B8F75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000914C03BB47DE5041824E0E34A4F75441049101F344DE50410C1D5EC7A4F75441E406B09741DE5041106D70D5A5F754416E4829DA3DDE50417FEE3250A6F754413921385839DE5041C4D5DA99A6F75441642E7C3835DE504109BD82E3A6F754417F7B095135DE5041FC5CA7FFA8F75441CB129F8C34DE50414781138CACF754410CAA34C833DE5041680B65E7AFF75441B0C5117434DE50410E14F4C7B2F7544157CEA05437DE50412F9E4523B6F7544133714A663ADE504167251289B8F754416B6B407B38DE504181729FA1B8F754414E31012E36DE5041B2BCA7C4B7F75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>399599 - 4070820
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000007000000000000F0E43A5141666666C6FEAD544166666676E23A5141A4703D5A20AE5441AE47E10AE03A5141C3F5282C41AE5441AE47E18AEF3A51417B14AEA742AE5441EC51B8FEF13A51413D0AD76321AE544133333383F43A5141B81E853BFFAD5441000000F0E43A5141666666C6FEAD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000000000F0E43A5141666666C6FEAD544165584496E33A5141B83FD81811AE544160E2A4BCE23A5141E51143A11CAE5441FA32BD12E23A5141660CD7A125AE5441632DE77AE13A514163A409AD2DAE5441AE47E10AE03A5141C3F5282C41AE5441AE47E18AEF3A51417B14AEA742AE5441EC51B8FEF13A51413D0AD76321AE544133333383F43A5141B81E853BFFAD5441000000F0E43A5141666666C6FEAD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>420037 - 3038563
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000F0000000AD7A3C08B1A5141C3F5286CCB4A5441AE47E1CA911A5141E17A147EC94A54411F85EB11981A5141CDCCCC7CC74A5441E17A145E9E1A51419A999979C54A54413D0AD7B3A41A514133333373C34A5441A4703D0AAB1A5141CDCCCC6CC14A544152B81E65B11A514152B81E65BF4A544152B81ED5B71A514166666656BD4A544114AE47B1BD1A5141713D0A77BB4A54411F85EB81C91A51410AD7A3B0B74A5441C3F528ACC21A51418FC2F538A44A5441D7A3709D791A514152B81ED5BB4A54415C8FC2E57E1A51417B14AE87CF4A54413D0AD7237F1A514133333373CF4A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000009000000AE47E18A741A5141713D0AE7A84A54414896DB227F1A51414F278673CF4A544191069F139D1A5141D48334E3C54A5441B96A2109BD1A5141EA35C5ACBB4A5441BF24FA7BC91A5141CCA4B69FB74A5441C3F528ACC21A51418FC2F538A44A5441EC51B82EBC1A5141000000C0914A5441CDCCCC7C981A51418FC2F5489D4A5441AE47E18A741A5141713D0AE7A84A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>971413 - 394123
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000025000000295C8F4297BC50418FC2F5682DE85441666666C68DBC5041F6285C2F29E854412F7B89608DBC50411EC156F628E85441E39C4CD68CBC50418DADE5CA28E8544169C8D9D08ABC5041D9615A6E30E854410A2069FE88BC5041B5EE45EF36E85441F7E8B04A87BC5041C298BB0936E85441F6285C3F86BC504152B81E6535E85441A4703D8A7FBC5041CDCCCCEC4EE8544148E17A2486BC5041A4703D2A50E854410AD7A37082BC50413D0AD7E359E854411F85EB218ABC504152B81E055DE854413333335390BC5041A4703D7A5EE85441EC51B8AE9ABC50413D0AD7735EE85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000F829701A86BC504134B19D4450E85441A6E9FBAF85BC50416C6FE09851E85441ACB45CAE84BC5041BC683E2B54E85441A9C9E55F83BC504144B4676F57E854412D18851E83BC5041185D201B58E854410AD7A37082BC50413D0AD7E359E854412442C87283BC5041181EE04C5AE85441310AE9A783BC504121237E625AE854413E209DAF84BC5041A37DCACD5AE854418CBD78B689BC5041E59F57C75CE85441D5CE0DAA8EBC50414DE32C165EE854416DC3AAEF8EBC5041CF528F265EE85441D07D18C28FBC50413B6416585EE85441BF420BD29ABC50413B6416585EE85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423029 - 194893
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001700000048E17A74BB0E514148E17A24D0F754419A9999E9BF0E5141EC51B83ECAF75441D7A3703DBE0E5141F6285CAFC8F754418FC2F588BA0E514114AE4751C5F754419A999949B70E51410AD7A360C2F7544114AE47E1B40E5141D7A3701DC0F75441C3F528CCB10E51410AD7A340BDF75441C3F5288CAF0E514114AE4761BBF75441713D0A57AE0E5141B81E858BBAF754411F85EB41AB0E51411F85EB71B8F754419A999919A80E51413D0AD7B3B6F7544148E17AC4A60E514114AE4761B8F75441A4703DDAA50E514114AE47F1B9F754419A999989A50E514148E17A54BBF75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002800000038EF9AA8A60E51411F61E190B8F75441E5751E9BA60E514156FFE8A7B8F7544163B9A399A60E51412BBF6FAAB8F75441DC02B682A60E5141E82997D1B8F7544198081D7FA60E51410EDFBBD7B8F754413A631A6FA60E5141DBEC12F3B8F75441BD47C76BA60E5141AA51C0F8B8F7544140CD3DDAA50E51410C5747F1B9F75441990E5FC2A50E514161766A5ABAF754419A999989A50E514148E17A54BBF75441C1E978C1AB0E5141C5C725A7BFF754417B7071E8AB0E5141919A38DBBFF75441295C8F02AC0E51417B14AEE7BFF75441F5CD052CAC0E5141C6A4FD0CC0F75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>400748 - 3079198
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000062000000333333D3050351413D0AD7F378F75441F6285CDF06035141713D0A3777F75441C3F5286C0703514114AE478175F754410000009007035141EC51B83E74F75441295C8F920703514148E17AF472F75441000000800703514185EB517871F75441666666F60603514148E17A546DF7544114AE4731060351415C8FC29567F75441E17A14EE05035141EC51B86E65F754419A9999C9050351417B14AEF763F754419A9999C90503514114AE47E162F754410AD7A3E0050351416666663661F75441CDCCCCFC050351415C8FC2655EF75441EC51B83E060351417B14AEF759F75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000A75D891F14035141B9F94B641DF754410CC5F25E1E0351416C8BC7D817F754417650B6811D035141A51F130615F7544106D888E61C035141B60D4B5B12F75441CD1BF2981C035141BB6FFEA00FF75441AB77646A1C035141CB5D36F60CF75441FA4B04D71C035141683E584B08F754413E941F341D03514118A29A5A02F7544198F443B01D035141F8CAD70CFEF65441485886BF170351419E6AB390FDF65441C9BEEBAF1503514110ABFEAF03F75441A1F08CB7120351419E2D24B80CF75441D382523B1003514162D7F7A814F754412DE376B710035141A0BD5FC017F75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>401167 - 1606630
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000003D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C29554152B81E3500625041713D0AE79C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000446AAD4D006250419CA2C5E69C2955411D116A24FA615041396A8855A029554113C6A342F86150410B730BFD9C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C295541446AAD4D006250419CA2C5E69C295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>401167 - 3148390
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000003D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C29554152B81E3500625041713D0AE79C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541
+</a>
+
+<b>
+0106000000010000000103000000010000000500000013C6A342F86150410B730BFD9C2955411D116A24FA615041396A8855A0295541446AAD4D006250419CA2C5E69C29554152B81E3500625041713D0AE79C29554113C6A342F86150410B730BFD9C295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>401167 - 3408798
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000003D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C29554152B81E3500625041713D0AE79C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000446AAD4D006250419CA2C5E69C2955411D116A24FA615041396A8855A029554113C6A342F86150410B730BFD9C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C295541446AAD4D006250419CA2C5E69C295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>401167 - 3409349
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000003D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C29554152B81E3500625041713D0AE79C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541
+</a>
+
+<b>
+0106000000010000000103000000010000000500000013C6A342F86150410B730BFD9C2955411D116A24FA615041396A8855A0295541446AAD4D006250419CA2C5E69C29554152B81E3500625041713D0AE79C29554113C6A342F86150410B730BFD9C295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960487 - 960495
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000DD872898FD585141C82D91567BBB54410AD7A380FC585141333333137CBB5441713D0AE7FD58514114AE47D17FBB54417B14AED7FF585141CDCCCC7C82BB5441295C8FB2015951411F85EBA183BB54411F85EB3105595141CDCCCC8C85BB544148E17AB40759514148E17AB486BB544152B81E9507595141CDCCCC5C85BB54413D0AD7430B595141D7A370ED84BB5441713D0A870B5951410AD7A34086BB5441AE47E15A115951419A99999984BB5441F6285C5F1A59514114AE47C181BB54413D0AD7631D595141AE47E1BA7FBB5441666666E622595141295C8FB276BB5441 [...]
+</a>
+
+<b>
+01060000000200000001030000000100000042000000DD898464F2585141B656351A5ABB54411FFF4804F4585141EB75F4635BBB54418988F5D0F558514184FE91085DBB544187244FD1F65851416007A1F25DBB5441D3896F2EFA585141A86E532C60BB54413ECA7A3DFB585141E14F98D060BB5441705E3751FC585141D944B57761BB5441D9D98774FE5851414D01A21E63BB5441BDBA0294FF5851415AC6C6FC63BB5441355A94CBFF585141B0CD3C4264BB54412EE9A9FA0059514167C017BD65BB544173615A5B01595141BE56F43566BB54410498182A025951413AD1D9AD67BB54419A0FC0FC02595141EDC1DB2C69BB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>894883 - 3333084
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000002000000010300000001000000210000008FC2F528056A5141F6285CAFDCAC54413D0AD773046A514133333343DCAC544148E17AA4FC6951419A9999E9E6AC54415C8FC235FD695141A4703D2AE7AC5441C3F528BC056A51417B14AEF7EAAC5441666666F6056A51411F85EB11EBAC54413D0AD7F30A6A51413D0AD733EDAC544148E17AE40D6A5141000000B0EEAC54415C8FC2A5116A51413D0AD763F0AC5441EC51B89E126A51410AD7A3A0F0AC54418FC2F578146A5141C3F5287CF1AC544152B81E15156A51411F85EBF1F1AC5441B81E85AB156A514100000000F1AC5441CDCCCC3C166A5141F6285C3FF0AC5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000130000007686E695276A5141DF4A036D19AD544105148A1F2A6A51415F95DF9F13AD5441C9CB83972C6A514151E435FB0DAD54411AA855122E6A51413CD436990AAD5441A9BCABE62E6A5141EC40C9B308AD5441E25D03AE216A51415AE661A10CAD544148C92E0F226A51412B9B1D3D0EAD54416879F4A0226A5141677BCAA610AD544151C419B1226A5141B388712113AD544193905FB4226A5141296861A913AD5441672BE7B6226A5141A02B751214AD544100F0D7BC226A51412DC9350915AD5441E1FD3BCB226A51412A80F75E17AD544128FFC5EA226A5141FEB2446819AD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943907 - 19058
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000EC51B88E80C05041713D0A873D385441A4703DAA81C05041B81E85EB353854419A99991983C050417B14AE372F385441000000C081C050416666660627385441000000C080C050410AD7A32027385441713D0A5770C05041F6285CCF28385441D7A3704D72C05041F6285CBF2D385441713D0A2773C05041C3F528CC36385441333333B372C0504148E17A343E3854419A9999796FC0504114AE47314D385441E17A146E6DC05041EC51B82E52385441E17A146E70C05041A4703D4A5A3854419A9999B977C050413D0AD7A3593854413D0AD7D379C05041666666864F385441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000C9DA110F7EC05041289BAB8E4338544157CBE34380C05041828E9F3B3E385441019A19497DC050412F4C1CF541385441544F8FC67AC0504146B76E67473854419DFD08D27AC05041D43E6D234A385441D8E59D817AC050419D0CE08C4B38544199271B9C79C05041333A4F6B4E38544153BB405779C05041E9C67FBC51385441C3033DBA77C05041D171EF8E59385441E6414D4079C05041743FA2D158385441721A02CA79C0504172F8D1504F385441B886DC0E7AC050415A47683D4E385441BA6DFF267AC050415E8241FB4D385441B06362DB7AC0504176161BA24A385441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943907 - 65501
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000012000000EC51B88E80C05041713D0A873D385441A4703DAA81C05041B81E85EB353854419A99991983C050417B14AE372F385441000000C081C050416666660627385441000000C080C050410AD7A32027385441713D0A5770C05041F6285CCF28385441D7A3704D72C05041F6285CBF2D385441713D0A2773C05041C3F528CC36385441333333B372C0504148E17A343E3854419A9999796FC0504114AE47314D385441E17A146E6DC05041EC51B82E52385441E17A146E70C05041A4703D4A5A3854419A9999B977C050413D0AD7A3593854413D0AD7D379C05041666666864F385441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000C9DA110F7EC05041289BAB8E4338544157CBE34380C05041828E9F3B3E385441019A19497DC050412F4C1CF541385441544F8FC67AC0504146B76E67473854419DFD08D27AC05041D43E6D234A385441D8E59D817AC050419D0CE08C4B38544199271B9C79C05041333A4F6B4E38544153BB405779C05041E9C67FBC51385441C3033DBA77C05041D171EF8E59385441E6414D4079C05041743FA2D158385441721A02CA79C0504172F8D1504F385441B886DC0E7AC050415A47683D4E385441BA6DFF267AC050415E8241FB4D385441B06362DB7AC0504176161BA24A385441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>895052 - 2567602
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000003D0AD713656F51411F85EB61E3A65441A4703D2A666F5141F6285C6FE3A6544152B81E95646F5141666666D6DAA654418FC2F5A8626F514166666666D0A65441AE47E1FA5E6F5141713D0A67D0A65441B81E85FB556F5141F6285C6FD0A65441D7A3708D506F5141D7A3702DD0A654415C8FC245496F514166666686CFA654410AD7A370446F5141E17A14DECEA65441AE47E10A396F51415C8FC245CDA65441B81E854B366F5141000000F0D5A654415C8FC2C5336F5141D7A3700DDCA6544114AE47B1326F514114AE4721DEA6544166666686306F5141295C8F52E2A65441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000640000008E85B63B5E6F51419B170E1DB6A65441F5E219FC5C6F5141C4322AB3AEA65441E300D91D5C6F51415046668BA9A654412E1177C15B6F51417E6D9EBDA7A6544126E54B0C596F51413AB86C7CA8A65441BE48AC41556F514126947667A9A654414F68C4B64C6F51419BDF95E1ABA654410EFF82EC466F5141FD80AE27ADA65441EAF493FC426F5141F1A65345ADA6544157C2030F426F51415E30952BADA654416C1DA0D2416F51416E48E7F5ACA65441A83AE0F3406F5141F6669014ADA6544190A509E33F6F51418BBB895AACA654419D3C970A3F6F5141E25D2A7BABA65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>895052 - 3324649
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000003D0AD713656F51411F85EB61E3A65441A4703D2A666F5141F6285C6FE3A6544152B81E95646F5141666666D6DAA654418FC2F5A8626F514166666666D0A65441AE47E1FA5E6F5141713D0A67D0A65441B81E85FB556F5141F6285C6FD0A65441D7A3708D506F5141D7A3702DD0A654415C8FC245496F514166666686CFA654410AD7A370446F5141E17A14DECEA65441AE47E10A396F51415C8FC245CDA65441B81E854B366F5141000000F0D5A654415C8FC2C5336F5141D7A3700DDCA6544114AE47B1326F514114AE4721DEA6544166666686306F5141295C8F52E2A65441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000640000008E85B63B5E6F51419B170E1DB6A65441F5E219FC5C6F5141C4322AB3AEA65441E300D91D5C6F51415046668BA9A654412E1177C15B6F51417E6D9EBDA7A6544126E54B0C596F51413AB86C7CA8A65441BE48AC41556F514126947667A9A654414F68C4B64C6F51419BDF95E1ABA654410EFF82EC466F5141FD80AE27ADA65441EAF493FC426F5141F1A65345ADA6544157C2030F426F51415E30952BADA654416C1DA0D2416F51416E48E7F5ACA65441A83AE0F3406F5141F6669014ADA6544190A509E33F6F51418BBB895AACA654419D3C970A3F6F5141E25D2A7BABA65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>895410 - 3574466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000038000000E17A147E577F51411F85EB71FDA55441333333F3587F514152B81EC5FDA55441F6285C5F5A7F5141E17A141EFEA554410AD7A3E05B7F5141295C8F72FEA5544185EB51985D7F5141B81E851BFFA554418FC2F5185F7F51415C8FC2C5FFA554417B14AE17617F5141EC51B87E00A65441D7A3709D617F5141000000B0FEA5544100000060617F514148E17AB4FDA55441CDCCCCEC607F5141F6285CCFFCA55441EC51B84E607F51411F85EB81FBA554410AD7A3A05F7F51413D0AD773FAA554415C8FC2255F7F5141713D0AA7F9A55441713D0A375E7F5141D7A370DDF8A55441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000040000000332DC408527F5141CD2E5124FAA55441CB88DB94527F5141C0503B95F9A5544160A53E03537F51415D387C24F9A554411D5A646B537F514108AC1CBAF8A55441AD387BA3537F5141C5BF8B63F8A554416DE331D5537F514177E7D116F8A5544154E7BF22547F514168FC1F9FF7A554418E9BD254557F5141D65EBEC6F5A55441CB171CC2557F5141D100131EF5A554411700DF51567F5141A05CED29F4A554410B059F47577F514183D76E6DF1A55441553A3B5D577F5141AAA6D52FF1A554411904567E577F5141FED478D1F0A554410AD7A3E0567F5141B81E856BF0A55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>896444 - 3141514
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001E00000048E17AA4FD6C5141333333235A96544166666646FE6C51410AD7A3A0659654418FC2F548FD6C51417B14AE8772965441E17A142EFD6C514133333333749654417B14AEB7FB6C51411F85EB718B96544152B81E55FA6C5141D7A3709D9496544185EB5158F86C51417B14AE57A09654413D0AD793F66C5141EC51B83EA796544148E17AA4F36C514114AE4731B1965441AE47E15AF46C5141EC51B80EB29654415C8FC2D5156D5141EC51B8FEAE96544152B81ED52B6D5141CDCCCCFCAC96544148E17A44476D5141B81E857BAA965441F6285CBF656D5141295C8FB2A7965441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000AE47E15AF46C5141EC51B80EB2965441F6285CBF656D5141295C8FB2A796544133333353666D5141AE47E1BAA69654419854D264656D5141E30B3014A5965441D7F9E6AA636D51413CA69304A296544173C4B227626D514164B5FC559F9654411930C5B55F6D5141869A17009B965441AD6D79B25E6D5141C1154F34999654410144F367596D5141EB82A99C8E965441145FA97F556D5141961F83A8869654418F5CF157536D51413ABE4514819654410C0C6AF4506D514168CF9DC27A9654419C0F20E5506D5141F125F6987A965441F5E2E605FD6C514167D12BC081965441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>898261 - 2952727
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000031000000D7A3702DF36B5141666666D67DA15441C3F5287CFA6B51418FC2F5287FA1544148E17AD4FB6B514152B81E657EA15441A4703D7AFC6B5141AE47E1DA7CA15441AE47E1FAFB6B5141713D0A4778A15441C3F528BCFA6B5141333333B373A154419A999949FA6B51418FC2F56871A1544166666696FA6B5141F6285CDF6EA15441E17A14EEFB6B5141EC51B8BE6AA15441CDCCCC2CFD6B51417B14AE3766A154415C8FC245FD6B51415C8FC29562A15441CDCCCC2CFD6B5141666666A65FA15441666666C6FC6B51418FC2F5685DA15441E17A142EFC6B5141B81E85AB5BA15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000007D000000DCC05CEFA76B51414E1B189D36A1544119E9927FA36B51416BF3DF6532A1544181B75416936B5141B506E1CD22A15441597E134A866B5141EE28CDA416A15441F92B1B1D826B5141409112AD12A154418BAF15F87D6B5141AD76E5BC0EA15441C3F5282C786B5141AE47E13A09A1544148E17A14776B5141295C8FB209A15441C3F5280C776B5141B81E853B14A15441B81E850B786B5141B81E853B19A15441778403D4786B5141D45A9F962AA15441BA47FF56796B5141612D52ED35A154418FC2F5087A6B514152B81E5545A1544114AE47817B6B51411F85EB8147A15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>898261 - 3394804
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000031000000D7A3702DF36B5141666666D67DA15441C3F5287CFA6B51418FC2F5287FA1544148E17AD4FB6B514152B81E657EA15441A4703D7AFC6B5141AE47E1DA7CA15441AE47E1FAFB6B5141713D0A4778A15441C3F528BCFA6B5141333333B373A154419A999949FA6B51418FC2F56871A1544166666696FA6B5141F6285CDF6EA15441E17A14EEFB6B5141EC51B8BE6AA15441CDCCCC2CFD6B51417B14AE3766A154415C8FC245FD6B51415C8FC29562A15441CDCCCC2CFD6B5141666666A65FA15441666666C6FC6B51418FC2F5685DA15441E17A142EFC6B5141B81E85AB5BA15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000007D000000DCC05CEFA76B51414E1B189D36A1544119E9927FA36B51416BF3DF6532A1544181B75416936B5141B506E1CD22A15441597E134A866B5141EE28CDA416A15441F92B1B1D826B5141409112AD12A154418BAF15F87D6B5141AD76E5BC0EA15441C3F5282C786B5141AE47E13A09A1544148E17A14776B5141295C8FB209A15441C3F5280C776B5141B81E853B14A15441B81E850B786B5141B81E853B19A15441778403D4786B5141D45A9F962AA15441BA47FF56796B5141612D52ED35A154418FC2F5087A6B514152B81E5545A1544114AE47817B6B51411F85EB8147A15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>799215 - 162271
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000200000022000000CF261D377AFB50411CF287DB2F89544144059ACD7FFB5041D8FD55AA318954411F85EBD180FB5041EC51B83E2B89544152B81ED582FB504114AE47A12B8954413333333384FB5041A4703D9A27895441AE47E1AA82FB50413D0AD7A327895441EC51B83E7CFB5041EC51B8BE0F895441D7A3708D75FB504152B81EC50C895441713D0A876BFB50418FC2F588098954419A9999196CFB504114AE479105895441F6285C3F6FFB504100000000F6885441E17A148E6FFB50410AD7A390F08854418FC2F52872FB5041CDCCCCBCE988544114AE470177FB504166666626E4885441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000210000001F85EBC16EFB504114AE4701EF8854411F85EBD165FB504133333303078954417862068C65FB50419B4594BC0789544174A5D28565FB5041170778CD078954416666668665FB5041D7A370CD078954416C7607C25FFB50413E50593A178954417CF885CD5FFB5041C2F0383D17895441FDF197D866FB50410B66E6070F895441F83B2CED69FB5041F6E7CE760B89544198D48A886BFB5041747F8C7E098954419A9999196CFB504114AE479105895441EE11BD3A6FFB5041C08CDB16F6885441E83A267E6FFB5041B9C71FE0F08854419716B38B6FFB50411DB7B6BAF0885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>898997 - 3059403
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000570000007B14AEE795815141EC51B88EAF97544100000070958151410AD7A320AF975441CDCCCC5C8E8151419A999999A89754413D0AD7237E81514166666626DE975441666666867F8151410AD7A3E0DE97544152B81EF58081514185EB5198DF975441A4703DFA81815141295C8F02E09754418FC2F568838151419A999989E09754417B14AEA784815141A4703DEAE0975441CDCCCCDC8581514114AE4741E1975441EC51B82E878151411F85EBA1E1975441295C8FA2898151418FC2F558E29754413D0AD7C38A815141333333C3E2975441F6285CBF8B8151410AD7A310E3975441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000A3EC8D5A9181514140591892DB975441713D0A0791815141D7A3709DDC9754419A9999B990815141B81E85ABDD975441295C8F6290815141713D0AD7DE9754415C8FC21590815141C3F528DCDF9754411F85EBD18F815141D7A370FDE097544114AE47718F815141295C8F32E29754410AD7A3108F8151410AD7A3E0E29754419A9999898E815141E17A145EE39754415C8FC2E58D81514185EB51C8E3975441F6285C1F90815141000000E0E4975441C3F5283C9281514152B81EE5E59754417B14AE67938151418FC2F558E697544152B81EE59381514100000080E6975441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>898997 - 3343688
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000570000007B14AEE795815141EC51B88EAF97544100000070958151410AD7A320AF975441CDCCCC5C8E8151419A999999A89754413D0AD7237E81514166666626DE975441666666867F8151410AD7A3E0DE97544152B81EF58081514185EB5198DF975441A4703DFA81815141295C8F02E09754418FC2F568838151419A999989E09754417B14AEA784815141A4703DEAE0975441CDCCCCDC8581514114AE4741E1975441EC51B82E878151411F85EBA1E1975441295C8FA2898151418FC2F558E29754413D0AD7C38A815141333333C3E2975441F6285CBF8B8151410AD7A310E3975441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000A3EC8D5A9181514140591892DB975441713D0A0791815141D7A3709DDC9754419A9999B990815141B81E85ABDD975441295C8F6290815141713D0AD7DE9754415C8FC21590815141C3F528DCDF9754411F85EBD18F815141D7A370FDE097544114AE47718F815141295C8F32E29754410AD7A3108F8151410AD7A3E0E29754419A9999898E815141E17A145EE39754415C8FC2E58D81514185EB51C8E3975441F6285C1F90815141000000E0E4975441C3F5283C9281514152B81EE5E59754417B14AE67938151418FC2F558E697544152B81EE59381514100000080E6975441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899053 - 1173608
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000170000009A999909DB6251413D0AD7938BA35441000000B0D0625141295C8F1296A3544100000060CF6251419A9999F996A354411F85EB11CC625141F6285CEF96A35441C3F5288CC9625141AE47E18A9AA3544148E17AF4C3625141F6285C6F9FA354413D0AD773BB625141D7A3705DA6A35441D7A3705DB2625141D7A3705DACA35441E17A147EAB6251410AD7A3A0AFA35441D7A3703DAD6251419A999969B3A3544100000040B26251413D0AD7E3B2A35441B81E857BB8625141713D0A27B0A3544185EB51C8BD625141EC51B84EACA35441B81E85BBC2625141F6285CFFA7A35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000009A999909DB6251413D0AD7938BA35441000000B0D0625141295C8F1296A3544100000060CF6251419A9999F996A3544194D3E7FECB625141C2968D0A97A3544147632915CB6251410D44D65898A3544183492E5ACA62514110633E6499A354418D3B8392C8625141F49347659BA354415F13BCC5C26251414F291D66A0A354412E7D659DBB625141B3B9913BA6A35441070FEAA7B3625141C8C13E83ABA35441560FBBEDB1625141A56D7892ACA35441D9081A5DB162514191E020D7ACA35441A5C10985AB62514183FFB5AFAFA354410E2CEA6BAD6251411ECAC064B3A35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899053 - 3277169
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000170000009A999909DB6251413D0AD7938BA35441000000B0D0625141295C8F1296A3544100000060CF6251419A9999F996A354411F85EB11CC625141F6285CEF96A35441C3F5288CC9625141AE47E18A9AA3544148E17AF4C3625141F6285C6F9FA354413D0AD773BB625141D7A3705DA6A35441D7A3705DB2625141D7A3705DACA35441E17A147EAB6251410AD7A3A0AFA35441D7A3703DAD6251419A999969B3A3544100000040B26251413D0AD7E3B2A35441B81E857BB8625141713D0A27B0A3544185EB51C8BD625141EC51B84EACA35441B81E85BBC2625141F6285CFFA7A35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000009A999909DB6251413D0AD7938BA35441000000B0D0625141295C8F1296A3544100000060CF6251419A9999F996A3544194D3E7FECB625141C2968D0A97A3544147632915CB6251410D44D65898A3544183492E5ACA62514110633E6499A354418D3B8392C8625141F49347659BA354415F13BCC5C26251414F291D66A0A354412E7D659DBB625141B3B9913BA6A35441070FEAA7B3625141C8C13E83ABA35441560FBBEDB1625141A56D7892ACA35441D9081A5DB162514191E020D7ACA35441A5C10985AB62514183FFB5AFAFA354410E2CEA6BAD6251411ECAC064B3A35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261893 - 2943241
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F0000008FC2F5184C6F51419A999969033954413D0AD783346F5141D7A3701D08395441B81E85FB1C6F5141E17A14CE0C395441EC51B84E116F51411F85EB210F3954411F85EBC1126F5141AE47E16A15395441CDCCCC7C116F51419A99998915395441D7A3707D0F6F5141000000D0143954415C8FC2350A6F5141C3F5288C10395441D7A370DD076F51413D0AD70311395441CDCCCC8C116F514185EB5188173954417B14AE471E6F514133333343183954413D0AD7732E6F51418FC2F5B818395441CDCCCC9C3F6F5141AE47E1DA1C39544148E17AB4476F5141E17A14CE1E395441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000002900000069235AD3FC6E514169F06A3613395441C1DEF14E026F5141AE5BD23810395441A98ECAFC046F514104882C8A0E395441179063BB066F51410F2BADAB0C39544162193DEB066F5141B9FE525A0E395441798933060A6F51413F2DA49510395441BF36A71C0A6F514164512A91103954415C8FC2350A6F5141C3F5288C103954412DDEB94E116F5141AC3AF2210F395441B81E85FB1C6F5141E17A14CE0C395441EDCC3D82206F5141DF2D2B1A0C39544135BE22B3396F514166D1C4140739544121D5203A436F514131126B2E05395441E38B73014C6F514181AB496E03395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>261893 - 3810164
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F0000008FC2F5184C6F51419A999969033954413D0AD783346F5141D7A3701D08395441B81E85FB1C6F5141E17A14CE0C395441EC51B84E116F51411F85EB210F3954411F85EBC1126F5141AE47E16A15395441CDCCCC7C116F51419A99998915395441D7A3707D0F6F5141000000D0143954415C8FC2350A6F5141C3F5288C10395441D7A370DD076F51413D0AD70311395441CDCCCC8C116F514185EB5188173954417B14AE471E6F514133333343183954413D0AD7732E6F51418FC2F5B818395441CDCCCC9C3F6F5141AE47E1DA1C39544148E17AB4476F5141E17A14CE1E395441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000002900000069235AD3FC6E514169F06A3613395441C1DEF14E026F5141AE5BD23810395441A98ECAFC046F514104882C8A0E395441179063BB066F51410F2BADAB0C39544162193DEB066F5141B9FE525A0E395441798933060A6F51413F2DA49510395441BF36A71C0A6F514164512A91103954415C8FC2350A6F5141C3F5288C103954412DDEB94E116F5141AC3AF2210F395441B81E85FB1C6F5141E17A14CE0C395441EDCC3D82206F5141DF2D2B1A0C39544135BE22B3396F514166D1C4140739544121D5203A436F514131126B2E05395441E38B73014C6F514181AB496E03395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>402561 - 1290235
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F32312D51419A999959F2EC54419A9999892B2D514185EB5158EFEC5441AE47E18A222D51410AD7A3C0EAEC5441CDCCCC6C0B2D5141F6285CDFD6EC544133333333062D514166666656D2EC544133333393052D514166666696D2EC544114AE47C1032D5141D7A370ADD3EC5441F6285C6FFF2C514148E17AA4D4EC54415C8FC215FB2C514133333323D5EC5441713D0A37F92C51417B14AE07D8EC544114AE47A1F92C5141F6285CAFD9EC54419A9999B9092D514114AE47C1E6EC544148E17A74112D5141C3F528ECECEC5441C3F5280C192D51413D0AD7A3F3EC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000A4703D9A3A2D5141F6285C5F20ED5441D7A3701D3E2D51417B14AE771DED544166666646432D514148E17A7419ED54413A0AE55F412D514104DA225017ED544104570901402D51416725945A16ED54410A3D8F5F3D2D51413492078914ED544113450E2B3A2D5141C5BADBE011ED5441CAE4E9A4342D5141E25801D80CED5441AE307972322D51416B09C0980AED544110FFE2A72F2D51417CCBE1BD07ED5441746C305B2B2D514120101B5803ED544135DEDBEE262D514122D7F9D1FEEC5441D53FD208252D5141D241DDE0FCEC544148007785242D51415BDCD970FCEC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>402561 - 3427508
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F32312D51419A999959F2EC54419A9999892B2D514185EB5158EFEC5441AE47E18A222D51410AD7A3C0EAEC5441CDCCCC6C0B2D5141F6285CDFD6EC544133333333062D514166666656D2EC544133333393052D514166666696D2EC544114AE47C1032D5141D7A370ADD3EC5441F6285C6FFF2C514148E17AA4D4EC54415C8FC215FB2C514133333323D5EC5441713D0A37F92C51417B14AE07D8EC544114AE47A1F92C5141F6285CAFD9EC54419A9999B9092D514114AE47C1E6EC544148E17A74112D5141C3F528ECECEC5441C3F5280C192D51413D0AD7A3F3EC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000A4703D9A3A2D5141F6285C5F20ED5441D7A3701D3E2D51417B14AE771DED544166666646432D514148E17A7419ED54413A0AE55F412D514104DA225017ED544104570901402D51416725945A16ED54410A3D8F5F3D2D51413492078914ED544113450E2B3A2D5141C5BADBE011ED5441CAE4E9A4342D5141E25801D80CED5441AE307972322D51416B09C0980AED544110FFE2A72F2D51417CCBE1BD07ED5441746C305B2B2D514120101B5803ED544135DEDBEE262D514122D7F9D1FEEC5441D53FD208252D5141D241DDE0FCEC544148007785242D51415BDCD970FCEC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>402561 - 28250
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F32312D51419A999959F2EC54419A9999892B2D514185EB5158EFEC5441AE47E18A222D51410AD7A3C0EAEC5441CDCCCC6C0B2D5141F6285CDFD6EC544133333333062D514166666656D2EC544133333393052D514166666696D2EC544114AE47C1032D5141D7A370ADD3EC5441F6285C6FFF2C514148E17AA4D4EC54415C8FC215FB2C514133333323D5EC5441713D0A37F92C51417B14AE07D8EC544114AE47A1F92C5141F6285CAFD9EC54419A9999B9092D514114AE47C1E6EC544148E17A74112D5141C3F528ECECEC5441C3F5280C192D51413D0AD7A3F3EC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000D7A3700DFA2C514114AE4741DBEC5441E17A14AE082D514114AE47B1E7EC544185EB51D8102D5141E17A140EEEEC544152B81E55182D514114AE47C1F4EC54418FC2F588232D514148E17A24FDEC5441E17A14CE332D5141666666860DED5441E17A147E392D5141666666A612ED544114AE47C1402D5141713D0AB717ED544166666646432D514148E17A7419ED54413A0AE55F412D514104DA225017ED544104570901402D51416725945A16ED54410A3D8F5F3D2D51413492078914ED544113450E2B3A2D5141C5BADBE011ED5441CAE4E9A4342D5141E25801D80CED5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>402561 - 71601
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F32312D51419A999959F2EC54419A9999892B2D514185EB5158EFEC5441AE47E18A222D51410AD7A3C0EAEC5441CDCCCC6C0B2D5141F6285CDFD6EC544133333333062D514166666656D2EC544133333393052D514166666696D2EC544114AE47C1032D5141D7A370ADD3EC5441F6285C6FFF2C514148E17AA4D4EC54415C8FC215FB2C514133333323D5EC5441713D0A37F92C51417B14AE07D8EC544114AE47A1F92C5141F6285CAFD9EC54419A9999B9092D514114AE47C1E6EC544148E17A74112D5141C3F528ECECEC5441C3F5280C192D51413D0AD7A3F3EC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000D7A3700DFA2C514114AE4741DBEC5441E17A14AE082D514114AE47B1E7EC544185EB51D8102D5141E17A140EEEEC544152B81E55182D514114AE47C1F4EC54418FC2F588232D514148E17A24FDEC5441E17A14CE332D5141666666860DED5441E17A147E392D5141666666A612ED544114AE47C1402D5141713D0AB717ED544166666646432D514148E17A7419ED54413A0AE55F412D514104DA225017ED544104570901402D51416725945A16ED54410A3D8F5F3D2D51413492078914ED544113450E2B3A2D5141C5BADBE011ED5441CAE4E9A4342D5141E25801D80CED5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>944087 - 5181184
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000000A000000A4703D7A2CC05041E17A145EC9355441295C8F0226C050419A999959C8355441A4703D9A1EC05041000000F0C635544152B81E8518C05041713D0AF710365441E17A14FE1FC05041AE47E1CA1136544148E17AF42BC05041F6285C1F13365441D7A3705D31C05041295C8FB2133654411F85EBA137C0504185EB51F8C9355441713D0AE736C0504148E17AF4C9355441A4703D7A2CC05041E17A145EC93554410B0000007B14AE1725C05041EC51B81ED8355441E17A142E24C050419A9999C9E23554410000008022C050418FC2F538F535544185EB51C821C05041F6285CFF [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000900000052B81E8518C05041713D0AF710365441E17A14FE1FC05041AE47E1CA1136544130E6BC7021C05041BE45111F00365441B175232426C050416EFBE15EC835544120EFFAC61EC05041C70288F8C635544166642D141EC05041E5969E4FCD355441F2DCECF61BC05041D163F70AE735544111ED6CD719C05041C03BABE10036544152B81E8518C05041713D0AF710365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403503 - 1970941
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C0000001F85EBB1ED235141666666F6EBF95441B81E852BED2351410AD7A370E9F954419A999989E3235141295C8FB2EBF9544114AE4701D12351419A999959EEF954419A9999A9CB23514133333323F0F95441C3F5286CC323514148E17A24F4F95441666666B6B8235141D7A3708DF8F95441EC51B87EAF235141A4703D7AFAF95441CDCCCC9CA02351418FC2F54804FA5441CDCCCC6CAB2351413333339313FA54418FC2F568CC235141666666D6FDF954411F85EBB1ED235141666666F6EBF95441
+</a>
+
+<b>
+0106000000010000000103000000010000007C000000BCC89FA8392351413696DB28EBF954419374B1FD3623514127668772EAF95441438B9EF83523514183A09731EAF9544176F08E81302351417DC5B192E9F95441B9D7092A2E2351418BA99A4EE9F954411B98F1652223514118BA55B7E7F95441F41D7113202351414A674E62E7F954415CA0D789122351414529F17FE5F95441F3B2F8B711235141E02A6263E5F95441322E71280A2351414F4C7F46E3F95441EF1E1F8F0223514141090026E1F954414E18DA2401235141A4F9E5B6E0F95441CDFDF34600235141AC626B63E0F95441B4715475FC22514112A4A2F3DEF95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403503 - 3201137
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C0000001F85EBB1ED235141666666F6EBF95441B81E852BED2351410AD7A370E9F954419A999989E3235141295C8FB2EBF9544114AE4701D12351419A999959EEF954419A9999A9CB23514133333323F0F95441C3F5286CC323514148E17A24F4F95441666666B6B8235141D7A3708DF8F95441EC51B87EAF235141A4703D7AFAF95441CDCCCC9CA02351418FC2F54804FA5441CDCCCC6CAB2351413333339313FA54418FC2F568CC235141666666D6FDF954411F85EBB1ED235141666666F6EBF95441
+</a>
+
+<b>
+0106000000010000000103000000010000007C000000BCC89FA8392351413696DB28EBF954419374B1FD3623514127668772EAF95441438B9EF83523514183A09731EAF9544176F08E81302351417DC5B192E9F95441B9D7092A2E2351418BA99A4EE9F954411B98F1652223514118BA55B7E7F95441F41D7113202351414A674E62E7F954415CA0D789122351414529F17FE5F95441F3B2F8B711235141E02A6263E5F95441322E71280A2351414F4C7F46E3F95441EF1E1F8F0223514141090026E1F954414E18DA2401235141A4F9E5B6E0F95441CDFDF34600235141AC626B63E0F95441B4715475FC22514112A4A2F3DEF95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403540 - 3335992
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000002000000350000001F85EB41B00E5141000000409BE85441333333E3A70E5141713D0AC79AE8544114AE4711A00E514152B81E259AE854417B14AEA7980E5141CDCCCC1C99E854413D0AD7438C0E5141EC51B8EE96E85441B81E850B820E5141D7A370DD94E854411F85EB91780E51419A99994993E85441F6285C4F690E5141333333C391E85441C3F528EC650E5141AE47E1AA91E854417B14AE77670E51417B14AEE792E8544166666636690E5141CDCCCCCC94E85441713D0AE76C0E5141A4703D4A99E85441AE47E13A760E514148E17AC4A1E85441EC51B8BE710E5141B81E85DBA2E85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004000000099F456B9C70E5141D370460CB7E85441C39D2C25CC0E514173426C49A0E854415C8FC2C5C40E514152B81E659EE85441E17A14CEBD0E51418FC2F5F89CE854411F85EB41B00E5141000000409BE854412632F9F2A70E5141DCD519C69AE85441B3CF151BA00E5141A866FD4F9AE85441DB5E6FA8980E514140CE953999E854413D0AD7438C0E5141EC51B8EE96E85441B81E850B820E5141D7A370DD94E854410A33F875780E514171A1C26C93E85441BD199D55690E5141D0993EE091E854418666AD39670E51419D58AEE891E8544190B48CFE670E5141C7A771EB92E85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403763 - 1277859
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000002C000000B81E859BAF1251411F85EB31DCDA5441E17A142EB31251413D0AD763DFDA54410AD7A320BA1251411F85EB91DBDA544166666656C412514114AE4791D6DA5441C3F5280CC61251415C8FC225D3DA544185EB51A8C5125141000000D0D0DA5441D7A3707DC31251418FC2F578CDDA5441000000F0C5125141CDCCCC5CCEDA54413D0AD753C8125141CDCCCC5CCEDA5441000000F0C91251418FC2F538CEDA544185EB51E8C81251410AD7A3F0CBDA544152B81E75C5125141AE47E1FAC7DA5441D7A3706DC2125141CDCCCC6CC4DA544152B81E25BF125141AE47E12AC3DA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003600000002616D72B5125141B0885B66DDDA5441FE24A83AC112514171B92917D8DA54413AC7E7F5C312514170B9B43DD7DA5441367B3932C6125141A1517478D9DA5441AD9962F9C71251414EC66A86DDDA5441FB461253C8125141F6A77FA6DDDA5441E819A5E3C91251417DD20FBEDDDA54410F04C668CB12514106A4F3D4DDDA5441BCC019C7CF125141A9C9E3A4DADA54414CEF66AECE12514116A51C9AD9DA544105656EB6CC1251413E6322BBD7DA54417BCE9F14CC125141011E683AD4DA5441164C7CBEC8125141ECE2D18DCCDA5441B3A8D7DFC412514178BED9E4C7DA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>403763 - 3291502
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000002C000000B81E859BAF1251411F85EB31DCDA5441E17A142EB31251413D0AD763DFDA54410AD7A320BA1251411F85EB91DBDA544166666656C412514114AE4791D6DA5441C3F5280CC61251415C8FC225D3DA544185EB51A8C5125141000000D0D0DA5441D7A3707DC31251418FC2F578CDDA5441000000F0C5125141CDCCCC5CCEDA54413D0AD753C8125141CDCCCC5CCEDA5441000000F0C91251418FC2F538CEDA544185EB51E8C81251410AD7A3F0CBDA544152B81E75C5125141AE47E1FAC7DA5441D7A3706DC2125141CDCCCC6CC4DA544152B81E25BF125141AE47E12AC3DA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003600000002616D72B5125141B0885B66DDDA5441FE24A83AC112514171B92917D8DA54413AC7E7F5C312514170B9B43DD7DA5441367B3932C6125141A1517478D9DA5441AD9962F9C71251414EC66A86DDDA5441FB461253C8125141F6A77FA6DDDA5441E819A5E3C91251417DD20FBEDDDA54410F04C668CB12514106A4F3D4DDDA5441BCC019C7CF125141A9C9E3A4DADA54414CEF66AECE12514116A51C9AD9DA544105656EB6CC1251413E6322BBD7DA54417BCE9F14CC125141011E683AD4DA5441164C7CBEC8125141ECE2D18DCCDA5441B3A8D7DFC412514178BED9E4C7DA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>404073 - 54306
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000035000000E17A14AEAE225141666666D6EDFA54419A999949AB2251410AD7A3E0E9FA5441E17A148EA722514185EB51A8E3FA5441295C8FD2A3225141713D0AC7DDFA54411F85EBE1A0225141000000B0D8FA54415C8FC2959C2251415C8FC285D5FA54410000001098225141295C8F42D3FA54410AD7A380912251419A999939D1FA54415C8FC29589225141D7A3704DCFFA5441AE47E17A83225141D7A370EDCCFA54419A9999297E2251417B14AE57CBFA5441D7A3701D7C225141295C8F12CBFA54418FC2F5987B225141713D0AD7D0FA5441E17A147E7B225141666666F6D4FA5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000085000000224CE57B7C225141A304041FCBFA54413E044E1C7C2251414A56361FCBFA5441119592197C225141447BA93DCBFA54416B02B9067C2251412024BE0FCCFA544180A031017C225141FB795C4DCCFA5441998869D17B2251414A45E261CEFA54415B6AD3CB7B22514165D524A0CEFA5441480C11977B22514102F56021D1FA54417FBA87807B225141CD6D3396D4FA544189F274887B22514196F2FB59D7FA544158D6C8947B225141AA8FABBCD9FA544104CA70AD7B225141BF487A65DAFA5441A0BEF8227C2251412235278ADDFA54419881354F7D22514150E500DBE1FA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>404310 - 2917974
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000004200000052B81E75272C5141D7A3708DECE85441D7A3701D282C5141A4703D0AEEE85441CDCCCCBC292C514133333313F0E854411F85EBD12C2C514148E17A84F2E8544148E17AB42C2C51410AD7A3C0F3E854418FC2F5A82E2C51415C8FC2C5F6E854410AD7A360302C514152B81E25F9E854418FC2F5F8312C51410AD7A350FBE85441CDCCCC4C332C514114AE4741FDE854417B14AEC7342C514133333373FFE854419A999959362C51419A9999B901E9544133333313382C5141295C8F1204E95441EC51B8EE392C5141C3F5286C06E95441CDCCCC0C3C2C5141295C8FC208E95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000008E000000333333D32C2C5141CDCCCCDCCEE85441652946E52C2C51414EBED5D4D0E854414184F6F62C2C51419EF7D649D2E85441C3DB4CFA2C2C5141FF88C957D2E85441C3DB4CFA2C2C5141AA0017F1D2E85441ECE593F82C2C5141CF963985D3E8544140FA21F52C2C5141BAD703D1D3E85441680469F32C2C5141F32E6C44D4E854413737CCEA2C2C514138D3F52CD5E85441DE5FE8E32C2C5141C93CDC71D5E854415A7EBDDE2C2C51410E1AF0F9D5E8544150BB67D42C2C5141056D41F0D6E8544146F811CA2C2C51418A6413F6D7E854416F0259C82C2C5141C5B96B3ED8E85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>404310 - 3210588
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000004200000052B81E75272C5141D7A3708DECE85441D7A3701D282C5141A4703D0AEEE85441CDCCCCBC292C514133333313F0E854411F85EBD12C2C514148E17A84F2E8544148E17AB42C2C51410AD7A3C0F3E854418FC2F5A82E2C51415C8FC2C5F6E854410AD7A360302C514152B81E25F9E854418FC2F5F8312C51410AD7A350FBE85441CDCCCC4C332C514114AE4741FDE854417B14AEC7342C514133333373FFE854419A999959362C51419A9999B901E9544133333313382C5141295C8F1204E95441EC51B8EE392C5141C3F5286C06E95441CDCCCC0C3C2C5141295C8FC208E95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000008E000000333333D32C2C5141CDCCCCDCCEE85441652946E52C2C51414EBED5D4D0E854414184F6F62C2C51419EF7D649D2E85441C3DB4CFA2C2C5141FF88C957D2E85441C3DB4CFA2C2C5141AA0017F1D2E85441ECE593F82C2C5141CF963985D3E8544140FA21F52C2C5141BAD703D1D3E85441680469F32C2C5141F32E6C44D4E854413737CCEA2C2C514138D3F52CD5E85441DE5FE8E32C2C5141C93CDC71D5E854415A7EBDDE2C2C51410E1AF0F9D5E8544150BB67D42C2C5141056D41F0D6E8544146F811CA2C2C51418A6413F6D7E854416F0259C82C2C5141C5B96B3ED8E85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>405074 - 1966925
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000D7A370CD482351417B14AE17BEE554417B14AEB74823514148E17A54C8E554413D0AD78348235141713D0AA7CCE554411F85EBE1472351413D0AD773D3E55441B81E858B47235141D7A3709DDAE55441AE47E17A4923514166666616DBE55441EC51B85E4C2351418FC2F528DCE554417B14AE7752235141333333D3DDE55441F6285CFF59235141E17A14DEDFE5544185EB51A85A2351419A999919DBE5544114AE47015E235141333333F3D0E55441295C8F725F235141295C8F02CBE554415C8FC295602351419A9999F9C1E554418FC2F5A861235141D7A3708DAEE55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009F0000007B14AE173A2351418FC2F528A5E55441B81E854B25235141D7A3709DAAE5544152B81EE5252351418FC2F5A8ADE554411F85EBE1262351410AD7A340B5E554411F85EB11272351415C8FC275B7E554411F85EB31272351413D0AD703BAE5544185EB513827235141713D0AD7BDE55441AE47E11A27235141713D0AB7C4E554418FC2F538272351411F85EBC1CEE554415C8FC2E5272351418FC2F578D6E5544114AE47E128235141B81E850BDEE5544114AE47712923514148E17A74E3E55441F6285C0F2A23514185EB5178E6E55441295C8F322B23514114AE4741E9E55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>405074 - 3820600
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000D7A370CD482351417B14AE17BEE554417B14AEB74823514148E17A54C8E554413D0AD78348235141713D0AA7CCE554411F85EBE1472351413D0AD773D3E55441B81E858B47235141D7A3709DDAE55441AE47E17A4923514166666616DBE55441EC51B85E4C2351418FC2F528DCE554417B14AE7752235141333333D3DDE55441F6285CFF59235141E17A14DEDFE5544185EB51A85A2351419A999919DBE5544114AE47015E235141333333F3D0E55441295C8F725F235141295C8F02CBE554415C8FC295602351419A9999F9C1E554418FC2F5A861235141D7A3708DAEE55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009F0000007B14AE173A2351418FC2F528A5E55441B81E854B25235141D7A3709DAAE5544152B81EE5252351418FC2F5A8ADE554411F85EBE1262351410AD7A340B5E554411F85EB11272351415C8FC275B7E554411F85EB31272351413D0AD703BAE5544185EB513827235141713D0AD7BDE55441AE47E11A27235141713D0AB7C4E554418FC2F538272351411F85EBC1CEE554415C8FC2E5272351418FC2F578D6E5544114AE47E128235141B81E850BDEE5544114AE47712923514148E17A74E3E55441F6285C0F2A23514185EB5178E6E55441295C8F322B23514114AE4741E9E55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>405193 - 1287131
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001A000000E17A145E291551415C8FC24559DB54417B14AE7740155141713D0A4763DB5441AE47E1AA47155141AE47E12A66DB5441295C8F124815514152B81ED564DB54419A9999494915514114AE47D160DB5441CDCCCCAC4C15514114AE47A158DB5441A4703DEA4F155141333333634EDB544114AE4721531551418FC2F5D841DB54419A9999C9541551413D0AD7833CDB544152B81EF55C155141F6285C0F2DDB54413D0AD7934C1551413333337326DB54415C8FC28546155141295C8F9223DB5441295C8FB23E155141CDCCCC8C1EDB544114AE47313A155141666666B61ADB5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000539A85374F155141E982DD8327DB54419BAD2A71581551416CB4E23C2BDB54417D09269F5C15514197C1AAEC2CDB5441333333C361155141C3F5284C23DB5441AE47E1DA61155141C3F528CC22DB544148E17A245F1551415C8FC23520DB5441333333C35515514148E17A9417DB54410AD7A320451551410AD7A30009DB54411F85EB61391551415C8FC2D5FEDA5441713D0A773715514133333393FFDA5441CDCCCCEC2F155141E17A144E10DB544151CC1D142F155141715CD5CE11DB5441C87AB8113A1551417D5F919E1ADB544114AE47313A155141666666B61ADB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>405193 - 3506291
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001A000000E17A145E291551415C8FC24559DB54417B14AE7740155141713D0A4763DB5441AE47E1AA47155141AE47E12A66DB5441295C8F124815514152B81ED564DB54419A9999494915514114AE47D160DB5441CDCCCCAC4C15514114AE47A158DB5441A4703DEA4F155141333333634EDB544114AE4721531551418FC2F5D841DB54419A9999C9541551413D0AD7833CDB544152B81EF55C155141F6285C0F2DDB54413D0AD7934C1551413333337326DB54415C8FC28546155141295C8F9223DB5441295C8FB23E155141CDCCCC8C1EDB544114AE47313A155141666666B61ADB5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000539A85374F155141E982DD8327DB54419BAD2A71581551416CB4E23C2BDB54417D09269F5C15514197C1AAEC2CDB5441333333C361155141C3F5284C23DB5441AE47E1DA61155141C3F528CC22DB544148E17A245F1551415C8FC23520DB5441333333C35515514148E17A9417DB54410AD7A320451551410AD7A30009DB54411F85EB61391551415C8FC2D5FEDA5441713D0A773715514133333393FFDA5441CDCCCCEC2F155141E17A144E10DB544151CC1D142F155141715CD5CE11DB5441C87AB8113A1551417D5F919E1ADB544114AE47313A155141666666B61ADB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>406251 - 1279852
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000032000000B81E85FB430F5141AE47E1DA53EA544185EB51583E0F5141AE47E18A37EA544152B81E553C0F51410000003035EA5441EC51B8EE3A0F5141D7A3701D33EA5441CDCCCCEC390F514148E17A4431EA54418FC2F5F8380F51417B14AE872FEA544152B81E05380F51415C8FC2E52CEA544114AE4711370F51418FC2F5182AEA54411F85EB81360F5141B81E85AB25EA544185EB5148360F51416666668621EA544185EB5148360F5141B81E851B1EEA5441B81E85BB360F51410AD7A3A019EA54413D0AD783370F5141713D0A1715EA544185EB51E8370F514152B81EE511EA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000AD9CC76D0C0F5141C4F950FA12EA5441B34EDB680E0F5141502ECB5D12EA5441C3F528DC100F5141C3F5289C11EA544185EB51081D0F51410AD7A38010EA54417B14AEB7270F51417B14AE2710EA54413D0AD7532E0F5141666666C610EA544185EB51F8310F51410000000011EA54410AD7A3F0340F5141E17A140E11EA54418FC2F558370F51410000000011EA544185EB51E8370F514152B81EE511EA54413D0AD783370F5141713D0A1715EA5441B81E85BB360F51410AD7A3A019EA544185EB5148360F5141B81E851B1EEA544185EB5148360F51416666668621EA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>406251 - 3409613
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000032000000B81E85FB430F5141AE47E1DA53EA544185EB51583E0F5141AE47E18A37EA544152B81E553C0F51410000003035EA5441EC51B8EE3A0F5141D7A3701D33EA5441CDCCCCEC390F514148E17A4431EA54418FC2F5F8380F51417B14AE872FEA544152B81E05380F51415C8FC2E52CEA544114AE4711370F51418FC2F5182AEA54411F85EB81360F5141B81E85AB25EA544185EB5148360F51416666668621EA544185EB5148360F5141B81E851B1EEA5441B81E85BB360F51410AD7A3A019EA54413D0AD783370F5141713D0A1715EA544185EB51E8370F514152B81EE511EA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000AD9CC76D0C0F5141C4F950FA12EA5441B34EDB680E0F5141502ECB5D12EA5441C3F528DC100F5141C3F5289C11EA544185EB51081D0F51410AD7A38010EA54417B14AEB7270F51417B14AE2710EA54413D0AD7532E0F5141666666C610EA544185EB51F8310F51410000000011EA54410AD7A3F0340F5141E17A140E11EA54418FC2F558370F51410000000011EA544185EB51E8370F514152B81EE511EA54413D0AD783370F5141713D0A1715EA5441B81E85BB360F51410AD7A3A019EA544185EB5148360F5141B81E851B1EEA544185EB5148360F51416666668621EA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>406888 - 59319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000002000000010300000001000000120000003D0AD7B364A3504148E17A34A24D5541E17A147E65A350410AD7A3F0A34D554148E17A4466A350418FC2F5A8A54D554152B81ED566A35041AE47E17AA74D554185EB51A867A350419A999929AA4D55411F85EBC163A35041D7A370CDAD4D5541E17A14DE61A350418FC2F558AE4D5541A4703D8A63A35041713D0A87B04D55410AD7A3F065A3504148E17A74B04D55413333339369A350415C8FC2B5AE4D55419A9999196DA35041333333A3AE4D5541E17A141E71A350415C8FC265AD4D5541C3F528DC6EA3504166666666A44D5541333333436CA35041666666769C4D5541 [...]
+</a>
+
+<b>
+0106000000020000000103000000010000000F000000242E227A6FA35041171205DCA64D5541944F4D7F6EA350413534D04AA34D5541F946D7426CA35041D9FE86769C4D55413D0AD74368A3504114AE47E19D4D55412A54ED3466A3504177BB47FD9D4D5541F5C98E5865A35041FD2F898D9E4D55419A9999D962A3504152B81E35A04D55413D0AD7B364A3504148E17A34A24D5541E17A147E65A350410AD7A3F0A34D554148E17A4466A350418FC2F5A8A54D554152B81ED566A35041AE47E17AA74D554185EB51A867A350419A999929AA4D55416F5D62E363A3504104EB34AEAD4D554139F1917870A3504100F4E806AB4D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>407189 - 203144
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001500000014AE47D15AA55041295C8F329C4C5541AE47E11A5AA55041EC51B81E9C4C554152B81E3559A55041C3F5288CA04C55411F85EB5157A55041C3F5284CAA4C5541EC51B8AE58A550410AD7A360AA4C55418FC2F5385DA5504148E17AA4AA4C5541F6285C3F60A550419A9999A9AA4C5541333333735EA550419A999969B14C5541295C8F025DA55041295C8FE2B74C55411F85EBB15EA55041666666E6B84C5541C3F528EC5EA5504114AE47D1B84C55417B14AE375FA55041E17A14DEB84C554148E17AF45FA55041295C8F62B54C55413333331362A55041EC51B82EAC4C5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000000000002063A5504114AE4781A64C55417B14AE2764A550417B14AEC7A14C55412A13482D64A55041D4E730B8A14C5541DD8C648B63A55041322C56709F4C554170F2F6C861A55041D7165CEF9E4C55411F85EBE160A55041E17A14DE9D4C5541CDCCCC0C5FA550413D0AD7E39C4C554114AE47D15AA55041295C8F329C4C5541C6528D235AA5504164CCA91F9C4C5541B50CE11A5AA55041EC74B91E9C4C554174F598B559A550416C8E5C129E4C5541969EA0AB59A55041819F8B439E4C55410E3B1F3559A550412650298CA04C55411883817058A550410650C883A44C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408198 - 59907
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000003D0AD7A3AE155141D7A3707D7AE45441333333C3A71551416666668674E45441713D0A17A5155141C3F5285C76E454418FC2F518A31551410AD7A38078E454415C8FC265A2155141333333F37AE45441C3F528FCA11551419A9999797DE45441295C8F12A215514152B81E2580E45441000000B0A21551410AD7A3E082E45441713D0A27B0155141E17A143E88E45441713D0A07B6155141AE47E13A89E45441CDCCCC0CB5155141B81E850B82E45441713D0AA7B4155141E17A14AE7BE454413D0AD7A3AE155141D7A3707D7AE45441
+</a>
+
+<b>
+010600000001000000010300000001000000100000002690D811A2155141590FDBF47CE454416CB09E03A2155141EB9E3B5D7EE45441BF705F37A215514188C0AEC880E454411B60F3D4A21551415BD65CEF82E4544122FC64F4AB1551418BD6E59186E45441989E85F3AF155141CB998D2988E45441B4D42F05B6155141DE30422D89E45441CDCCCC0CB5155141B81E850B82E45441DA77C9C1B415514168425E5A7DE45441F6F19D93B4155141C35B3CAA7BE454413D0AD7A3AE155141D7A3707D7AE454419C7CCAA1AE15514119AFA97B7AE454419ACD6FC7A71551415B19138A74E45441B9672135A515514120CA7F4776E45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>408830 - 422088
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C00000048E17A4487CE50419A9999797CC95441666666668FCE50419A9999197CC954419A99993995CE50411F85EB417BC95441EC51B83EA3CE5041CDCCCCBC7BC95441C3F5281CAFCE504114AE47217BC954418FC2F5D8AFCE5041000000B06BC954413333332395CE5041295C8FC26AC9544148E17AE495CE5041C3F5283C5CC95441AE47E1FA7CCE5041295C8F825AC95441A4703D6A82CE504114AE474169C9544152B81EB586CE5041EC51B83E77C9544148E17A4487CE50419A9999797CC95441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000052DB21D786CE5041F1C15E7C78C9544148E17A4487CE50419A9999797CC95441666666668FCE50419A9999197CC954412375FDDC90CE5041C2CC6BE37BC95441B199993995CE50410985EB417BC954411D52B83EA3CE5041ACCCCCBC7BC954417C775696A8CE504170CEC6767BC95441C3F5281CAFCE504114AE47217BC954418DC2F5D8AFCE5041240000B06BC954410C33332395CE5041565C8FC26AC954419C97CD8B95CE5041C4A729E662C9544146E17AE495CE5041E9F5283C5CC95441AE47E1FA7CCE5041295C8F825AC95441AA703D6A82CE50411BAE474169C95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>102847 - 1271851
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000002000000250000008E85D7E517555141D4CD87DC2B8D5441919A50A2145551418B73F0F02F8D54412DA7FFAC12555141A1E0E9E0328D54418F6E90881155514160B1AB3E358D5441DBDE07010F555141D511F6233A8D54414F280B890D5551410E429B963C8D54419EAE628E0C555141A84FB1713F8D544149FC4A6F0A55514180A34C4C468D54419A9999790F555141F6285C2F4A8D5441AE47E13A13555141CDCCCC8C4D8D5441B81E858B19555141C3F5282C548D5441000000D01D55514152B81EE5598D5441E17A148E235551411F85EBB1628D54419D0A7F032655514102B7CC09668D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000250000008D85D7E517555141D5CD87DC2B8D54418D9A50A2145551419073F0F02F8D54412AA7FFAC12555141A4E0E9E0328D54418D6E9088115551415FB1AB3E358D5441DCDE07010F555141D511F6233A8D544152280B890D55514110429B963C8D5441A1AE628E0C555141A44FB1713F8D544148FC4A6F0A5551417CA34C4C468D54419A9999790F555141F6285C2F4A8D5441AE47E13A13555141CDCCCC8C4D8D5441B81E858B19555141C3F5282C548D5441000000D01D55514152B81EE5598D5441E17A148E235551411F85EBB1628D5441A20A7F0326555141FDB6CC09668D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>102847 - 4024556
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000002000000250000008E85D7E517555141D4CD87DC2B8D5441919A50A2145551418B73F0F02F8D54412DA7FFAC12555141A1E0E9E0328D54418F6E90881155514160B1AB3E358D5441DBDE07010F555141D511F6233A8D54414F280B890D5551410E429B963C8D54419EAE628E0C555141A84FB1713F8D544149FC4A6F0A55514180A34C4C468D54419A9999790F555141F6285C2F4A8D5441AE47E13A13555141CDCCCC8C4D8D5441B81E858B19555141C3F5282C548D5441000000D01D55514152B81EE5598D5441E17A148E235551411F85EBB1628D54419D0A7F032655514102B7CC09668D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000250000008D85D7E517555141D5CD87DC2B8D54418D9A50A2145551419073F0F02F8D54412AA7FFAC12555141A4E0E9E0328D54418D6E9088115551415FB1AB3E358D5441DCDE07010F555141D511F6233A8D544152280B890D55514110429B963C8D5441A1AE628E0C555141A44FB1713F8D544148FC4A6F0A5551417CA34C4C468D54419A9999790F555141F6285C2F4A8D5441AE47E13A13555141CDCCCC8C4D8D5441B81E858B19555141C3F5282C548D5441000000D01D55514152B81EE5598D5441E17A148E235551411F85EBB1628D5441A20A7F0326555141FDB6CC09668D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>66868 - 67010
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000310000008FC2F55877ED5041E17A14CEA4F75441666666E674ED50419A9999D9A4F75441E17A14BE71ED50419A999989A4F754419A9999096EED5041AE47E1EAA3F7544152B81E4568ED50417B14AEF7A2F75441E17A14AE62ED50418FC2F568A2F7544152B81E555DED5041B81E851BA2F754415C8FC23556ED5041C3F5284CA2F7544148E17A0452ED5041E17A14AEA2F754415C8FC24552ED504133333313A6F75441B01BB8E852ED50411C469875A9F754417888C05653ED50412A19E453ADF7544114AE472153ED5041CDCCCC7CB1F75441C3F5285C53ED50417B14AE87B4F75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001000000085EB51B86FED50411F85EB91B3F75441F6285CBF79ED50419A9999E9AEF75441E17A14BE7AED504166666696AEF75441AE47E17A7EED5041E17A145EADF7544148E17A1485ED5041333333C3ABF754415C8FC2658CED504185EB5158AAF75441295C8F2292ED504100000080A9F75441000000F091ED50410AD7A3D0A7F7544185EB51D88FED5041CDCCCCFC95F754411F85EB0182ED50413D0AD76396F75441295C8F327FED50413D0AD7739DF75441EC51B8BE7DED5041713D0AD7A0F754413D0AD7637BED504185EB51B8A4F75441F6285C4F78ED5041F6285CCFA8F75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>66868 - 1431339
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000310000008FC2F55877ED5041E17A14CEA4F75441666666E674ED50419A9999D9A4F75441E17A14BE71ED50419A999989A4F754419A9999096EED5041AE47E1EAA3F7544152B81E4568ED50417B14AEF7A2F75441E17A14AE62ED50418FC2F568A2F7544152B81E555DED5041B81E851BA2F754415C8FC23556ED5041C3F5284CA2F7544148E17A0452ED5041E17A14AEA2F754415C8FC24552ED504133333313A6F75441B01BB8E852ED50411C469875A9F754417888C05653ED50412A19E453ADF7544114AE472153ED5041CDCCCC7CB1F75441C3F5285C53ED50417B14AE87B4F75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001000000085EB51B86FED50411F85EB91B3F75441F6285CBF79ED50419A9999E9AEF75441E17A14BE7AED504166666696AEF75441AE47E17A7EED5041E17A145EADF7544148E17A1485ED5041333333C3ABF754415C8FC2658CED504185EB5158AAF75441295C8F2292ED504100000080A9F75441000000F091ED50410AD7A3D0A7F7544185EB51D88FED5041CDCCCCFC95F754411F85EB0182ED50413D0AD76396F75441295C8F327FED50413D0AD7739DF75441EC51B8BE7DED5041713D0AD7A0F754413D0AD7637BED504185EB51B8A4F75441F6285C4F78ED5041F6285CCFA8F75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>66868 - 4120200
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000310000008FC2F55877ED5041E17A14CEA4F75441666666E674ED50419A9999D9A4F75441E17A14BE71ED50419A999989A4F754419A9999096EED5041AE47E1EAA3F7544152B81E4568ED50417B14AEF7A2F75441E17A14AE62ED50418FC2F568A2F7544152B81E555DED5041B81E851BA2F754415C8FC23556ED5041C3F5284CA2F7544148E17A0452ED5041E17A14AEA2F754415C8FC24552ED504133333313A6F75441B01BB8E852ED50411C469875A9F754417888C05653ED50412A19E453ADF7544114AE472153ED5041CDCCCC7CB1F75441C3F5285C53ED50417B14AE87B4F75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001000000085EB51B86FED50411F85EB91B3F75441F6285CBF79ED50419A9999E9AEF75441E17A14BE7AED504166666696AEF75441AE47E17A7EED5041E17A145EADF7544148E17A1485ED5041333333C3ABF754415C8FC2658CED504185EB5158AAF75441295C8F2292ED504100000080A9F75441000000F091ED50410AD7A3D0A7F7544185EB51D88FED5041CDCCCCFC95F754411F85EB0182ED50413D0AD76396F75441295C8F327FED50413D0AD7739DF75441EC51B8BE7DED5041713D0AD7A0F754413D0AD7637BED504185EB51B8A4F75441F6285C4F78ED5041F6285CCFA8F75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>410985 - 53142
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000011000000666666F611AC5041D7A3707D134555411F85EB810FAC5041D7A3703D11455541333333B30CAC50419A9999E90E45554152B81E5509AC5041666666960C4555417B14AE1703AC50418FC2F54808455541B81E85EBF8AB504148E17A4401455541F6285C4FF8AB50418FC2F5D8004555419A999909E9AB5041D7A3709D1345554100000090F3AB5041B81E855B1B455541F6285C1FF9AB5041AE47E16A2045554152B81E5505AC50413D0AD7632B455541666666960AAC50417B14AE57304555415C8FC2450FAC504148E17AC43445554185EB51181FAC504152B81E7521455541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000037CC27A5F4AB50418AA4DD590545554163E52E22EDAB5041456EE5940E4555414CA22F0DE9AB50414B85089913455541D94D6478F3AB50410333274A1B45554116BD648DF3AB50414B439A591B4555419034E91B03AC5041AF91654F084555412C109DD401AC504170B2176A07455541B81E85EBF8AB504148E17A440145554163255B55F8AB5041B8A216DD0045554137CC27A5F4AB50418AA4DD5905455541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411091 - 299140
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000230000005C8FC295C19F5041EC51B87E374A554148E17AE4C09F50415C8FC2F5374A5541E17A143EC09F5041B81E853B384A55419A999959BF9F504152B81E55384A5541295C8FE2BE9F504166666676384A55411F85EB81BE9F504114AE47E1384A5541B81E85DBBD9F5041F6285C1F394A5541713D0A57BD9F504148E17AD4394A55417B14AE17BD9F5041C3F5283C3A4A554152B81E75BC9F5041F6285CAF3A4A5541000000E0BB9F5041713D0A373B4A55418FC2F578BB9F50413D0AD7F33B4A554166666606BB9F5041666666063D4A554185EB51C8BA9F5041D7A3708D3D4A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000001D470B81A29F5041AB3C25F3344A5541FE2173CBA29F5041E88CBF79394A5541179A400BBB9F5041AA47C5FA3C4A554191666606BB9F50413B6666063D4A55416A5DD383C09F504135E2B4C83D4A55412DDE5C85C09F50418ADA5FC53D4A5541A15EDA9AC09F5041F0D07AC83D4A5541F29A08ACC09F50410C26CD973D4A5541A4703DAAC09F50410AD7A3F03A4A5541903A9195C09F5041EE6788C1394A554179A32CBEC09F5041A620AD7C384A5541DFAD47B1BE9F5041928FC225384A55417E54C31EB99F504161009F5B374A55417F893A76A29F50414D203824344A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411122 - 359634
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E0000001F85EBB15E9E5041000000E0854A55410AD7A3D05D9E5041B81E859B8F4A5541A4703D3A5F9E504185EB51B88F4A5541EC51B84E699E5041C3F5288C934A55417B14AED76F9E504185EB5198934A554114AE4701749E50411F85EB51994A554185EB51087C9E504133333313894A5541F6285C7F759E504152B81EF5824A5541A4703DCA719E504114AE4741844A5541713D0A07709E50413D0AD7E3814A5541666666B6669E5041295C8F02814A554114AE47C15F9E5041D7A3707D7E4A5541C3F5284C5F9E50418FC2F5E8824A55411F85EBB15E9E5041000000E0854A5541
+</a>
+
+<b>
+010600000001000000010300000001000000160000000AD7A3D05D9E5041B81E859B8F4A5541A4703D3A5F9E504185EB51B88F4A554184517F925F9E50416B3A2BD88F4A55415845ACA65F9E50419D27A2DA8F4A55412D270A8E609E5041E4FAF032904A55414A3EADB7629E50414492BAFA904A554131BB5FF7639E5041C88B186E914A55411F53ED25649E504184198D80914A5541B40EDC35669E50414FEC80258C4A5541B2A4882A6A9E504100D31556814A5541666666B6669E5041295C8F02814A5541F87965B0639E5041CBD294EB7F4A5541B2AE79AD629E504189866F8C7F4A554188B8B2D4609E50416D3932E17E4A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411616 - 201714
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B00000014AE4771CCA250417B14AE879D565541D7A3707DC3A250415C8FC2458E56554114AE4781BFA25041666666D68F5655418FC2F558C8A25041000000A09F56554114AE47B1C8A25041E17A145EA056554114AE47D1D1A25041A4703DFAB3565541713D0A47D6A25041F6285C4FB356554100000000D5A25041C3F5284CB05655419A999949CFA250410AD7A380A35655418FC2F5D8CCA250411F85EB619E56554114AE4771CCA250417B14AE879D565541
+</a>
+
+<b>
+0106000000010000000103000000010000000F00000079C23AA1BFA25041274ADAC98F565541158CE3E3C0A25041A315234B8F5655410B603D22C2A2504162091DCE8E5655411D2E2EFBBEA2504113BBCB3989565541E17A143EBEA25041CDCCCC6C895655410C0FA95FBDA250413E92688789565541CDCCCC9CBCA25041EC51B89E895655413D0AD7F3BAA2504114AE47D189565541D7A3703DB9A250417B14AE478A565541E68123ABB9A2504134FF69278B5655415FE781A3C4A25041B2472C87A15655415B1C5954C8A25041320EC4979F565541EE65B1D5C5A25041B3F380239B56554114AE4781BFA25041666666D68F565541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411635 - 55718
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000100000001F85EBC1B3AB5041713D0A27FA50554133333323A3AB50415C8FC2F502515541AE47E10AA0AB50413D0AD773045155411F85EB81ACAB504152B81E65205155419A999989C9AB5041EC51B88E135155417B14AED7DBAB5041E17A14CE125155415C8FC205DEAB5041C3F5285C1251554114AE47A10AAC5041000000B0FE5055413D0AD7830DAC504114AE4731FD505541295C8F32FFAB5041E17A14FEEB5055410AD7A3A0FEAB504148E17AE4EA50554133333333FEAB504100000080EB505541000000C0FBAB5041D7A370BDE5505541C3F5284CF5AB50419A9999C9DF505541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005600000058E06FDD79AB5041BB035EB35A5155413D0AD7D37BAB504152B81EC55A515541B32B198E7FAB5041A40F8C7D59515541BCE38D1E80AB5041E07ADF485951554165E75A7D80AB5041378784E458515541289E39CF80AB504157D4D98D585155410E93C9B282AB50411CD2F48D565155414722BEDA82AB504133FA016056515541EB4EC33A83AB5041CC8F03FE55515541295C8F4283AB50415C8FC2F5555155413333333387AB5041000000F052515541713D0A9788AB5041F6285C9F505155413333330387AB5041B81E85DB49515541666666A687AB5041D7A3703D47515541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>411664 - 55721
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000020000000333333532EAB50415C8FC24579515541EC51B85E2FAB504114AE478177515541B81E853B33AB50419A9999D9745155418FC2F5C836AB50413D0AD78374515541E17A14BE39AB5041EC51B8EE74515541EC51B8AE3CAB5041A4703D3A755155410AD7A3E03FAB5041C3F5282C765155417B14AED740AB50410AD7A3D075515541AE47E1DA43AB504148E17AF47351554114AE475145AB5041CDCCCC0C73515541333333E345AB504114AE47B1725155411F85EBC14BAB5041C3F528FC70515541B81E851B4DAB50419A9999796F515541C3F528BC4CAB50415C8FC2356A515541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000EB0C31A848AB5041AB5B0BE3715155411F85EBC14BAB5041C3F528FC705155411B29D1074CAB50417897FAAD705155412281EF6F4CAB5041E736853970515541E34338934CAB50417FE70D1270515541D0EED99E4CAB5041ED530B0570515541B81E851B4DAB50419A9999796F515541D216280A4DAB5041FE842E846E51554170A5C7014DAB50416D79C80D6E515541C36FE6F04CAB5041C182331F6D515541B42944C44CAB50418DF355A86A515541AB4F89C04CAB504107DC9D736A515541C3F528BC4CAB50415C8FC2356A5155411692B6D84CAB50414D51EAEB68515541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>412343 - 399555
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D000000F6285C9F2AF05041F6285C6F8338544114AE47F121F050415C8FC2C5813854419A9999890FF05041EC51B83E7E385441000000100FF05041666666C6803854419A9999F90DF05041CDCCCC7C80385441A4703DBA09F05041713D0A87903854418FC2F5F807F050418FC2F5D8953854417B14AE0704F05041295C8F829F385441713D0AB7FEEF504148E17A64AB385441CDCCCC4CFBEF5041CDCCCCACB4385441F6285CAF36F0504152B81E85C43854413D0AD70337F05041CDCCCCECC3385441EC51B87E3AF0504114AE4721B9385441EC51B85E3DF0504185EB51E8AD385441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000220000008354A3A51BF050413276DF9080385441DD4A1FB518F050415B54A5008038544126B3BBA618F050415B54A500803854414BFAA46314F05041CDCCCC4C8C3854411758359510F05041FD84BAF8963854413B40A2EE0FF05041D8E9926B9A385441719CC5F40EF05041007905539E3854413CF35C220DF05041FD5FD5B7A6385441DA1F64342CF050417735F14CB238544124B3FE9C31F05041F8D75908A73854412F406EE533F05041DC17E908A238544100DA5E0034F050414DDCA60EA2385441F9D97E3D34F0504172D851EDA03854410075CF2540F05041712597B9A3385441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>941916 - 3114712
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000E3F0BD7E2AF050412F774770A119554145BDC54D43F05041C051149CA1195541BAE85EEF41F0504192FF78229C1955410053929E42F05041C1C0DE149A1955410053929E42F05041A91711589719554191BE94514AF050412427A5B8851955413F4895074CF05041484B09897E195541A845F7FF3DF05041BD54371C6E195541A33F91323FF050413DFB66D162195541D7065DF23BF05041F7903322621955416950F49634F05041DAE1FF976019554123E6C0E733F05041B74ED14E6F195541E98759D330F05041760C6F7B7C195541BB35BE592BF050411E43AAF995195541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000600364F233F050411E5A1E6A6E195541D30451AC33F05041CA88BF636E195541C9C7125432F05041C776CD44751955412BFF527132F05041B6078A71751955410A5F977231F050413FC44EC6791955415B805DB430F05041C0DB73937D195541B332954F2DF050413439F9D88C1955416F55E5C82BF0504180171CF49319554179FD3F992AF05041D8DF4E5BA119554130DD9FE730F05041CC78987BA11955419B4C73FF42F05041510A8A9BA1195541CFFBDF2A42F050418D42858A991955418EE272E642F05041D2C0A6E09519554181D6DB7C44F0504161FF17D392195541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>941916 - 3503575
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000E3F0BD7E2AF050412F774770A119554145BDC54D43F05041C051149CA1195541BAE85EEF41F0504192FF78229C1955410053929E42F05041C1C0DE149A1955410053929E42F05041A91711589719554191BE94514AF050412427A5B8851955413F4895074CF05041484B09897E195541A845F7FF3DF05041BD54371C6E195541A33F91323FF050413DFB66D162195541D7065DF23BF05041F7903322621955416950F49634F05041DAE1FF976019554123E6C0E733F05041B74ED14E6F195541E98759D330F05041760C6F7B7C195541BB35BE592BF050411E43AAF995195541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000600364F233F050411E5A1E6A6E195541D30451AC33F05041CA88BF636E195541C9C7125432F05041C776CD44751955412BFF527132F05041B6078A71751955410A5F977231F050413FC44EC6791955415B805DB430F05041C0DB73937D195541B332954F2DF050413439F9D88C1955416F55E5C82BF0504180171CF49319554179FD3F992AF05041D8DF4E5BA119554130DD9FE730F05041CC78987BA11955419B4C73FF42F05041510A8A9BA1195541CFFBDF2A42F050418D42858A991955418EE272E642F05041D2C0A6E09519554181D6DB7C44F0504161FF17D392195541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164313 - 164648
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000030000000103000000010000001700000052B81E05C937514185EB51681209554148E17A84C937514152B81E751209554166666676CC375141295C8FC212095541AC33776FCC3751415F8BDF4713095541EB20A09ECC3751413CD783B5120955415349DAA5CD3751414C9E9A421109554185EB5138CF37514148E17A740F095541CDCCCCCCD337514152B81EE5FF0855413D0AD793D5375141000000F0F808554185EB5188D5375141AE47E14AF508554185EB5108D237514166666606EC08554152B81EE5CF3751410AD7A340E40855415C8FC215CF3751410AD7A3D0DA0855417B14AEA7CD37514100000010D9085541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000EC51B82ECD3751410AD7A3001C09554166666666CC3751411F85EBD119095541EC51B8EECB375141AE47E11A18095541C3F528DCCB3751416666667616095541CDCCCC5CCC375141EC51B8AE1409554166666676CC375141295C8FC21209554148E17A84C937514152B81E751209554152B81E05C937514185EB51681209554133333313C93751419A9999A914095541F6285CAFC83751419A9999D91C095541D7A3708DCD375141F6285C6F1F095541B81E855BCE37514152B81EC51F0955411F85EBD1CD3751417B14AEB71D095541EC51B82ECD3751410AD7A3001C095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164313 - 1343563
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000030000000103000000010000001700000052B81E05C937514185EB51681209554148E17A84C937514152B81E751209554166666676CC375141295C8FC212095541AC33776FCC3751415F8BDF4713095541EB20A09ECC3751413CD783B5120955415349DAA5CD3751414C9E9A421109554185EB5138CF37514148E17A740F095541CDCCCCCCD337514152B81EE5FF0855413D0AD793D5375141000000F0F808554185EB5188D5375141AE47E14AF508554185EB5108D237514166666606EC08554152B81EE5CF3751410AD7A340E40855415C8FC215CF3751410AD7A3D0DA0855417B14AEA7CD37514100000010D9085541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000EC51B82ECD3751410AD7A3001C09554166666666CC3751411F85EBD119095541EC51B8EECB375141AE47E11A18095541C3F528DCCB3751416666667616095541CDCCCC5CCC375141EC51B8AE1409554166666676CC375141295C8FC21209554148E17A84C937514152B81E751209554152B81E05C937514185EB51681209554133333313C93751419A9999A914095541F6285CAFC83751419A9999D91C095541D7A3708DCD375141F6285C6F1F095541B81E855BCE37514152B81EC51F0955411F85EBD1CD3751417B14AEB71D095541EC51B82ECD3751410AD7A3001C095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164313 - 4066720
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000030000000103000000010000001700000052B81E05C937514185EB51681209554148E17A84C937514152B81E751209554166666676CC375141295C8FC212095541AC33776FCC3751415F8BDF4713095541EB20A09ECC3751413CD783B5120955415349DAA5CD3751414C9E9A421109554185EB5138CF37514148E17A740F095541CDCCCCCCD337514152B81EE5FF0855413D0AD793D5375141000000F0F808554185EB5188D5375141AE47E14AF508554185EB5108D237514166666606EC08554152B81EE5CF3751410AD7A340E40855415C8FC215CF3751410AD7A3D0DA0855417B14AEA7CD37514100000010D9085541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000EC51B82ECD3751410AD7A3001C09554166666666CC3751411F85EBD119095541EC51B8EECB375141AE47E11A18095541C3F528DCCB3751416666667616095541CDCCCC5CCC375141EC51B8AE1409554166666676CC375141295C8FC21209554148E17A84C937514152B81E751209554152B81E05C937514185EB51681209554133333313C93751419A9999A914095541F6285CAFC83751419A9999D91C095541D7A3708DCD375141F6285C6F1F095541B81E855BCE37514152B81EC51F0955411F85EBD1CD3751417B14AEB71D095541EC51B82ECD3751410AD7A3001C095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>462290 - 3059051
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000100000022000000CDCCCC8CCAF05041666666F619FD5441C3F5282CC7F05041D7A3703D24FD5441C3F528ECC6F05041F6285CDF25FD54410AD7A310C7F05041713D0A5727FD5441A4703D1ACAF050411F85EB6126FD54419A999949D4F05041C3F5282C23FD544114AE4751D6F05041D7A3704D35FD5441C3F5288CD6F050416666661639FD5441C3F5288CD6F05041AE47E1CA3DFD5441713D0A27D6F05041CDCCCCCC3FFD5441666666D6D6F05041A4703DAA3FFD5441CDCCCCECDAF050415C8FC2A53EFD5441C3F528BCDCF05041E17A146E45FD5441AE47E11AE2F0504114AE47A145FD5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000AB3BA958CCF05041AD4CE1AC25FD54410D8817ADD2F050414A0766DE16FD54419015D647D7F050417F7B2B7C16FD54417E66A7DAD8F050412BDE68760FFD544158F75A19D8F05041E37F50D90FFD54411F85EBD1D5F050413D0AD70311FD5441295C8F22D2F050413D0AD79313FD54419A999929CEF050411F85EBD115FD5441C3F5285CCBF05041000000D017FD5441CDCCCC8CCAF05041666666F619FD5441C3F5282CC7F05041D7A3703D24FD5441C3F528ECC6F05041F6285CDF25FD54410AD7A310C7F05041713D0A5727FD5441A4703D1ACAF050411F85EB6126FD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>426206 - 243967
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002500000066666686DBAA5041713D0A2751F95441713D0A57DEAA5041F6285C9F4BF95441000000C0E0AA504114AE47E145F954413D0AD7C3E2AA5041E17A14FE3FF954415C8FC265E4AA5041E17A14FE39F95441AE47E15AE5AA5041A4703DDA33F95441C3F528DCE5AA5041B81E85CB2DF954415C8FC2D5DFAA5041E17A144E2CF9544114AE47D1C7AA5041000000D027F95441000000C0B4AA50418FC2F5F823F9544100000080B2AA50410AD7A31024F95441B81E85BBB0AA5041CDCCCCCC24F9544148E17AB4AEAA50417B14AE7726F9544114AE478186AA504185EB51F84CF95441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000007B14AEC784AA5041000000C065F95441FA8B6BFD86AA5041883F619367F95441776DE97C8FAA5041E273DC555DF95441C3AD269C8FAA50414D15F82F5DF9544126ABFFDF8FAA50415224ACDD5CF95441DB19BEA595AA5041734D39DD55F95441CD62111D96AA5041C9937C4C55F9544193A9009996AA5041E79028B654F954418FF0441798AA5041DB7D35C852F95441D3AE6B2C95AA50414B341C4855F9544183E906BD91AA50410869384458F95441331F85918CAA5041412239C25CF954415A026F0A89AA5041DC8CEBD25FF95441C3DB96FF83AA5041F64A4E3E64F95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>426206 - 315249
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002500000066666686DBAA5041713D0A2751F95441713D0A57DEAA5041F6285C9F4BF95441000000C0E0AA504114AE47E145F954413D0AD7C3E2AA5041E17A14FE3FF954415C8FC265E4AA5041E17A14FE39F95441AE47E15AE5AA5041A4703DDA33F95441C3F528DCE5AA5041B81E85CB2DF954415C8FC2D5DFAA5041E17A144E2CF9544114AE47D1C7AA5041000000D027F95441000000C0B4AA50418FC2F5F823F9544100000080B2AA50410AD7A31024F95441B81E85BBB0AA5041CDCCCCCC24F9544148E17AB4AEAA50417B14AE7726F9544114AE478186AA504185EB51F84CF95441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000007B14AEC784AA5041000000C065F95441FA8B6BFD86AA5041883F619367F95441776DE97C8FAA5041E273DC555DF95441C3AD269C8FAA50414D15F82F5DF9544126ABFFDF8FAA50415224ACDD5CF95441DB19BEA595AA5041734D39DD55F95441CD62111D96AA5041C9937C4C55F9544193A9009996AA5041E79028B654F954418FF0441798AA5041DB7D35C852F95441D3AE6B2C95AA50414B341C4855F9544183E906BD91AA50410869384458F95441331F85918CAA5041412239C25CF954415A026F0A89AA5041DC8CEBD25FF95441C3DB96FF83AA5041F64A4E3E64F95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>426315 - 2983535
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000CDCCCC8C5D9850417B14AE373C3855419A9999E96E985041295C8F4231385541CDCCCCCC849850410AD7A3F0223855411F85EBC184985041EC51B80E2038554152B81E1582985041295C8F721A3855410AD7A3206B985041713D0A7729385541E17A14AE5A985041A4703D3A343855413D0AD7335C985041AE47E17A3A385541295C8F825C985041EC51B8BE3B385541CDCCCC8C5D9850417B14AE373C385541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000CDCCCC8C5D9850417B14AE373C3855416AA24D9262985041809E650C3938554133FB5FAA66985041F313F57636385541DF36309A68985041627A0C3E353855410A3626E86B985041AB592928333855418C7E99C96D985041704751F831385541073D82546E985041EFD6A6A0313855419A9999E96E985041295C8F4231385541CDCCCCCC849850410AD7A3F0223855411F85EBC184985041EC51B80E2038554152B81E1582985041295C8F721A3855410AD7A3206B985041713D0A7729385541E17A14AE5A985041A4703D3A34385541B25B55125C985041C92885003A385541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>426315 - 3699392
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000CDCCCC8C5D9850417B14AE373C3855419A9999E96E985041295C8F4231385541CDCCCCCC849850410AD7A3F0223855411F85EBC184985041EC51B80E2038554152B81E1582985041295C8F721A3855410AD7A3206B985041713D0A7729385541E17A14AE5A985041A4703D3A343855413D0AD7335C985041AE47E17A3A385541295C8F825C985041EC51B8BE3B385541CDCCCC8C5D9850417B14AE373C385541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000CDCCCC8C5D9850417B14AE373C3855416AA24D9262985041809E650C3938554133FB5FAA66985041F313F57636385541DF36309A68985041627A0C3E353855410A3626E86B985041AB592928333855418C7E99C96D985041704751F831385541073D82546E985041EFD6A6A0313855419A9999E96E985041295C8F4231385541CDCCCCCC849850410AD7A3F0223855411F85EBC184985041EC51B80E2038554152B81E1582985041295C8F721A3855410AD7A3206B985041713D0A7729385541E17A14AE5A985041A4703D3A34385541B25B55125C985041C92885003A385541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524104 - 2927826
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B00000085EB51687BBA50411F85EBC15E255441B81E852B7DBA50418FC2F5185D255441CDCCCC3C7FBA50410AD7A3205C2554419A9999597DBA50410AD7A3405B255441B81E850B66BA504114AE47017B255441000000306ABA50417B14AE677D255441CDCCCCBC6CBA50415C8FC2957A2554411F85EBB16EBA5041666666067A255441EC51B86E76BA5041D7A3702D6D255441713D0AF77ABA50419A9999C96525544185EB51687BBA50411F85EBC15E255441
+</a>
+
+<b>
+01060000000100000001030000000100000051000000F5D5EDD26FBA5041292E54B778255441C4C6B4C571BA504184378B9179255441089F0BD174BA50419D15E4CF792554418DA2407878BA504184378B917925544138F3FA7C7CBA5041507BD914792554412E3147CD7EBA50415DEA0534792554419956233682BA5041292E54B778255441348B38AC83BA5041A7D7977F772554416847EA2884BA5041A42A1F107525544110EB2BBE85BA504109F6099A732554412007D14C88BA50413A0543A771255441B27932138CBA504181455C836D255441A8B77E638EBA5041E0B6552E672554411030E25C8FBA50419CDEFE2264255441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524104 - 3733261
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B00000085EB51687BBA50411F85EBC15E255441B81E852B7DBA50418FC2F5185D255441CDCCCC3C7FBA50410AD7A3205C2554419A9999597DBA50410AD7A3405B255441B81E850B66BA504114AE47017B255441000000306ABA50417B14AE677D255441CDCCCCBC6CBA50415C8FC2957A2554411F85EBB16EBA5041666666067A255441EC51B86E76BA5041D7A3702D6D255441713D0AF77ABA50419A9999C96525544185EB51687BBA50411F85EBC15E255441
+</a>
+
+<b>
+01060000000100000001030000000100000051000000F5D5EDD26FBA5041292E54B778255441C4C6B4C571BA504184378B9179255441089F0BD174BA50419D15E4CF792554418DA2407878BA504184378B917925544138F3FA7C7CBA5041507BD914792554412E3147CD7EBA50415DEA0534792554419956233682BA5041292E54B778255441348B38AC83BA5041A7D7977F772554416847EA2884BA5041A42A1F107525544110EB2BBE85BA504109F6099A732554412007D14C88BA50413A0543A771255441B27932138CBA504181455C836D255441A8B77E638EBA5041E0B6552E672554411030E25C8FBA50419CDEFE2264255441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>427751 - 54226
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000020000000C3F528BC0C4B5141333333232AB154411F85EBD1094B5141B81E85EB2DB15441295C8FB2064B5141295C8FC233B15441E17A14DE054B5141AE47E18A38B154417B14AEA7064B5141AE47E16A3EB154419A9999A9084B5141F6285C4F4AB154417B14AE570A4B51415C8FC29551B15441EC51B88E0C4B51419A9999D958B154415C8FC2650F4B51418FC2F50860B1544100000020134B514148E17A0467B15441B81E85AB174B51411F85EB716DB154413D0AD7931C4B5141A4703D9A73B154410AD7A370224B5141AE47E10A7AB15441E17A146E244B5141F6285C3F7AB15441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000007000000624A4FB01C4B51412BCC4D802AB15441E4DC539D1C4B5141ECC2BAE22BB154417B14AEC75B4B514152B81E0532B15441E17A146E5C4B5141000000502BB1544185EB51F81C4B51415C8FC24525B15441333333F31C4B5141F6285C9F25B15441624A4FB01C4B51412BCC4D802AB15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>427867 - 5316048
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002A000000295C8F92E1425141B81E85BBB8A5544133333353DD425141713D0A07B9A5544152B81E35D64251418FC2F588B9A5544148E17A04D4425141D7A370FDB9A55441E17A143ED342514185EB51C8BAA554415C8FC215D3425141C3F5281CBCA554411F85EB01D34251410AD7A3C0CDA55441E17A149ED2425141CDCCCCFCE2A55441666666E6D0425141A4703DCAEFA55441A4703D5AD0425141CDCCCCDCF4A55441713D0A57CF425141C3F528CCFAA55441713D0A27CD425141EC51B8BE01A6544100000080C64251418FC2F5380DA65441333333F3C342514114AE471112A65441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006800000048E17AB4C34251417B14AE6721A65441E247CE45C74251413842B10F20A65441C0FA877FC7425141066ACCFE1FA6544100000050CA425141EC51B81E1EA65441B2657B65CC425141F7A0963C1AA65441F911602DCE42514121AC0AEB16A654417C180E96CE4251419DD32E1916A6544107F41D03D0425141163E8F3F14A65441242C091FD34251411A990F1A10A654416888D76FD542514184F772030DA6544121F4FF2BD6425141E1F2D2240CA654414B2023D5D84251411090129409A6544152DF0779DC425141EBD78A1106A654411397CAA8DE4251415627EBE703A65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>428334 - 88539
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000713D0A870661514133333363EAA05441AE47E11A0D615141EC51B86EE8A05441000000702861514114AE47A1DEA0544148E17AB4296151413D0AD733DEA0544152B81E2521615141B81E857BBEA05441AE47E15AF96051410AD7A3F0CAA05441C3F528DCF8605141E17A146EC9A0544148E17AD4E9605141CDCCCC3CCEA0544133333303EB605141000000C0D9A0544114AE47E1F260514152B81E95DAA05441AE47E1AAF6605141713D0AB7D8A0544166666696F8605141713D0A47D8A054413D0AD773FA6051415C8FC2A5D9A05441295C8F62FB605141713D0A77E8A05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000060C966602061514106C540F4BCA054415C0AF66320615141871B87FFBCA05441C3F528DCF8605141E17A146EC9A05441AE47E15AF96051410AD7A3F0CAA0544152B81E2521615141B81E857BBEA05441508B8AA32961514154978D39DEA05441B281F8A6296151413F796538DEA05441E9032AB7296151413BD0E282DEA05441666666F62B6151410AD7A370DDA05441FA120FC92261514111FE9031BCA0544160C966602061514106C540F4BCA05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>428708 - 3612013
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000130000001F85EBE198855141AE47E16A28AC5441CDCCCC5C9985514185EB51D829AC5441CDCCCC2C9C8551415C8FC23532AC54410AD7A350A08551417B14AE873EAC544166666666A4855141EC51B8AE4AAC5441666666F6A98551418FC2F5385BAC5441EC51B8EEAC85514148E17AF458AC54419A999949AF855141AE47E12A58AC544185EB5198B28551411F85EB1158AC5441CDCCCC5CB785514148E17AB453AC54410AD7A380B4855141C3F5286C4BAC54410AD7A3B0B185514148E17A7443AC54410AD7A360AF8551415C8FC2B53CAC5441713D0AE7AD85514152B81E9538AC5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000700000088A626E298855141520ABF6A28AC5441682E5138A485514177E8DEEA21AC5441296FDC5D9D855141EF4FC12518AC5441A4703D0A9B8551419A9999191AAC54413D0AD7D398855141EC51B83E1CAC54415C8FC2D5958551418FC2F5581FAC544188A626E298855141520ABF6A28AC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>510167 - 149100
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001E00000085EB5158A85D5141666666860DC7544114AE4761A45D5141F6285CBF16C7544152B81E959F5D51413D0AD7B313C754417B14AE179D5D51413D0AD79317C75441EC51B86E9B5D5141666666D616C7544152B81EA5955D51417B14AED718C75441EC51B8EE925D5141C3F5287C20C7544148E17A94925D51411F85EB3121C75441333333D39A5D5141E17A142E29C75441295C8F429D5D51417B14AE5729C75441F6285C7F9F5D514148E17A3422C7544100000080A65D51417B14AEE721C75441E17A14CEA85D51410AD7A3A021C754419A9999E9A95D51417B14AEF71FC75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000E27BC5D0AA5D5141252E956D05C754417B14AEF7AC5D5141C3F528BC02C7544148E17A54BD5D514133333363F2C65441FAE82B91C65D51416FC18BC4E8C6544152B81EC5C75D51413D0AD783E7C6544139EE3410C45D514124DD7DE5E3C65441666666C6C35D5141D7A3709DE3C65441B854CEA0C25D514106B358A5E3C654410ACD52F6C05D5141BB586B2BE5C65441CF7FA6C3C05D514156D78B61E5C654419E8603F2BF5D51413EC27841E6C65441E80CAD39BE5D51417BADD217E8C654418B0E8E25BD5D51417AB3C33EE9C65441DFE6DFEAB85D5141A5843DC3EDC65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>510167 - 310494
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001E00000085EB5158A85D5141666666860DC7544114AE4761A45D5141F6285CBF16C7544152B81E959F5D51413D0AD7B313C754417B14AE179D5D51413D0AD79317C75441EC51B86E9B5D5141666666D616C7544152B81EA5955D51417B14AED718C75441EC51B8EE925D5141C3F5287C20C7544148E17A94925D51411F85EB3121C75441333333D39A5D5141E17A142E29C75441295C8F429D5D51417B14AE5729C75441F6285C7F9F5D514148E17A3422C7544100000080A65D51417B14AEE721C75441E17A14CEA85D51410AD7A3A021C754419A9999E9A95D51417B14AEF71FC75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000E27BC5D0AA5D5141252E956D05C754417B14AEF7AC5D5141C3F528BC02C7544148E17A54BD5D514133333363F2C65441FAE82B91C65D51416FC18BC4E8C6544152B81EC5C75D51413D0AD783E7C6544139EE3410C45D514124DD7DE5E3C65441666666C6C35D5141D7A3709DE3C65441B854CEA0C25D514106B358A5E3C654410ACD52F6C05D5141BB586B2BE5C65441CF7FA6C3C05D514156D78B61E5C654419E8603F2BF5D51413EC27841E6C65441E80CAD39BE5D51417BADD217E8C654418B0E8E25BD5D51417AB3C33EE9C65441DFE6DFEAB85D5141A5843DC3EDC65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429293 - 3471453
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002E000000B81E85AB1A625141C3F5287C0AC354415C8FC2C51A625141713D0AF707C35441AE47E10A1B62514114AE471106C354410AD7A3A01B62514148E17A4403C3544185EB51081C625141CDCCCC9C01C354417B14AEA71C625141EC51B8DEFFC254410AD7A3B01D625141A4703DEAFDC25441295C8FD21E6251411F85EB11FCC25441A4703D0A20625141713D0A47FAC254413D0AD77321625141B81E856BF8C25441CDCCCCDC2262514148E17AD4F6C254413D0AD7B324625141295C8F12F5C25441C3F528AC27625141F6285C6FF2C2544152B81EA529625141EC51B8CEF0C25441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000CB20815F05625141779C0995F9C2544122424D0606625141B3579348FBC25441883F9289066251412D06589FFCC254410CC0DCE206625141A8834B91FDC25441914735320862514142228ABDFCC25441099F1CB309625141129E7DCAFBC254412DCA92080B625141B29BDFF2FAC25441A0C76A660C6251419D9CF615FAC25441E38D267B0D625141760A3867F9C25441EDA3510F0F625141115B0168F8C254412D6891BB10625141AAF59559F7C25441F2597467116251410B220CEDF6C254413C7CF4A813625141FFEA6180F5C25441CDCCCC7C156251418FC2F558F4C25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429340 - 1230325
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000200000012000000F6285C1FAA8551418FC2F51841AA54415C8FC2E5A6855141B81E85CB33AA54411F85EB71A685514148E17A9432AA5441333333F3A58551411F85EB3130AA5441666666B6A485514152B81E452CAA5441333333A3A285514148E17A6425AA5441D7A3707DA18551419A99993921AA5441713D0A87A0855141C3F528BC22AA5441C3F5286C9F855141000000B024AA5441E17A143E9E855141E17A140E27AA54411F85EBE19E855141EC51B8FE28AA544166666626A08551415C8FC2B52DAA544133333373A1855141D7A3700D32AA5441295C8F52A28551416666668635AA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000001883DC5FA88551413F7330D01FAA54416485B82AA78551414A93D5331BAA544175A53737A6855141832CDD9916AA5441C323244DA58551418D63C85810AA5441D4CD7E9AA48551417D5FD8920BAA54419023E261A38551415D75FEA304AA54419850E42BA2855141C99BFC2BFEA954414857810BA185514188246527F8A9544115F56F5F9B8551410C3EC1EEF9A95441E7A527A397855141E1AF8733FBA954417B33E09F98855141BAA4427700AA5441E635FC4E998551410140A28805AA544113C78C9399855141ABA8EE130AAA54419F30AED899855141D07CB5120EAA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429340 - 3535346
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000200000012000000F6285C1FAA8551418FC2F51841AA54415C8FC2E5A6855141B81E85CB33AA54411F85EB71A685514148E17A9432AA5441333333F3A58551411F85EB3130AA5441666666B6A485514152B81E452CAA5441333333A3A285514148E17A6425AA5441D7A3707DA18551419A99993921AA5441713D0A87A0855141C3F528BC22AA5441C3F5286C9F855141000000B024AA5441E17A143E9E855141E17A140E27AA54411F85EBE19E855141EC51B8FE28AA544166666626A08551415C8FC2B52DAA544133333373A1855141D7A3700D32AA5441295C8F52A28551416666668635AA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000001883DC5FA88551413F7330D01FAA54416485B82AA78551414A93D5331BAA544175A53737A6855141832CDD9916AA5441C323244DA58551418D63C85810AA5441D4CD7E9AA48551417D5FD8920BAA54419023E261A38551415D75FEA304AA54419850E42BA2855141C99BFC2BFEA954414857810BA185514188246527F8A9544115F56F5F9B8551410C3EC1EEF9A95441E7A527A397855141E1AF8733FBA954417B33E09F98855141BAA4427700AA5441E635FC4E998551410140A28805AA544113C78C9399855141ABA8EE130AAA54419F30AED899855141D07CB5120EAA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429418 - 1264104
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000800000001F85EBB12762514148E17A7436C154415C8FC2A5256251410AD7A3D039C154410AD7A32026625141E17A149E3EC154417B14AE07256251415C8FC2D53FC154411F85EBE122625141AE47E13A40C154418FC2F5D8216251410AD7A33043C1544148E17A54196251410AD7A3C04AC1544152B81E05176251410AD7A3F04BC15441E17A14CE16625141EC51B80E4DC15441AE47E16A15625141D7A3709D4EC15441B81E85AB126251417B14AE674EC15441A4703DCA0C625141295C8F1250C15441295C8F420C6251417B14AE2751C15441EC51B81E0A62514152B81EA552C15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000CD000000FD148F9B4A625141FF7607EA47C15441D7A3704D4962514185EB51E841C15441951D4354496251418E9F40E841C1544133333323526251411F85EBD141C15441333333E352625141000000D041C154418FC2F568556251415C8FC2F540C154413D0AD7F355625141666666C640C1544133333323576251410000006040C15441B81E858B5862514114AE47313FC15441EC51B88E5B625141000000203DC15441E17A14CE5A62514114AE47D136C15441CDCCCCBC5A6251419A99995936C15441F6285C2F596251415C8FC27536C15441EC51B84E58625141C3F5280C37C15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429418 - 3189466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000800000001F85EBB12762514148E17A7436C154415C8FC2A5256251410AD7A3D039C154410AD7A32026625141E17A149E3EC154417B14AE07256251415C8FC2D53FC154411F85EBE122625141AE47E13A40C154418FC2F5D8216251410AD7A33043C1544148E17A54196251410AD7A3C04AC1544152B81E05176251410AD7A3F04BC15441E17A14CE16625141EC51B80E4DC15441AE47E16A15625141D7A3709D4EC15441B81E85AB126251417B14AE674EC15441A4703DCA0C625141295C8F1250C15441295C8F420C6251417B14AE2751C15441EC51B81E0A62514152B81EA552C15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000CD000000FD148F9B4A625141FF7607EA47C15441D7A3704D4962514185EB51E841C15441951D4354496251418E9F40E841C1544133333323526251411F85EBD141C15441333333E352625141000000D041C154418FC2F568556251415C8FC2F540C154413D0AD7F355625141666666C640C1544133333323576251410000006040C15441B81E858B5862514114AE47313FC15441EC51B88E5B625141000000203DC15441E17A14CE5A62514114AE47D136C15441CDCCCCBC5A6251419A99995936C15441F6285C2F596251415C8FC27536C15441EC51B84E58625141C3F5280C37C15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264552 - 264122
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000022000000509778EBF2155141DF81F25728885441C3F5287CF4155141B81E85BB29885441666666C6FC1551419A9999192D8854411F85EB21FD15514185EB511828885441E57D1779FD155141BEB3DC002388544108915115FD155141A72B6F9C1E885441132A2513FD155141BA875756168854412135DCB4FD155141BFCC53C70B8854418E051BDFFD1551411F82118A05885441581973E8FD155141B656E52701885441295C8FC2FD155141AE47E14AFD875441C3F528DC02165141F6285C3FFD875441000000F00716514100000060FC8754410AD7A3F00B16514166666656FB875441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000E1ED24BAF3155141A60DE604028854411C826CF4F315514113E442C3FA875441CF129602F4155141B0743800F787544181A3BF10F41551417B108365F58754419B2B4244F4155141EE742D0BF18754415F770BA4F41551412121064FEA875441F43994B4F31551412121064FEA87544100000090F315514133333333E9875441713D0AE7F0155141295C8F72E9875441713D0A57EC155141AE47E1DAE98754417B14AE67E815514148E17AB4EA875441AE47E1CAE315514152B81E55EC8754410AD7A3E0E5155141295C8FD2F287544133333373E7155141E17A140EF8875441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264552 - 265321
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000022000000509778EBF2155141DF81F25728885441C3F5287CF4155141B81E85BB29885441666666C6FC1551419A9999192D8854411F85EB21FD15514185EB511828885441E57D1779FD155141BEB3DC002388544108915115FD155141A72B6F9C1E885441132A2513FD155141BA875756168854412135DCB4FD155141BFCC53C70B8854418E051BDFFD1551411F82118A05885441581973E8FD155141B656E52701885441295C8FC2FD155141AE47E14AFD875441C3F528DC02165141F6285C3FFD875441000000F00716514100000060FC8754410AD7A3F00B16514166666656FB875441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000295C8FC2FD155141AE47E14AFD87544148E17AF4FD1551411F85EB6102885441E17A14AEFD1551417B14AEC70C885441713D0A17FD155141D7A370DD158854418FC2F5E8FC1551413D0AD7731B885441C3F5282CFD155141CDCCCC3C208854411F85EB41FE155141713D0A772588544152B81E15031651410000009023885441EC51B8CE021651411F85EB61218854410AD7A33002165141D7A3705D1F885441666666E601165141000000101D885441000000F001165141333333F3178854418FC2F54802165141295C8FF211885441295C8F120316514152B81E5504885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264552 - 1053480
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000022000000509778EBF2155141DF81F25728885441C3F5287CF4155141B81E85BB29885441666666C6FC1551419A9999192D8854411F85EB21FD15514185EB511828885441E57D1779FD155141BEB3DC002388544108915115FD155141A72B6F9C1E885441132A2513FD155141BA875756168854412135DCB4FD155141BFCC53C70B8854418E051BDFFD1551411F82118A05885441581973E8FD155141B656E52701885441295C8FC2FD155141AE47E14AFD875441C3F528DC02165141F6285C3FFD875441000000F00716514100000060FC8754410AD7A3F00B16514166666656FB875441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000E1ED24BAF3155141A60DE604028854411F826CF4F315514116E442C3FA875441D1129602F4155141B1743800F787544184A3BF10F415514176108365F58754419F2B4244F4155141EE742D0BF187544162770BA4F41551412221064FEA875441F43994B4F31551412221064FEA87544100000090F315514133333333E9875441713D0AE7F0155141295C8F72E9875441713D0A57EC155141AE47E1DAE98754417B14AE67E815514148E17AB4EA875441AE47E1CAE315514152B81E55EC8754410AD7A3E0E5155141295C8FD2F287544133333373E7155141E17A140EF8875441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264552 - 1053586
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000022000000509778EBF2155141DF81F25728885441C3F5287CF4155141B81E85BB29885441666666C6FC1551419A9999192D8854411F85EB21FD15514185EB511828885441E57D1779FD155141BEB3DC002388544108915115FD155141A72B6F9C1E885441132A2513FD155141BA875756168854412135DCB4FD155141BFCC53C70B8854418E051BDFFD1551411F82118A05885441581973E8FD155141B656E52701885441295C8FC2FD155141AE47E14AFD875441C3F528DC02165141F6285C3FFD875441000000F00716514100000060FC8754410AD7A3F00B16514166666656FB875441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000295C8FC2FD155141AE47E14AFD87544148E17AF4FD1551411F85EB6102885441E17A14AEFD1551417B14AEC70C885441713D0A17FD155141D7A370DD158854418FC2F5E8FC1551413D0AD7731B885441C3F5282CFD155141CDCCCC3C208854411F85EB41FE155141713D0A772588544152B81E15031651410000009023885441EC51B8CE021651411F85EB61218854410AD7A33002165141D7A3705D1F885441666666E601165141000000101D885441000000F001165141333333F3178854418FC2F54802165141295C8FF211885441295C8F120316514152B81E5504885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264552 - 3864988
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000022000000509778EBF2155141DF81F25728885441C3F5287CF4155141B81E85BB29885441666666C6FC1551419A9999192D8854411F85EB21FD15514185EB511828885441E57D1779FD155141BEB3DC002388544108915115FD155141A72B6F9C1E885441132A2513FD155141BA875756168854412135DCB4FD155141BFCC53C70B8854418E051BDFFD1551411F82118A05885441581973E8FD155141B656E52701885441295C8FC2FD155141AE47E14AFD875441C3F528DC02165141F6285C3FFD875441000000F00716514100000060FC8754410AD7A3F00B16514166666656FB875441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000E1ED24BAF3155141A60DE604028854411F826CF4F315514116E442C3FA875441D1129602F4155141B1743800F787544184A3BF10F415514176108365F58754419F2B4244F4155141EE742D0BF187544162770BA4F41551412221064FEA875441F43994B4F31551412221064FEA87544100000090F315514133333333E9875441713D0AE7F0155141295C8F72E9875441713D0A57EC155141AE47E1DAE98754417B14AE67E815514148E17AB4EA875441AE47E1CAE315514152B81E55EC8754410AD7A3E0E5155141295C8FD2F287544133333373E7155141E17A140EF8875441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>264552 - 3865071
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000022000000509778EBF2155141DF81F25728885441C3F5287CF4155141B81E85BB29885441666666C6FC1551419A9999192D8854411F85EB21FD15514185EB511828885441E57D1779FD155141BEB3DC002388544108915115FD155141A72B6F9C1E885441132A2513FD155141BA875756168854412135DCB4FD155141BFCC53C70B8854418E051BDFFD1551411F82118A05885441581973E8FD155141B656E52701885441295C8FC2FD155141AE47E14AFD875441C3F528DC02165141F6285C3FFD875441000000F00716514100000060FC8754410AD7A3F00B16514166666656FB875441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000295C8FC2FD155141AE47E14AFD87544148E17AF4FD1551411F85EB6102885441E17A14AEFD1551417B14AEC70C885441713D0A17FD155141D7A370DD158854418FC2F5E8FC1551413D0AD7731B885441C3F5282CFD155141CDCCCC3C208854411F85EB41FE155141713D0A772588544152B81E15031651410000009023885441EC51B8CE021651411F85EB61218854410AD7A33002165141D7A3705D1F885441666666E601165141000000101D885441000000F001165141333333F3178854418FC2F54802165141295C8FF211885441295C8F120316514152B81E5504885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>429850 - 5147451
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000060000003D0AD713BB845141D7A370BDC4AB54415C8FC2B5CD84514148E17A54A7AB544114AE47A1CC845141E17A144EA6AB54411F85EB81C4845141A4703DBAB3AB5441AE47E1BAB984514166666686C3AB54413D0AD713BB845141D7A370BDC4AB5441
+</a>
+
+<b>
+0106000000010000000103000000010000001400000032B2CA13BB845141868265BDC4AB54411F85EBF1BB845141D7A3708DC5AB54418FC2F5B8BC8451417B14AE47C6AB5441D7A3707DBE845141EC51B89EC7AB5441E8432A94CF845141C371BA72AAAB5441AA011946CE845141BF332072A9AB544195EBBDD6CD845141B9DE2216A9AB5441401ABE00CD8451419ECE3372A8AB5441F18C5601CD845141EB2D4371A8AB54415CAC6B83CA845141CA228982A6AB54412824E012C98451410EA89764A5AB5441B5E5E0E7C7845141123CA079A4AB54410AD7A350C1845141666666C6AEAB544148E17AF4BD845141CDCCCCDCB2AB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>510345 - 55630
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000005F000000F6285C5FF86951418FC2F5F8A1D7544133333393F4695141333333E3A3D75441713D0A37F6695141CDCCCC8CA4D75441F6285C8FF76951411F85EB81A6D7544114AE4791FA6951415C8FC2D5A4D75441A4703D0AFD6951417B14AE97A4D75441E17A145EFF6951411F85EB81A5D7544114AE4731006A51413D0AD7C3A7D75441CDCCCC8CFF695141AE47E17AA9D7544166666656006A51411F85EBC1AAD75441B81E85FB016A5141295C8F62ABD75441F6285C0F036A5141295C8F02ABD754418FC2F5B8056A514148E17A74ACD754417B14AEB70A6A51419A9999D9B0D75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009F000000A9494598226A5141EAEE5E4FD0D7544148E5C59A286A5141F96D0B56CCD75441000000A0286A5141295C8F52CCD75441AE47E14A2C6A514133333303CAD7544130AB8D8A2D6A514109EC5E5DC9D75441DB2D87C52E6A5141CCA1FAB9C8D754415C8FC2F52F6A5141C3F5281CC8D754419A999929316A5141EC51B8BEC7D75441D7A370ED2F6A5141CDCCCCDCC6D7544114AE47B12D6A5141A4703D0AC4D75441F8F069FA2C6A51416836BCAFC2D75441542B046C2C6A5141899DE9A1C1D7544152B81E752B6A5141E17A14CEBFD754418FC2F5C8296A5141C3F528ACBBD75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>430060 - 1229604
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002B00000085EB5178156E51416666666690BA5441C3F5284C166E5141B81E857B8FBA54413D0AD7F3176E51413D0AD7638FBA54418FC2F548196E5141295C8F928FBA5441AE47E1CA196E51410000002090BA5441713D0A171C6E5141F6285C6F8FBA5441666666D61D6E514114AE47118FBA5441713D0AF7206E51415C8FC2058FBA544133333323246E514185EB510890BA5441CDCCCC6C256E514185EB51E890BA544166666696276E514114AE471193BA54411F85EBD12B6E51419A9999098FBA54411F85EB112D6E5141713D0A278EBA5441713D0A972D6E51417B14AE078CBA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A00000085EB5178156E51416666666690BA5441C3F5284C166E5141B81E857B8FBA54413D0AD7F3176E51413D0AD7638FBA54418FC2F548196E5141295C8F928FBA5441AE47E1CA196E51410000002090BA5441713D0A171C6E5141F6285C6F8FBA5441666666D61D6E514114AE47118FBA5441713D0AF7206E51415C8FC2058FBA544133333323246E514185EB510890BA5441CDCCCC6C256E514185EB51E890BA544166666696276E514114AE471193BA54411F85EBD12B6E51419A9999098FBA54411F85EB112D6E5141713D0A278EBA5441713D0A972D6E51417B14AE078CBA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>430060 - 3390601
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002B00000085EB5178156E51416666666690BA5441C3F5284C166E5141B81E857B8FBA54413D0AD7F3176E51413D0AD7638FBA54418FC2F548196E5141295C8F928FBA5441AE47E1CA196E51410000002090BA5441713D0A171C6E5141F6285C6F8FBA5441666666D61D6E514114AE47118FBA5441713D0AF7206E51415C8FC2058FBA544133333323246E514185EB510890BA5441CDCCCC6C256E514185EB51E890BA544166666696276E514114AE471193BA54411F85EBD12B6E51419A9999098FBA54411F85EB112D6E5141713D0A278EBA5441713D0A972D6E51417B14AE078CBA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A00000085EB5178156E51416666666690BA5441C3F5284C166E5141B81E857B8FBA54413D0AD7F3176E51413D0AD7638FBA54418FC2F548196E5141295C8F928FBA5441AE47E1CA196E51410000002090BA5441713D0A171C6E5141F6285C6F8FBA5441666666D61D6E514114AE47118FBA5441713D0AF7206E51415C8FC2058FBA544133333323246E514185EB510890BA5441CDCCCC6C256E514185EB51E890BA544166666696276E514114AE471193BA54411F85EBD12B6E51419A9999098FBA54411F85EB112D6E5141713D0A278EBA5441713D0A972D6E51417B14AE078CBA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>430858 - 264038
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000290000005C8FC2B5954751413D0AD783AE835441B81E85FBA4475141713D0A97A98354410AD7A380A9475141E17A144EA983544148E17A44B247514185EB51B8A88354411F85EB11C94751417B14AE87A183544185EB5108D24751419A999919A083544185EB51B8DC475141EC51B8AE9F835441F6285C9FE8475141D7A3700D9C835441F6285C0FEA4751419A9999299A835441E17A149EE74751419A9999698583544185EB51B8E24751413333339373835441713D0A87DE475141F6285CBF64835441713D0AE7D7475141000000F04D835441E17A148ED6475141AE47E16A49835441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000067159449C047514113669E4CA48354416C63B0A5C14751413193DADEA38354415EADF1DDBB4751411FEA3ED78683544127C590A2B3475141B032CD6989835441411F6A37A9475141E91BB5248D8354417C09D971A8475141EE379AAC92835441977D898FAC47514144AF090EA9835441370318DEAC475141BC8F9514A983544148E17A44B247514185EB51B8A883544167159449C047514113669E4CA4835441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>431121 - 205513
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000900000048E17A54144F51415C8FC2855C84544114AE4751144F5141295C8FC25B845441C3F5284C114F51411F85EB81598454417B14AE37034F5141AE47E12A6F845441D7A3706D074F5141CDCCCCDC708454418FC2F508014F514148E17AB47A84544100000020034F51413D0AD7B37B845441EC51B8AE0B4F514114AE47316C84544148E17A54144F51415C8FC2855C845441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000ABED85B9014F5141A568A0A4798454417A19706D074F5141D7A1CDDC708454414E7BAD37034F51410B82E22A6F845441ADB4809CFE4E51417678BB41768454413D0AD703F94E5141EC51B8DE7E8454417D3E7F8FF74E51417301BC467E845441FD7CA3E0F64E51410C435CFF7D845441A2F3D6C3F54E5141B49534E37D8454418D50C355F54E5141CAAFF6987E845441F5987BB2F44E51419F58BE547F8454413D0AD7F3F34E51410000003080845441B81E85DBF24E51411F85EBB1818454415F87CDC8F24E5141290424EF81845441697ECCBCF24E514162D2671682845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>431121 - 265341
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000900000048E17A54144F51415C8FC2855C84544114AE4751144F5141295C8FC25B845441C3F5284C114F51411F85EB81598454417B14AE37034F5141AE47E12A6F845441D7A3706D074F5141CDCCCCDC708454418FC2F508014F514148E17AB47A84544100000020034F51413D0AD7B37B845441EC51B8AE0B4F514114AE47316C84544148E17A54144F51415C8FC2855C845441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000ABED85B9014F5141A568A0A4798454417A19706D074F5141D7A1CDDC708454414E7BAD37034F51410B82E22A6F845441ADB4809CFE4E51417678BB41768454413D0AD703F94E5141EC51B8DE7E8454417D3E7F8FF74E51417301BC467E845441FD7CA3E0F64E51410C435CFF7D845441A2F3D6C3F54E5141B49534E37D8454418D50C355F54E5141CAAFF6987E845441F5987BB2F44E51419F58BE547F8454413D0AD7F3F34E51410000003080845441B81E85DBF24E51411F85EBB1818454415F87CDC8F24E5141290424EF81845441697ECCBCF24E514162D2671682845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>431122 - 205497
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002100000048E17AF4FA4E5141CDCCCCCC5184544100000050F94E5141295C8FE2518454413D0AD723F84E5141713D0AC75184544114AE4751F74E51419A9999C951845441713D0AD7F64E51411F85EB81518454411F85EBD1F54E514152B81E8551845441AE47E14AF34E5141D7A3707D51845441E17A14FEF04E514152B81EA5518454419A9999D9EF4E51411F85EBB1518454410AD7A3A0EE4E51415C8FC225528454410AD7A380ED4E5141C3F5288C528454417B14AEE7EC4E5141D7A3707D5284544185EB5178E74E5141713D0A775C845441E17A14FEE54E5141E17A14DE5E845441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F00000072ABAB00E74E51410643494885845441072CD6C3EA4E51416B79294C7E8454419616C235F64E5141FB847A3469845441A5E2B78EF04E5141EE488EE26484544139C1CC5CF14E51417A0ACC8C6384544136CFACE7F44E5141879434535E845441A999FF9FF74E5141D007AE275A845441AFC4CB6CFD4E51419F937BD451845441F48B1C3FFC4E514121D6D0D05184544148E17AF4FA4E5141CDCCCCCC5184544100000050F94E5141295C8FE2518454413D0AD723F84E5141713D0AC7518454416FB4A4E3F74E5141AF0CD2C751845441E2EE4751F74E5141C8989AC951845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>431180 - 969329
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000047000000F6285C4FE3425141B81E853B119654419A9999B9EC4251413D0AD7830A965441A4703DDAEE425141E17A142E0996544166666646F4425141713D0AD70396544185EB5138F8425141C3F5288CFF955441D7A3709DFA4251419A9999C9FA9554418FC2F528FD42514185EB51A8F59554419A99994900435141B81E859BEE955441000000600243514152B81E85EB955441666666B606435141EC51B84EE7955441295C8FC20B43514185EB5178E49554417B14AE570D435141333333B3E3955441B81E851B11435141713D0AA7E59554410AD7A380124351415C8FC205E4955441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000037000000CFD2EEC8814251410DB19612F89554414894BB2C7A4251412EE69B33F89554419C8AA66F74425141658C068AF8955441A2A17B2979425141BCA84FC01696544194793B337C42514114BF2E7928965441B8819AD57C42514171CB296F309654419CAFB4EE7F425141A995AAA8349654413972E5B389425141352CEE9C33965441BB033A8E98425141AB8CE3C432965441D55CD936A542514120EDD8EC319654418169A332B1425141E9466E96319654415F7B5E4BB14251413F17DDFB3096544100000050B142514148E17AA430965441E3DBB76FB1425141027CAE1830965441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>431185 - 1269386
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000002B0000008FC2F59872435141F6285CDF9E955441EC51B81E784351411F85EB119C955441B81E850B7E43514133333363989554418FC2F56883435141000000A0949554410AD7A340874351416666660693955441333333038743514185EB5118879554415C8FC2C58643514152B81EE585955441AE47E1BA85435141C3F5282C85955441000000108443514148E17A2484955441E17A14DE8043514185EB517884955441AE47E13A7A435141295C8F8285955441CDCCCCDC7343514114AE478187955441333333D366435141D7A3706D8D955441EC51B84E604351410000006090955441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004C000000B35211E5864351418FF7A63C93955441A7A13693844351418B00CF239495544164F81C57834351412B1D84AC94955441F93D76987F43514119A1D24C97955441F393B0BA7C4351414BE08B3499955441122AEA447843514173672EFA9B9554412B92A4637243514188D82AFF9E955441C6A11C406B4351411CA9BF07A3955441EC51B83E66435141D7A3704DA5955441CDCCCC0C5B435141E17A14CEA8955441B81E852B59435141713D0A37A195544114AE478159435141D7A370DD9D9554415C8FC2155A4351413D0AD70398955441D01B9F2553435141ACBF2A769B955441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>431185 - 3424705
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000002B0000008FC2F59872435141F6285CDF9E955441EC51B81E784351411F85EB119C955441B81E850B7E43514133333363989554418FC2F56883435141000000A0949554410AD7A340874351416666660693955441333333038743514185EB5118879554415C8FC2C58643514152B81EE585955441AE47E1BA85435141C3F5282C85955441000000108443514148E17A2484955441E17A14DE8043514185EB517884955441AE47E13A7A435141295C8F8285955441CDCCCCDC7343514114AE478187955441333333D366435141D7A3706D8D955441EC51B84E604351410000006090955441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004C000000B35211E5864351418FF7A63C93955441A7A13693844351418B00CF239495544164F81C57834351412B1D84AC94955441F93D76987F43514119A1D24C97955441F393B0BA7C4351414BE08B3499955441122AEA447843514173672EFA9B9554412B92A4637243514188D82AFF9E955441C6A11C406B4351411CA9BF07A3955441EC51B83E66435141D7A3704DA5955441CDCCCC0C5B435141E17A14CEA8955441B81E852B59435141713D0A37A195544114AE478159435141D7A370DD9D9554415C8FC2155A4351413D0AD70398955441D01B9F2553435141ACBF2A769B955441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>431628 - 407546
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000EC51B8DE4E4D51410AD7A34092835441666666762A4D514133333383828354410AD7A3E0304D51413D0AD70376835441A4703D3A2E4D5141CDCCCC3C74835441AE47E10A2B4D5141F6285CDF7A8354419A9999B9294D51418FC2F5887D83544166666606264D5141A4703D6A8083544114AE47C1224D5141CDCCCC6C818354418FC2F5881E4D514133333313808354413D0AD7131D4D51417B14AEE781835441E17A148E1A4D514114AE47E18083544114AE47710C4D5141AE47E16A95835441713D0AF7124D5141B81E856B988354410AD7A380154D51413D0AD7F399835441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000000C53DE6E304D51417E48DCBB98835441295C8F22384D5141CDCCCCEC9B8354414B3E687F384D514139EC69179C8354418B321FF5384D5141558C6F4D9C8354417D5005C6394D5141DBAB37819B835441C3F528DC3B4D5141713D0A7799835441DF71C2253C4D5141A54A694D99835441B3CE99693C4D5141D81E092799835441E7AAD3CF3C4D5141D318C71B99835441C3F5284C3D4D5141E17A140E9983544152B81E05474D5141000000309A835441E35F690A494D5141C5EA53D199835441ECE446D14A4D5141E8D3137E99835441BC0C5C774D4D51416AEAA7C294835441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>963296 - 962790
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003C000000B0B1FBE965D15041E6FFC8358C365541AA71B5DC65D150419812C5458C365541613CA8D965D15041A82EC4438C365541A51FB9B665D150419FFD988E8E365541495D70F965D150411576592A92365541059675C36CD150413739351AA6365541FCB2484B71D15041954E2FE3B0365541C36FCB2874D15041B0AB6DA8B4365541B440ADAC80D150418975A8ADBE365541549049C581D15041CB8C175FBE365541AAF30B4787D15041BC0B30FBB8365541AFDBE0948DD15041F3EE4389B3365541BDF9E55A95D150413FDF9326AE3655410DD8BC639BD150410D250DEFA9365541 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000026000000F512ADF965D15041A45FFC998C365541FC327DF873D1504198AC3C1079365541C43FA87668D15041024812D87036554105D7A0005ED150410005645368365541452BEB054BD15041C6CEE04C54365541E576E7CA45D15041661ADD114F365541EF9FF24F43D15041899D01E14A365541E17A148E40D150411F85EB914B3655410000005040D150418FC2F5684C3655415C8FC21541D150411F85EB01513655417B14AE6742D150419A9999595536554114AE479141D15041A4703DAA573655417B14AEB73AD15041CDCCCC4C5B365541BEAA87BA38D1504147A6337F5B365541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>432302 - 3074835
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000042000000CDCCCCAC18535141B81E85FB9B5654417B14AE7721535141666666869E5654413D0AD7F32B53514148E17A34A1565441295C8F723653514100000060A4565441F6285C2F415351410AD7A340A756544152B81EB54153514133333363A5565441A4703D3A4253514152B81E85A356544152B81E1543535141D7A3704D9F565441F6285CEF435351417B14AEE79A565441B81E857B44535141F6285C1F96565441A4703DAA4453514100000060935654418FC2F588445351410AD7A3F0905654413D0AD743445351410AD7A300895654411F85EB515353514148E17A6487565441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000070000009CA35DE55753514119B8E7CC5556544114AE47E152535141000000D02156544122862528485351413FE75E01235654411BE602714D535141D55CFB44595654410DAC1D4453535141D445087A57565441E4044B8753535141B5224F62575654419CA35DE55753514119B8E7CC55565441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>432302 - 3364861
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000042000000CDCCCCAC18535141B81E85FB9B5654417B14AE7721535141666666869E5654413D0AD7F32B53514148E17A34A1565441295C8F723653514100000060A4565441F6285C2F415351410AD7A340A756544152B81EB54153514133333363A5565441A4703D3A4253514152B81E85A356544152B81E1543535141D7A3704D9F565441F6285CEF435351417B14AEE79A565441B81E857B44535141F6285C1F96565441A4703DAA4453514100000060935654418FC2F588445351410AD7A3F0905654413D0AD743445351410AD7A300895654411F85EB515353514148E17A6487565441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000070000009CA35DE55753514119B8E7CC5556544114AE47E152535141000000D02156544122862528485351413FE75E01235654411BE602714D535141D55CFB44595654410DAC1D4453535141D445087A57565441E4044B8753535141B5224F62575654419CA35DE55753514119B8E7CC55565441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>432655 - 340787
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000110000001F85EB615C4751413D0AD7D3A051544152B81EF55547514152B81EA59E5154418FC2F53849475141A4703D4A9B515441C3F5282C47475141EC51B8AE9A51544114AE47B1414751419A9999B99E515441A4703DEA4547514114AE4701A451544152B81E9550475141295C8F32AF51544185EB512854475141F6285CCFAD515441B81E851B57475141AE47E16AAC5154415C8FC225584751411F85EBE1AB51544148E17AA45D475141333333F3B0515441CDCCCC1C60475141A4703D0AAD515441D7A370FD6347514114AE4731A651544114AE479164475141C3F5282CA5515441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000CDCCCC9C5F475141C3F5284CA251544138516ABB5E475141C2E0349CA35154418B6A4B265E475141521BBA70A45154410850AC375D4751417C8494BAA551544105E42D7D5C475141AD3360BCA6515441C3CFED3C5B475141C491C86BA8515441192030815A47514102D69A55A9515441D1794C70594751419F4D79A9AA515441D7A370AD58475141C3F5289CAB51544108F1E780584751417A78CBC0AB5154414FC15A2858475141020696E0AB51544148E17AA45D475141333333F3B05154412E22CAFD5F4751412151543BAD5154419782DB286147514170A7DC30AB515441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>433151 - 42456
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000AC000000E17A14FE515E51419A999949CC4154415C8FC2354E5E51417B14AEE7C74154418FC2F5284D5E5141B81E85BBC5415441666666264C5E514100000000C3415441CDCCCCBC4B5E51410AD7A320C1415441000000404B5E5141AE47E1BABE415441333333F34A5E514185EB51C8BC415441666666A64A5E5141295C8FF2BA415441666666A64A5E5141295C8FD2B94154419A9999B94A5E51419A9999E9B7415441000000E04A5E5141D7A370BDB5415441666666664B5E514152B81EE5B2415441000000004C5E51415C8FC275B041544185EB5148485E51418FC2F528B3415441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004A000000C3249DB99F5E5141DBD84AD4D7415441160E45F89D5E5141F0E34859DE4154415C2C51F49D5E5141391A8864DE415441ADADADED9D5E51410EDA6B77DE4154414E5440D89D5E514188E263B4DE41544156A584D09D5E5141D9437BD1DE4154415B8FABC89D5E51414E0A33E8DE41544114AE47A19D5E51415C8FC285DF4154411C3C19549D5E5141B2F6B339E041544127EA1AF99C5E514128BB1943E1415441EC51B8AE9C5E5141713D0A37E241544138A5677E9C5E51413EA645D5E2415441EFDE403A9C5E51411CF37BD2E3415441B0986A1E9C5E51414523E939E4415441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>433151 - 76942
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000AC000000E17A14FE515E51419A999949CC4154415C8FC2354E5E51417B14AEE7C74154418FC2F5284D5E5141B81E85BBC5415441666666264C5E514100000000C3415441CDCCCCBC4B5E51410AD7A320C1415441000000404B5E5141AE47E1BABE415441333333F34A5E514185EB51C8BC415441666666A64A5E5141295C8FF2BA415441666666A64A5E5141295C8FD2B94154419A9999B94A5E51419A9999E9B7415441000000E04A5E5141D7A370BDB5415441666666664B5E514152B81EE5B2415441000000004C5E51415C8FC275B041544185EB5148485E51418FC2F528B3415441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004A000000C3249DB99F5E5141DBD84AD4D7415441160E45F89D5E5141F0E34859DE4154415C2C51F49D5E5141391A8864DE415441ADADADED9D5E51410EDA6B77DE4154414E5440D89D5E514188E263B4DE41544156A584D09D5E5141D9437BD1DE4154415B8FABC89D5E51414E0A33E8DE41544114AE47A19D5E51415C8FC285DF4154411C3C19549D5E5141B2F6B339E041544127EA1AF99C5E514128BB1943E1415441EC51B8AE9C5E5141713D0A37E241544138A5677E9C5E51413EA645D5E2415441EFDE403A9C5E51411CF37BD2E3415441B0986A1E9C5E51414523E939E4415441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>510683 - 1301192
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002A00000014AE47F1E651514114AE474151DC54417B14AEB7E75151411F85EB0150DC5441F6285C6FEA5151419A9999A94EDC544114AE47C1EC515141D7A370BD4DDC5441CDCCCC9CEF5151413D0AD7934ADC5441C3F5287CF2515141E17A14BE4DDC5441CDCCCC5CF7515141E17A14EE4DDC5441D7A3706DFA515141D7A370CD4DDC544100000020FE5151410AD7A3504DDC5441CDCCCC5CFA515141AE47E12A45DC54410AD7A320F6515141EC51B8FE3BDC5441333333B3EB5151417B14AE7740DC54410AD7A3C0E35151411F85EB1148DC544185EB5168D65151415C8FC2354CDC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000E0B67AB0EC5151413AB2C5E75CDC544114ACF0CCEC5151416DC214BD5CDC5441336C7CCEEC515141FD636FBB5CDC544146BC3FA2EC51514104F3013D5CDC544185EB5128E95151418FC2F5385DDC5441666666D6E25151415C8FC2D55FDC544156788BE3DD5151410510993561DC54415B9DE04DE8515141941FFA717EDC5441EC51B8DEEC51514185EB51D87CDC5441713D0A17F45151415C8FC2B579DC5441CDCCCC5CF55151415C8FC22579DC54412506CC6AF65151419757E43278DC5441908E4057F65151411BA908FB77DC544156161B40F6515141CB4C5A4F78DC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>510683 - 3567531
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002A00000014AE47F1E651514114AE474151DC54417B14AEB7E75151411F85EB0150DC5441F6285C6FEA5151419A9999A94EDC544114AE47C1EC515141D7A370BD4DDC5441CDCCCC9CEF5151413D0AD7934ADC5441C3F5287CF2515141E17A14BE4DDC5441CDCCCC5CF7515141E17A14EE4DDC5441D7A3706DFA515141D7A370CD4DDC544100000020FE5151410AD7A3504DDC5441CDCCCC5CFA515141AE47E12A45DC54410AD7A320F6515141EC51B8FE3BDC5441333333B3EB5151417B14AE7740DC54410AD7A3C0E35151411F85EB1148DC544185EB5168D65151415C8FC2354CDC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000E0B67AB0EC5151413AB2C5E75CDC544114ACF0CCEC5151416DC214BD5CDC5441336C7CCEEC515141FD636FBB5CDC544146BC3FA2EC51514104F3013D5CDC544185EB5128E95151418FC2F5385DDC5441666666D6E25151415C8FC2D55FDC544156788BE3DD5151410510993561DC54415B9DE04DE8515141941FFA717EDC5441EC51B8DEEC51514185EB51D87CDC5441713D0A17F45151415C8FC2B579DC5441CDCCCC5CF55151415C8FC22579DC54412506CC6AF65151419757E43278DC5441908E4057F65151411BA908FB77DC544156161B40F6515141CB4C5A4F78DC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326336 - 107084
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000038000000AE47E1CA912251411F85EB013FBB544114AE4741AD225141F6285C4F44BB5441A7FE10D9AE225141515B426D3DBB5441B01773B6B222514113B90A952CBB5441796D7706B42251412FBCA5D727BB5441A60B880EB9225141F811AA2729BB54419A999989C6225141333333732CBB5441713D0AA7CF2251413D0AD7332EBB544149B4F4D4CF225141D5FB4A562DBB54419D816BECCC225141AB23F59F2CBB5441185506ABCA22514188EF02082CBB54412FD92287C622514160BBE44B2BBB544179870FAAC32251413BE3BAB92ABB5441FB1BD931BD225141DCBC791F29BB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000002E0000003AA59FB671225141258E9F141CBB5441B983CB217322514176B1200423BB54419943D476652251416EB32F1B24BB54411F85EB41652251418FC2F55825BB54419A999979662251410000002028BB54413D0AD723672251411F85EBA12ABB544114AE4731672251419A9999F92DBB5441CDCCCC9C682251415C8FC24535BB544152B81EE5682251419A99999936BB5441E17A14EE69225141AE47E19A3CBB544152B81EA56A225141A4703DDA42BB54411F85EBB16B225141666666F649BB54417B14AEA76C225141666666A650BB54419A99993972225141E17A149E4FBB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>326336 - 385359
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000038000000AE47E1CA912251411F85EB013FBB544114AE4741AD225141F6285C4F44BB5441A7FE10D9AE225141515B426D3DBB5441B01773B6B222514113B90A952CBB5441796D7706B42251412FBCA5D727BB5441A60B880EB9225141F811AA2729BB54419A999989C6225141333333732CBB5441713D0AA7CF2251413D0AD7332EBB544149B4F4D4CF225141D5FB4A562DBB54419D816BECCC225141AB23F59F2CBB5441185506ABCA22514188EF02082CBB54412FD92287C622514160BBE44B2BBB544179870FAAC32251413BE3BAB92ABB5441FB1BD931BD225141DCBC791F29BB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000002E0000003AA59FB671225141258E9F141CBB5441B983CB217322514176B1200423BB54419943D476652251416EB32F1B24BB54411F85EB41652251418FC2F55825BB54419A999979662251410000002028BB54413D0AD723672251411F85EBA12ABB544114AE4731672251419A9999F92DBB5441CDCCCC9C682251415C8FC24535BB544152B81EE5682251419A99999936BB5441E17A14EE69225141AE47E19A3CBB544152B81EA56A225141A4703DDA42BB54411F85EBB16B225141666666F649BB54417B14AEA76C225141666666A650BB54419A99993972225141E17A149E4FBB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>753383 - 35258
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001500000085EB51F82CB650410AD7A3F02CD654413333336332B65041D7A370FD2AD654410000006040B6504185EB517826D6544185EB519841B65041713D0A7722D6544114AE47E141B6504152B81E251ED6544148E17AE406B65041C3F528BC0DD65441000000F005B6504114AE474137D654415C8FC2E503B65041EC51B88E37D654410AD7A3C004B650413D0AD7230DD65441C3F528DC03B6504148E17AE40CD654413333335301B65041000000300CD65441A4703D5AFBB55041666666160ED6544185EB51A8FAB550411F85EB013ED65441D7A370AD00B650417B14AE073DD65441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000008000000000000F005B6504114AE474137D65441DA4ED6FB06B65041EF69EEC20DD654412795CBBA04B650414B7069220DD65441735C7CA204B65041B7F6D2FB12D6544156108A6C04B650418D282B701DD654415C8FC2E503B65041EC51B88E37D65441A026CDC404B65041A17EA56D37D65441000000F005B6504114AE474137D65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>753383 - 73542
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001500000085EB51F82CB650410AD7A3F02CD654413333336332B65041D7A370FD2AD654410000006040B6504185EB517826D6544185EB519841B65041713D0A7722D6544114AE47E141B6504152B81E251ED6544148E17AE406B65041C3F528BC0DD65441000000F005B6504114AE474137D654415C8FC2E503B65041EC51B88E37D654410AD7A3C004B650413D0AD7230DD65441C3F528DC03B6504148E17AE40CD654413333335301B65041000000300CD65441A4703D5AFBB55041666666160ED6544185EB51A8FAB550411F85EB013ED65441D7A370AD00B650417B14AE073DD65441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000008000000000000F005B6504114AE474137D65441DA4ED6FB06B65041EF69EEC20DD654412795CBBA04B650414B7069220DD65441735C7CA204B65041B7F6D2FB12D6544156108A6C04B650418D282B701DD654415C8FC2E503B65041EC51B88E37D65441A026CDC404B65041A17EA56D37D65441000000F005B6504114AE474137D65441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>476297 - 348619
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000200000005C8FC24508FA50411F85EB21B8CC54411F85EB6104FA5041A4703D8ABACC54419A999919FFF950411F85EB61BDCC5441D7A3705DFEF9504148E17AF4BDCC54413D0AD733FBF95041713D0AA7C1CC5441E17A148EF6F950418FC2F558C9CC544133333363F2F950411F85EB11CFCC54413D0AD743F0F95041295C8F52D1CC54410AD7A3F0EDF95041E17A145ED3CC544152B81EB5EBF95041713D0A07D5CC54417B14AE97EBF95041A4703D5AD6CC54419A999979F3F9504148E17AB4DECC54419A999979F9F95041295C8F42E1CC544148E17A84FCF950415C8FC275E1CC5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000000D68B1D234FA5041CD81528CA1CC5441CAAF95FB2AFA50418A5F2BA6A7CC544188F7792421FA504149111BC4ACCC5441386CD96920FA504109D5CD2EACCC54414BDBBAA81FFA5041B3FA4E94ABCC54415EEF023D1BFA5041C50AEF0AA8CC54410D68B1EC15FA504169382335AACC54415EAB456F14FA50417046689CABCC5441C8DCABEE11FA5041C01ACEF7ADCC544186D915782EFA504175814390BACC5441EAB70CE330FA5041289F98CDB6CC5441FB0FDFDA32FA50413116FC4EB0CC5441666666A433FA5041C50AEF0AA8CC54410D68B1D234FA5041CD81528CA1CC5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571749 - 571021
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000300000001030000000100000010000000F6285CEF8C595141A4703D2AE0875441000000008F5951410AD7A340DB875441713D0AA785595141C3F528CCCD87544152B81E158559514114AE4741CB875441295C8F32835951417B14AEB7CB8754410AD7A3207D5951419A999919CC87544152B81E557B5951413D0AD733CD875441B81E85FB775951415C8FC245D487544185EB51F873595141E17A148EE2875441F6285CBF6E5951411F85EB71F1875441A4703DBA6C5951411F85EB61F88754418F843E0D7359514185D06ACAFC875441D7A370BD76595141295C8F52F6875441CDCCCCCC7F595141F6285CDFE3875441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000B81E850B87595141295C8FB2008854413D0AD7038A5951417B14AE27FA875441A4703D8A8559514133333343F88754413333336383595141F6285C0FFC875441EC51B80E825951410AD7A360FB875441CDCCCC2C81595141C3F528ECFA875441333333A37D595141B81E853BFB875441CDCCCC1C7A595141713D0A4703885441A4703D2A745951415C8FC2151188544152B81EE570595141B81E856B1A885441713D0A7770595141295C8F521B885441F6285C5F68595141CDCCCC8C178854419A9999B95E595141713D0A471488544148E17A545D595141AE47E1DA14885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571749 - 1274582
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000300000001030000000100000010000000F6285CEF8C595141A4703D2AE0875441000000008F5951410AD7A340DB875441713D0AA785595141C3F528CCCD87544152B81E158559514114AE4741CB875441295C8F32835951417B14AEB7CB8754410AD7A3207D5951419A999919CC87544152B81E557B5951413D0AD733CD875441B81E85FB775951415C8FC245D487544185EB51F873595141E17A148EE2875441F6285CBF6E5951411F85EB71F1875441A4703DBA6C5951411F85EB61F88754418F843E0D7359514185D06ACAFC875441D7A370BD76595141295C8F52F6875441CDCCCCCC7F595141F6285CDFE3875441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000B81E850B87595141295C8FB2008854413D0AD7038A5951417B14AE27FA875441A4703D8A8559514133333343F88754413333336383595141F6285C0FFC875441EC51B80E825951410AD7A360FB875441CDCCCC2C81595141C3F528ECFA875441333333A37D595141B81E853BFB875441CDCCCC1C7A595141713D0A4703885441A4703D2A745951415C8FC2151188544152B81EE570595141B81E856B1A885441713D0A7770595141295C8F521B885441F6285C5F68595141CDCCCC8C178854419A9999B95E595141713D0A471488544148E17A545D595141AE47E1DA14885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571749 - 4026759
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000300000001030000000100000010000000F6285CEF8C595141A4703D2AE0875441000000008F5951410AD7A340DB875441713D0AA785595141C3F528CCCD87544152B81E158559514114AE4741CB875441295C8F32835951417B14AEB7CB8754410AD7A3207D5951419A999919CC87544152B81E557B5951413D0AD733CD875441B81E85FB775951415C8FC245D487544185EB51F873595141E17A148EE2875441F6285CBF6E5951411F85EB71F1875441A4703DBA6C5951411F85EB61F88754418F843E0D7359514185D06ACAFC875441D7A370BD76595141295C8F52F6875441CDCCCCCC7F595141F6285CDFE3875441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000B81E850B87595141295C8FB2008854413D0AD7038A5951417B14AE27FA875441A4703D8A8559514133333343F88754413333336383595141F6285C0FFC875441EC51B80E825951410AD7A360FB875441CDCCCC2C81595141C3F528ECFA875441333333A37D595141B81E853BFB875441CDCCCC1C7A595141713D0A4703885441A4703D2A745951415C8FC2151188544152B81EE570595141B81E856B1A885441713D0A7770595141295C8F521B885441F6285C5F68595141CDCCCC8C178854419A9999B95E595141713D0A471488544148E17A545D595141AE47E1DA14885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>910243 - 1877594
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000024000000E17A145EF696504152B81E854A1A5441713D0A17FF96504114AE4701531A5441F6285C4F07975041D7A370FD5A1A5441AE47E17A0F975041E17A14EE621A54410AD7A37018975041295C8FA26B1A5441713D0A2723975041C3F5280C761A5441F6285C3F2E975041AE47E12A7F1A5441295C8F9234975041EC51B85E841A54417B14AE673C975041CDCCCC9C791A544185EB5198439750410AD7A3B0701A54418FC2F528479750418FC2F5586C1A544114AE47513397504185EB5108631A54411F85EB5128975041E17A149E5C1A5441CDCCCC4C2297504133333383571A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003C010000BDE6EBAFF196504183D2FE78201A544148E17A44F1965041E17A14FE1F1A5441CDCCCC1CEE965041333333431D1A544133333313EB965041AE47E1DA1A1A5441713D0AA7E29650415C8FC245201A5441A4703DBADA96504100000080161A544114AE47C1D596504100000000041A544100000040D696504148E17A94091A54411F85EBC1D5965041CDCCCC6C151A5441B81E85CBD496504185EB5188201A5441AE47E1DAD5965041C3F5287C211A5441295C8FE2D696504166666606241A54418FC2F5D8D79650419A999999261A5441333333A3D8965041E17A14EE291A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>910243 - 3776167
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000024000000E17A145EF696504152B81E854A1A5441713D0A17FF96504114AE4701531A5441F6285C4F07975041D7A370FD5A1A5441AE47E17A0F975041E17A14EE621A54410AD7A37018975041295C8FA26B1A5441713D0A2723975041C3F5280C761A5441F6285C3F2E975041AE47E12A7F1A5441295C8F9234975041EC51B85E841A54417B14AE673C975041CDCCCC9C791A544185EB5198439750410AD7A3B0701A54418FC2F528479750418FC2F5586C1A544114AE47513397504185EB5108631A54411F85EB5128975041E17A149E5C1A5441CDCCCC4C2297504133333383571A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003C010000BDE6EBAFF196504183D2FE78201A544148E17A44F1965041E17A14FE1F1A5441CDCCCC1CEE965041333333431D1A544133333313EB965041AE47E1DA1A1A5441713D0AA7E29650415C8FC245201A5441A4703DBADA96504100000080161A544114AE47C1D596504100000000041A544100000040D696504148E17A94091A54411F85EBC1D5965041CDCCCC6C151A5441B81E85CBD496504185EB5188201A5441AE47E1DAD5965041C3F5287C211A5441295C8FE2D696504166666606241A54418FC2F5D8D79650419A999999261A5441333333A3D8965041E17A14EE291A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>910256 - 1877611
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002100000000000020799A50410AD7A3308C1A5441B81E85FB7B9A5041AE47E1BA891A544152B81EC57C9A5041EC51B88E861A544152B81E357E9A5041CDCCCC5C821A5441000000407F9A5041000000007C1A5441B81E854B819A50410AD7A360761A544133333333839A5041713D0AC7711A544148E17AB4849A5041AE47E17A6A1A544114AE4751879A5041713D0A97651A54419A999929829A5041CDCCCCAC601A5441A4703DBA7D9A50411F85EBC15E1A544100000060779A50417B14AED7591A5441B81E85DB749A5041E17A14CE541A54415C8FC275729A50419A9999D9501A5441 [...]
+</a>
+
+<b>
+0106000000050000000103000000010000005F00000063B75782579A504153B8B144531A5441C3F528DC559A50418FC2F5F84F1A5441F6285CBF549A5041C3F528BC4E1A544152B81E75519A5041D7A370BD4D1A544114AE47E14D9A50419A999989491A5441666666D6489A5041E17A141E491A544166666626469A5041EC51B8FE411A54417B14AE97449A5041F6285C0F3E1A544152B81E05419A50411F85EBD13F1A5441B81E856B3D9A5041F6285C3F411A54410AD7A3903B9A5041CDCCCC1C421A544166666636399A5041D7A370ED411A5441D7A3707D369A5041EC51B85E411A544148E17AB4339A50410AD7A3C0401A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435144 - 390546
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F00000048E17AF4AAAF5041B81E85CB81E254419A9999F9AAAF5041A4703DCA75E254418FC2F5F8A9AF5041295C8FC274E254413333339394AF5041EC51B82E74E2544185EB51789CAF504114AE4731B1E25441D7A3707D9DAF50413D0AD713B9E25441713D0A679EAF504133333303B9E254418FC2F5989FAF50413D0AD773BEE254418FC2F558A1AF50415C8FC2F5BDE2544100000090A1AF504133333383BEE25441D7A3703DA3AF50417B14AEF7BDE2544152B81E05A4AF50419A999939BDE2544185EB5158A5AF50411F85EB11BDE2544185EB5148A6AF5041D7A3709DBDE25441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000BA65850BA0AF50410B537802A5E2544135E4BE209FAF50412E263D4D9CE25441CF15D5AC9EAF504106F891D498E25441F13D5C799EAF5041F9AF089397E2544171E7061A9EAF5041D7F0D9AB97E25441F82F3D5D9DAF5041C799CFCF97E25441FD4DC2F7A0AF50418E17A78BB0E25441A0C499F8A0AF5041206E8A90B0E25441EAF306FAA0AF50419CA0A896B0E25441ABCAD9FBA0AF50415896AB9CB0E254419A4810FEA0AF50411DB88CA2B0E254416CDE22FEA0AF504102BDB5A2B0E2544156ED8CB6A1AF5041028B8877B0E25441704BEFB5A1AF504169144871B0E25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435156 - 2907374
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000250000007B14AE27ACB45041F6285C3F6BE45441EC51B87EB0B45041295C8FA26EE45441AE47E1FAB1B450415C8FC27572E45441C3F5289CB4B450418FC2F5186EE454410AD7A3D0B6B45041AE47E14A6AE4544152B81EE5B8B45041A4703DAA6BE454418FC2F5D8BFB450415C8FC2B56FE45441C3F528BCC1B450418FC2F55873E45441F6285C1FC6B4504185EB51F87BE45441A4703D6ABDB450410AD7A38084E4544148E17A34BDB450417B14AE878FE4544152B81ED5BDB450415C8FC2959EE45441EC51B85EBEB45041EC51B87EA0E454411F85EB61C4B450417B14AE37A3E45441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000AF97BEADB6B45041E51C7D676AE454412EF895E4B8B45041933EFEA76BE45441665C53E3B8B45041412238A96BE4544152B81EE5B8B45041A4703DAA6BE4544166666646C4B450419A99994972E4544103451613C6B450417D953ABC7BE454411D967621C6B450414BA31DF57BE45441833720A3C6B4504142C68C927CE4544197758422C7B45041B72688A37DE454413468F68DC8B45041BDBC195A80E454412A582888CAB45041B86A38EE82E4544168C6A417CEB45041EB807EB986E454413DEA1331D0B45041F6BBEF6388E45441553433FAD2B45041CC8FC8998AE45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435156 - 2948513
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000250000007B14AE27ACB45041F6285C3F6BE45441EC51B87EB0B45041295C8FA26EE45441AE47E1FAB1B450415C8FC27572E45441C3F5289CB4B450418FC2F5186EE454410AD7A3D0B6B45041AE47E14A6AE4544152B81EE5B8B45041A4703DAA6BE454418FC2F5D8BFB450415C8FC2B56FE45441C3F528BCC1B450418FC2F55873E45441F6285C1FC6B4504185EB51F87BE45441A4703D6ABDB450410AD7A38084E4544148E17A34BDB450417B14AE878FE4544152B81ED5BDB450415C8FC2959EE45441EC51B85EBEB45041EC51B87EA0E454411F85EB61C4B450417B14AE37A3E45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000EC51B85EBEB45041EC51B87EA0E454411F85EB61C4B450417B14AE37A3E454415C8FC2E5C9B450413D0AD723A5E4544152B81ED5CDB450411F85EB01A6E45441EC51B82ED2B45041CDCCCCBCA5E454411F85EB51D7B45041295C8FE2A2E454413D0AD703DBB45041E17A144E9DE45441055A1BA4DEB45041C8B186A592E45441C0DDC226DBB450417F6C2F1691E45441D2D62C30D4B450411FF2BD8F8BE45441553433FAD2B45041CC8FC8998AE4544169C6A417CEB45041EC807EB986E454412F582888CAB45041BE6A38EE82E454413568F68DC8B45041BFBC195A80E45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435156 - 3811664
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000250000007B14AE27ACB45041F6285C3F6BE45441EC51B87EB0B45041295C8FA26EE45441AE47E1FAB1B450415C8FC27572E45441C3F5289CB4B450418FC2F5186EE454410AD7A3D0B6B45041AE47E14A6AE4544152B81EE5B8B45041A4703DAA6BE454418FC2F5D8BFB450415C8FC2B56FE45441C3F528BCC1B450418FC2F55873E45441F6285C1FC6B4504185EB51F87BE45441A4703D6ABDB450410AD7A38084E4544148E17A34BDB450417B14AE878FE4544152B81ED5BDB450415C8FC2959EE45441EC51B85EBEB45041EC51B87EA0E454411F85EB61C4B450417B14AE37A3E45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000EC51B85EBEB45041EC51B87EA0E454411F85EB61C4B450417B14AE37A3E454415C8FC2E5C9B450413D0AD723A5E4544152B81ED5CDB450411F85EB01A6E45441EC51B82ED2B45041CDCCCCBCA5E454411F85EB51D7B45041295C8FE2A2E454413D0AD703DBB45041E17A144E9DE45441055A1BA4DEB45041C8B186A592E45441C0DDC226DBB450417F6C2F1691E45441D2D62C30D4B450411FF2BD8F8BE45441553433FAD2B45041CC8FC8998AE4544169C6A417CEB45041EC807EB986E454412F582888CAB45041BE6A38EE82E454413568F68DC8B45041BFBC195A80E45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435156 - 3811700
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000250000007B14AE27ACB45041F6285C3F6BE45441EC51B87EB0B45041295C8FA26EE45441AE47E1FAB1B450415C8FC27572E45441C3F5289CB4B450418FC2F5186EE454410AD7A3D0B6B45041AE47E14A6AE4544152B81EE5B8B45041A4703DAA6BE454418FC2F5D8BFB450415C8FC2B56FE45441C3F528BCC1B450418FC2F55873E45441F6285C1FC6B4504185EB51F87BE45441A4703D6ABDB450410AD7A38084E4544148E17A34BDB450417B14AE878FE4544152B81ED5BDB450415C8FC2959EE45441EC51B85EBEB45041EC51B87EA0E454411F85EB61C4B450417B14AE37A3E45441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000AF97BEADB6B45041E51C7D676AE454412EF895E4B8B45041933EFEA76BE45441665C53E3B8B45041412238A96BE4544152B81EE5B8B45041A4703DAA6BE4544166666646C4B450419A99994972E4544103451613C6B450417D953ABC7BE454411D967621C6B450414BA31DF57BE45441833720A3C6B4504142C68C927CE4544197758422C7B45041B72688A37DE454413468F68DC8B45041BDBC195A80E454412A582888CAB45041B86A38EE82E4544168C6A417CEB45041EB807EB986E454413DEA1331D0B45041F6BBEF6388E45441553433FAD2B45041CC8FC8998AE45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435191 - 205097
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000002000000010300000001000000060000005C8FC265D8AF50417B14AEF73FE35441295C8F22D8AF50417B14AE7733E35441713D0A67C0AF50418FC2F5E835E3544114AE47B1C0AF50410AD7A36042E354415C8FC295D6AF504114AE478140E354415C8FC265D8AF50417B14AEF73FE354410103000000010000000C000000AE47E1EACEAF5041713D0A77F0E2544148E17AB4CEAF504152B81E75E7E25441713D0A67D6AF504133333323E5E254413D0AD763D6AF50410AD7A3A0E4E254417B14AE87BEAF50415C8FC2A5E5E254413D0AD7E3BEAF50411F85EB21F5E25441A4703DAAC0AF504185EB51F8F4E254413D0AD7 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000580DD388BEAF5041246EFCD6E5E25441801636E3BEAF50410658E006F5E254411DA545D6C2AF50413FD1E0BDF4E25441D8C6DB01C7AF5041FC1EB0FCF3E2544120D929BFC9AF5041D8BFC006F3E25441F97F48D4CBAF5041AD923811F2E25441877A6796CDAF50414FDF3C2AF1E25441C9DDB1D4CEAF5041B367B782F0E25441152115EACEAF504127A63C55F0E2544148E17AB4CEAF504152B81E75E7E2544187020267D6AF504137AE3523E5E25441B3F94865D6AF50413B3499DBE4E25441580DD388BEAF5041246EFCD6E5E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435245 - 2988182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000150000005C8FC29508B450415C8FC215F5E354419A99997902B45041AE47E12AF3E35441D7A370BDF9B35041666666B6F6E354418FC2F538E9B3504133333343F7E35441A4703D1AE2B35041C3F5281CF8E3544114AE4741E1B35041E17A14FEF8E354410AD7A3C0E0B3504152B81ED5FCE354411F85EBC1E0B35041AE47E1DA05E454415C8FC265E1B35041E17A143E08E45441AE47E14AEBB35041E17A144E09E4544152B81E45F4B3504185EB51080CE45441666666E6FAB35041A4703D6A07E45441EC51B86EFEB350410AD7A3900AE454415C8FC27503B45041AE47E15A08E45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D00000072FEE4E0F9B350415DD5E1D3FFE35441F0643F08F9B35041316A8A87F7E354416E95D6F3F8B35041986216BEF6E35441B0675664EDB35041CF985622F7E354418CB4DE17EBB3504141FBC932F7E35441681E208BE9B350412DCC7640F7E354418FC2F538E9B3504133333343F7E35441EE8FBFD3E6B350415C18F18BF7E3544117EDA2A8E3B350414F0FBDECF7E35441A4703D1AE2B35041C3F5281CF8E35441CB6975CCE1B35041F54F276DF8E354413BCCDC3FE1B35041CF8CE908F9E35441CA382F3DE1B350410594601DF9E35441531D9232E1B35041F0247C6EF9E35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435245 - 3426131
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000150000005C8FC29508B450415C8FC215F5E354419A99997902B45041AE47E12AF3E35441D7A370BDF9B35041666666B6F6E354418FC2F538E9B3504133333343F7E35441A4703D1AE2B35041C3F5281CF8E3544114AE4741E1B35041E17A14FEF8E354410AD7A3C0E0B3504152B81ED5FCE354411F85EBC1E0B35041AE47E1DA05E454415C8FC265E1B35041E17A143E08E45441AE47E14AEBB35041E17A144E09E4544152B81E45F4B3504185EB51080CE45441666666E6FAB35041A4703D6A07E45441EC51B86EFEB350410AD7A3900AE454415C8FC27503B45041AE47E15A08E45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D00000072FEE4E0F9B350415DD5E1D3FFE35441F0643F08F9B35041316A8A87F7E354416E95D6F3F8B35041986216BEF6E35441B0675664EDB35041CF985622F7E354418CB4DE17EBB3504141FBC932F7E35441681E208BE9B350412DCC7640F7E354418FC2F538E9B3504133333343F7E35441EE8FBFD3E6B350415C18F18BF7E3544117EDA2A8E3B350414F0FBDECF7E35441A4703D1AE2B35041C3F5281CF8E35441CB6975CCE1B35041F54F276DF8E354413BCCDC3FE1B35041CF8CE908F9E35441CA382F3DE1B350410594601DF9E35441531D9232E1B35041F0247C6EF9E35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435253 - 246839
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000006000000295C8FD25DAF50416666661666E25441AE47E14A59AF50411F85EBC164E254418FC2F5B859AF5041EC51B89E6FE2544152B81E355AAF5041E17A14BE7AE254419A9999F95EAF5041C3F528FC77E25441295C8FD25DAF50416666661666E25441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000295C8FD25DAF50416666661666E25441E6C5FA625CAF504144A27AAA65E25441AF47E14A59AF50413F85EBC164E2544180DCF24A59AF504128A7A7C364E25441AA81034B59AF5041D7214CC564E25441C63818A659AF5041655226C26DE2544134159C3C5AAF5041777CBFB97AE254412C3424665AAF50419FEAB9A17AE2544139D238265BAF504194B3A0327AE254418E0943455BAF504191A5AC207AE254419A9999F95EAF5041C3F528FC77E25441EFEF22DA5EAF504178D08D1376E25441295C8FD25DAF50416666661666E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435253 - 366894
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000006000000295C8FD25DAF50416666661666E25441AE47E14A59AF50411F85EBC164E254418FC2F5B859AF5041EC51B89E6FE2544152B81E355AAF5041E17A14BE7AE254419A9999F95EAF5041C3F528FC77E25441295C8FD25DAF50416666661666E25441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000295C8FD25DAF50416666661666E25441E6C5FA625CAF504144A27AAA65E25441AF47E14A59AF50413F85EBC164E2544180DCF24A59AF504128A7A7C364E25441AA81034B59AF5041D7214CC564E25441C63818A659AF5041655226C26DE2544134159C3C5AAF5041777CBFB97AE254412C3424665AAF50419FEAB9A17AE2544139D238265BAF504194B3A0327AE254418E0943455BAF504191A5AC207AE254419A9999F95EAF5041C3F528FC77E25441EFEF22DA5EAF504178D08D1376E25441295C8FD25DAF50416666661666E25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435297 - 2949163
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000002000000010300000001000000130000009A9999B919B25041666666562FE25441C3F5289C1DB250410AD7A3103CE25441713D0A771FB2504152B81EB542E254410AD7A3C021B250411F85EB714DE254413D0AD7E321B25041D7A3701D4FE254411F85EB5122B25041CDCCCC5C54E2544148E17A3421B25041B81E856B60E254411F85EBC122B25041C3F528DC60E254415C8FC25523B2504152B81EF55BE25441C3F528AC23B250419A9999B956E25441F6285CBF23B25041AE47E1FA51E254415C8FC25523B250413D0AD7234EE25441E17A146E22B2504185EB511849E25441CDCCCCBC20B250417B14AE4742E25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000008BE9C8701DB25041E1F397E336E254414B6645601BB250416B77F93230E2544180C205F21AB2504116E18AD52EE254413144D20B1AB2504126B38B962BE25441F46CAA0019B2504144DF25D227E2544168AF688317B250416049A20F28E254419A9999B919B25041666666562FE2544116270AD81AB25041BC44CB0033E254417061AA0C1CB25041A21ADFF336E25441C3F5289C1DB250410AD7A3103CE254415EFCEDE81DB25041B19F8A233DE25441713D0A771FB2504152B81EB542E25441531E0C9A1FB25041F3AD715943E254414BDB7B1F20B25041FB1DCBCB45E25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>435297 - 3299938
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000002000000010300000001000000130000009A9999B919B25041666666562FE25441C3F5289C1DB250410AD7A3103CE25441713D0A771FB2504152B81EB542E254410AD7A3C021B250411F85EB714DE254413D0AD7E321B25041D7A3701D4FE254411F85EB5122B25041CDCCCC5C54E2544148E17A3421B25041B81E856B60E254411F85EBC122B25041C3F528DC60E254415C8FC25523B2504152B81EF55BE25441C3F528AC23B250419A9999B956E25441F6285CBF23B25041AE47E1FA51E254415C8FC25523B250413D0AD7234EE25441E17A146E22B2504185EB511849E25441CDCCCCBC20B250417B14AE4742E25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000008BE9C8701DB25041E1F397E336E254414B6645601BB250416B77F93230E2544180C205F21AB2504116E18AD52EE254413144D20B1AB2504126B38B962BE25441F46CAA0019B2504144DF25D227E2544168AF688317B250416049A20F28E254419A9999B919B25041666666562FE2544116270AD81AB25041BC44CB0033E254417061AA0C1CB25041A21ADFF336E25441C3F5289C1DB250410AD7A3103CE254415EFCEDE81DB25041B19F8A233DE25441713D0A771FB2504152B81EB542E25441531E0C9A1FB25041F3AD715943E254414BDB7B1F20B25041FB1DCBCB45E25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>517090 - 1441513
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E0000000AD7A370E9E750413333338355FE544185EB51F8CCE75041000000A064FE544185EB5198D7E750411F85EB0171FE5441D7A370DDDBE75041EC51B85E76FE5441E17A148EE0E75041713D0AB77CFE5441CDCCCCDCE1E75041295C8F027CFE5441295C8F22E1E75041713D0A977AFE5441EC51B8BEDEE750413D0AD70377FE5441B81E85EBDEE750411F85EB2176FE5441B81E85EBECE75041AE47E1AA6EFE544133333353F7E75041CDCCCCDC68FE54419A9999D9FBE750419A9999E96DFE5441AE47E1EAFDE750417B14AEC76CFE54410AD7A370E9E750413333338355FE5441
+</a>
+
+<b>
+0106000000010000000103000000010000003300000057A8726BE9E75041DBC1C69155FE5441D881C40CE0E75041630D73875AFE5441DA50E4A0DEE750412A0827485BFE5441560E2D12DCE75041AE47E1A25CFE5441049370B3D9E750419F343DF45DFE5441358AD7ABD6E750412E2F7DA35FFE5441A7BD751AD4E750419D1E021161FE5441C4DD4694D0E75041817AA40663FE5441E5D02243CDE7504139B4C8DE64FE544185EB5198D7E750411F85EB0171FE544151460B9FD8E750413CB8B03372FE54417A3938ECD9E75041658D48EE73FE54414CAA2E6BDBE75041CEFE40DC75FE54416AE5D4D4DBE75041D9FA6B6676FE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>517090 - 3827314
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E0000000AD7A370E9E750413333338355FE544185EB51F8CCE75041000000A064FE544185EB5198D7E750411F85EB0171FE5441D7A370DDDBE75041EC51B85E76FE5441E17A148EE0E75041713D0AB77CFE5441CDCCCCDCE1E75041295C8F027CFE5441295C8F22E1E75041713D0A977AFE5441EC51B8BEDEE750413D0AD70377FE5441B81E85EBDEE750411F85EB2176FE5441B81E85EBECE75041AE47E1AA6EFE544133333353F7E75041CDCCCCDC68FE54419A9999D9FBE750419A9999E96DFE5441AE47E1EAFDE750417B14AEC76CFE54410AD7A370E9E750413333338355FE5441
+</a>
+
+<b>
+0106000000010000000103000000010000003300000057A8726BE9E75041DBC1C69155FE5441D881C40CE0E75041630D73875AFE5441DA50E4A0DEE750412A0827485BFE5441560E2D12DCE75041AE47E1A25CFE5441049370B3D9E750419F343DF45DFE5441358AD7ABD6E750412E2F7DA35FFE5441A7BD751AD4E750419D1E021161FE5441C4DD4694D0E75041817AA40663FE5441E5D02243CDE7504139B4C8DE64FE544185EB5198D7E750411F85EB0171FE544151460B9FD8E750413CB8B03372FE54417A3938ECD9E75041658D48EE73FE54414CAA2E6BDBE75041CEFE40DC75FE54416AE5D4D4DBE75041D9FA6B6676FE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463445 - 243671
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000030000005501000048E17A34D7EF5041713D0AE78BA9544185EB51E8D4EF5041AE47E16A8FA9544185EB5108D3EF5041F6285C9F8EA9544148E17A64D1EF5041AE47E14A8EA95441CDCCCC8CD0EF5041333333638EA954410AD7A360CFEF5041333333338EA9544185EB5188CEEF5041F6285C9F8EA9544148E17AA4CDEF5041713D0A0790A9544185EB5178CCEF5041F6285CEF8FA9544185EB51A8CCEF5041713D0AC78DA95441CDCCCCFCCCEF5041F6285CDF8AA95441CDCCCCFCCCEF5041333333F388A9544185EB51D8CCEF5041333333D387A9544148E17A24CCEF5041B81E855B87A95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007502000048E17AA4DCEF5041713D0A7780A954410FF1FB49DCEF5041986545267FA95441CDCCCCFCDBEF5041713D0A077EA95441C466B1FEDBEF504147F51CF97DA9544122DE3CEBDBEF5041C2D24AAB7DA954419F997B14DCEF50418A5ACD587DA954410AD7A320DCEF5041F6285CFF7CA954419F6B5745DCEF504110B515F77CA9544189E8FA49DCEF504119BBCEED7CA9544191F917D8DCEF5041B2B0108F7CA95441B4073566DDEF5041B2B0108F7CA954412DEC7C81DDEF5041985CCDAF7CA9544148E17A94DDEF5041B81E85AB7CA954416F8166CFDDEF504114104C0D7DA95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463445 - 271326
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000030000005501000048E17A34D7EF5041713D0AE78BA9544185EB51E8D4EF5041AE47E16A8FA9544185EB5108D3EF5041F6285C9F8EA9544148E17A64D1EF5041AE47E14A8EA95441CDCCCC8CD0EF5041333333638EA954410AD7A360CFEF5041333333338EA9544185EB5188CEEF5041F6285C9F8EA9544148E17AA4CDEF5041713D0A0790A9544185EB5178CCEF5041F6285CEF8FA9544185EB51A8CCEF5041713D0AC78DA95441CDCCCCFCCCEF5041F6285CDF8AA95441CDCCCCFCCCEF5041333333F388A9544185EB51D8CCEF5041333333D387A9544148E17A24CCEF5041B81E855B87A95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007502000048E17AA4DCEF5041713D0A7780A954410FF1FB49DCEF5041986545267FA95441CDCCCCFCDBEF5041713D0A077EA95441C466B1FEDBEF504147F51CF97DA9544122DE3CEBDBEF5041C2D24AAB7DA954419F997B14DCEF50418A5ACD587DA954410AD7A320DCEF5041F6285CFF7CA954419F6B5745DCEF504110B515F77CA9544189E8FA49DCEF504119BBCEED7CA9544191F917D8DCEF5041B2B0108F7CA95441B4073566DDEF5041B2B0108F7CA954412DEC7C81DDEF5041985CCDAF7CA9544148E17A94DDEF5041B81E85AB7CA954416F8166CFDDEF504114104C0D7DA95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463568 - 1022765
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000005C8FC2E5ADF350417B14AE073AA35441295C8FC2AAF35041A4703D1A25A3544114AE47C1A2F350413333335327A35441C3F5289CA8F350417B14AEE74FA35441D7A3709DA6F3504148E17A1450A35441333333C3A6F35041295C8F1251A3544166666696ADF35041713D0A977EA3544114AE47F1B7F35041CDCCCC0C7DA3544148E17A04AFF35041295C8F8241A3544166666646AEF35041B81E858B3CA354415C8FC2E5ADF350417B14AE073AA35441
+</a>
+
+<b>
+010600000001000000010300000001000000180000006A970705AFF3504127113A8641A35441886A5A7FAFF350416776FC6F41A35441E8025669C0F350419276DA263FA35441DE829EFBC0F3504125909F7E3FA35441ACE81836C9F35041B425DD4377A35441BB4A40B6C9F35041E7E9BC677AA35441A4703DEAC9F35041000000607AA35441A4703DAAE5F35041EC51B83E76A35441AE47E16AEAF350418FC2F58875A3544100000070E7F35041666666A661A35441C3F5289CE4F35041A4703DCA4EA35441666666A6E0F35041E17A145E34A35441EC51B88EDFF350415C8FC2152DA35441B480A35BDFF35041BA08B4BF2BA35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463568 - 3384606
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000005C8FC2E5ADF350417B14AE073AA35441295C8FC2AAF35041A4703D1A25A3544114AE47C1A2F350413333335327A35441C3F5289CA8F350417B14AEE74FA35441D7A3709DA6F3504148E17A1450A35441333333C3A6F35041295C8F1251A3544166666696ADF35041713D0A977EA3544114AE47F1B7F35041CDCCCC0C7DA3544148E17A04AFF35041295C8F8241A3544166666646AEF35041B81E858B3CA354415C8FC2E5ADF350417B14AE073AA35441
+</a>
+
+<b>
+010600000001000000010300000001000000180000006A970705AFF3504127113A8641A35441886A5A7FAFF350416776FC6F41A35441E8025669C0F350419276DA263FA35441DE829EFBC0F3504125909F7E3FA35441ACE81836C9F35041B425DD4377A35441BB4A40B6C9F35041E7E9BC677AA35441A4703DEAC9F35041000000607AA35441A4703DAAE5F35041EC51B83E76A35441AE47E16AEAF350418FC2F58875A3544100000070E7F35041666666A661A35441C3F5289CE4F35041A4703DCA4EA35441666666A6E0F35041E17A145E34A35441EC51B88EDFF350415C8FC2152DA35441B480A35BDFF35041BA08B4BF2BA35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463640 - 243750
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000070000000103000000010000000800000048E17A4439F05041713D0A27BBA95441C3F5284C34F05041713D0A67BAA9544148E17AD430F0504133333383BFA9544148E17A0434F05041B81E859BC5A95441A4703D1A35F05041E17A148EC4A954410AD7A3003BF05041B81E858BBDA954410AD7A3D03AF05041F6285CCFBBA9544148E17A4439F05041713D0A27BBA954410103000000020000002D000000B81E855B39F050419A9999B9B9A95441D7A3703D3BF05041B81E857BBAA95441D7A3706D3EF05041F6285CCFB7A954418FC2F5183FF050411F85EB01B6A954417B14AE2741F050410AD7A300B4A95441AE47E1 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007200000085EB51B8E9EF5041F6285C1FCCA95441561519B5E9EF5041564F4C22CCA95441E91E40BFE9EF5041116CC140CCA95441F88C405FEDEF5041C991D0FFCCA95441EE45A9B2F9EF5041B21677F9CFA9544185EB5198FAEF5041713D0A97CFA9544117FD49A8FAEF50416204169ECFA95441BA3351CEFAEF504188EEDF8ECFA9544191938DFAFBEF504125775817D0A95441EDA3721AFDEF504157A75DB2D0A95441C3F5285CFDEF5041F6285CCFD0A9544148E17A94FEEF5041F6285CFFD0A95441BD66A7A7FFEF50411D78F7EAD0A954413E8A062300F05041DD9C67D6D0A95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463640 - 340557
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000070000000103000000010000000800000048E17A4439F05041713D0A27BBA95441C3F5284C34F05041713D0A67BAA9544148E17AD430F0504133333383BFA9544148E17A0434F05041B81E859BC5A95441A4703D1A35F05041E17A148EC4A954410AD7A3003BF05041B81E858BBDA954410AD7A3D03AF05041F6285CCFBBA9544148E17A4439F05041713D0A27BBA954410103000000020000002D000000B81E855B39F050419A9999B9B9A95441D7A3703D3BF05041B81E857BBAA95441D7A3706D3EF05041F6285CCFB7A954418FC2F5183FF050411F85EB01B6A954417B14AE2741F050410AD7A300B4A95441AE47E1 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007200000085EB51B8E9EF5041F6285C1FCCA95441561519B5E9EF5041564F4C22CCA95441E91E40BFE9EF5041116CC140CCA95441F88C405FEDEF5041C991D0FFCCA95441EE45A9B2F9EF5041B21677F9CFA9544185EB5198FAEF5041713D0A97CFA9544117FD49A8FAEF50416204169ECFA95441BA3351CEFAEF504188EEDF8ECFA9544191938DFAFBEF504125775817D0A95441EDA3721AFDEF504157A75DB2D0A95441C3F5285CFDEF5041F6285CCFD0A9544148E17A94FEEF5041F6285CFFD0A95441BD66A7A7FFEF50411D78F7EAD0A954413E8A062300F05041DD9C67D6D0A95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>436979 - 3014056
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000295C8FF2A9105141CDCCCC8C61F85441F6285CAFA8105141295C8F0263F85441AE47E1FAA91051418FC2F52864F8544114AE4731AB1051413333331365F85441C3F528FCAB105141B81E85FB65F854415C8FC2D5AC105141713D0A1767F8544148E17AC4AD1051411F85EB6168F85441B81E85EBAE1051411F85EB316AF85441B81E85BBAF105141EC51B8BE6BF8544148E17AD4B0105141713D0A476EF85441C3F5284CB210514148E17AF469F85441B81E853BB31051418FC2F5C866F854411F85EBB1B31051417B14AEF764F85441F6285CAFB4105141EC51B89E62F85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001500000048E17AD4B0105141713D0A476EF854412F9CC7A2B1105141685F4CF370F85441295C8F12B2105141333333F373F85441A4703D7AB31051413333333375F85441EB6B2348B41051416BCB897972F8544152EA3910B510514120406A0670F85441407CEA29B6105141777FCAAE6CF85441508EAF80B7105141F80F234D69F854417A191BE4B81051418BDE5D2968F854418026693FBA1051418C13F59065F854414566D140BC1051417BEC0A7F61F854415745545DBE105141A20766155DF85441D7E08BECC010514156247E5458F854410AD7A340C3105141333333F353F85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>436979 - 3322893
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000295C8FF2A9105141CDCCCC8C61F85441F6285CAFA8105141295C8F0263F85441AE47E1FAA91051418FC2F52864F8544114AE4731AB1051413333331365F85441C3F528FCAB105141B81E85FB65F854415C8FC2D5AC105141713D0A1767F8544148E17AC4AD1051411F85EB6168F85441B81E85EBAE1051411F85EB316AF85441B81E85BBAF105141EC51B8BE6BF8544148E17AD4B0105141713D0A476EF85441C3F5284CB210514148E17AF469F85441B81E853BB31051418FC2F5C866F854411F85EBB1B31051417B14AEF764F85441F6285CAFB4105141EC51B89E62F85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001500000048E17AD4B0105141713D0A476EF854412F9CC7A2B1105141685F4CF370F85441295C8F12B2105141333333F373F85441A4703D7AB31051413333333375F85441EB6B2348B41051416BCB897972F8544152EA3910B510514120406A0670F85441407CEA29B6105141777FCAAE6CF85441508EAF80B7105141F80F234D69F854417A191BE4B81051418BDE5D2968F854418026693FBA1051418C13F59065F854414566D140BC1051417BEC0A7F61F854415745545DBE105141A20766155DF85441D7E08BECC010514156247E5458F854410AD7A340C3105141333333F353F85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437114 - 3039942
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000100000014000000AE47E1BAF5615141A4703D2A4DD1544148E17AE4F2615141E17A14CE4BD1544114AE4701DE615141D7A3709D40D1544133333383C46151415C8FC2F532D1544185EB5168AF6151417B14AEA727D154419A999929AF6151410AD7A36029D15441295C8F82AE615141D7A3705D31D15441F6285C1FAE6151417B14AEF740D154411F85EBB1AE61514152B81E354DD154413D0AD7D3AD615141F6285C8F54D15441295C8F32AE61514185EB514860D15441CDCCCC8CAE6151418FC2F55865D15441B81E85CBAF615141F6285C8F6DD154410AD7A3D0B761514148E17AA46BD15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C07E0463BD615141C79E5E8868D15441952E3985BB615141579CC32A67D154412FF62496B7615141E621B25265D1544177372854B4615141AE05285B63D15441600CDF35B06151413D8B168361D1544165B0BD3AAE61514177E7DEBD60D15441085C9352AE615141158D581462D15441CDCCCC8CAE6151418FC2F55865D15441B81E85CBAF615141F6285C8F6DD154410AD7A3D0B761514148E17AA46BD15441AE47E1DABA615141666666466DD154416A392B09BD615141A270AA3069D15441C07E0463BD615141C79E5E8868D15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437114 - 3269749
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000100000014000000AE47E1BAF5615141A4703D2A4DD1544148E17AE4F2615141E17A14CE4BD1544114AE4701DE615141D7A3709D40D1544133333383C46151415C8FC2F532D1544185EB5168AF6151417B14AEA727D154419A999929AF6151410AD7A36029D15441295C8F82AE615141D7A3705D31D15441F6285C1FAE6151417B14AEF740D154411F85EBB1AE61514152B81E354DD154413D0AD7D3AD615141F6285C8F54D15441295C8F32AE61514185EB514860D15441CDCCCC8CAE6151418FC2F55865D15441B81E85CBAF615141F6285C8F6DD154410AD7A3D0B761514148E17AA46BD15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C07E0463BD615141C79E5E8868D15441952E3985BB615141579CC32A67D154412FF62496B7615141E621B25265D1544177372854B4615141AE05285B63D15441600CDF35B06151413D8B168361D1544165B0BD3AAE61514177E7DEBD60D15441085C9352AE615141158D581462D15441CDCCCC8CAE6151418FC2F55865D15441B81E85CBAF615141F6285C8F6DD154410AD7A3D0B761514148E17AA46BD15441AE47E1DABA615141666666466DD154416A392B09BD615141A270AA3069D15441C07E0463BD615141C79E5E8868D15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437573 - 3179685
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000160000008FC2F508855F514185EB51F819D55441E17A14BE7F5F51415C8FC2E51ED554418FC2F5F87E5F51417B14AEC71FD55441E17A141E855F51410000003027D55441000000A08A5F51413D0AD7D32DD554411F85EBD18E5F5141333333E332D554418FC2F5E89B5F5141AE47E1AA42D55441A4703DDAB35F51417B14AE875FD554413D0AD7F3B65F5141000000105CD55441A4703D2ABC5F5141666666F654D55441F6285C0FBF5F5141A4703DAA4FD554411F85EBC1C05F51415C8FC2B549D554418FC2F558C15F5141666666B644D55441A4703D8ABB5F5141D7A370AD3DD55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000008E0000008FC2F508855F514185EB51F819D554410B3066C1845F5141D712F23A1AD554414D14A14C845F51419D96A9A71AD55441C498D1B2825F5141D4CB35251CD55441D2C5C9CD7F5F5141079922D71ED554418FC2F5F87E5F51417B14AEC71FD554419B589C62855F514168639F8227D554419CAB412A865F51418141527328D554419E6F34D2865F51418AFACD3D29D55441E1FA2446885F514195C639FE2AD55441EA42ACA9895F5141F768DCAA2CD55441E564627D8A5F5141DB3B1BAA2DD55441D455AAF18A5F51417A3758362ED55441812A8B558B5F51411349D1AE2ED55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>437573 - 3585168
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000160000008FC2F508855F514185EB51F819D55441E17A14BE7F5F51415C8FC2E51ED554418FC2F5F87E5F51417B14AEC71FD55441E17A141E855F51410000003027D55441000000A08A5F51413D0AD7D32DD554411F85EBD18E5F5141333333E332D554418FC2F5E89B5F5141AE47E1AA42D55441A4703DDAB35F51417B14AE875FD554413D0AD7F3B65F5141000000105CD55441A4703D2ABC5F5141666666F654D55441F6285C0FBF5F5141A4703DAA4FD554411F85EBC1C05F51415C8FC2B549D554418FC2F558C15F5141666666B644D55441A4703D8ABB5F5141D7A370AD3DD55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000008E0000008FC2F508855F514185EB51F819D554410B3066C1845F5141D712F23A1AD554414D14A14C845F51419D96A9A71AD55441C498D1B2825F5141D4CB35251CD55441D2C5C9CD7F5F5141079922D71ED554418FC2F5F87E5F51417B14AEC71FD554419B589C62855F514168639F8227D554419CAB412A865F51418141527328D554419E6F34D2865F51418AFACD3D29D55441E1FA2446885F514195C639FE2AD55441EA42ACA9895F5141F768DCAA2CD55441E564627D8A5F5141DB3B1BAA2DD55441D455AAF18A5F51417A3758362ED55441812A8B558B5F51411349D1AE2ED55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>438468 - 5178037
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B000000A4703DDAADE6504133333343AB715441AE47E15AB3E6504185EB51D8AD7154417B14AE37B5E6504114AE47D1A5715441AE47E15ABBE6504152B81EB58F7154410AD7A3A0BDE65041AE47E1DA84715441D7A3703DB9E65041EC51B80E7F715441CDCCCC7CB8E65041000000107E71544114AE47E1B4E65041666666A68E7154410AD7A310AFE65041A4703DDAA4715441AE47E16AAEE650413D0AD7A3A8715441A4703DDAADE6504133333343AB715441
+</a>
+
+<b>
+010600000001000000010300000001000000190000008FC2F5D8AAE650416666664661715441AE47E14AA8E650415C8FC235627154419A999919A5E6504114AE473163715441713D0A27A7E6504185EB51886C715441713D0A97AAE65041295C8F12777154413D0AD773AEE65041C3F5287C807154417B14AE37B1E650413D0AD7B37D715441CDCCCCCCB1E650417B14AE077F71544133333393AEE65041F6285CAF8D715441DF584754AEE65041FE633CBC8E7154419CD602C2ABE65041056211B9997154417F1A3F5EA8E6504128914A35A87154419B74385DA8E65041BEEAAC39A8715441691CA62FA8E65041D9A669FCA8715441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>439015 - 1750386
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001100000014AE479169E95041713D0A47CE71544152B81EB562E95041A4703DDACE715441C3F5289C60E95041D7A370EDF3715441C3F5284C61E95041CDCCCC8CF5715441C3F5283C64E95041713D0A97F37154418FC2F5186AE95041E17A14BEF071544148E17AE46AE950415C8FC255F17154415C8FC2456FE950418FC2F548EF715441F6285C0F75E95041295C8F62EC715441C3F5281C79E9504185EB51E8E9715441B81E853B7DE95041E17A14BEE671544148E17AA482E9504133333383E0715441C3F5288C82E950419A9999B9D77154419A9999697BE95041295C8F32D8715441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000042C0186874E950415D622580D97154413F9369D772E95041C3BE1CC4D97154419E34EBCE6EE950414979A1BDD97154419E34EBCE6EE950411FEBADA3D97154419E34EBCE6EE950411A757153D97154419E34EBCE6EE95041970216DAD8715441C86377A66EE95041B19DC6E6D47154415EE0C8806EE9504126B4501CD37154418EE1973A6EE95041A109EB1BD1715441BAAC4C756CE9504128E36428D17154412E93D27C68E9504106BB565FD1715441937315C264E950416E4A7C92D1715441885491B162E95041F94CBABDD1715441C3F5289C60E95041D7A370EDF3715441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>439015 - 3386200
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001100000014AE479169E95041713D0A47CE71544152B81EB562E95041A4703DDACE715441C3F5289C60E95041D7A370EDF3715441C3F5284C61E95041CDCCCC8CF5715441C3F5283C64E95041713D0A97F37154418FC2F5186AE95041E17A14BEF071544148E17AE46AE950415C8FC255F17154415C8FC2456FE950418FC2F548EF715441F6285C0F75E95041295C8F62EC715441C3F5281C79E9504185EB51E8E9715441B81E853B7DE95041E17A14BEE671544148E17AA482E9504133333383E0715441C3F5288C82E950419A9999B9D77154419A9999697BE95041295C8F32D8715441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000042C0186874E950415D622580D97154413F9369D772E95041C3BE1CC4D97154419E34EBCE6EE950414979A1BDD97154419E34EBCE6EE950411FEBADA3D97154419E34EBCE6EE950411A757153D97154419E34EBCE6EE95041970216DAD8715441C86377A66EE95041B19DC6E6D47154415EE0C8806EE9504126B4501CD37154418EE1973A6EE95041A109EB1BD1715441BAAC4C756CE9504128E36428D17154412E93D27C68E9504106BB565FD1715441937315C264E950416E4A7C92D1715441885491B162E95041F94CBABDD1715441C3F5289C60E95041D7A370EDF3715441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>441191 - 301319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000100000010000000295C8FA24CFF5041CDCCCC6CD41C5541AE47E1AA45FF504166666606DC1C5541A4703D0A4AFF5041EC51B8FEDF1C55415C8FC2A54DFF5041A4703D5AE01C5541EC51B81E53FF504152B81E15D91C5541AE47E1DA56FF504133333343D51C5541666666865BFF5041A4703DAAD61C554152B81E9563FF504152B81EC5BA1C55411F85EBB161FF504152B81E65B81C554148E17A1461FF5041CDCCCC6CB61C5541E17A145E56FF50411F85EBC1B81C55418FC2F5585CFF5041A4703D4AB91C554185EB51F858FF5041713D0A27C01C5541295C8F5255FF5041713D0AF7C61C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000A7FC542B63FF504122765B33BC1C5541BCF5A39163FF504163E5BDC0BA1C554110C1BA5D63FF5041FD606C7FBA1C55411F85EBB161FF504152B81E65B81C554148E17A1461FF5041CDCCCC6CB61C5541F45B12AA5DFF50410EBF302BB71C554171914DD559FF50417046BD00B81C5541B89D23C159FF5041FCFC200FB91C55413648F9DC57FF50415A032B0AC01C554109F1E30B57FF5041F4598BC0C31C55410838CF4156FF504170A89D9CC51C554146C6D6D554FF5041E27ABFE1C81C55412073019F51FF5041AA8F5DF5CD1C5541B030880B50FF504182B215CCCF1C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>441643 - 3229681
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000002000000010300000001000000CC0100001F85EBC134105141000000E06A27554114AE470131105141A4703DEA64275541000000102E105141000000106A2755417B14AED72C105141CDCCCCBC6E27554148E17AF42910514114AE478176275541E17A143E2810514114AE47217827554148E17A642710514152B81ED578275541EC51B86E2610514152B81E5579275541666666062410514114AE47617A275541713D0A272210514148E17A547B275541713D0AF71F1051413D0AD7D37C275541333333B3171051419A999929802755413D0AD70315105141C3F528DC7F2755413333332315105141AE47E1FA7F275541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000E6010000713D0A279A105141000000606F275541B81E853B9910514152B81EA56F275541CDCCCCCC98105141CDCCCC8C6F275541B81E856B981051417B14AE776F27554185EB5108981051417B14AE576F2755410AD7A390971051417B14AE476F275541D7A3701D9710514185EB51586F2755413D0AD7E396105141D7A3708D6F275541C3F5289C961051417B14AEE76F275541B81E856B961051410AD7A330702755410AD7A33096105141713D0A77702755417B14AEF7951051417B14AEB770275541CDCCCCAC95105141A4703DEA70275541EC51B86E951051411F85EBF170275541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463873 - 243738
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000400000061010000AE47E13AB1F15041C3F528ECD4A95441295C8FD2AFF150413D0AD713D5A95441295C8F92AEF150415C8FC2E5D5A9544148E17A34ADF15041C3F5282CD6A95441295C8F72ABF15041C3F5288CD5A954418FC2F528AAF15041A4703DAAD5A9544166666616A8F15041C3F5281CD7A954418FC2F5C8A5F150415C8FC225D7A95441EC51B87EA4F15041000000C0D8A95441CDCCCC5CA3F15041C3F528FCD8A954410AD7A330A2F15041C3F5286CD7A95441EC51B80EA1F1504100000080D7A95441295C8F32A0F15041E17A144ED7A9544148E17A249FF15041E17A145ED6A95441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000A6020000781F360BE3F150415BD3B0AEE0A9544138DE382EE4F15041CA43D648E0A95441AE47E1FAE6F15041C3F528ECDEA95441B5BCDF15E7F15041478310E2DEA954414BD8E964E8F15041C4F77656DEA9544105E7C298E9F1504135CCB7EADDA95441122BC842EAF1504134600BB2DDA95441CC14C3A1EAF150419CD2858EDDA9544195D04C0AEBF15041682E6D67DDA95441ABA847D2EBF1504117753913DDA95441EE17FD8AECF1504160A5A7D5DCA95441F4E2DF71EDF15041BAED4C79DCA95441B9F1B8A5EEF1504150DAC4EEDBA954410FB8EC35F0F1504100DF7345DBA95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>463873 - 260102
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000400000061010000AE47E13AB1F15041C3F528ECD4A95441295C8FD2AFF150413D0AD713D5A95441295C8F92AEF150415C8FC2E5D5A9544148E17A34ADF15041C3F5282CD6A95441295C8F72ABF15041C3F5288CD5A954418FC2F528AAF15041A4703DAAD5A9544166666616A8F15041C3F5281CD7A954418FC2F5C8A5F150415C8FC225D7A95441EC51B87EA4F15041000000C0D8A95441CDCCCC5CA3F15041C3F528FCD8A954410AD7A330A2F15041C3F5286CD7A95441EC51B80EA1F1504100000080D7A95441295C8F32A0F15041E17A144ED7A9544148E17A249FF15041E17A145ED6A95441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000A6020000781F360BE3F150415BD3B0AEE0A9544138DE382EE4F15041CA43D648E0A95441AE47E1FAE6F15041C3F528ECDEA95441B5BCDF15E7F15041478310E2DEA954414BD8E964E8F15041C4F77656DEA9544105E7C298E9F1504135CCB7EADDA95441122BC842EAF1504134600BB2DDA95441CC14C3A1EAF150419CD2858EDDA9544195D04C0AEBF15041682E6D67DDA95441ABA847D2EBF1504117753913DDA95441EE17FD8AECF1504160A5A7D5DCA95441F4E2DF71EDF15041BAED4C79DCA95441B9F1B8A5EEF1504150DAC4EEDBA954410FB8EC35F0F1504100DF7345DBA95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>441898 - 1479388
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000017000000EC51B80EBBF25041A4703DBA6E245541713D0A87BCF25041E17A143E6E245541B81E857BC0F25041EC51B8EE6C24554185EB5178BCF25041C3F5284C67245541AE47E1FAB4F25041D7A3701D5B24554133333393AFF250413D0AD763522455417B14AE47B1F250410AD7A3404E245541713D0AF7B0F2504152B81E754B245541295C8F62AEF25041AE47E1CA3F24554100000060AEF250417B14AE073B245541B81E855BAAF25041EC51B8AE412455418FC2F548A9F250418FC2F53844245541A4703D5AA6F25041713D0A374C2455417B14AE97A3F250419A9999E952245541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000713D0A17CFF250416666669658245541713D0A17D0F2504152B81EA5552455418FC2F5B8D5F25041E17A140E4524554100000000D8F250418FC2F5583E24554148E17A64CBF25041AE47E1DA3A2455418FC2F548BFF250410000008037245541A4703D5AB4F250418FC2F57834245541713D0AA7B2F25041E17A148E3424554100000060AEF250417B14AE073B245541EC5A5460AEF25041183A9CA43B2455412B11227BAEF25041E590FB3940245541984AC067AFF25041EEE2CE6744245541713D0AF7B0F2504152B81E754B245541101BC5F7B1F25041A5D5D4704B245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>441898 - 3318461
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000017000000EC51B80EBBF25041A4703DBA6E245541713D0A87BCF25041E17A143E6E245541B81E857BC0F25041EC51B8EE6C24554185EB5178BCF25041C3F5284C67245541AE47E1FAB4F25041D7A3701D5B24554133333393AFF250413D0AD763522455417B14AE47B1F250410AD7A3404E245541713D0AF7B0F2504152B81E754B245541295C8F62AEF25041AE47E1CA3F24554100000060AEF250417B14AE073B245541B81E855BAAF25041EC51B8AE412455418FC2F548A9F250418FC2F53844245541A4703D5AA6F25041713D0A374C2455417B14AE97A3F250419A9999E952245541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000713D0A17CFF250416666669658245541713D0A17D0F2504152B81EA5552455418FC2F5B8D5F25041E17A140E4524554100000000D8F250418FC2F5583E24554148E17A64CBF25041AE47E1DA3A2455418FC2F548BFF250410000008037245541A4703D5AB4F250418FC2F57834245541713D0AA7B2F25041E17A148E3424554100000060AEF250417B14AE073B245541EC5A5460AEF25041183A9CA43B2455412B11227BAEF25041E590FB3940245541984AC067AFF25041EEE2CE6744245541713D0AF7B0F2504152B81E754B245541101BC5F7B1F25041A5D5D4704B245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>441898 - 3871
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000017000000EC51B80EBBF25041A4703DBA6E245541713D0A87BCF25041E17A143E6E245541B81E857BC0F25041EC51B8EE6C24554185EB5178BCF25041C3F5284C67245541AE47E1FAB4F25041D7A3701D5B24554133333393AFF250413D0AD763522455417B14AE47B1F250410AD7A3404E245541713D0AF7B0F2504152B81E754B245541295C8F62AEF25041AE47E1CA3F24554100000060AEF250417B14AE073B245541B81E855BAAF25041EC51B8AE412455418FC2F548A9F250418FC2F53844245541A4703D5AA6F25041713D0A374C2455417B14AE97A3F250419A9999E952245541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000A4703D5AB4F250418FC2F57834245541F2F63405B3F2504147988289342455417A046E97B2F2504155B3B5A53424554100000060AEF250417B14AE073B245541EC5A5460AEF25041183A9CA43B2455412B11227BAEF25041E590FB3940245541984AC067AFF25041EEE2CE6744245541713D0AF7B0F2504152B81E754B245541101BC5F7B1F25041A5D5D4704B245541E015DFCBB4F250411EB8A0EC4D2455418BA36573B2F2504152609C214E245541299C5812B3F2504161F270335024554162574124B7F2504186866EF551245541F2134EC9B7F25041916E89EC51245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>441898 - 56473
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000017000000EC51B80EBBF25041A4703DBA6E245541713D0A87BCF25041E17A143E6E245541B81E857BC0F25041EC51B8EE6C24554185EB5178BCF25041C3F5284C67245541AE47E1FAB4F25041D7A3701D5B24554133333393AFF250413D0AD763522455417B14AE47B1F250410AD7A3404E245541713D0AF7B0F2504152B81E754B245541295C8F62AEF25041AE47E1CA3F24554100000060AEF250417B14AE073B245541B81E855BAAF25041EC51B8AE412455418FC2F548A9F250418FC2F53844245541A4703D5AA6F25041713D0A374C2455417B14AE97A3F250419A9999E952245541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000A4703D5AB4F250418FC2F57834245541F2F63405B3F2504147988289342455417A046E97B2F2504155B3B5A53424554100000060AEF250417B14AE073B245541EC5A5460AEF25041183A9CA43B2455412B11227BAEF25041E590FB3940245541984AC067AFF25041EEE2CE6744245541713D0AF7B0F2504152B81E754B245541101BC5F7B1F25041A5D5D4704B245541E015DFCBB4F250411EB8A0EC4D2455418BA36573B2F2504152609C214E245541299C5812B3F2504161F270335024554162574124B7F2504186866EF551245541F2134EC9B7F25041916E89EC51245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442216 - 1480455
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001200000000000090D7F25041AE47E12A4A295541A4703D9ADDF250415C8FC2F549295541CDCCCCACE2F2504148E17AD44A295541295C8F62E6F250415C8FC2A54B295541C3F528ACE5F25041A4703DEA49295541D7A3705DE4F2504185EB51A846295541A4703DBAE1F25041CDCCCC1C442955413D0AD7B3DCF250411F85EBF13E29554166666656D6F2504148E17A7437295541A4703DFACEF25041333333032F295541B81E85ABCDF25041295C8FB22D29554114AE4771CCF250410AD7A33032295541295C8F62CBF25041C3F5283C352955417B14AEE7C9F25041D7A3707D39295541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005A0000001AB327C90BF35041C62FB0AB8F2955413CC0ED690DF35041448EB4AE8F2955412C5A955710F35041258A0B1B8E2955418FC2F5F80EF35041EC51B8BE8A295541D7A3709D0EF35041A4703D0A88295541E71E17A70EF3504155BC1452852955412C76110F14F3504155BC145285295541245F613D19F35041453A408884295541A4703DFA1CF3504185EB51787D295541C6A6DAA81FF35041564C2474762955414ACE2EC920F35041E28A286672295541C3F528FC23F35041D7A3707D69295541E17A147E22F35041AE47E16A68295541295C8F021DF35041D7A3700D65295541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442216 - 3474701
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001200000000000090D7F25041AE47E12A4A295541A4703D9ADDF250415C8FC2F549295541CDCCCCACE2F2504148E17AD44A295541295C8F62E6F250415C8FC2A54B295541C3F528ACE5F25041A4703DEA49295541D7A3705DE4F2504185EB51A846295541A4703DBAE1F25041CDCCCC1C442955413D0AD7B3DCF250411F85EBF13E29554166666656D6F2504148E17A7437295541A4703DFACEF25041333333032F295541B81E85ABCDF25041295C8FB22D29554114AE4771CCF250410AD7A33032295541295C8F62CBF25041C3F5283C352955417B14AEE7C9F25041D7A3707D39295541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005A0000001AB327C90BF35041C62FB0AB8F2955413CC0ED690DF35041448EB4AE8F2955412C5A955710F35041258A0B1B8E2955418FC2F5F80EF35041EC51B8BE8A295541D7A3709D0EF35041A4703D0A88295541E71E17A70EF3504155BC1452852955412C76110F14F3504155BC145285295541245F613D19F35041453A408884295541A4703DFA1CF3504185EB51787D295541C6A6DAA81FF35041564C2474762955414ACE2EC920F35041E28A286672295541C3F528FC23F35041D7A3707D69295541E17A147E22F35041AE47E16A68295541295C8F021DF35041D7A3700D65295541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442684 - 147491
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002D000000E17A142EF5065141A4703DEA592455413D0AD763FA065141C3F5285C592455419A9999F9040751418FC2F5F8562455418FC2F51801075141D7A3702D4C2455416666661601075141713D0AE73D245541F6285CFFFF065141295C8FC231245541A4703D8AFD0651413333334326245541E17A14FEFF065141E17A14DE242455410AD7A3D00107514148E17A0424245541D7A3709D03075141713D0A672324554114AE4791050751411F85EB71232455418FC2F518060751415C8FC29523245541CDCCCC2C0B075141AE47E11A262455415C8FC2A50D075141E17A144E25245541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A1194E61010751415FDF6738242455414200AB63FF0651414523E93525245541AED4BF55FF06514128E5D33D252455418B6A44E4FE065141918D607E25245541A7DAB345FE06514176E691D825245541FA85769EFD065141B85DD0A126245541F6285CFFFF065141295C8FC23124554152A0C15B0707514128115BFD3024554180A4EEC50B0751411DDE1487302455412B7771410D075141A0805D5F3024554190DC0E390B0751417A17C91D262455410DEAA0300B075141B227A41926245541CDCCCC2C0B075141AE47E11A262455411378DB8F0807514161FFE0CE24245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442684 - 341341
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002D000000E17A142EF5065141A4703DEA592455413D0AD763FA065141C3F5285C592455419A9999F9040751418FC2F5F8562455418FC2F51801075141D7A3702D4C2455416666661601075141713D0AE73D245541F6285CFFFF065141295C8FC231245541A4703D8AFD0651413333334326245541E17A14FEFF065141E17A14DE242455410AD7A3D00107514148E17A0424245541D7A3709D03075141713D0A672324554114AE4791050751411F85EB71232455418FC2F518060751415C8FC29523245541CDCCCC2C0B075141AE47E11A262455415C8FC2A50D075141E17A144E25245541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000A1194E61010751415FDF6738242455414200AB63FF0651414523E93525245541AED4BF55FF06514128E5D33D252455418B6A44E4FE065141918D607E25245541A7DAB345FE06514176E691D825245541FA85769EFD065141B85DD0A126245541F6285CFFFF065141295C8FC23124554152A0C15B0707514128115BFD3024554180A4EEC50B0751411DDE1487302455412B7771410D075141A0805D5F3024554190DC0E390B0751417A17C91D262455410DEAA0300B075141B227A41926245541CDCCCC2C0B075141AE47E11A262455411378DB8F0807514161FFE0CE24245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442971 - 2985999
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000035000000EC51B84E2D0751411F85EBA1713C554152B81E552C07514148E17A44713C55415C8FC2C52B075141EC51B80E713C554114AE47F1270751419A999929783C5541EC51B82E27075141AE47E18A803C554148E17AB42607514185EB51D8873C5541F6285C2F2607514185EB51289C3C55419A999939260751413D0AD7B3A23C5541F6285C2F26075141A4703DFAA43C55413D0AD72329075141B81E85DBA43C5541333333932A07514114AE47D1A43C55410AD7A3902F07514152B81E95A23C5541333333F33407514100000030A03C55417B14AEE7370751415C8FC225A03C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000002D66EE333407514132715AD44B3C5541F6285CCF33075141A4703DCA4F3C5541E17A145E330751413D0AD7A3513C55413D0AD74333075141713D0A87543C5541BB863C4D340751412535F976553C5541280B6AE236075141A9AC6942563C55415EBA30743B075141D07D6EA6573C55418578651F40075141F74E730A593C55418452C5AD4607514182B5C46C5B3C5541BC160D48460751412600EBEB5B3C554117D5765346075141E2ABF451603C55415F60F99143075141D3F2010C693C5541C50BEAE43E075141AA6D33CB773C554146ED97DC3F075141CA38511D783C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>442971 - 3700741
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000035000000EC51B84E2D0751411F85EBA1713C554152B81E552C07514148E17A44713C55415C8FC2C52B075141EC51B80E713C554114AE47F1270751419A999929783C5541EC51B82E27075141AE47E18A803C554148E17AB42607514185EB51D8873C5541F6285C2F2607514185EB51289C3C55419A999939260751413D0AD7B3A23C5541F6285C2F26075141A4703DFAA43C55413D0AD72329075141B81E85DBA43C5541333333932A07514114AE47D1A43C55410AD7A3902F07514152B81E95A23C5541333333F33407514100000030A03C55417B14AEE7370751415C8FC225A03C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000002D66EE333407514132715AD44B3C5541F6285CCF33075141A4703DCA4F3C5541E17A145E330751413D0AD7A3513C55413D0AD74333075141713D0A87543C5541BB863C4D340751412535F976553C5541280B6AE236075141A9AC6942563C55415EBA30743B075141D07D6EA6573C55418578651F40075141F74E730A593C55418452C5AD4607514182B5C46C5B3C5541BC160D48460751412600EBEB5B3C554117D5765346075141E2ABF451603C55415F60F99143075141D3F2010C693C5541C50BEAE43E075141AA6D33CB773C554146ED97DC3F075141CA38511D783C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>443433 - 1467304
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000D00000048E17A041B0751413D0AD7131D245541000000100F0751413D0AD7B31D2455419A99993911075141000000501F24554148E17A74130751413333339320245541B81E851B15075141A4703D2A21245541B81E85DB19075141D7A3704D22245541000000001D0751411F85EB01232455415C8FC26520075141C3F528FC23245541713D0A9723075141D7A3700D252455417B14AEB725075141B81E85DB25245541A4703D2A270751410000007026245541A4703DEA220751418FC2F5C81C24554148E17A041B0751413D0AD7131D24554101030000000100000017000000B81E85 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000A022FC5F260751415776F79926245541AE47E1BA22075141A4703D4A25245541A4703D4A200751410AD7A380242455417B14AE171E075141000000E02324554148E17AA41A07514114AE470123245541000000E0160751418FC2F50822245541CDCCCCEC14075141A4703D7A21245541CDCCCC8C13075141666666F6202455410AD7A3A012075141D7A3707D20245541713D0A0711075141B81E859B1F245541B81E855B0E075141D7A370BD1D245541CDCCCC8C0B075141333333E31D245541E17A141E11075141666666562324554185EB51D811075141CDCCCC0C24245541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978515 - 54992
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000A00000048E17A248EA650410AD7A3E0165C554148E17AA48EA6504185EB51A8145C55416666663693A65041F6285C7FF15B55411F85EBD17FA65041EC51B80EEB5B5541A4703D0A83A6504166666686145C5541000000808AA650411F85EB41155C554152B81EE583A65041713D0AA7415C5541CDCCCC3C86A6504166666646405C55419A9999C989A65041713D0A073A5C554148E17A248EA650410AD7A3E0165C5541
+</a>
+
+<b>
+010600000001000000010300000001000000170000002255A9AD84A650414AB31D633C5C554100B64EE783A65041D24D5698415C5541BCD6AF7F84A6504173BD254C415C5541CDCCCC3C86A6504166666646405C55419A9999C989A65041713D0A073A5C554100F874678DA65041B2A547D61C5C5541ED5F62128EA650410A1CC504175C55412F0A8C2C8EA65041D487D2BC165C554148E17AA48EA6504185EB51A8145C5541B217206E91A650417381C735FF5B5541CC5A472793A65041B7A2567AF15B55417A24756391A65041895F4BE4F05B554132D689D88DA6504141441EB7EF5B5541D96220D77FA65041501CC551EB5B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>446746 - 2914902
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D0000000AD7A38013295141A4703D5A323654413D0AD79319295141295C8F122D365441D7A3706D1B295141666666762B365441C3F528BC26295141F6285CCF213654418FC2F53826295141C3F5286C21365441000000D016295141CDCCCCEC153654417B14AE8714295141666666E612365441EC51B84E13295141EC51B86E12365441B81E856B0D29514148E17AC41336544185EB51B80B295141333333731636544114AE47A10B29514185EB515816365441D7A3707D0A295141EC51B8CE16365441A4703D8A04295141AE47E13A1936544100000040FD285141000000301C365441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C187245920295141E93A124327365441DF4ED50A222951412660DBD02536544182F7187523295141E65F9D9B24365441C3F528BC26295141F6285CCF21365441CA4FDAC61E295141DD4B00DE1B365441D9B1C61B19295141B7F357A317365441000000D016295141CDCCCCEC153654417B14AE8714295141666666E612365441BBAFC09D132951411571F18C1236544176A0A6FE0F295141B461052F13365441B81E856B0D29514148E17AC41336544185EB51B80B2951413333337316365441C187245920295141E93A124327365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>446746 - 3657658
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D0000000AD7A38013295141A4703D5A323654413D0AD79319295141295C8F122D365441D7A3706D1B295141666666762B365441C3F528BC26295141F6285CCF213654418FC2F53826295141C3F5286C21365441000000D016295141CDCCCCEC153654417B14AE8714295141666666E612365441EC51B84E13295141EC51B86E12365441B81E856B0D29514148E17AC41336544185EB51B80B295141333333731636544114AE47A10B29514185EB515816365441D7A3707D0A295141EC51B8CE16365441A4703D8A04295141AE47E13A1936544100000040FD285141000000301C365441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C187245920295141E93A124327365441DF4ED50A222951412660DBD02536544182F7187523295141E65F9D9B24365441C3F528BC26295141F6285CCF21365441CA4FDAC61E295141DD4B00DE1B365441D9B1C61B19295141B7F357A317365441000000D016295141CDCCCCEC153654417B14AE8714295141666666E612365441BBAFC09D132951411571F18C1236544176A0A6FE0F295141B461052F13365441B81E856B0D29514148E17AC41336544185EB51B80B2951413333337316365441C187245920295141E93A124327365441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447131 - 47454
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B00000048E17AD47C2B5141295C8F9234345441A4703D0AD32B5141CDCCCCFC4E345441CDCCCC1CD72B51410AD7A3D04134544148E17A74CA2B5141C3F5281C3E345441295C8FB2AA2B514114AE47D134345441F6285C5F992B5141F6285CBF2F345441F6285C3F882B5141CDCCCCBC2A345441B81E85CB862B5141000000502A345441C3F528EC802B51418FC2F59828345441A4703D9A802B51418FC2F5882934544148E17AD47C2B5141295C8F9234345441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000007F75C079A12B5141E27002CD3F3454418900DEA8A12B5141322272DB3F345441C4D0B85AA22B5141F6E8F0114034544152B1547AA32B514150471DB33C3454410B02ABC3A32B5141292D33CA3A3454410FDAC3B6A22B5141FE3A30EE39345441FBCC4EC2A12B5141B78B86373A345441FBC27D6AA12B51414171F1A33B34544151294F9FA02B514144FD138A3F3454417F75C079A12B5141E27002CD3F345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447131 - 84610
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B00000048E17AD47C2B5141295C8F9234345441A4703D0AD32B5141CDCCCCFC4E345441CDCCCC1CD72B51410AD7A3D04134544148E17A74CA2B5141C3F5281C3E345441295C8FB2AA2B514114AE47D134345441F6285C5F992B5141F6285CBF2F345441F6285C3F882B5141CDCCCCBC2A345441B81E85CB862B5141000000502A345441C3F528EC802B51418FC2F59828345441A4703D9A802B51418FC2F5882934544148E17AD47C2B5141295C8F9234345441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000007F75C079A12B5141E27002CD3F3454418900DEA8A12B5141322272DB3F345441C4D0B85AA22B5141F6E8F0114034544152B1547AA32B514150471DB33C3454410B02ABC3A32B5141292D33CA3A3454410FDAC3B6A22B5141FE3A30EE39345441FBCC4EC2A12B5141B78B86373A345441FBC27D6AA12B51414171F1A33B34544151294F9FA02B514144FD138A3F3454417F75C079A12B5141E27002CD3F345441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447256 - 266837
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001600000085EB5148E046514185EB51686C3F544166666696E14651418FC2F598683F544133333363E2465141713D0A87653F5441AE47E17AE2465141CDCCCC2C653F54418FC2F578DD46514152B81EE5633F5441A4703DCAD74651415C8FC2A5623F5441EC51B8CECE4651415C8FC215613F5441CDCCCC1CCA4651410AD7A370603F5441D7A3706DC4465141AE47E19A5F3F5441D7A3705DC24651410AD7A3705F3F5441AE47E15ABF465141F6285C4F5F3F5441F6285CBFBE4651417B14AEC7633F5441E17A149EBE465141E17A14EE663F5441C3F528BCBE465141A4703D4A6A3F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000270000001A32EF5ABF465141BB3070806A3F544177FAA3B2BE465141CB534A7C733F5441F6285C9FBE465141F6285C2F763F5441E17A144EBE46514152B81EA57D3F544166666626BE465141EC51B88E813F5441DC8FE3D5BD465141412FFF94883F5441BA07B5DCBD4651413855BE918A3F54414BC233AABD465141241D5E808F3F54419F7DA33EC64651414C506AE38F3F5441DDD11460CB46514109E3BCF58F3F54414DA6BEF3CE465141F467D301903F544151FF620AD046514155168105903F54414FA94EE6D04651412F516808903F54413E61EA3CD2465141B4F217B4853F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447349 - 208864
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000036000000713D0AF7BB445141000000B06B42544148E17AB4BD445141B81E855B6E4254415C8FC255C04451419A9999B96F4254415C8FC2E5C6445141D7A3709D6F425441713D0A77C8445141295C8F726D42544152B81E55CD4451411F85EB816A42544152B81E05D34451411F85EB216B42544114AE47C1D44451410AD7A3506C42544114AE47C1D44451419A9999596D42544152B81E05D34451413D0AD7C36E42544148E17A94CD445141295C8FE26F42544114AE4751CD4451413D0AD7537142544152B81EE5C944514152B81E25844254418FC2F5C8C34451410AD7A3C084425441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000295C8F42BC4451418FC2F54865425441D2083C30BB44514196BEF8BC674254418BE75C40BB4451412765EB0D68425441CDCCCC9CBB4451418FC2F51869425441713D0AF7BB445141000000B06B425441978DACB0BD4451413A08AE556E4254411A9504C8BE445141100BCAEA6E42544171086640C0445141F2C724AB6F42544122DDF7F1C0445141984DFBB66F425441B11A9D07C444514194E5BEA96F425441BF65BB99C4445141F6C4A0A16F4254410E5EC148C5445141D7DC5CA46F4254415C8FC2E5C6445141D7A3709D6F425441713D0A77C8445141295C8F726D425441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447349 - 341479
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000036000000713D0AF7BB445141000000B06B42544148E17AB4BD445141B81E855B6E4254415C8FC255C04451419A9999B96F4254415C8FC2E5C6445141D7A3709D6F425441713D0A77C8445141295C8F726D42544152B81E55CD4451411F85EB816A42544152B81E05D34451411F85EB216B42544114AE47C1D44451410AD7A3506C42544114AE47C1D44451419A9999596D42544152B81E05D34451413D0AD7C36E42544148E17A94CD445141295C8FE26F42544114AE4751CD4451413D0AD7537142544152B81EE5C944514152B81E25844254418FC2F5C8C34451410AD7A3C084425441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000295C8F42BC4451418FC2F54865425441D2083C30BB44514196BEF8BC674254418BE75C40BB4451412765EB0D68425441CDCCCC9CBB4451418FC2F51869425441713D0AF7BB445141000000B06B425441978DACB0BD4451413A08AE556E4254411A9504C8BE445141100BCAEA6E42544171086640C0445141F2C724AB6F42544122DDF7F1C0445141984DFBB66F425441B11A9D07C444514194E5BEA96F425441BF65BB99C4445141F6C4A0A16F4254410E5EC148C5445141D7DC5CA46F4254415C8FC2E5C6445141D7A3709D6F425441713D0A77C8445141295C8F726D425441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447447 - 447285
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000200000078000000AE47E1EA864651415C8FC2653B33544185EB5148884651417B14AEF73C335441666666E688465141EC51B8EE3D335441E17A145E89465141295C8F123F3354415C8FC295894651413D0AD7933F335441AE47E11A8A46514114AE4751403354411F85EB018B4651410AD7A32041335441B81E857B8B46514185EB5168433354411F85EB118C465141D7A3700D453354419A9999798C4651417B14AEF7453354411F85EB318D465141CDCCCC2C463354413333334391465141A4703D5A47335441666666E69446514185EB51D84A33544152B81EE595465141E17A14FE4B335441 [...]
+</a>
+
+<b>
+0106000000040000000103000000020000005100000010AD7EE7AB465141919CF48D30335441AC8D21E9AB4651416966811A2A3354417B14AE37A2465141E17A14EE1B3354410297DB229C465141E6195F401F335441938065B190465141E10532DB1D335441D2F019B393465141B10D7E182B335441E17E42E2A64651414119916E2A3354411F85EBF1A9465141EC51B8FE2B335441634DC6B6AA4651416B80FE9D2E335441713D0AE7AA465141F6285C0F3133544100000080AB465141F6285C6F32335441C3F528FCAA4651410AD7A3B038335441C3F5283CAD46514100000050383354418FC2F508AF465141F6285CFF37335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447621 - 251262
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000700000033333363F14751417B14AEA7263F5441B81E853B174851418FC2F5F8153F54413D0AD7F31348514185EB5188103F5441666666A610485141E17A140E0B3F5441AE47E1CAE447514152B81EB51B3F5441A4703DBAE6475141A4703DEA213F544133333363F14751417B14AEA7263F544101030000000100000007000000AE47E1BA154851419A9999D90F3F54415C8FC2F5184851415C8FC235153F5441D7A3704D19485141EC51B80E153F5441713D0AA7194851417B14AE570E3F54411F85EB011A4851410AD7A380073F5441EC51B86E124851410AD7A3600A3F5441AE47E1 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000007B14AEA7FD4751411F85EB21273F5441136BCCAC004851412CD0D583283F5441C2C8C3250348514180B6B86E293F544132A7AEA705485141566DCC7C2A3F5441DCC11EF205485141DF36604C2A3F5441CE4B8D4B064851415C0E33122A3F54410E25A4AF0B48514168876F90263F5441A8413D2A1B485141FE03B87E1C3F5441C49A517818485141F02C6806183F54418AEE843B17485141CCD7F5F8153F5441502730FF0D485141021A2F0B1A3F5441173AC06D094851413B5DAF0E1C3F5441ED7CC1BFFA47514155584087223F54419FB197EAF7475141E853E9C6233F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>447621 - 387843
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000700000033333363F14751417B14AEA7263F5441B81E853B174851418FC2F5F8153F54413D0AD7F31348514185EB5188103F5441666666A610485141E17A140E0B3F5441AE47E1CAE447514152B81EB51B3F5441A4703DBAE6475141A4703DEA213F544133333363F14751417B14AEA7263F544101030000000100000007000000AE47E1BA154851419A9999D90F3F54415C8FC2F5184851415C8FC235153F5441D7A3704D19485141EC51B80E153F5441713D0AA7194851417B14AE570E3F54411F85EB011A4851410AD7A380073F5441EC51B86E124851410AD7A3600A3F5441AE47E1 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000007B14AEA7FD4751411F85EB21273F5441136BCCAC004851412CD0D583283F5441C2C8C3250348514180B6B86E293F544132A7AEA705485141566DCC7C2A3F5441DCC11EF205485141DF36604C2A3F5441CE4B8D4B064851415C0E33122A3F54410E25A4AF0B48514168876F90263F5441A8413D2A1B485141FE03B87E1C3F5441C49A517818485141F02C6806183F54418AEE843B17485141CCD7F5F8153F5441502730FF0D485141021A2F0B1A3F5441173AC06D094851413B5DAF0E1C3F5441ED7CC1BFFA47514155584087223F54419FB197EAF7475141E853E9C6233F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>511639 - 186437
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000F000000F6285C7F85975041B81E855B7924544185EB51688297504114AE47C1792454417B14AEB779975041295C8F6297245441D7A3706D80975041AE47E19A952454417B14AED782975041CDCCCC6C9524544152B81E2585975041CDCCCC9C95245441F6285CEF8B975041C3F5284C98245441D7A3709D90975041AE47E17A9724544148E17A34939750413D0AD7239624544100000020959750410AD7A3F0942454410000006096975041333333B394245441EC51B83E97975041713D0A577F24544114AE47A19397504114AE47117E245441F6285C9F8D975041CDCCCCAC7B245441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000F6285C7F85975041B81E855B79245441A696526882975041109847C17924544118F454D17F975041022DD99582245441C0F873A47A9750419E373E3B94245441652A7E057D975041989A3CD6932454414F89716D80975041897AE09A95245441D546ADD78297504153C0CB6C952454411423AEF183975041CBA1C3839524544152B81E2585975041CDCCCC9C952454413CE4DCAF8B97504145DAC2C297245441F34573EA8C975041006E98F596245441D1587C2D8E9750412C3CDFE79724544175EEEA828E9750417EE4F2D89724544163B04DEF8E975041691A04C697245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>448176 - 3886834
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000A4703DAA882B5141713D0AD7FF32544148E17A848B2B514114AE4731D73254418FC2F5B8892B51413D0AD713D4325441713D0AD7852B51411F85EB61CF32544166666696822B5141F6285C4FCA325441EC51B8CE802B51415C8FC255C83254410AD7A340792B514148E17AB4C2325441713D0AA7742B51417B14AE27C03254413D0AD7A3722B5141B81E856BBF3254415C8FC2656F2B51418FC2F5A8ED3254417B14AEE7762B5141CDCCCCDCF2325441713D0A87822B514148E17A94FB325441A4703DAA882B5141713D0AD7FF325441
+</a>
+
+<b>
+01060000000100000001030000000100000044000000379D442F8B2B514128F7D2D9FB325441466A2D748D2B514194584A00FE3254410223B89E8D2B5141EBAA21F4FA32544176EF080F902B5141E195410CFA32544114590EC3902B51416DD32F55F63254416F311C18912B5141ECAE85ADF4325441A2644F4B912B51417B717B36F4325441FECAB5F1912B5141E2003EACF2325441B5C0DE8D942B51414867A492EC325441F445CAFF932B51415E67A4D2E83254418D8DABDA912B5141A4F66648E332544139624A38912B514185A2ADAAE132544195B93B88902B51414AD939E7DF32544120BF8E23902B5141C1D95838DF325441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464026 - 6704
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E000000A4703DEAC9F35041000000607AA35441A4703DAAE5F35041EC51B83E76A35441AE47E16AEAF350418FC2F58875A3544100000070E7F35041666666A661A35441C3F5289CE4F35041A4703DCA4EA35441666666A6E0F35041E17A145E34A35441EC51B88EDFF350415C8FC2152DA354415C8FC235CCF350410AD7A3D02FA354415C8FC245CDF35041F6285C7F37A354417B14AE97AEF350413D0AD7733CA3544166666646AEF35041B81E858B3CA3544148E17A04AFF35041295C8F8241A3544114AE47F1B7F35041CDCCCC0C7DA35441A4703DEAC9F35041000000607AA35441
+</a>
+
+<b>
+010600000001000000010300000001000000050000002957BC1AADF35041CAD27BBD34A3544126CEE97FAEF35041FF981A0C3EA35441DE66C3D9AFF35041923ED48B3DA3544120E0FAE1AEF3504180A4C27B34A354412957BC1AADF35041CAD27BBD34A35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464026 - 57022
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E000000A4703DEAC9F35041000000607AA35441A4703DAAE5F35041EC51B83E76A35441AE47E16AEAF350418FC2F58875A3544100000070E7F35041666666A661A35441C3F5289CE4F35041A4703DCA4EA35441666666A6E0F35041E17A145E34A35441EC51B88EDFF350415C8FC2152DA354415C8FC235CCF350410AD7A3D02FA354415C8FC245CDF35041F6285C7F37A354417B14AE97AEF350413D0AD7733CA3544166666646AEF35041B81E858B3CA3544148E17A04AFF35041295C8F8241A3544114AE47F1B7F35041CDCCCC0C7DA35441A4703DEAC9F35041000000607AA35441
+</a>
+
+<b>
+010600000001000000010300000001000000050000002957BC1AADF35041CAD27BBD34A3544126CEE97FAEF35041FF981A0C3EA35441DE66C3D9AFF35041923ED48B3DA3544120E0FAE1AEF3504180A4C27B34A354412957BC1AADF35041CAD27BBD34A35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>449732 - 12953
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000005000000000000030F81B514114AE47F1A72E554114AE4701FA1B51415C8FC255A32E55419A9999B9F61B5141F6285CBF982E554114AE47E1F51B51411F85EBB1952E554152B81ED5F31B5141F6285C2F922E5541CDCCCC7CF21B514152B81E15902E554133333393F01B514166666666912E5541E17A14FEE91B5141A4703D1A912E5541A4703D2AE61B51419A999939902E55415C8FC2B5E41B5141EC51B89E912E5541C3F5284CE41B514114AE4791922E5541295C8F32E21B51411F85EB61932E55418FC2F518E31B514185EB51E8942E554152B81EC5E11B51413D0AD7B3962E5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A0000000650968ECC1B51410E6D5CD5A52E5541933B57FDCA1B5141B1B07289A62E554148984467C91B5141057FB33FA72E55415C8FC225C81B5141000000D0A72E5541E27E2799C61B514176EC50D4A92E55415546C538C51B514190F30F9FAB2E55417068F58EC31B5141898FA0E2AD2E5541F33FF973C11B5141872179E4B02E5541CB3A8173C01B51417F4BCB52B22E5541A38B5AE1BF1B5141E5A38B23B32E55418F1A5406BF1B5141877A625CB42E554134B81729BE1B514106A01FABB52E5541AE47E1FABB1B5141713D0A37B92E55412D1617CFBB1B51419960367CB92E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>449732 - 62689
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000005000000000000030F81B514114AE47F1A72E554114AE4701FA1B51415C8FC255A32E55419A9999B9F61B5141F6285CBF982E554114AE47E1F51B51411F85EBB1952E554152B81ED5F31B5141F6285C2F922E5541CDCCCC7CF21B514152B81E15902E554133333393F01B514166666666912E5541E17A14FEE91B5141A4703D1A912E5541A4703D2AE61B51419A999939902E55415C8FC2B5E41B5141EC51B89E912E5541C3F5284CE41B514114AE4791922E5541295C8F32E21B51411F85EB61932E55418FC2F518E31B514185EB51E8942E554152B81EC5E11B51413D0AD7B3962E5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A0000000650968ECC1B51410E6D5CD5A52E5541933B57FDCA1B5141B1B07289A62E554148984467C91B5141057FB33FA72E55415C8FC225C81B5141000000D0A72E5541E27E2799C61B514176EC50D4A92E55415546C538C51B514190F30F9FAB2E55417068F58EC31B5141898FA0E2AD2E5541F33FF973C11B5141872179E4B02E5541CB3A8173C01B51417F4BCB52B22E5541A38B5AE1BF1B5141E5A38B23B32E55418F1A5406BF1B5141877A625CB42E554134B81729BE1B514106A01FABB52E5541AE47E1FABB1B5141713D0A37B92E55412D1617CFBB1B51419960367CB92E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968098 - 548942
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000700000003115A2C5790F51419EF59FD19F3C55411B9C75A7790F51417F3569A39D3C55412E3A36AD790F514101DC5C309D3C5541C458D9CD790F51414E789EA39A3C554112CE18687B0F5141A57205EE983C554194E71ED07B0F51411A02107F983C5541668740927D0F51416C24EC9E963C55412F10E65D7E0F5141F053705C953C554142D434A07E0F51417422D50F933C5541E5F658937E0F514115F00F318F3C554128FD64007E0F5141AC11DC1C8C3C554127FBEF767D0F5141E806973B893C5541478F6B1A7D0F514138675C4B873C554197C6BA227D0F514111C95073863C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000009B000000B7DB408F650F51418B9918F82B3C5541EDBF900F610F5141BCB393EB273C5541C779DC6F5E0F51418479FBE1273C5541142F80365B0F51411171B43B263C5541BDF4A3A3560F514167C34222243C5541CD4E5F3D520F51412BF89C37223C554192BFF2CA4F0F51412685FDC2263C55414D9E1455520F51419D9BC977293C554103C4B6F9550F514147DD152F2D3C55416B8DA1A2580F5141C8DF600B303C5541DCBEC25C5B0F5141D912E0442C3C5541ECE431A35C0F514137C4571B2B3C554193B3AA5C5E0F5141268A82DB283C55419C50957C5F0F5141BFFD1EB5283C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>452164 - 3158771
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000A4703D2A26285141D7A3704DC73755419A9999292C285141F6285C2FBA375541AE47E17A2A2851418FC2F548BA375541AE47E1EA242851417B14AE07B9375541666666761E28514152B81EF5B1375541B81E85CB1B28514166666606AF375541F6285C3F1A285141E17A144EB2375541666666C6152851417B14AEC7BB375541CDCCCCBC112851417B14AEF7C43755410AD7A3B00D28514100000080CD375541E17A141E092851419A999959D4375541C3F5285C0428514166666666DA37554114AE47F1FE2751411F85EB31E037554100000020F9275141D7A3702DE5375541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003D000000EEB55E59242851419BBE817B06385541E7D51E5627285141D5D47D96003855413A7BD3A12A2851414E51AE15FA375541F47193ED2B2851410B641187F73755413D211D7A302851415FEE2F8DEE37554187C23B013228514109CE6C89EB375541135B9629342851415D6C8347E7375541746809CD35285141E6B9D90BE43755412F3ECF3437285141043AF145E1375541238014E138285141399CDFF8DD3755416E057B323A285141B6511C5FDB3755419B142A293B285141B7DA5978D93755416E851EBA3A285141F4EF8203D93755415C0E5ACE39285141F68F6E38D8375541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>452164 - 3565551
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000A4703D2A26285141D7A3704DC73755419A9999292C285141F6285C2FBA375541AE47E17A2A2851418FC2F548BA375541AE47E1EA242851417B14AE07B9375541666666761E28514152B81EF5B1375541B81E85CB1B28514166666606AF375541F6285C3F1A285141E17A144EB2375541666666C6152851417B14AEC7BB375541CDCCCCBC112851417B14AEF7C43755410AD7A3B00D28514100000080CD375541E17A141E092851419A999959D4375541C3F5285C0428514166666666DA37554114AE47F1FE2751411F85EB31E037554100000020F9275141D7A3702DE5375541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003D000000EEB55E59242851419BBE817B06385541E7D51E5627285141D5D47D96003855413A7BD3A12A2851414E51AE15FA375541F47193ED2B2851410B641187F73755413D211D7A302851415FEE2F8DEE37554187C23B013228514109CE6C89EB375541135B9629342851415D6C8347E7375541746809CD35285141E6B9D90BE43755412F3ECF3437285141043AF145E1375541238014E138285141399CDFF8DD3755416E057B323A285141B6511C5FDB3755419B142A293B285141B7DA5978D93755416E851EBA3A285141F4EF8203D93755415C0E5ACE39285141F68F6E38D8375541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>452491 - 6388
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000400000034000000F6285CFFD23151410AD7A33024285541E17A14DECF315141000000202528554152B81E65C7315141713D0A8724285541A4703D6AC1315141AE47E1BA2328554185EB5108BC3151411F85EB2123285541C3F5281CBA315141F6285C8F20285541E17A14BEB3315141AE47E12A1F285541B81E85CBAC315141666666A61D28554185EB5198AA315141AE47E12A1D285541E17A145EA8315141F6285CAF1C285541B81E85CBA53151419A9999691C285541000000809F315141E17A148E1C2855413D0AD7539F315141F6285C8F1C2855413333330398315141AE47E10A1D285541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000007EE36D36A731514104D30A901C285541B81E85CBA53151419A9999691C285541000000809F315141E17A148E1C285541DA7D9CA69D3151414F0DACAB1C2855413333330398315141AE47E10A1D28554155F915EF96315141F5C7045B1D2855418A98C0C096315141B76577681D285541523AC3799631514167FD117D1D285541AA6C735696315141E2AD51871D285541DA8D119E95315141135D0DCE1D285541C18C119E953151418B5D0DCE1D2855414E64411094315141FD38B17B1E2855417A211924933151414061D60D1F285541C64EBA369231514195679CA91F285541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>452491 - 59990
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000400000034000000F6285CFFD23151410AD7A33024285541E17A14DECF315141000000202528554152B81E65C7315141713D0A8724285541A4703D6AC1315141AE47E1BA2328554185EB5108BC3151411F85EB2123285541C3F5281CBA315141F6285C8F20285541E17A14BEB3315141AE47E12A1F285541B81E85CBAC315141666666A61D28554185EB5198AA315141AE47E12A1D285541E17A145EA8315141F6285CAF1C285541B81E85CBA53151419A9999691C285541000000809F315141E17A148E1C2855413D0AD7539F315141F6285C8F1C2855413333330398315141AE47E10A1D285541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000007EE36D36A731514104D30A901C285541B81E85CBA53151419A9999691C285541000000809F315141E17A148E1C285541DA7D9CA69D3151414F0DACAB1C2855413333330398315141AE47E10A1D28554155F915EF96315141F5C7045B1D2855418A98C0C096315141B76577681D285541523AC3799631514167FD117D1D285541AA6C735696315141E2AD51871D285541DA8D119E95315141135D0DCE1D285541C18C119E953151418B5D0DCE1D2855414E64411094315141FD38B17B1E2855417A211924933151414061D60D1F285541C64EBA369231514195679CA91F285541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464090 - 4493802
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000006A000000000000F0EFA4504185EB5128BA335441B81E85DBF1A450418FC2F548B9335441C3F528BCF4A45041295C8FC2B8335441D7A370BDF6A4504114AE47C1B6335441A4703DEAF6A45041295C8F72B5335441F6285C7FF8A4504114AE47C1B1335441C3F5281C04A5504152B81ED5B13354411F85EB2108A5504133333393A2335441AE47E18A00A55041C3F5286CA23354410AD7A300FBA45041A4703DBAA233544185EB5148F7A45041A4703DBAA233544114AE4701F1A4504114AE4751A53354418FC2F548F0A45041CDCCCCCC9B335441713D0A87EDA450418FC2F5588E335441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000086000000F418A5D4E7A450419D288F92833354417B14AEB7E5A45041C3F5282C84335441295C8F72E5A45041713D0A07843354413D0AD773E4A45041A4703D9A863354413D0AD703E4A45041C3F5286C88335441B81E853BE4A45041C3F528BC89335441D7A370DDE4A45041AE47E12A8B33544152B81EF5E5A45041CDCCCC8C8C335441CDCCCC2CE6A450410AD7A3D08D335441C3F528DCE5A4504114AE47918E33544166666616E4A45041D7A3709D8E335441AE47E17AE3A45041295C8F328F3354411F85EB61E3A4504185EB51889033544114AE4781E3A45041B81E853B92335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464772 - 58084
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000200000001030000000100000016000000000000906FD25041713D0A67D44B5441B81E85FB79D2504114AE47D1D74B5441B81E853B7DD250411F85EBE1D84B5441B81E85AB7FD25041EC51B8EED94B5441CDCCCCEC81D2504166666636DB4B5441295C8FA288D250410AD7A350DD4B5441F6285CDF8AD2504133333303DD4B5441A4703D7A8BD25041CDCCCCFCDB4B544114AE47A18BD250419A9999A9DA4B544185EB51788AD2504133333313D94B54415C8FC2E575D2504185EB51D8CE4B544148E17A2473D2504185EB5118CD4B54410000001070D250413D0AD7C3C94B54415C8FC2056DD25041EC51B84EC64B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000047000000D5121EF06CD25041872FB360C64B5441A67EA56B6BD25041462AB3A3C74B5441FF608EDE69D25041C55CF7EDC84B54416ED2A4C569D25041DFADAF02C94B5441327BCA8067D25041FF7BCAE5CA4B54414312F7D766D2504184C33472CB4B5441C943D1E165D25041955CEE3ECC4B544168AED70365D25041621D8DF7CC4B5441BD03F7AF64D250410B47503DCD4B54415964D20864D250412F32E1DCCD4B5441F0E8071863D25041DF9809CFCE4B5441C3D34E3165D2504182877021D14B5441892FD71566D25041CB05D7F9D14B544196EF2D5566D250412F7DC435D24B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>453004 - 1542313
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000003A000000EC51B87E1D00514166666616B2F35441F6285CCF1B00514152B81E85AEF35441713D0AA71A005141EC51B82EAFF3544152B81EF51800514185EB51F8AFF35441333333931700514166666656B0F35441C3F5283C15005141E17A140EB0F35441713D0A2713005141A4703DDAAFF354418FC2F57811005141EC51B82EAFF3544152B81E750F005141A4703D0AAEF3544114AE47710D0051411F85EBB1ACF35441C3F5282C0A005141295C8FC2AAF35441295C8F92070051415C8FC2F5A8F354413D0AD753050051413D0AD7C3A7F354411F85EB2105005141EC51B8AEA8F35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005E000000EC51B87E1D00514166666616B2F35441F2BC6CE11B00514114ED5DABAEF354415F3081EB1A0051416CB28807AFF35441C4D867571A005141D9DFB753AFF35441347BAFAC19005141FDFF08A3AFF354413ED5E905190051416A493786AFF3544153AC855718005141B4773755AFF3544158F17FAE170051414F22CA3AAFF354412948CD1017005141458ED221AFF354412E33CB7516005141FAAA2208AFF35441C587D06815005141439FAD8FAEF3544149EC47E114005141444F6546AEF354419394EEF71300514133DD74DAADF35441B178491C130051418249B768ADF35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>453004 - 3504019
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000003A000000EC51B87E1D00514166666616B2F35441F6285CCF1B00514152B81E85AEF35441713D0AA71A005141EC51B82EAFF3544152B81EF51800514185EB51F8AFF35441333333931700514166666656B0F35441C3F5283C15005141E17A140EB0F35441713D0A2713005141A4703DDAAFF354418FC2F57811005141EC51B82EAFF3544152B81E750F005141A4703D0AAEF3544114AE47710D0051411F85EBB1ACF35441C3F5282C0A005141295C8FC2AAF35441295C8F92070051415C8FC2F5A8F354413D0AD753050051413D0AD7C3A7F354411F85EB2105005141EC51B8AEA8F35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005E000000EC51B87E1D00514166666616B2F35441F2BC6CE11B00514114ED5DABAEF354415F3081EB1A0051416CB28807AFF35441C4D867571A005141D9DFB753AFF35441347BAFAC19005141FDFF08A3AFF354413ED5E905190051416A493786AFF3544153AC855718005141B4773755AFF3544158F17FAE170051414F22CA3AAFF354412948CD1017005141458ED221AFF354412E33CB7516005141FAAA2208AFF35441C587D06815005141439FAD8FAEF3544149EC47E114005141444F6546AEF354419394EEF71300514133DD74DAADF35441B178491C130051418249B768ADF35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>453074 - 177780
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+010600000001000000010300000001000000210000009A9999D92CAE5041D7A370FD79C75441666666062EAE504114AE47E172C754417B14AE172FAE50415C8FC2556BC754418FC2F5780FAE5041CDCCCCBC6BC75441E17A14FE0AAE5041A4703D0A6EC7544114AE47610FAE5041713D0A0773C754410AD7A38011AE50411F85EBC175C75441295C8FD212AE5041CDCCCC7C77C75441CDCCCC0C16AE50415C8FC2357BC754415C8FC27514AE5041C3F5280C7DC75441295C8FA223AE5041AE47E16A7FC754410AD7A3802AAE50415C8FC2B580C754410AD7A35031AE50411F85EB5182C75441E17A14EE31AE5041E17A147E83C75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D00000059B27FDA10AE50410386B42CA5C754416135D8630EAE50417A4032A3AAC7544196F7482106AE5041345F8ED2BBC7544154931EF507AE5041FEA0CBDCBFC75441629A50680EAE50411E17151EB4C75441499EA07A0FAE504142FB992CB2C75441EC51B86E10AE50411F85EB71B0C7544167ABB76E13AE504138B1C2D5AFC75441B3EF46B117AE50413B170A17A2C754413E3952D81BAE5041AAAC7904A0C75441B68CC22D21AE50410A67D5589EC754411F85EB6122AE504185EB51F89DC7544128FFEB5F25AE5041E946E4F29CC75441FA92E18A2CAE5041A911A3809AC75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>816880 - 1149674
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002A000000430703AAAE505141C0177EF65553544133333313AE505141D7A3706D58535441A4703D4AAC505141000000D061535441713D0AA79E50514185EB51D85E535441B81E859B93505141E17A14BE5B535441AE47E1FA915051417B14AE47615354417B14AE579450514114AE47016D5354415C8FC2559950514133333313735354413D0AD703A1505141000000207C5354419A999999A45051415C8FC225825354415C8FC2C5A550514148E17AA48753544185EB5108A7505141A4703DAA97535441295C8F52AD505141B81E851BA353544152B81EF5B15051413D0AD713A5535441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000037000000460703AAAE505141BE177EF65553544133333313AE505141D7A3706D58535441A4703D4AAC505141000000D061535441713D0AA79E50514185EB51D85E535441B81E859B93505141E17A14BE5B53544116CD79C5925051414B5CC36860535441542F07B792505141A4DED5916353544116CD79C592505141AD2231E265535441F44616BB93505141345D97D96A535441102340A294505141669E206E6C535441E49CDC9795505141E42FCC676E5354414B0D8434995051419F6760A3725354413886A1049F505141B8CB402B78535441D2F376E5A1505141AD77CDE47B535441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>816880 - 3494713
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002A000000430703AAAE505141C0177EF65553544133333313AE505141D7A3706D58535441A4703D4AAC505141000000D061535441713D0AA79E50514185EB51D85E535441B81E859B93505141E17A14BE5B535441AE47E1FA915051417B14AE47615354417B14AE579450514114AE47016D5354415C8FC2559950514133333313735354413D0AD703A1505141000000207C5354419A999999A45051415C8FC225825354415C8FC2C5A550514148E17AA48753544185EB5108A7505141A4703DAA97535441295C8F52AD505141B81E851BA353544152B81EF5B15051413D0AD713A5535441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000037000000460703AAAE505141BE177EF65553544133333313AE505141D7A3706D58535441A4703D4AAC505141000000D061535441713D0AA79E50514185EB51D85E535441B81E859B93505141E17A14BE5B53544116CD79C5925051414B5CC36860535441542F07B792505141A4DED5916353544116CD79C592505141AD2231E265535441F44616BB93505141345D97D96A535441102340A294505141669E206E6C535441E49CDC9795505141E42FCC676E5354414B0D8434995051419F6760A3725354413886A1049F505141B8CB402B78535441D2F376E5A1505141AD77CDE47B535441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>453438 - 177106
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002E0000000AD7A35041B65041333333D375DA5441E17A140E3FB650410AD7A33074DA5441CDCCCC8C3BB65041CDCCCCCC73DA54411F85EB613AB650419A99997972DA544152B81E0536B65041EC51B89E71DA5441F6285CBF32B65041295C8F1271DA5441666666662FB65041666666C671DA5441C3F528AC2CB65041CDCCCC7C73DA5441D7A370CD2AB650410AD7A39079DA5441EC51B8DE29B6504114AE47017EDA544152B81E3526B65041E17A14FE7CDA544185EB513827B650416666668676DA5441C3F5284C27B650410AD7A33074DA54417B14AEC722B65041CDCCCC7C73DA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002000000038616D7017B650416E56C4AA6FDA5441000000D013B650411F85EB916FDA5441F6285CFF14B65041E17A144E74DA5441E17A145E15B650411F85EBC176DA5441DACA348315B650413010F49978DA5441530AD79315B650418CA3706D79DA54417C34AFCD15B6504196FF8CAA7BDA5441E17A14EE15B65041B81E85EB7CDA5441763227F517B65041DFFFCC5D90DA54418614AEF719B6504112E17AA4A3DA54415F5C8FD21AB650413485EBC1A6DA54417E6666461CB65041D0F5281CA9DA54411E635F201DB65041338F848FA9DA54415C6666B61EB650413B666666AADA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>453438 - 342203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002E0000000AD7A35041B65041333333D375DA5441E17A140E3FB650410AD7A33074DA5441CDCCCC8C3BB65041CDCCCCCC73DA54411F85EB613AB650419A99997972DA544152B81E0536B65041EC51B89E71DA5441F6285CBF32B65041295C8F1271DA5441666666662FB65041666666C671DA5441C3F528AC2CB65041CDCCCC7C73DA5441D7A370CD2AB650410AD7A39079DA5441EC51B8DE29B6504114AE47017EDA544152B81E3526B65041E17A14FE7CDA544185EB513827B650416666668676DA5441C3F5284C27B650410AD7A33074DA54417B14AEC722B65041CDCCCC7C73DA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002000000038616D7017B650416E56C4AA6FDA5441000000D013B650411F85EB916FDA5441F6285CFF14B65041E17A144E74DA5441E17A145E15B650411F85EBC176DA5441DACA348315B650413010F49978DA5441530AD79315B650418CA3706D79DA54417C34AFCD15B6504196FF8CAA7BDA5441E17A14EE15B65041B81E85EB7CDA5441763227F517B65041DFFFCC5D90DA54418614AEF719B6504112E17AA4A3DA54415F5C8FD21AB650413485EBC1A6DA54417E6666461CB65041D0F5281CA9DA54411E635F201DB65041338F848FA9DA54415C6666B61EB650413B666666AADA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>453613 - 376919
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000004000000A8000000713D0A37D2AF50415C8FC2F51AD35441E17A14AECCAF504185EB51E80BD3544114AE4751CCAF504148E17AF40AD3544148E17AF4C8AF5041D7A3705D02D3544152B81E35D0AF504114AE4711F7D254411F85EBC1D5AF5041C3F5286CEED25441AE47E19AD8AF5041F6285CCFEDD254413D0AD7F3E0AF50413D0AD703ECD2544185EB5108E5AF504133333323EBD254419A999929E9AF504100000040EAD2544133333313EDAF50418FC2F568E9D254418FC2F5E8F4AF50419A9999B9E7D254418FC2F5B8FBAF5041295C8F12E4D254416666662600B0504100000030E0D25441 [...]
+</a>
+
+<b>
+010600000001000000010300000004000000000100002298381702B0504198C801F346D35441A7D75CCF02B05041EC26A32047D35441333333930EB050419A9999094AD35441E322AD8A0EB0504132540BEF4BD354415C8FC2850EB05041713D0A074DD35441F6285C9F01B05041C3F5281C56D35441B81E85BBFFAF50410AD7A37057D3544143C44FB6FBAF5041AD6D27685CD354418FC2F548FAAF5041B81E852B5ED354411DABFF60F4AF504133C3C88461D35441042FE14AE5AF50417E1990126AD354419AB03CB4E1AF5041BD05A2656DD35441DCCFFF27DFAF5041C058E5C16FD35441E09F3363DCAF50417FF78E5272D35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454171 - 372842
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001D0000000AD7A38020B05041CDCCCC1C20D854410AD7A39023B050419A9999E928D85441AE47E10A2BB050418FC2F5783ED854417B14AE072CB050415C8FC2553FD854418FC2F5782FB05041C3F528BC40D85441295C8FD237B050415C8FC2A542D854415C8FC2A53DB05041713D0A2744D854410000008040B05041D7A3703D45D85441E17A149E43B050416666660647D854419A99995952B05041C3F5285C53D85441CDCCCC5C56B05041D7A370DD55D85441666666C65AB05041A4703D1A58D85441A4703DCA6FB0504152B81EF560D85441A4703DEA76B05041E17A144E64D85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003000000079ABEB613AB050411D56B89E23D85441C3F5280C30B05041D7A3707D22D85441D7A3706D29B050416666667621D85441CB7F079A25B05041BB58A87020D85441FC8EC21523B0504155E17AC41FD85441F7350B2C22B05041ACD6B3E31FD854413CD7A38020B05041C6CCCC1C20D854410AD7A39023B050419A9999E928D85441AE47E10A2BB050418FC2F5783ED854414114AE072CB05041298FC2553FD85441D6C2F5782FB050418DF528BC40D85441CE4B0A1933B050418EB1BA9041D85441295C8FD237B050415C8FC2A542D854415C8FC2A53DB05041713D0A2744D85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454180 - 52692
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001100000085EB51E87CB55041AE47E1BAF2E254416666669680B5504148E17AE4D2E25441333333E35BB5504152B81E15D2E25441AE47E18A23B55041295C8FC2D0E25441F6285C7F21B5504114AE4711D2E254417B14AED717B55041EC51B8CEEEE254411F85EB510FB550418FC2F50808E3544114AE47B13FB55041295C8F1209E354417B14AE3753B5504152B81E8509E3544148E17A845DB5504148E17A2413E35441000000B05FB550413333337313E35441EC51B8AE69B55041000000000AE354417B14AEE76AB550418FC2F5080AE354418FC2F5C876B550413D0AD703FFE25441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000D71219BD7DB550410964088AEBE25441B67430E97DB55041FBA9930CEAE25441BC5E09ED7DB550413DAF4AEBE9E254412A8591147EB55041C2424895E8E254418DDA1F557EB55041A5C6C666E6E2544185DF1B517FB5504124FFBBE2DDE254416A1EB9777FB55041EAD8A994DCE2544193DB22BA7FB5504147651756DAE254415B465F9380B5504109DFACFED2E2544168A903474BB55041187FF4F9D1E25441F072557E23B55041DEE394CAD0E254410089E58021B55041832B4C10D2E25441EFF9956B21B550411543244CD2E25441851DA8CA1EB55041C39B5D28DAE25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454205 - 3028404
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000007B14AE77FDB950417B14AE4738C95441713D0A27FEB950417B14AEA732C95441AE47E1EAFEB950419A9999992DC954419A99992900BA5041B81E85AB2DC954410AD7A3C00EBA50415C8FC23538C954413333335315BA50411F85EBB128C95441E17A14CE0CBA50417B14AEB721C9544152B81ED506BA504185EB51A81BC954419A9999D9FEB950410AD7A3C015C954413D0AD7B3F9B950410AD7A30011C9544166666686F3B950419A9999D90CC954415C8FC285F3B95041666666160EC954419A999979F3B9504148E17AB42FC95441295C8FD2E7B950411F85EB512EC95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000004D4F209BCCB95041BC29DF5117C95441EA86FB97DFB9504158E4BAB516C9544126512980F3B950414653B8321FC954415C8FC285F3B95041466666160EC95441F6285C2FEAB9504116295CCF07C954415B14AE97E2B95041CB51B83E08C95441F77A146EE2B9504114AE47A106C95441666666A6D8B95041D91E859B07C9544120D7A3A0CCB95041F5FFFFDF08C954414D4F209BCCB95041BC29DF5117C95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454205 - 177328
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000007B14AE77FDB950417B14AE4738C95441713D0A27FEB950417B14AEA732C95441AE47E1EAFEB950419A9999992DC954419A99992900BA5041B81E85AB2DC954410AD7A3C00EBA50415C8FC23538C954413333335315BA50411F85EBB128C95441E17A14CE0CBA50417B14AEB721C9544152B81ED506BA504185EB51A81BC954419A9999D9FEB950410AD7A3C015C954413D0AD7B3F9B950410AD7A30011C9544166666686F3B950419A9999D90CC954415C8FC285F3B95041666666160EC954419A999979F3B9504148E17AB42FC95441295C8FD2E7B950411F85EB512EC95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A00000026512980F3B950414353B8321FC954415C8FC285F3B95041466666160EC95441F6285C2FEAB9504116295CCF07C954415B14AE97E2B95041CB51B83E08C95441F77A146EE2B9504114AE47A106C95441666666A6D8B95041D91E859B07C9544120D7A3A0CCB95041F5FFFFDF08C95441CEB1209BCCB950412C1CDD5017C95441EA86FB97DFB9504158E4BAB516C9544126512980F3B950414353B8321FC95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454464 - 58231
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000D0000003D0AD7D335B35041EC51B84EC8D55441EC51B8BE39B350413D0AD783C6D55441A4703DDA3CB35041713D0A17C4D554410AD7A3303FB35041A4703DEAC0D5544114AE47E140B350415C8FC225BCD55441CDCCCC0C45B35041713D0AF7ADD55441EC51B8EE47B350418FC2F5E8A5D5544114AE474122B35041F6285CDFA0D554417B14AE1718B35041C3F5289CCAD5544152B81E5520B350418FC2F578CBD5544148E17AF426B35041D7A3707DCBD55441B81E85BB31B3504152B81EB5C9D554413D0AD7D335B35041EC51B84EC8D55441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000921F1CF124B3504141BC523BA1D55441A20511C125B35041D5882057A1D554417384ED0628B350411017ECA4A1D55441198B55652CB350418A25743AA2D55441D3AA40C734B350415B315D59A3D554416EC24D8C3BB350414EE51241A4D554410F5968A946B35041F82F77BDA5D55441EC51B8EE47B350418FC2F5E8A5D5544161FC273948B350418B6F6E62A5D5544124A1D48448B35041BB3CAAD9A4D5544198DA25BD4AB35041F7698BD6A0D55441E9276C224BB350412BC8821FA0D554418EABE31B4CB350418EBC125C9ED554414540B8484BB35041B12A58189ED55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454465 - 58231
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A00000014AE474122B35041F6285CDFA0D55441EC51B8EE47B350418FC2F5E8A5D55441C3F5281C4CB35041C3F5285C9ED55441295C8F0248B35041B81E850B9DD554418FC2F53842B35041713D0A879BD55441D7A370AD3BB35041AE47E19A9BD55441AE47E1DA35B350417B14AE279BD554418FC2F5482FB35041C3F528AC99D55441295C8FD224B3504152B81E5596D5544114AE474122B35041F6285CDFA0D55441
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000921F1CF124B3504141BC523BA1D55441A20511C125B35041D5882057A1D554417384ED0628B350411017ECA4A1D55441198B55652CB350418A25743AA2D55441D3AA40C734B350415B315D59A3D554416EC24D8C3BB350414EE51241A4D554410F5968A946B35041F82F77BDA5D55441EC51B8EE47B350418FC2F5E8A5D5544161FC273948B350418B6F6E62A5D5544124A1D48448B35041BB3CAAD9A4D5544198DA25BD4AB35041F7698BD6A0D55441E9276C224BB350412BC8821FA0D554418EABE31B4CB350418EBC125C9ED554414540B8484BB35041B12A58189ED55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454657 - 177978
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000170000005C8FC2C5C1B450411F85EB31A2DD5441EC51B85EC5B450419A999929A5DD5441E17A145EC7B4504133333373A6DD5441333333C3C9B450418FC2F588A7DD5441B81E85CBCCB450417B14AE17A8DD544148E17AD4CCB4504114AE47D1A7DD5441CDCCCC6CD0B45041A4703D1A8DDD544148E17A04D4B450410AD7A36072DD54419A9999A9BFB45041F6285C1F71DD544114AE47A1BEB450419A9999A971DD5441713D0A67BBB450417B14AE0777DD5441D7A370EDB8B45041666666267CDD5441CDCCCC5CB6B45041EC51B89E83DD544133333323B5B45041000000F089DD5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002200000014AE4761BDB4504114AE47819DDD5441B417BA61BDB4504176D7C1819DDD54414D40FCC8C1B4504132C26334A2DD54415804B95EC5B45041F5899929A5DD54411FBC3440C7B4504162CDF15FA6DD5441E17A145EC7B4504133333373A6DD5441333333C3C9B450418FC2F588A7DD5441C44CD39CCCB450411C78180FA8DD54416DD583CBCCB450417FBEAD17A8DD5441DC5B7AD4CCB45041CB3F46D1A7DD54418033CC6CD0B4504164B93E1A8DDD5441D5847A04D4B4504157D1A36072DD5441AE61A307D0B45041280AB32172DD5441712A29DCC5B450414F2D2E8171DD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454671 - 426297
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002400000052B81E75C4AF504185EB5168D8C5544100000000A9AF50417B14AE17D5C55441EC51B80EBAAF5041AE47E16AECC5544152B81E25BCAF5041000000A0F2C554411F85EB31C0AF504100000090F7C554418FC2F508C4AF504133333363F5C55441B81E852BC7AF5041CDCCCC4CF4C55441295C8F62C8AF5041D7A370BDF1C55441EC51B85ECAAF50419A999919F1C55441B81E857BCCAF5041A4703D3AF1C55441E17A14EECCAF5041D7A3707DF4C55441295C8F52C8AF50417B14AE77FBC5544100000090C2AF5041C3F5283CFCC554418FC2F5E8C3AF50410AD7A370FEC55441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000036000000295C8FA2C5AF5041A4703D3AD9C55441D22A0692C4AF504172D3727CD8C55441FBB33CB8C3AF5041DB06451FDAC55441D077BBF0C1AF5041956AB61FDCC55441B03B3A29C0AF504150CE2720DEC55441E33A21B7BEAF504156D05904E1C55441F6D7C828BEAF5041F8819204E2C554413061F87DBDAF504123D17276E2C55441BA86B6D2BAAF504155AA9BAFE3C554415D5EAD27B9AF504110216C5AE4C55441B9DCC19CB6AF504127BEDAB4E7C554416B9EC2FEB9AF5041C15A0E55ECC55441EC51B80EBAAF5041AE47E16AECC5544152B81E25BCAF5041000000A0F2C55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454743 - 398793
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000006000000713D0A678DB0504133333353C1C55441B81E85FB8DB0504185EB5178C5C554413333339399B0504133333323C0C5544114AE47C1ADB05041F6285C6FBAC55441E17A149EABB0504148E17A94B9C55441713D0A678DB0504133333353C1C55441010300000001000000240000007B14AED768B0504148E17AD4D5C5544152B81E7567B050410AD7A3F0D3C55441F6285C4F66B05041000000D0D3C55441CDCCCC9C66B05041713D0AD7D0C55441E17A14AE61B05041D7A3708DD0C55441C3F528AC63B0504148E17A84D3C5544185EB518861B05041C3F5281CD7C554413D0AD7 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000210000006C34854B72B05041BC38707DCEC55441713D0A1771B05041CDCCCC5CD0C55441CDCCCC2C6EB05041E17A142ED3C5544148E17AC46AB050418FC2F518D6C55441CAAEACD768B05041EBEC7BD4D5C55441873D03A967B05041B32C7437D4C5544152B81E7567B050410AD7A3F0D3C55441F6285C4F66B05041000000D0D3C55441CDCCCC9C66B05041713D0AD7D0C55441E17A14AE61B05041D7A3708DD0C55441C3F528AC63B0504148E17A84D3C5544185EB518861B05041C3F5281CD7C554413D0AD75365B05041D7A3701DDCC554419A99990966B05041B81E858BDFC55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454922 - 177680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000900000052B81E2545B35041CDCCCC1C5CCD54419A9999A934B35041F6285C3F54CD5441E17A14BE32B350418FC2F51857CD5441000000B030B35041AE47E12A58CD5441CDCCCC3C2DB35041713D0A6759CD54410000009029B350413D0AD7535BCD5441AE47E1DA3FB35041713D0AF765CD54417B14AE8741B350410000008062CD544152B81E2545B35041CDCCCC1C5CCD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000903E019029B3504140A2D7535BCD5441E81F9B7F2EB350411535CEAE5DCD544171FCE1DA3FB3504181C708F765CD54417B14AE8741B350410000008062CD544165631E2545B35041DC62CD1C5CCD54418A7099A934B35041E9655C3F54CD5441E17A14BE32B350418FC2F51857CD5441CF0729B630B350415726AC2758CD5441000000B030B35041AE47E12A58CD5441CDCCCC3C2DB35041713D0A6759CD54411620E3F42BB35041ACC8CD125ACD5441903E019029B3504140A2D7535BCD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>454922 - 365061
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000900000052B81E2545B35041CDCCCC1C5CCD54419A9999A934B35041F6285C3F54CD5441E17A14BE32B350418FC2F51857CD5441000000B030B35041AE47E12A58CD5441CDCCCC3C2DB35041713D0A6759CD54410000009029B350413D0AD7535BCD5441AE47E1DA3FB35041713D0AF765CD54417B14AE8741B350410000008062CD544152B81E2545B35041CDCCCC1C5CCD5441
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000903E019029B3504140A2D7535BCD5441E81F9B7F2EB350411535CEAE5DCD544171FCE1DA3FB3504181C708F765CD54417B14AE8741B350410000008062CD544165631E2545B35041DC62CD1C5CCD54418A7099A934B35041E9655C3F54CD5441E17A14BE32B350418FC2F51857CD5441CF0729B630B350415726AC2758CD5441000000B030B35041AE47E12A58CD5441CDCCCC3C2DB35041713D0A6759CD54411620E3F42BB35041ACC8CD125ACD5441903E019029B3504140A2D7535BCD5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455041 - 2914345
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D00000033333343A7B4504133333353B3E4544148E17AA4A0B45041C3F5286CBCE45441EC51B87E8EB450413D0AD753D5E454411F85EBA17BB4504185EB5128EDE4544185EB51487BB45041AE47E11AEFE45441B81E852B88B45041D7A370CDEFE45441295C8FA29BB4504185EB5118F0E45441713D0A17A3B450410AD7A330F0E45441295C8F92B1B4504133333373F0E45441A4703D2AB3B4504166666636E7E45441333333F3B5B450418FC2F5E8D8E45441C3F528ACBBB450413D0AD7F3BDE4544133333343A7B4504133333353B3E45441
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000009AB26045A9B4504166C3EE5EB4E45441AD835C2CB7B45041A504199CBBE454412AF8906EBBB4504122A3C4D3BDE45441B0E9CDABBBB45041B5A1A7F3BDE4544154D52ACCBBB45041AA5B1E34BDE45441392B1B37BCB45041532D90B3BAE454417ECD5E9FBCB45041A34E0743B8E45441A18000C7BCB45041A31A7314B5E45441A70D44D5BCB45041691DC4A0B3E4544113A7EDE5BCB45041DE7094EEB1E45441CA5A94F7BCB450417E7EA122B0E454416199E608BDB45041BB50475FAEE45441F63360EFBCB4504124390786ACE454411D60CF7DBCB450411699C9A2A7E45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455041 - 3315465
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D00000033333343A7B4504133333353B3E4544148E17AA4A0B45041C3F5286CBCE45441EC51B87E8EB450413D0AD753D5E454411F85EBA17BB4504185EB5128EDE4544185EB51487BB45041AE47E11AEFE45441B81E852B88B45041D7A370CDEFE45441295C8FA29BB4504185EB5118F0E45441713D0A17A3B450410AD7A330F0E45441295C8F92B1B4504133333373F0E45441A4703D2AB3B4504166666636E7E45441333333F3B5B450418FC2F5E8D8E45441C3F528ACBBB450413D0AD7F3BDE4544133333343A7B4504133333353B3E45441
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000009AB26045A9B4504166C3EE5EB4E45441AD835C2CB7B45041A504199CBBE454412AF8906EBBB4504122A3C4D3BDE45441B0E9CDABBBB45041B5A1A7F3BDE4544154D52ACCBBB45041AA5B1E34BDE45441392B1B37BCB45041532D90B3BAE454417ECD5E9FBCB45041A34E0743B8E45441A18000C7BCB45041A31A7314B5E45441A70D44D5BCB45041691DC4A0B3E4544113A7EDE5BCB45041DE7094EEB1E45441CA5A94F7BCB450417E7EA122B0E454416199E608BDB45041BB50475FAEE45441F63360EFBCB4504124390786ACE454411D60CF7DBCB450411699C9A2A7E45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455041 - 142906
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D00000033333343A7B4504133333353B3E4544148E17AA4A0B45041C3F5286CBCE45441EC51B87E8EB450413D0AD753D5E454411F85EBA17BB4504185EB5128EDE4544185EB51487BB45041AE47E11AEFE45441B81E852B88B45041D7A370CDEFE45441295C8FA29BB4504185EB5118F0E45441713D0A17A3B450410AD7A330F0E45441295C8F92B1B4504133333373F0E45441A4703D2AB3B4504166666636E7E45441333333F3B5B450418FC2F5E8D8E45441C3F528ACBBB450413D0AD7F3BDE4544133333343A7B4504133333353B3E45441
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000009AB26045A9B4504166C3EE5EB4E45441AD835C2CB7B45041A504199CBBE454412AF8906EBBB4504122A3C4D3BDE45441B0E9CDABBBB45041B5A1A7F3BDE4544154D52ACCBBB45041AA5B1E34BDE45441392B1B37BCB45041532D90B3BAE454417ECD5E9FBCB45041A34E0743B8E45441A18000C7BCB45041A31A7314B5E45441A70D44D5BCB45041691DC4A0B3E4544113A7EDE5BCB45041DE7094EEB1E45441CA5A94F7BCB450417E7EA122B0E454416199E608BDB45041BB50475FAEE45441F63360EFBCB4504124390786ACE454411D60CF7DBCB450411699C9A2A7E45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455041 - 289552
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D00000033333343A7B4504133333353B3E4544148E17AA4A0B45041C3F5286CBCE45441EC51B87E8EB450413D0AD753D5E454411F85EBA17BB4504185EB5128EDE4544185EB51487BB45041AE47E11AEFE45441B81E852B88B45041D7A370CDEFE45441295C8FA29BB4504185EB5118F0E45441713D0A17A3B450410AD7A330F0E45441295C8F92B1B4504133333373F0E45441A4703D2AB3B4504166666636E7E45441333333F3B5B450418FC2F5E8D8E45441C3F528ACBBB450413D0AD7F3BDE4544133333343A7B4504133333353B3E45441
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000009AB26045A9B4504166C3EE5EB4E45441AD835C2CB7B45041A504199CBBE454412AF8906EBBB4504122A3C4D3BDE45441B0E9CDABBBB45041B5A1A7F3BDE4544154D52ACCBBB45041AA5B1E34BDE45441392B1B37BCB45041532D90B3BAE454417ECD5E9FBCB45041A34E0743B8E45441A18000C7BCB45041A31A7314B5E45441A70D44D5BCB45041691DC4A0B3E4544113A7EDE5BCB45041DE7094EEB1E45441CA5A94F7BCB450417E7EA122B0E454416199E608BDB45041BB50475FAEE45441F63360EFBCB4504124390786ACE454411D60CF7DBCB450411699C9A2A7E45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455159 - 18977
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000300000006666661652B05041CDCCCC3C86DA5441E17A144E56B05041A4703D1A8BDA54415C8FC2855AB05041EC51B8BE90DA54418FC2F5B85BB050418FC2F5588DDA5441EC51B89E5DB05041D7A3708D89DA544152B81E055FB050413D0AD7F387DA544148E17A8461B0504114AE47C186DA5441A4703D6A63B050417B14AEA786DA544152B81E8567B05041C3F528DC87DA5441EC51B88E6CB05041F6285C1F76DA544114AE47216FB050417B14AE276CDA54413D0AD79370B050419A99993967DA544185EB51F871B05041B81E854B65DA5441AE47E18A74B0504152B81E5564DA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000004386075C36B0504174B654764EDA544110B58F1536B0504174B425674EDA5441BF3E456A34B050419B6D17D94EDA544197D9DBB533B05041F193408E51DA5441E14758D233B05041B331F9C753DA54419BDD427D34B0504197843CAC55DA54410F0918D335B050419830B4EE55DA54415BCF837436B050419830B4EE55DA54413001D79136B0504187AEB2F055DA54414386075C36B0504174B654764EDA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455159 - 64730
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000300000006666661652B05041CDCCCC3C86DA5441E17A144E56B05041A4703D1A8BDA54415C8FC2855AB05041EC51B8BE90DA54418FC2F5B85BB050418FC2F5588DDA5441EC51B89E5DB05041D7A3708D89DA544152B81E055FB050413D0AD7F387DA544148E17A8461B0504114AE47C186DA5441A4703D6A63B050417B14AEA786DA544152B81E8567B05041C3F528DC87DA5441EC51B88E6CB05041F6285C1F76DA544114AE47216FB050417B14AE276CDA54413D0AD79370B050419A99993967DA544185EB51F871B05041B81E854B65DA5441AE47E18A74B0504152B81E5564DA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000004386075C36B0504174B654764EDA544110B58F1536B0504174B425674EDA5441BF3E456A34B050419B6D17D94EDA544197D9DBB533B05041F193408E51DA5441E14758D233B05041B331F9C753DA54419BDD427D34B0504197843CAC55DA54410F0918D335B050419830B4EE55DA54415BCF837436B050419830B4EE55DA54413001D79136B0504187AEB2F055DA54414386075C36B0504174B654764EDA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464972 - 2941840
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000110000007B14AE47E1B950417B14AE3762155541A4703DFA08BA50413D0AD7C35C155541713D0AE736BA50413D0AD7735615554152B81E1540BA5041713D0A17341555418FC2F5283FBA5041F6285C0F33155541F6285CEF2EBA5041C3F5284C351555410000005016BA5041E17A14AE381555415C8FC2450FBA504152B81E35391555413D0AD73308BA504148E17AC438155541E17A144EFFB95041713D0AD737155541EC51B8EEF8B95041C3F528BC36155541CDCCCCACF2B95041E17A148E35155541C3F5280CEFB950416666662644155541E17A144EEDB950415C8FC27549155541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000AF04D86F21BA5041A78C05AA391555416904D57515BA5041F9C7944D3B155541ABF10E0A10BA5041E5D72E043C15554123CC823205BA504167C1DD4C3D155541CC85635704BA5041C7F762713D15554123CC823205BA5041078B58283D15554123CC823205BA5041018627203D155541625F78E904BA5041078B58283D1555418099503005BA5041FCCB689738155541FC0F7AC6FFB95041BF2A97E337155541EC51B8EEF8B95041C3F528BC36155541CDCCCCACF2B95041E17A148E35155541C3F5280CEFB950416666662644155541E17A144EEDB950415C8FC27549155541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464972 - 3703666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000110000007B14AE47E1B950417B14AE3762155541A4703DFA08BA50413D0AD7C35C155541713D0AE736BA50413D0AD7735615554152B81E1540BA5041713D0A17341555418FC2F5283FBA5041F6285C0F33155541F6285CEF2EBA5041C3F5284C351555410000005016BA5041E17A14AE381555415C8FC2450FBA504152B81E35391555413D0AD73308BA504148E17AC438155541E17A144EFFB95041713D0AD737155541EC51B8EEF8B95041C3F528BC36155541CDCCCCACF2B95041E17A148E35155541C3F5280CEFB950416666662644155541E17A144EEDB950415C8FC27549155541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000AF04D86F21BA5041A78C05AA391555416904D57515BA5041F9C7944D3B155541ABF10E0A10BA5041E5D72E043C15554123CC823205BA504167C1DD4C3D155541CC85635704BA5041C7F762713D15554123CC823205BA5041078B58283D15554123CC823205BA5041018627203D155541625F78E904BA5041078B58283D1555418099503005BA5041FCCB689738155541FC0F7AC6FFB95041BF2A97E337155541EC51B8EEF8B95041C3F528BC36155541CDCCCCACF2B95041E17A148E35155541C3F5280CEFB950416666662644155541E17A144EEDB950415C8FC27549155541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455692 - 4178754
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000002000000330000009A9999B908B3504133333343C2D25441CDCCCC7C0DB35041EC51B84EC3D254410000007019B3504185EB51D8C8D2544114AE47E119B350419A9999E9C7D254410AD7A36017B350418FC2F5A8C6D25441AE47E11A12B35041EC51B86EC4D25441A4703D3A11B35041713D0A67C3D25441295C8F6212B35041EC51B8EEBFD25441AE47E15A14B35041A4703DCABDD25441EC51B89E15B350417B14AE77BDD25441CDCCCC5C18B3504152B81E95BED2544185EB51C81CB35041E17A14CEC1D25441E17A145E1FB3504133333363BCD25441B81E85AB1FB35041C3F5282CBBD25441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000560000001D5A64D309B35041355EBA41B6D254410AD7A3900BB350417B14AE17B3D254415F95E2550DB35041C959CF83AFD25441A4703DBA0FB35041C3F5287CABD25441F2E42C6113B350418B2C321FA6D254419A99996915B350415C8FC2B5A3D254415ED0F77E1AB3504118BA81EC9CD2544131B8348420B350418C233DE895D254419539DAAE20B35041A51A89B695D25441C15A4B3519B350415A76ECF78FD2544183BFAA7C12B3504124867D1B8AD25441952430390DB350415987233386D254418196AAFA0BB35041D239A67086D2544152B81EBD08B35041F6285CA786D25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>455692 - 4178760
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000002000000330000009A9999B908B3504133333343C2D25441CDCCCC7C0DB35041EC51B84EC3D254410000007019B3504185EB51D8C8D2544114AE47E119B350419A9999E9C7D254410AD7A36017B350418FC2F5A8C6D25441AE47E11A12B35041EC51B86EC4D25441A4703D3A11B35041713D0A67C3D25441295C8F6212B35041EC51B8EEBFD25441AE47E15A14B35041A4703DCABDD25441EC51B89E15B350417B14AE77BDD25441CDCCCC5C18B3504152B81E95BED2544185EB51C81CB35041E17A14CEC1D25441E17A145E1FB3504133333363BCD25441B81E85AB1FB35041C3F5282CBBD25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000086154C8027B350410D738FF7A4D25441DB2D85F72AB35041195745C6A0D25441833C90262CB35041C86EB4559FD25441295C8FE223B350415C8FC28598D2544131B8348420B350418C233DE895D254415ED0F77E1AB3504118BA81EC9CD254419A99996915B350415C8FC2B5A3D25441F2E42C6113B350418B2C321FA6D25441A4703DBA0FB35041C3F5287CABD254415F95E2550DB35041C959CF83AFD254410AD7A3900BB350417B14AE17B3D254411D5A64D309B35041355EBA41B6D25441508D97D611B35041FED47831B7D2544183554E5215B350414439F569B8D25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>456193 - 1053647
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003500000085EB5108471651413333332339825441C3F5287C4816514185EB51083882544114AE47C14E165141CDCCCC3C36825441C3F5284C53165141B81E858B34825441F6285C9F531651413333331330825441F6285CEF56165141EC51B8FE2E825441CDCCCC3C6216514148E17AF42C82544148E17AF4611651418FC2F5A823825441AE47E11A51165141713D0A7724825441C3F528BC51165141333333831B825441AE47E10A5316514185EB51680A825441000000B06C1651411F85EBB10A82544148E17A4470165141C3F528BC0A825441C3F5284C701651413D0AD7C3F5815441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000005307CAD4616514124586E2539825441A4703D4A451651419A9999D9398254419A9999994116514148E17A543B825441B81E85AB40165141333333033D82544185EB51A83E165141E17A145E40825441E17A141E4F16514148E17AB44D8254411F85EB0141165141AE47E19A6E8254411F85EB713C165141EC51B86E78825441333333533B16514185EB51887A825441CDCCCC8C3B165141D7A370BD7A825441A4703DDA3F165141EC51B8AE7E825441295C8FD243165141295C8FE276825441AE47E1AA46165141295C8FC271825441295C8FB24A165141713D0A376A825441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>456193 - 3433153
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003500000085EB5108471651413333332339825441C3F5287C4816514185EB51083882544114AE47C14E165141CDCCCC3C36825441C3F5284C53165141B81E858B34825441F6285C9F531651413333331330825441F6285CEF56165141EC51B8FE2E825441CDCCCC3C6216514148E17AF42C82544148E17AF4611651418FC2F5A823825441AE47E11A51165141713D0A7724825441C3F528BC51165141333333831B825441AE47E10A5316514185EB51680A825441000000B06C1651411F85EBB10A82544148E17A4470165141C3F528BC0A825441C3F5284C701651413D0AD7C3F5815441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000005307CAD4616514124586E2539825441A4703D4A451651419A9999D9398254419A9999994116514148E17A543B825441B81E85AB40165141333333033D82544185EB51A83E165141E17A145E40825441E17A141E4F16514148E17AB44D8254411F85EB0141165141AE47E19A6E8254411F85EB713C165141EC51B86E78825441333333533B16514185EB51887A825441CDCCCC8C3B165141D7A370BD7A825441A4703DDA3F165141EC51B8AE7E825441295C8FD243165141295C8FE276825441AE47E1AA46165141295C8FC271825441295C8FB24A165141713D0A376A825441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>456219 - 142571
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002A0000008FC2F54806195141295C8FE2FD7E5441C3F5281C191951417B14AE27F57E5441666666361C19514185EB5118F67E54415C8FC2B51F195141A4703D3AF17E54419A99996927195141A4703DFAE87E544185EB51682E195141F6285CAFE27E544148E17AE42A1951415C8FC255E27E54411F85EB8128195141295C8F22E17E54415C8FC29525195141E17A14FEDE7E5441F6285C9F24195141F6285C3FDD7E5441AE47E1CA22195141F6285CEFD97E5441713D0A671B1951417B14AE47D87E5441E17A14FE1219514185EB5168D67E54411F85EBF10719514152B81EF5D57E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000023000000666666D6E018514166666686F87E54415D3CE720E518514122177761FB7E54417BECA0E2E5185141DD3264E2FB7E544186A6702EE7185141DB1E37BFFC7E544137FC9121EC185141D6E3800A007F54417ECE53D2ED185141BCFD812A017F54410FDB24DCEE185141EF5469DB017F544138143917F0185141C78919AD027F5441FFB8D87EF018514111F50FF2027F5441721F4B27F1185141715B2A62037F5441587A31B7F11851411BA9EEC1037F54416B5CF01EF21851416B1F4EF8037F54415BB82AF6F118514104466EF4027F54411FDDC4A2F1185141D38B56E5007F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>456279 - 346029
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000009000000A4703DFAB815514185EB51F8997954415C8FC225B21551411F85EB519B795441333333E3B2155141295C8F52A1795441333333D3B6155141A4703D8AB97954410AD7A380B81551419A9999F9C37954413D0AD783BF1551417B14AE37C3795441666666E6BD1551417B14AE87B8795441E17A14FEB9155141713D0A37A0795441A4703DFAB815514185EB51F899795441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000077E1D00B8155141345D1ADAC0795441333333D3B6155141A4703D8AB9795441333333E3B2155141295C8F52A1795441F9B1C225B2155141E19DEC519B795441F19C2C3EAF155141C48716E59B795441D7A3706DAB155141666666A69C79544158E4C8B9AB155141BEF6A9BE9E795441F3E8A340AC155141F630EA71A2795441CF7A1F25B0155141074F138EBA795441357B651AB115514137923CDAC0795441F6A9A3B0B11551410F67C1B5C4795441C3C3AD7AB81551411F8C84D4C3795441077E1D00B8155141345D1ADAC0795441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>456507 - 28568
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000370000007B14AED79D155141A4703D4A0D845441B81E85BB9D155141C3F5286C0F8454411F85EBE1AA1551415C8FC2C50B845441666666B6B9155141AE47E1BA0884544152B81E85BE155141E17A14BE0784544114AE47B1C515514185EB51080684544133333353C4155141F6285C5F0A8454417B14AEC7C1155141666666860E8454413D0AD7D3BE155141000000A012845441A4703D4ABC155141AE47E14A16845441333333C3BA15514114AE4781188454418FC2F5F8B6155141713D0A171E845441C3F528BCB215514114AE476124845441A4703D6AAC15514148E17A942C845441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000FDF5C03B9515514106902BE464845441231193059C155141D614AA5B6084544150B51FB5A1155141D2AFD48E5C8454414A48189FAE15514186C6C0D5538454418D50A9A9B91551411C5D71504C845441ADBE00F1B9155141CB98121E4C845441ABDE0F09C815514137CE347041845441BBF45825CE1551412A5E506E3C845441A3667020DB15514182A40AC231845441313FE2DEE115514109A831342C845441F5CBFB81E7155141B65FE66D2784544196621599E8155141D623818126845441D2E817DBF0155141457C21121F845441E1FCBBF3F5155141D578A2771A845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>456507 - 72134
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000370000007B14AED79D155141A4703D4A0D845441B81E85BB9D155141C3F5286C0F8454411F85EBE1AA1551415C8FC2C50B845441666666B6B9155141AE47E1BA0884544152B81E85BE155141E17A14BE0784544114AE47B1C515514185EB51080684544133333353C4155141F6285C5F0A8454417B14AEC7C1155141666666860E8454413D0AD7D3BE155141000000A012845441A4703D4ABC155141AE47E14A16845441333333C3BA15514114AE4781188454418FC2F5F8B6155141713D0A171E845441C3F528BCB215514114AE476124845441A4703D6AAC15514148E17A942C845441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000FDF5C03B9515514106902BE464845441231193059C155141D614AA5B6084544150B51FB5A1155141D2AFD48E5C8454414A48189FAE15514186C6C0D5538454418D50A9A9B91551411C5D71504C845441ADBE00F1B9155141CB98121E4C845441ABDE0F09C815514137CE347041845441BBF45825CE1551412A5E506E3C845441A3667020DB15514182A40AC231845441313FE2DEE115514109A831342C845441F5CBFB81E7155141B65FE66D2784544196621599E8155141D623818126845441D2E817DBF0155141457C21121F845441E1FCBBF3F5155141D578A2771A845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>457657 - 2961234
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001B0000005C8FC2C57F10514152B81EF5953454416666669680105141333333339634544185EB5128811051411F85EB1194345441666666768010514152B81EE59334544148E17A447D105141713D0A179334544114AE47617910514148E17A0492345441CDCCCCBC7410514152B81EB590345441D7A3700D711051419A9999A98F3454413D0AD7836B1051415C8FC2258E3454418FC2F5F8641051417B14AE278C345441E17A14FE5C105141E17A14FE8934544114AE4751561051413D0AD7238834544114AE47B1511051413D0AD7C3863454411F85EBD14F10514148E17A4486345441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000222C4FDC60105141EE66D88C863454410B04947F60105141F270ECAE843454414291EB1A5F1051413AF331E783345441374A8B425B10514152F233A682345441A1316DB9581051419541AC1E8234544139400C4C55105141363B252C81345441FDFAA7F55310514155C97A08813454415FD8754A531051410E7A029081345441C8E8105F521051410814681082345441E17A146E50105141000000B083345441333333C34F1051416666665684345441D2F556A44E10514176069DD68534544129296F845010514106B5E873863454412A4A642A51105141E43C88FD85345441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>457657 - 3812892
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001B0000005C8FC2C57F10514152B81EF5953454416666669680105141333333339634544185EB5128811051411F85EB1194345441666666768010514152B81EE59334544148E17A447D105141713D0A179334544114AE47617910514148E17A0492345441CDCCCCBC7410514152B81EB590345441D7A3700D711051419A9999A98F3454413D0AD7836B1051415C8FC2258E3454418FC2F5F8641051417B14AE278C345441E17A14FE5C105141E17A14FE8934544114AE4751561051413D0AD7238834544114AE47B1511051413D0AD7C3863454411F85EBD14F10514148E17A4486345441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000222C4FDC60105141EE66D88C863454410B04947F60105141F270ECAE843454414291EB1A5F1051413AF331E783345441374A8B425B10514152F233A682345441A1316DB9581051419541AC1E8234544139400C4C55105141363B252C81345441FDFAA7F55310514155C97A08813454415FD8754A531051410E7A029081345441C8E8105F521051410814681082345441E17A146E50105141000000B083345441333333C34F1051416666665684345441D2F556A44E10514176069DD68534544129296F845010514106B5E873863454412A4A642A51105141E43C88FD85345441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>457689 - 239831
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000003000000010300000001000000180000005C8FC2B57D10514185EB51689E345441000000707E105141F6285C7F9C345441000000607D105141295C8F329C34544185EB51887A1051415C8FC2659B3454413333334375105141A4703DDA993454410AD7A3106F105141EC51B83E98345441D7A3707D6510514148E17A7495345441CDCCCCDC5E105141295C8FC293345441E17A14DE57105141CDCCCCBC91345441295C8FB250105141A4703DAA8F345441CDCCCC1C4B105141B81E851B8E345441AE47E1BA47105141713D0A578D3454418FC2F5D847105141295C8FC28E3454413D0AD78348105141F6285CDF8F345441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001800000052B81E6582105141D7A3707D8F3454413B2295766B1051418B60490E89345441FFF9EA316A10514120A228C189345441E575A97768105141ACCF6CCF893454411CD0335367105141904117F389345441330203D26510514167F1A039893454410989D37A63105141B273E6718834544160A480F26110514182563D7887345441232C4FDC60105141EA66D88C86345441174ED0C360105141FD50990E8634544106ED10685C105141E5B1FCD58434544108F33C2E571051415F07275F833454416E39C82253105141D170093D8234544109546D6B521051411008AA0982345441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>457836 - 975929
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000600000048E17AD4C4DE5041AE47E1DA166554413D0AD743C3DE5041666666C611655441AE47E12A48DE5041295C8F52EC6454418FC2F50849DE5041F6285C1FEE6454413333339349DE504152B81E35F064544148E17AD4C4DE5041AE47E1DA16655441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000050E62ACB49DE504137C6DF50F064544152B81E954BDE504152B81EE5F46454417363B86F5CDE5041276B8C3FFA645441856C17BA77DE50417FBA99EA0265544189FD42E1AFDE5041B76288C014655441D7A370DDC4DE5041AE47E16A1B655441A360DD56C6DE5041745FF9EC1B65544148E17AD4C4DE5041AE47E1DA166554412B451143A3DE5041D1655A540C6554411E2445E48DDE5041E2E3F1A005655441DE3BA9E46FDE5041589EF238FC6454411B5B7AD554DE5041A511E1BCF36454410355B5354DDE5041753CE358F1645441C53FA6E84BDE5041A76074F0F0645441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>458427 - 1102726
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000017000000A4703D9AAFE55041F6285CBF778D5441D7A3706DB0E55041E17A147E798D54418FC2F5A8D6E55041713D0A978B8D5441B81E857BF1E55041C3F5285CA28D5441713D0A37FBE5504148E17A34A48D54419A9999C9FDE550413D0AD773A38D5441A4703D4A04E650411F85EB61968D544148E17AB409E650418FC2F508898D544152B81E950DE65041CDCCCC8C798D5441E17A145E11E650418FC2F5D86B8D5441C3F5284C14E6504148E17A945D8D5441333333D310E6504114AE47215B8D5441000000F0BFE55041000000303D8D54419A999929BEE55041F6285C1F3E8D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000333333D310E6504114AE47215B8D5441000000F0BFE55041000000303D8D54419A999929BEE55041F6285C1F3E8D54418FC2F598B6E5504114AE47115C8D54414AF3514FB6E550415517690E5D8D544148E17A04B6E55041CDCCCC5C5E8D5441A4703D9AAFE55041F6285CBF778D544175519334B0E55041EB8A8866798D544184B3C5FBD5E550416B2DB13E8B8D54417AB04151E0E55041BFFC93C5938D544113CDD5F9F0E55041820DFF0EA28D5441651F1674F6E550414E267D5BA38D544136B6625BF7E550416F15C5A3A38D54417A1195F8FAE5504191040DECA38D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>458427 - 3272977
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000017000000A4703D9AAFE55041F6285CBF778D5441D7A3706DB0E55041E17A147E798D54418FC2F5A8D6E55041713D0A978B8D5441B81E857BF1E55041C3F5285CA28D5441713D0A37FBE5504148E17A34A48D54419A9999C9FDE550413D0AD773A38D5441A4703D4A04E650411F85EB61968D544148E17AB409E650418FC2F508898D544152B81E950DE65041CDCCCC8C798D5441E17A145E11E650418FC2F5D86B8D5441C3F5284C14E6504148E17A945D8D5441333333D310E6504114AE47215B8D5441000000F0BFE55041000000303D8D54419A999929BEE55041F6285C1F3E8D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000333333D310E6504114AE47215B8D5441000000F0BFE55041000000303D8D54419A999929BEE55041F6285C1F3E8D54418FC2F598B6E5504114AE47115C8D54414AF3514FB6E550415517690E5D8D544148E17A04B6E55041CDCCCC5C5E8D5441A4703D9AAFE55041F6285CBF778D544175519334B0E55041EB8A8866798D544184B3C5FBD5E550416B2DB13E8B8D54417AB04151E0E55041BFFC93C5938D544113CDD5F9F0E55041820DFF0EA28D5441651F1674F6E550414E267D5BA38D544136B6625BF7E550416F15C5A3A38D54417A1195F8FAE5504191040DECA38D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>460136 - 4785763
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000009000000713D0AD701E350413D0AD7638D925441F6285C5FD7E25041A4703DBA9B925441EC51B87EDEE25041666666C6B7925441713D0AC714E350418FC2F568A5925441B81E852B14E350417B14AED7A39254419A9999A90AE350416666667691925441295C8FD207E3504185EB51688C925441295C8F6206E35041AE47E1DA8B925441713D0AD701E350413D0AD7638D925441
+</a>
+
+<b>
+010600000001000000010300000001000000110000001B111542EFE25041BFED881AB29254415615537BDEE25041EA1D14CAB7925441DCECA4AADFE250416A354DD9BE92544185EB51B8E0E250419A9999E9C592544185EB5148E1E25041713D0AA7CD9254415C8FC215E1E250415C8FC2A5D1925441B81E85FBE1E25041295C8F52D29254410AD7A3601DE350411F85EB51BE925441713D0AF71DE3504114AE4711BD92544162932ECC14E35041A1F76B6DA5925441FDC8F5C914E35041A8035062A5925441A46450C914E35041742D8862A5925441961D310610E3504149758400A79254414855579CF7E25041D80A1D47AF925441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>460445 - 1103142
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000200000005C8FC2E5C8EC504114AE47A1618E544185EB5108CCEC5041B81E853B638E544114AE4791CDEC504185EB5188638E5441B81E855BCFEC5041F6285C7F638E5441713D0A67D0EC5041B81E851B648E5441295C8F22D1EC5041D7A370ED668E5441E17A14BED0EC5041EC51B89E678E5441333333D3D9EC504185EB51E86D8E5441AE47E19AE1EC5041CDCCCC7C738E544148E17A14E2EC50418FC2F5A8728E5441C3F528ECE2EC50417B14AEC7728E5441EC51B84EE3EC5041AE47E12A728E5441C3F5282CF1EC5041E17A14AE5E8E5441EC51B8DEC3EC5041E17A14BE3C8E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C54AD8F7BFEC5041D4E327735A8E54415ED68408D1EC50410C76411B678E544170157635D3EC504195B530B6688E5441B70D5EC8D4EC5041A6D803396A8E5441956C959DD5EC50419C4B38F66A8E5441E948029DD7EC504106945D606C8E54414F24D056D9EC5041081336926D8E5441B28CA6B3E1EC504106BDB767738E544148E17A14E2EC50418FC2F5A8728E5441B81E859BE3EC5041F6285CBF718E5441A2293B30E9EC50419999DBE6698E54414A74BF7CF0EC504127F49FA45F8E5441C3F5282CF1EC5041E17A14AE5E8E5441383D34B2F1EC50414DC0E9335E8E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>460445 - 3683280
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000200000005C8FC2E5C8EC504114AE47A1618E544185EB5108CCEC5041B81E853B638E544114AE4791CDEC504185EB5188638E5441B81E855BCFEC5041F6285C7F638E5441713D0A67D0EC5041B81E851B648E5441295C8F22D1EC5041D7A370ED668E5441E17A14BED0EC5041EC51B89E678E5441333333D3D9EC504185EB51E86D8E5441AE47E19AE1EC5041CDCCCC7C738E544148E17A14E2EC50418FC2F5A8728E5441C3F528ECE2EC50417B14AEC7728E5441EC51B84EE3EC5041AE47E12A728E5441C3F5282CF1EC5041E17A14AE5E8E5441EC51B8DEC3EC5041E17A14BE3C8E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C54AD8F7BFEC5041D4E327735A8E54415ED68408D1EC50410C76411B678E544170157635D3EC504195B530B6688E5441B70D5EC8D4EC5041A6D803396A8E5441956C959DD5EC50419C4B38F66A8E5441E948029DD7EC504106945D606C8E54414F24D056D9EC5041081336926D8E5441B28CA6B3E1EC504106BDB767738E544148E17A14E2EC50418FC2F5A8728E5441B81E859BE3EC5041F6285CBF718E5441A2293B30E9EC50419999DBE6698E54414A74BF7CF0EC504127F49FA45F8E5441C3F5282CF1EC5041E17A14AE5E8E5441383D34B2F1EC50414DC0E9335E8E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>460629 - 2917228
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000060000005C8FC24544EE504114AE47412291544148E17AD445EE504185EB51D8219154419A9999A958EE5041CDCCCC9C23915441C3F5288C47EE5041B81E85BBF29054410000005036EE5041A4703D3AF99054415C8FC24544EE504114AE474122915441
+</a>
+
+<b>
+0106000000010000000103000000010000000800000091DB910A43EE50416004F5A21E9154417E2EA63C44EE5041FE087E0C229154414859C77D45EE5041B080DAB7219154419A9999A958EE5041CDCCCC9C23915441A62113FB47EE504148BCBAFAF39054410DC495EC36EE5041C3E43AB9FA905441D70F89D43BEE5041B21F96710991544191DB910A43EE50416004F5A21E915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>460629 - 3678246
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000060000005C8FC24544EE504114AE47412291544148E17AD445EE504185EB51D8219154419A9999A958EE5041CDCCCC9C23915441C3F5288C47EE5041B81E85BBF29054410000005036EE5041A4703D3AF99054415C8FC24544EE504114AE474122915441
+</a>
+
+<b>
+0106000000010000000103000000010000000800000091DB910A43EE50416004F5A21E9154417E2EA63C44EE5041FE087E0C229154414859C77D45EE5041B080DAB7219154419A9999A958EE5041CDCCCC9C23915441A62113FB47EE504148BCBAFAF39054410DC495EC36EE5041C3E43AB9FA905441D70F89D43BEE5041B21F96710991544191DB910A43EE50416004F5A21E915441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>461317 - 1811476
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F0000008FC2F578F79C50415C8FC205E67B54419A9999D9FC9C504133333333E57B5441713D0A67019D5041295C8FC2E47B5441B81E85EB089D504100000060E47B544152B81E650F9D5041E17A146EE47B544114AE47B1169D5041B81E85DBE57B54411F85EBE1119D504148E17A84E57B544185EB5168079D5041B81E855BE57B5441EC51B86E039D50418FC2F578E57B5441EC51B88EF99C50417B14AE67E67B5441666666E6EF9C5041C3F528FCE87B5441D7A3706DE89C5041B81E85CBEB7B5441E17A14CEEC9C504133333323EF7B54419A9999D9EE9C5041E17A14CEEE7B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001900000010ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B54410A1E724E069D504143653E74E17B5441D2B451C00D9D50412F92596CE17B5441D3538403199D50416C81373AE27B544152B81E35209D5041713D0AB7E27B544148E17A44239D50418FC2F5A8DB7B5441C3F528EC259D504185EB5198D77B54413D0AD7C32B9D5041B81E855BD17B544185EB51D8309D5041CDCCCC0CCC7B5441A4703D0A309D50410AD7A320CC7B5441EC51B85E209D5041AE47E1FACE7B5441333333431A9D5041713D0A17D07B54418FC2F538089D5041D7A3705DD27B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>461317 - 3505472
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F0000008FC2F578F79C50415C8FC205E67B54419A9999D9FC9C504133333333E57B5441713D0A67019D5041295C8FC2E47B5441B81E85EB089D504100000060E47B544152B81E650F9D5041E17A146EE47B544114AE47B1169D5041B81E85DBE57B54411F85EBE1119D504148E17A84E57B544185EB5168079D5041B81E855BE57B5441EC51B86E039D50418FC2F578E57B5441EC51B88EF99C50417B14AE67E67B5441666666E6EF9C5041C3F528FCE87B5441D7A3706DE89C5041B81E85CBEB7B5441E17A14CEEC9C504133333323EF7B54419A9999D9EE9C5041E17A14CEEE7B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001900000010ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B54410A1E724E069D504143653E74E17B5441D2B451C00D9D50412F92596CE17B5441D3538403199D50416C81373AE27B544152B81E35209D5041713D0AB7E27B544148E17A44239D50418FC2F5A8DB7B5441C3F528EC259D504185EB5198D77B54413D0AD7C32B9D5041B81E855BD17B544185EB51D8309D5041CDCCCC0CCC7B5441A4703D0A309D50410AD7A320CC7B5441EC51B85E209D5041AE47E1FACE7B5441333333431A9D5041713D0A17D07B54418FC2F538089D5041D7A3705DD27B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>461317 - 39794
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001F0000008FC2F578F79C50415C8FC205E67B54419A9999D9FC9C504133333333E57B5441713D0A67019D5041295C8FC2E47B5441B81E85EB089D504100000060E47B544152B81E650F9D5041E17A146EE47B544114AE47B1169D5041B81E85DBE57B54411F85EBE1119D504148E17A84E57B544185EB5168079D5041B81E855BE57B5441EC51B86E039D50418FC2F578E57B5441EC51B88EF99C50417B14AE67E67B5441666666E6EF9C5041C3F528FCE87B5441D7A3706DE89C5041B81E85CBEB7B5441E17A14CEEC9C504133333323EF7B54419A9999D9EE9C5041E17A14CEEE7B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000001DDB3460E49C5041C2798DDDE87B5441DD941617ED9C50411F0292D8E57B54411E67F240ED9C50412E1782C8E57B54413E1C4A86F19C5041F950DAC2E47B544100583A97F49C50415EFBD202E47B544102D115CEF49C5041BF1FE0F9E37B544110ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B5441DACEA3E1FD9C504166C9D77EE27B544174047CECFD9C504110EA127DE27B54413E3B4637059D5041016CC096E17B54410A1E724E069D504143653E74E17B5441FCACB282099D5041AAABD870E17B5441691C90890C9D50414B8B2156E17B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>461317 - 42774
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F0000008FC2F578F79C50415C8FC205E67B54419A9999D9FC9C504133333333E57B5441713D0A67019D5041295C8FC2E47B5441B81E85EB089D504100000060E47B544152B81E650F9D5041E17A146EE47B544114AE47B1169D5041B81E85DBE57B54411F85EBE1119D504148E17A84E57B544185EB5168079D5041B81E855BE57B5441EC51B86E039D50418FC2F578E57B5441EC51B88EF99C50417B14AE67E67B5441666666E6EF9C5041C3F528FCE87B5441D7A3706DE89C5041B81E85CBEB7B5441E17A14CEEC9C504133333323EF7B54419A9999D9EE9C5041E17A14CEEE7B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D7A3706DE89C5041B81E85CBEB7B544146172777E89C5041FAAEEFD2EB7B5441FBC85D94EF9C5041AB23FB18E97B5441965988B0F99C504114B07C64E67B54414B583AEF009D504183F458B5E57B5441EB6AF36E039D5041DD0CF478E57B54410370B96D099D5041934E6C63E57B544181061BC70F9D50415FF93F7CE57B5441645313AA169D5041F6BF02DBE57B54419E1339730F9D50413DB8D670E47B54410F88E7A4079D50412C2CBA70E47B544172A3EDF9FE9C5041722F97FEE47B5441911DB6CFFC9C50415A65B634E57B544191649290F79C504143052602E67B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>461317 - 79078
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001F0000008FC2F578F79C50415C8FC205E67B54419A9999D9FC9C504133333333E57B5441713D0A67019D5041295C8FC2E47B5441B81E85EB089D504100000060E47B544152B81E650F9D5041E17A146EE47B544114AE47B1169D5041B81E85DBE57B54411F85EBE1119D504148E17A84E57B544185EB5168079D5041B81E855BE57B5441EC51B86E039D50418FC2F578E57B5441EC51B88EF99C50417B14AE67E67B5441666666E6EF9C5041C3F528FCE87B5441D7A3706DE89C5041B81E85CBEB7B5441E17A14CEEC9C504133333323EF7B54419A9999D9EE9C5041E17A14CEEE7B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000001DDB3460E49C5041C2798DDDE87B5441DD941617ED9C50411F0292D8E57B54411E67F240ED9C50412E1782C8E57B54413E1C4A86F19C5041F950DAC2E47B544100583A97F49C50415EFBD202E47B544102D115CEF49C5041BF1FE0F9E37B544110ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B5441DACEA3E1FD9C504166C9D77EE27B544174047CECFD9C504110EA127DE27B54413E3B4637059D5041016CC096E17B54410A1E724E069D504143653E74E17B5441FCACB282099D5041AAABD870E17B5441691C90890C9D50414B8B2156E17B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>461317 - 84976
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F0000008FC2F578F79C50415C8FC205E67B54419A9999D9FC9C504133333333E57B5441713D0A67019D5041295C8FC2E47B5441B81E85EB089D504100000060E47B544152B81E650F9D5041E17A146EE47B544114AE47B1169D5041B81E85DBE57B54411F85EBE1119D504148E17A84E57B544185EB5168079D5041B81E855BE57B5441EC51B86E039D50418FC2F578E57B5441EC51B88EF99C50417B14AE67E67B5441666666E6EF9C5041C3F528FCE87B5441D7A3706DE89C5041B81E85CBEB7B5441E17A14CEEC9C504133333323EF7B54419A9999D9EE9C5041E17A14CEEE7B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000D7A3706DE89C5041B81E85CBEB7B544146172777E89C5041FAAEEFD2EB7B5441FBC85D94EF9C5041AB23FB18E97B5441965988B0F99C504114B07C64E67B54414B583AEF009D504183F458B5E57B5441EB6AF36E039D5041DD0CF478E57B54410370B96D099D5041934E6C63E57B544181061BC70F9D50415FF93F7CE57B5441645313AA169D5041F6BF02DBE57B54419E1339730F9D50413DB8D670E47B54410F88E7A4079D50412C2CBA70E47B544172A3EDF9FE9C5041722F97FEE47B5441911DB6CFFC9C50415A65B634E57B544191649290F79C504143052602E67B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>467552 - 2352473
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000006000000713D0AD71AA9504166666646861C5541EC51B81E3AA950418FC2F5B8821C554152B81EE536A95041F6285C2F7A1C55418FC2F518F6A850415C8FC2A5831C5541333333A3F7A850415C8FC2458A1C5541713D0AD71AA9504166666646861C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000004578952814A950413E7EA208871C55416739375D06A950417DB4A599881C5541EC51B8CEFFA8504185EB5158891C5541333333A3F7A850415C8FC2458A1C554114AE4771F9A85041B81E850B921C55418FC2F5D81CA95041AE47E10A8E1C5541666666063DA9504185EB51688A1C5541EC51B81E3AA950418FC2F5B8821C5541CDCCCC4C2CA95041AE47E14A841C554156CF09CF2AA950412E3F1F76841C55413BFE80FF29A950415E23B18D841C5541D6F5F4F321A9504160C19877851C55414578952814A950413E7EA208871C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>467552 - 4808782
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000006000000713D0AD71AA9504166666646861C5541EC51B81E3AA950418FC2F5B8821C554152B81EE536A95041F6285C2F7A1C55418FC2F518F6A850415C8FC2A5831C5541333333A3F7A850415C8FC2458A1C5541713D0AD71AA9504166666646861C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000004578952814A950413E7EA208871C55416739375D06A950417DB4A599881C5541EC51B8CEFFA8504185EB5158891C5541333333A3F7A850415C8FC2458A1C554114AE4771F9A85041B81E850B921C55418FC2F5D81CA95041AE47E10A8E1C5541666666063DA9504185EB51688A1C5541EC51B81E3AA950418FC2F5B8821C5541CDCCCC4C2CA95041AE47E14A841C554156CF09CF2AA950412E3F1F76841C55413BFE80FF29A950415E23B18D841C5541D6F5F4F321A9504160C19877851C55414578952814A950413E7EA208871C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>467552 - 18155
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000006000000713D0AD71AA9504166666646861C5541EC51B81E3AA950418FC2F5B8821C554152B81EE536A95041F6285C2F7A1C55418FC2F518F6A850415C8FC2A5831C5541333333A3F7A850415C8FC2458A1C5541713D0AD71AA9504166666646861C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000EC51B8CEFFA8504185EB5158891C5541EC51B84E06A95041713D0A27891C5541E17A14FE13A9504114AE47B1871C55411F85EB5121A95041713D0AD7851C55413D0AD7F328A95041C3F528AC841C5541CDCCCCDC29A950411F85EB91841C5541E9D27EA42AA9504166792F7B841C5541117E61A42AA95041557AF77A841C55413BFE80FF29A950415E23B18D841C5541D6F5F4F321A9504160C19877851C55414578952814A950413E7EA208871C55416739375D06A950417DB4A599881C5541EC51B8CEFFA8504185EB5158891C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>467552 - 62532
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000006000000713D0AD71AA9504166666646861C5541EC51B81E3AA950418FC2F5B8821C554152B81EE536A95041F6285C2F7A1C55418FC2F518F6A850415C8FC2A5831C5541333333A3F7A850415C8FC2458A1C5541713D0AD71AA9504166666646861C5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000EC51B8CEFFA8504185EB5158891C5541EC51B84E06A95041713D0A27891C5541E17A14FE13A9504114AE47B1871C55411F85EB5121A95041713D0AD7851C55413D0AD7F328A95041C3F528AC841C5541CDCCCCDC29A950411F85EB91841C5541E9D27EA42AA9504166792F7B841C5541117E61A42AA95041557AF77A841C55413BFE80FF29A950415E23B18D841C5541D6F5F4F321A9504160C19877851C55414578952814A950413E7EA208871C55416739375D06A950417DB4A599881C5541EC51B8CEFFA8504185EB5158891C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>468666 - 1716952
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000B000000AE47E11AD9BC5041D7A3701DBB1555418FC2F518D0BC5041EC51B85EBD15554148E17A24D0BC504185EB51F8CD1555413D0AD7D3DBBC5041F6285C0FDE155541666666D6EEBC50415C8FC2C5CF15554166666616EEBC5041D7A3708DCF1555411F85EB51EBBC50417B14AE07CD1555411F85EB71E5BC5041F6285CCFC1155541713D0AA7E0BC50418FC2F578BD1555415C8FC2C5DCBC50415C8FC2D5BB155541AE47E11AD9BC5041D7A3701DBB155541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000AE47E11AD9BC5041D7A3701DBB1555418FC2F518D0BC5041EC51B85EBD15554148E17A24D0BC504185EB51F8CD155541D8B3D33BD2BC5041064CCADBD015554139A83CBED4BC5041AC0D114ED4155541B7BC3890D4BC504131ADFBF6D31555413D0AD7D3DBBC5041F6285C0FDE155541666666D6EEBC50415C8FC2C5CF15554166666616EEBC5041D7A3708DCF1555411F85EB51EBBC50417B14AE07CD1555411F85EB71E5BC5041F6285CCFC1155541713D0AA7E0BC50418FC2F578BD1555415C8FC2C5DCBC50415C8FC2D5BB155541AE47E11AD9BC5041D7A3701DBB155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>468666 - 3394579
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000B000000AE47E11AD9BC5041D7A3701DBB1555418FC2F518D0BC5041EC51B85EBD15554148E17A24D0BC504185EB51F8CD1555413D0AD7D3DBBC5041F6285C0FDE155541666666D6EEBC50415C8FC2C5CF15554166666616EEBC5041D7A3708DCF1555411F85EB51EBBC50417B14AE07CD1555411F85EB71E5BC5041F6285CCFC1155541713D0AA7E0BC50418FC2F578BD1555415C8FC2C5DCBC50415C8FC2D5BB155541AE47E11AD9BC5041D7A3701DBB155541
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000AE47E11AD9BC5041D7A3701DBB1555418FC2F518D0BC5041EC51B85EBD15554148E17A24D0BC504185EB51F8CD155541D8B3D33BD2BC5041064CCADBD015554139A83CBED4BC5041AC0D114ED4155541B7BC3890D4BC504131ADFBF6D31555413D0AD7D3DBBC5041F6285C0FDE155541666666D6EEBC50415C8FC2C5CF15554166666616EEBC5041D7A3708DCF1555411F85EB51EBBC50417B14AE07CD1555411F85EB71E5BC5041F6285CCFC1155541713D0AA7E0BC50418FC2F578BD1555415C8FC2C5DCBC50415C8FC2D5BB155541AE47E11AD9BC5041D7A3701DBB155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>469351 - 5219716
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A000000295C8FD220AB5041666666D6F52D5541B81E85CB20AB50417B14AE87F52D5541A4703D2AD1AA5041666666D6F42D554114AE4711DAAA50415C8FC2E5FB2D55413D0AD7C3E7AA5041C3F528BC072E554152B81E75F6AA50419A9999B90A2E55416666660603AB5041CDCCCCBC0E2E5541E17A14EE09AB504148E17A04112E5541AE47E19A1BAB5041C3F528FC102E5541295C8FD220AB5041666666D6F52D5541
+</a>
+
+<b>
+01060000000100000001030000000100000006000000295C8FD220AB5041666666D6F52D5541B81E85CB20AB50417B14AE87F52D5541437244AFFDAA504143908339F52D5541313017541FAB50414293A393FA2D554139DEBAD41FAB504162741EFFFA2D5541295C8FD220AB5041666666D6F52D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470166 - 3002256
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000120000003D0AD7E3B3A45041295C8FB2B81C5541713D0A5773A450413D0AD723B31C5541713D0AA772A450418FC2F5E8B91C55411F85EB0172A4504185EB5148C01C55417B14AE5771A4504185EB51D8C61C5541B81E855B70A45041AE47E1DAC61C554114AE47F138A450413D0AD7B3C71C5541CDCCCCAC38A450418FC2F518DA1C5541CDCCCC9C38A45041B81E856BDE1C55411F85EB7138A45041E17A14FEE91C55415C8FC2556AA45041C3F5283CE91C5541CDCCCC9CACA45041B81E85EBEE1C55411F85EB91AEA450418FC2F578E31C5541D7A3704DAFA45041295C8F32DF1C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001500000015B848B4ADA45041B2EF6F83E81C55417C45740C9AA4504162130F9BE61C5541330118E284A45041372B2A8DE41C5541765923887EA4504153605AEFE31C5541CC5E837F6BA4504101E346B9E21C554194B5273D6AA450418C61C3A4E21C554164677EC567A45041E39F9FA7E21C5541121052E45DA450415EDA21BCE21C5541B3CD0FA238A45041B2037A09E31C5541D0A0D29F38A4504171C20E01E31C5541D744FE8A38A4504136673401E31C55411F85EB7138A45041E17A14FEE91C55415C8FC2556AA45041C3F5283CE91C5541CD631B3A73A450419C506AFFE91C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470853 - 5173681
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000003300000085EB5108D3305141C3F528ECDE755441295C8FC2D4305141713D0A87DA755441B81E85BBD530514133333363D8755441EC51B88ED4305141D7A3702DD87554417B14AE77D2305141713D0A47D875544185EB5198D1305141AE47E14AD8755441A4703D7ACC305141295C8F12D87554417B14AEF7C83051413D0AD763D8755441A4703DCAC530514185EB51C8D9755441295C8F32C23051411F85EBC1DD755441D7A3701DC030514114AE4781DE75544148E17A14BB305141CDCCCC5CE07554418FC2F5B8B5305141F6285C9FE27554417B14AE07AF305141EC51B89EE5755441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003E000000C9E8EFD9A030514143A2844509765441D06CB9F49D305141DBF8501009765441653CF5CD9D305141F1B4CB0511765441815725F89C3051414DF3D4904076544112A55747A5305141190BE8F5407654411917F514AE305141D1756B4B417654417D466C88B33051412251DC3D41765441306C95B6B83051411BFEB1D6407654414CC2D48ABE3051418CDAA60B407654410C529D39C73051417CDA632C3E765441257CDE05C7305141E53FCCF33D76544189F1DAB8C630514123A171623576544124D72994C630514177427D5735765441EC51B86EC3305141713D0AB735765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470902 - 3186412
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000002000000010300000001000000120000005C8FC2E561225141B81E856B8674544152B81EC55F225141B81E853B857454418FC2F5185D22514185EB51D883745441CDCCCC9C58225141B81E850B8E74544152B81E15512251419A9999299F74544114AE47414E225141D7A370EDA5745441AE47E10A4B22514152B81EE5AF745441AE47E1CA422251415C8FC235C4745441333333A3422251417B14AE77C4745441EC51B83E472251411F85EB61C7745441D7A370FD4A2251415C8FC275BE745441AE47E14A4A22514133333323BD74544148E17AF44D225141B81E853BB47454415C8FC2A552225141B81E854BA7745441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000B5DA337DA1225141C92198C0F1755441D688E122A22251415F2A58E9EF7554416D797F79A3225141195F45A5EB7554419689D3CFAD22514149FCEEACCA755441840B4199B222514114CA4070BB75544107631AD9BA2251417F843125A1755441D7668EADC0225141EBCEDE5B8E7554410493665CB122514160FADA1A857554410FDF8DB2A0225141FA9AC51BBA7554412A7D4C379122514100C9CD74EB755441C8A9DF25902251418E34310AEF755441923FE3A693225141605F9E2FEF755441B11C06C79B2251418010F83EF0755441C804DC6EA0225141AB173568F1755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470902 - 3593208
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000002000000010300000001000000120000005C8FC2E561225141B81E856B8674544152B81EC55F225141B81E853B857454418FC2F5185D22514185EB51D883745441CDCCCC9C58225141B81E850B8E74544152B81E15512251419A9999299F74544114AE47414E225141D7A370EDA5745441AE47E10A4B22514152B81EE5AF745441AE47E1CA422251415C8FC235C4745441333333A3422251417B14AE77C4745441EC51B83E472251411F85EB61C7745441D7A370FD4A2251415C8FC275BE745441AE47E14A4A22514133333323BD74544148E17AF44D225141B81E853BB47454415C8FC2A552225141B81E854BA7745441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000B5DA337DA1225141C92198C0F1755441D688E122A22251415F2A58E9EF7554416D797F79A3225141195F45A5EB7554419689D3CFAD22514149FCEEACCA755441840B4199B222514114CA4070BB75544107631AD9BA2251417F843125A1755441D7668EADC0225141EBCEDE5B8E7554410493665CB122514160FADA1A857554410FDF8DB2A0225141FA9AC51BBA7554412A7D4C379122514100C9CD74EB755441C8A9DF25902251418E34310AEF755441923FE3A693225141605F9E2FEF755441B11C06C79B2251418010F83EF0755441C804DC6EA0225141AB173568F1755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470902 - 384832
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000002000000010300000001000000120000005C8FC2E561225141B81E856B8674544152B81EC55F225141B81E853B857454418FC2F5185D22514185EB51D883745441CDCCCC9C58225141B81E850B8E74544152B81E15512251419A9999299F74544114AE47414E225141D7A370EDA5745441AE47E10A4B22514152B81EE5AF745441AE47E1CA422251415C8FC235C4745441333333A3422251417B14AE77C4745441EC51B83E472251411F85EB61C7745441D7A370FD4A2251415C8FC275BE745441AE47E14A4A22514133333323BD74544148E17AF44D225141B81E853BB47454415C8FC2A552225141B81E854BA7745441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000B5DA337DA1225141C92198C0F1755441D688E122A22251415F2A58E9EF7554416D797F79A3225141195F45A5EB7554419689D3CFAD22514149FCEEACCA755441840B4199B222514114CA4070BB75544107631AD9BA2251417F843125A1755441D7668EADC0225141EBCEDE5B8E7554410493665CB122514160FADA1A857554410FDF8DB2A0225141FA9AC51BBA7554412A7D4C379122514100C9CD74EB755441C8A9DF25902251418E34310AEF755441923FE3A693225141605F9E2FEF755441B11C06C79B2251418010F83EF0755441C804DC6EA0225141AB173568F1755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470903 - 153275
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000F6285C8FA72151410AD7A3C0607554415C8FC295B4215141333333E3657554413D0AD7C3C42151413D0AD7D33C75544114AE47C1BB2151415C8FC245397554411F85EBF1C7215141A4703D5A1A75544114AE47C1C32151418FC2F53819755441F6285CEFC12151417B14AED71D755441F6285C8FA72151410AD7A3C060755441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000001AAD3044C7215141571EE8121C7554415253EBF1C7215141F6EE3D5A1A755441C6F448C1C32151417826F638197554419DAF779AC2215141988354251C755441F6285CEFC12151417B14AED71D755441F6285C8FA72151410AD7A3C060755441A162BE95B4215141DC8D31E36575544169A0C195B42151415C2232E3657554411CE5E83FBD2151417F1033E64F7554413D0AD7C3C42151413D0AD7D33C755441E1ED066ABF215141A14A5DB73A7554415D9046C1BB215141AD8CC245397554411AAD3044C7215141571EE8121C755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>470903 - 344216
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000F6285C8FA72151410AD7A3C0607554415C8FC295B4215141333333E3657554413D0AD7C3C42151413D0AD7D33C75544114AE47C1BB2151415C8FC245397554411F85EBF1C7215141A4703D5A1A75544114AE47C1C32151418FC2F53819755441F6285CEFC12151417B14AED71D755441F6285C8FA72151410AD7A3C060755441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000001AAD3044C7215141571EE8121C7554415253EBF1C7215141F6EE3D5A1A755441C6F448C1C32151417826F638197554419DAF779AC2215141988354251C755441F6285CEFC12151417B14AED71D755441F6285C8FA72151410AD7A3C060755441A162BE95B4215141DC8D31E36575544169A0C195B42151415C2232E3657554411CE5E83FBD2151417F1033E64F7554413D0AD7C3C42151413D0AD7D33C755441E1ED066ABF215141A14A5DB73A7554415D9046C1BB215141AD8CC245397554411AAD3044C7215141571EE8121C755441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>471162 - 2947466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000F0000003D0AD7B327385141D7A3703DA4735441B81E85AB2C385141C3F5289CA2735441B81E853B3138514152B81E05A07354419A9999A93D38514185EB51F8977354410000005045385141333333E36D735441AE47E10A4738514133333353667354418FC2F5C83138514114AE47515A735441F6285C5F2E3851415C8FC2455B73544152B81E452C38514185EB51A85D73544148E17A34293851415C8FC2C561735441713D0A3725385141F6285CBF69735441295C8F2218385141C3F5284CA37354417B14AEE718385141713D0A57A4735441AE47E17A22385141F6285CDFA4735441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000006F5A231018385141F8470118A47354419D680D561D385141AC622096A4735441D75B03AC2238514154D268D9A4735441C475E60528385141456A8322A47354416C13F4C52B385141C6037DE7A2735441F2BB50942F385141BE705CF5A0735441A89DBD2A313851417627A50EA07354411E1D6CDA31385141E612BC899B7354419CB1125D35385141B0BD62B5847354415A5BBDCC3938514127B49B416F735441D2FC91F23C385141289E6D9F60735441BDC0BBC03C3851411A0247836073544197A2B2FD3C385141600CF25C5F7354415B640E982F3851414DDE86FD57735441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>471162 - 3703044
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000F0000003D0AD7B327385141D7A3703DA4735441B81E85AB2C385141C3F5289CA2735441B81E853B3138514152B81E05A07354419A9999A93D38514185EB51F8977354410000005045385141333333E36D735441AE47E10A4738514133333353667354418FC2F5C83138514114AE47515A735441F6285C5F2E3851415C8FC2455B73544152B81E452C38514185EB51A85D73544148E17A34293851415C8FC2C561735441713D0A3725385141F6285CBF69735441295C8F2218385141C3F5284CA37354417B14AEE718385141713D0A57A4735441AE47E17A22385141F6285CDFA4735441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000006F5A231018385141F8470118A47354419D680D561D385141AC622096A4735441D75B03AC2238514154D268D9A4735441C475E60528385141456A8322A47354416C13F4C52B385141C6037DE7A2735441F2BB50942F385141BE705CF5A0735441A89DBD2A313851417627A50EA07354411E1D6CDA31385141E612BC899B7354419CB1125D35385141B0BD62B5847354415A5BBDCC3938514127B49B416F735441D2FC91F23C385141289E6D9F60735441BDC0BBC03C3851411A0247836073544197A2B2FD3C385141600CF25C5F7354415B640E982F3851414DDE86FD57735441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>471250 - 36690
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000027000000C3F5280CC419514133333303566C54413D0AD723CA1951417B14AEC7616C5441E17A147ED01951413D0AD7736C6C5441D7A3704DD31951410AD7A390706C5441AE47E1DAD51951415C8FC255726C544152B81E65D91951415C8FC245736C54419A9999D9DF195141B81E852B736C5441EC51B85EE519514133333303736C54410AD7A390EB1951410AD7A3D0716C5441AE47E1EAF6195141E17A141E6E6C5441666666B6F8195141F6285C4F6F6C5441666666E6FA1951411F85EB216F6C544166666606181A51413D0AD7C36C6C5441666666863B1A51411F85EBE1696C5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000690EB2B6CE1951415EC8C576696C5441D9B743DACA195141BE6C29FA626C5441C061EB01C6195141C4BC55CC596C5441FCE96A4CC0195141DA5A2F4C4F6C54412E95E687BA195141460D5010506C5441000000D0AF1951410AD7A3E0516C54412360BCCBA21951419C0253A2526C5441DDA3391DA2195141FB6B8770576C544138003306A2195141BC942C9A586C5441283A15F3A1195141C8AFD5C65C6C54419DE6DFCFA2195141144557B35C6C544199AF41D0A2195141D2CB54C05C6C5441946EF780A3195141829AEBD4546C54410E9EC742BF195141B1D4BB8B516C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>471250 - 77090
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000027000000C3F5280CC419514133333303566C54413D0AD723CA1951417B14AEC7616C5441E17A147ED01951413D0AD7736C6C5441D7A3704DD31951410AD7A390706C5441AE47E1DAD51951415C8FC255726C544152B81E65D91951415C8FC245736C54419A9999D9DF195141B81E852B736C5441EC51B85EE519514133333303736C54410AD7A390EB1951410AD7A3D0716C5441AE47E1EAF6195141E17A141E6E6C5441666666B6F8195141F6285C4F6F6C5441666666E6FA1951411F85EB216F6C544166666606181A51413D0AD7C36C6C5441666666863B1A51411F85EBE1696C5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000690EB2B6CE1951415EC8C576696C5441D9B743DACA195141BE6C29FA626C5441C061EB01C6195141C4BC55CC596C5441FCE96A4CC0195141DA5A2F4C4F6C54412E95E687BA195141460D5010506C5441000000D0AF1951410AD7A3E0516C54412360BCCBA21951419C0253A2526C5441DDA3391DA2195141FB6B8770576C544138003306A2195141BC942C9A586C5441283A15F3A1195141C8AFD5C65C6C54419DE6DFCFA2195141144557B35C6C544199AF41D0A2195141D2CB54C05C6C5441946EF780A3195141829AEBD4546C54410E9EC742BF195141B1D4BB8B516C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>472208 - 3076926
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000E17A14DE0FFD504185EB51982E595441B81E851B10FD5041000000D02E595441D7A370FD11FD50416666668630595441E17A145E14FD5041B81E85FB3259544114AE47F115FD5041666666B634595441666666E61DFD504185EB51E813595441EC51B80E25FD50418FC2F568F6585441C3F5284C21FD50411F85EB61F1585441CDCCCC9C1DFD5041A4703D4AED585441000000E019FD504152B81EF5EA585441A4703D3A18FD5041713D0A07EC5854410000006010FD5041B81E85FB095954410000006008FD5041295C8F8228595441333333630DFD5041666666562C595441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000DE9C901F20FD50418440ADBE0A5954418CCEC72720FD5041C090D19C0A595441EC51B80E25FD50418FC2F568F6585441C3F5284C21FD50411F85EB61F1585441CDCCCC9C1DFD5041A4703D4AED585441000000E019FD504152B81EF5EA585441A4703D3A18FD5041713D0A07EC5854410000006010FD5041B81E85FB09595441F7A294CE0FFD504181696E260C595441DE9C901F20FD50418440ADBE0A595441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>472208 - 3383062
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000E17A14DE0FFD504185EB51982E595441B81E851B10FD5041000000D02E595441D7A370FD11FD50416666668630595441E17A145E14FD5041B81E85FB3259544114AE47F115FD5041666666B634595441666666E61DFD504185EB51E813595441EC51B80E25FD50418FC2F568F6585441C3F5284C21FD50411F85EB61F1585441CDCCCC9C1DFD5041A4703D4AED585441000000E019FD504152B81EF5EA585441A4703D3A18FD5041713D0A07EC5854410000006010FD5041B81E85FB095954410000006008FD5041295C8F8228595441333333630DFD5041666666562C595441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000DE9C901F20FD50418440ADBE0A5954418CCEC72720FD5041C090D19C0A595441EC51B80E25FD50418FC2F568F6585441C3F5284C21FD50411F85EB61F1585441CDCCCC9C1DFD5041A4703D4AED585441000000E019FD504152B81EF5EA585441A4703D3A18FD5041713D0A07EC5854410000006010FD5041B81E85FB09595441F7A294CE0FFD504181696E260C595441DE9C901F20FD50418440ADBE0A595441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>472352 - 1106268
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D000000E17A143E62FC5041E17A14CE41625441713D0A975DFC5041E17A144E40625441713D0AF75AFC5041D7A3702D39625441F6285C8F4FFC50418FC2F5182D62544185EB512847FC504152B81EA526625441AE47E11A43FC504148E17AC421625441CDCCCCFC26FC5041F6285C5F3B625441F6285CAF22FC5041A4703D9A3E62544148E17AA424FC504114AE47214162544114AE47412AFC5041F6285C5F40625441C3F5282C2EFC50413D0AD7D33D625441F6285C1F33FC50413D0AD753396254419A9999D936FC504166666656346254410000008039FC50415C8FC24532625441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000DA00B31E43FC5041C7B8F3B021625441CDCCCCFC26FC5041F6285C5F3B625441F6285CAF22FC5041A4703D9A3E62544148E17AA424FC504114AE47214162544114AE47412AFC5041F6285C5F40625441C3F5282C2EFC50413D0AD7D33D625441F6285C1F33FC50413D0AD753396254419A9999D936FC504166666656346254410000008039FC50415C8FC24532625441E0B9DA5847FC50417938A8D14C6254416F17D6454BFC50412276BD2D4A625441399D03B054FC5041D922CC735C6254414D2A1E6351FC5041E4FC493B5F625441C3F528FC50FC50417B14AEF75F625441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>472352 - 3319415
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D000000E17A143E62FC5041E17A14CE41625441713D0A975DFC5041E17A144E40625441713D0AF75AFC5041D7A3702D39625441F6285C8F4FFC50418FC2F5182D62544185EB512847FC504152B81EA526625441AE47E11A43FC504148E17AC421625441CDCCCCFC26FC5041F6285C5F3B625441F6285CAF22FC5041A4703D9A3E62544148E17AA424FC504114AE47214162544114AE47412AFC5041F6285C5F40625441C3F5282C2EFC50413D0AD7D33D625441F6285C1F33FC50413D0AD753396254419A9999D936FC504166666656346254410000008039FC50415C8FC24532625441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000DA00B31E43FC5041C7B8F3B021625441CDCCCCFC26FC5041F6285C5F3B625441F6285CAF22FC5041A4703D9A3E62544148E17AA424FC504114AE47214162544114AE47412AFC5041F6285C5F40625441C3F5282C2EFC50413D0AD7D33D625441F6285C1F33FC50413D0AD753396254419A9999D936FC504166666656346254410000008039FC50415C8FC24532625441E0B9DA5847FC50417938A8D14C6254416F17D6454BFC50412276BD2D4A625441399D03B054FC5041D922CC735C6254414D2A1E6351FC5041E4FC493B5F625441C3F528FC50FC50417B14AEF75F625441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>472466 - 2511005
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002B00000085EB51787DE9504133333373FB635441A4703D0A86E950411F85EB81FA635441A4703DFA8AE9504114AE4791F96354417B14AE4792E9504148E17AC4F8635441CDCCCC3C98E950411F85EB81F8635441E17A14BE9DE950410AD7A3A0F863544133333383ACE9504152B81E55FA635441A4703D8ABDE950419A999959FC635441B81E85FBC2E95041A4703D1AFC6354411F85EBA1C0E95041666666D6F7635441EC51B85EC0E95041EC51B8BEF6635441EC51B81EC0E95041E17A14FEF3635441295C8FE2C0E9504185EB51E8F0635441D7A3702DC2E95041D7A3704DED635441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000009A999949D0E95041B81E853BC1635441F6285C3FD1E95041E17A14EEBD635441EC51B8CED1E95041D7A3702DBC635441C3F5288CD3E950410AD7A3F0B8635441E17A149ED4E95041CDCCCC3CB6635441713D0AB7D5E950418FC2F538B363544148E17A74D6E95041E17A14EEB063544148E17A84D4E9504148E17AA4AF6354417B14AEF7D2E9504185EB51E8AE635441713D0AB7CFE95041EC51B8CEAC635441295C8FD2CBE95041295C8F52AB6354418FC2F5F8C8E9504166666666AF6354417B14AEF7C3E950415C8FC2A5B5635441AE47E11AC2E950418FC2F5F8B7635441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>472466 - 3331409
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002B00000085EB51787DE9504133333373FB635441A4703D0A86E950411F85EB81FA635441A4703DFA8AE9504114AE4791F96354417B14AE4792E9504148E17AC4F8635441CDCCCC3C98E950411F85EB81F8635441E17A14BE9DE950410AD7A3A0F863544133333383ACE9504152B81E55FA635441A4703D8ABDE950419A999959FC635441B81E85FBC2E95041A4703D1AFC6354411F85EBA1C0E95041666666D6F7635441EC51B85EC0E95041EC51B8BEF6635441EC51B81EC0E95041E17A14FEF3635441295C8FE2C0E9504185EB51E8F0635441D7A3702DC2E95041D7A3704DED635441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000009A999949D0E95041B81E853BC1635441F6285C3FD1E95041E17A14EEBD635441EC51B8CED1E95041D7A3702DBC635441C3F5288CD3E950410AD7A3F0B8635441E17A149ED4E95041CDCCCC3CB6635441713D0AB7D5E950418FC2F538B363544148E17A74D6E95041E17A14EEB063544148E17A84D4E9504148E17AA4AF6354417B14AEF7D2E9504185EB51E8AE635441713D0AB7CFE95041EC51B8CEAC635441295C8FD2CBE95041295C8F52AB6354418FC2F5F8C8E9504166666666AF6354417B14AEF7C3E950415C8FC2A5B5635441AE47E11AC2E950418FC2F5F8B7635441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>473007 - 3513480
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002E000000C3F5280C23FB5041E17A148E235654418FC2F5982BFB50410AD7A3202756544148E17A1432FB5041C3F5283C2A565441AE47E1AA31FB5041333333A32A565441F6285CAF63FB5041E17A147E41565441E17A140E69FB5041666666A61B5654419A9999896DFB50411F85EBA1F65554413D0AD78372FB50418FC2F5B8D75554410AD7A3F015FB5041F6285C7FCC555441333333F3EDFA504148E17A94C7555441F6285CCFEAFA5041E17A146EC75554413D0AD713E8FA5041C3F5289CC75554410AD7A390E3FA5041EC51B80EC85554418FC2F558DAFA50413D0AD743C9555441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000E5F18B3C1DFB5041000BDA66CD5554412C327D8DEEFA50410FE173A7C7555441EE7295E1EDFA5041A8CB7F8EC7555441AD7D6C25D8FA5041A8F4DB1D2256544106B939A4E3FA5041392235BF21565441729BD595E8FA5041E932809621565441D764096DF5FA5041459BC52C2156544136F6C829FAFA504119ECC30521565441AC15D2F801FB50411142F9B82056544194DA4C570CFB50414AB9431720565441F12BBE9213FB50417CAB9BF11F565441E5F18B3C1DFB5041000BDA66CD555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>473008 - 3629401
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000D0000000AD7A3F015FB5041F6285C7FCC5554413D0AD78372FB50418FC2F5B8D7555441EC51B85E73FB5041B81E850BB6555441713D0AD775FB5041713D0A97A6555441C3F5280C59FB5041B81E856B98555441F6285C1F25FB5041C3F5287C89555441666666D614FB50413D0AD70384555441CDCCCCBCF9FA504148E17A84B85554418FC2F578F7FA5041A4703DDABB5554419A9999E9EFFA50411F85EB51C45554417B14AE17EEFA5041EC51B8AEC6555441333333F3EDFA504148E17A94C75554410AD7A3F015FB5041F6285C7FCC555441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000002B9D7E551DFB5041A8E8629DCC555441F6285C1F25FB5041C3F5287C89555441666666D614FB50413D0AD7038455544124B1555F05FB50411C2AFBF9A15554412C30EBC3FDFA50419687D4B6B0555441CDCCCCBCF9FA504148E17A84B85554418FC2F578F7FA5041A4703DDABB55544104B4B9A2F4FA50411FCDA607BF555441188A558BEFFA50417BCA48CCC455544144957E71EEFA50414948223AC6555441DED35B17EEFA504144A542C6C6555441A5016DEEEFFA5041505F2F18C7555441BC8C55030DFB5041DC5D5B9DCA5554412B9D7E551DFB5041A8E8629DCC555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>473255 - 1015996
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000000000006018F55041295C8FE217665441EC51B81E1DF5504114AE47A119665441B81E85FB21F55041D7A3703D1B665441D7A3709D22F550413D0AD7035966544148E17A242AF550413D0AD7D35C66544114AE47912DF55041CDCCCC9C5D665441295C8F722CF550410AD7A3601D665441333333E32BF55041D7A3708D1B6654413D0AD7F320F55041295C8F12EE655441B81E854B12F5504114AE4731EB65544148E17AC416F55041A4703D1A166654417B14AE1717F55041295C8F82176654410000006018F55041295C8FE217665441
+</a>
+
+<b>
+010600000001000000010300000001000000260000000710C8E42BF55041C329BAAE33665441E11FA5072CF550417B9DC43E39665441FC53572B2CF550413D15D1F03E66544163EFDC2F2CF55041C9E084A93F66544148E17A642CF55041EC51B80E48665441DB23E6792CF550410892817B4B6654417EC66B882CF55041A0F8F6CD4D665441F1D06BAC2CF550411E9AA18F53665441F6C518CD2CF550410F1F35C95866544169EB56E42CF55041FF5BA6805C665441C52924C92CF550417335C47B5E665441435C49A22DF5504153458B765E66544138483B992DF5504183C87FCA5D6654412D342D902DF55041577847A65D665441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>473255 - 3426901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000000000006018F55041295C8FE217665441EC51B81E1DF5504114AE47A119665441B81E85FB21F55041D7A3703D1B665441D7A3709D22F550413D0AD7035966544148E17A242AF550413D0AD7D35C66544114AE47912DF55041CDCCCC9C5D665441295C8F722CF550410AD7A3601D665441333333E32BF55041D7A3708D1B6654413D0AD7F320F55041295C8F12EE655441B81E854B12F5504114AE4731EB65544148E17AC416F55041A4703D1A166654417B14AE1717F55041295C8F82176654410000006018F55041295C8FE217665441
+</a>
+
+<b>
+010600000001000000010300000001000000260000000710C8E42BF55041C329BAAE33665441E11FA5072CF550417B9DC43E39665441FC53572B2CF550413D15D1F03E66544163EFDC2F2CF55041C9E084A93F66544148E17A642CF55041EC51B80E48665441DB23E6792CF550410892817B4B6654417EC66B882CF55041A0F8F6CD4D665441F1D06BAC2CF550411E9AA18F53665441F6C518CD2CF550410F1F35C95866544169EB56E42CF55041FF5BA6805C665441C52924C92CF550417335C47B5E665441435C49A22DF5504153458B765E66544138483B992DF5504183C87FCA5D6654412D342D902DF55041577847A65D665441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>50195 - 182560
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000D4ECC3E1EAB850410F9911BC050D5541713D0A47EBB85041000000A0090D5541B81E855BECB8504148E17A540A0D5541C3F528EC19B95041AE47E11AFE0C55411F85EB011BB95041A4703D1AFD0C5541FE5D21F21AB95041A9FD140AF80C55410EA4EAF20FB95041705BDB18FB0C5541DCEA814700B95041071F0EBFFF0C5541421CD444F4B85041C131B43B030D5541D4ECC3E1EAB850410F9911BC050D5541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000D41E855BECB8504140E17A540A0D5541F0A2A8D20DB950413353EF59010D5541A2F528EC19B95041AE47E11AFE0C554123597C0F1AB95041D5853DFAFD0C554147646E4C1AB9504148CFEDC1FD0C5541C87BF6FE1AB9504117C94BF2FC0C55414F4DDB001BB95041EA52F3C2FC0C55417F9F38F21AB95041080B8A11F80C55418DA1D611EBB85041754A5108060D55415CC31478EBB85041430310BA090D5541D41E855BECB8504140E17A540A0D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>50195 - 383462
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A000000D4ECC3E1EAB850410F9911BC050D5541713D0A47EBB85041000000A0090D5541B81E855BECB8504148E17A540A0D5541C3F528EC19B95041AE47E11AFE0C55411F85EB011BB95041A4703D1AFD0C5541FE5D21F21AB95041A9FD140AF80C55410EA4EAF20FB95041705BDB18FB0C5541DCEA814700B95041071F0EBFFF0C5541421CD444F4B85041C131B43B030D5541D4ECC3E1EAB850410F9911BC050D5541
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000D41E855BECB8504140E17A540A0D5541F0A2A8D20DB950413353EF59010D5541A2F528EC19B95041AE47E11AFE0C554123597C0F1AB95041D5853DFAFD0C554147646E4C1AB9504148CFEDC1FD0C5541C87BF6FE1AB9504117C94BF2FC0C55414F4DDB001BB95041EA52F3C2FC0C55417F9F38F21AB95041080B8A11F80C55418DA1D611EBB85041754A5108060D55415CC31478EBB85041430310BA090D5541D41E855BECB8504140E17A540A0D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>476649 - 247696
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000035000000E17A14FE55DB5041E17A141E3ACF5441EC51B8CE4CDB50411F85EBE13CCF54410AD7A39043DB5041000000503DCF5441B81E859B37DB504148E17A443DCF5441B81E857B2FDB50418FC2F5183DCF5441F6285CCF2DDB5041E17A140E40CF5441E17A14BE2BDB5041AE47E13A42CF5441333333C326DB50415C8FC23546CF5441CDCCCC5C25DB5041AE47E1EA47CF54418FC2F58823DB5041B81E850B4BCF5441295C8F3222DB504114AE47714CCF54413D0AD72321DB50415C8FC2054DCF5441EC51B8DE19DB5041295C8FF24DCF5441D7A3702D17DB504114AE47514FCF5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000049000000E17A147E4BDB50410AD7A3F053CF54412B07D0BC4CDB504157DAF5784ECF544165253C124CDB5041493427464DCF54415A070B1E4CDB5041817D86FB4BCF5441D59EBDAB4CDB5041F05CDB754ACF5441F745E7974DDB5041C8D9028048CF54410ADE6AC44EDB5041570859E446CF54416AF4CB9C4FDB504118C627A144CF54417C9F7EE541DB5041D3768C064ECF5441D1FE8A7240DB504165068A3F4FCF54411CD7F1D83EDB5041E73F239950CF54413A669D1E3EDB5041267F5A3651CF5441C573B7833DDB5041B9830CB951CF544108C1F0573CDB50418A2AFCB552CF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>476649 - 364591
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000035000000E17A14FE55DB5041E17A141E3ACF5441EC51B8CE4CDB50411F85EBE13CCF54410AD7A39043DB5041000000503DCF5441B81E859B37DB504148E17A443DCF5441B81E857B2FDB50418FC2F5183DCF5441F6285CCF2DDB5041E17A140E40CF5441E17A14BE2BDB5041AE47E13A42CF5441333333C326DB50415C8FC23546CF5441CDCCCC5C25DB5041AE47E1EA47CF54418FC2F58823DB5041B81E850B4BCF5441295C8F3222DB504114AE47714CCF54413D0AD72321DB50415C8FC2054DCF5441EC51B8DE19DB5041295C8FF24DCF5441D7A3702D17DB504114AE47514FCF5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000049000000E17A147E4BDB50410AD7A3F053CF54412B07D0BC4CDB504157DAF5784ECF544165253C124CDB5041493427464DCF54415A070B1E4CDB5041817D86FB4BCF5441D59EBDAB4CDB5041F05CDB754ACF5441F745E7974DDB5041C8D9028048CF54410ADE6AC44EDB5041570859E446CF54416AF4CB9C4FDB504118C627A144CF54417C9F7EE541DB5041D3768C064ECF5441D1FE8A7240DB504165068A3F4FCF54411CD7F1D83EDB5041E73F239950CF54413A669D1E3EDB5041267F5A3651CF5441C573B7833DDB5041B9830CB951CF544108C1F0573CDB50418A2AFCB552CF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975302 - 1070063
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000020000003A0000006A6523ED3CF95041C4F68E80AF2854419509DEC33CF95041A83C9577B5285441EC78F3683DF9504109482BFBB9285441BFAD989A3CF9504110BD0BE2BC285441A62757EE32F950419B6C5C3CC12854414D91A15131F950414C72277EC328544152DFE14033F950417B642244C5285441050C4D7A36F950417B642244C528544111CF6D503BF950419E93FC33C228544118444E373EF950417616E254C3285441B2DD5F5F48F9504103EDD2A6C8285441EC85373246F9504141C98E3AD0285441C2E17C5B46F95041493E6F21D3285441F3FA171949F95041FC6ADA5AD6285441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003D000000C3E783DC5FF950417B6C49C3CC2854414AEC7B6660F95041A570F930CC285441A4F3CAF55BF950412A434D8EC6285441CF9785CC5BF9504179EF415DC2285441FBB0208A5EF95041C1E9761BC0285441B22BCCB263F95041C537B70AC22854410CC2814F65F950411F598CC0C02854410CC2814F65F95041110B4CD1BE28544138F15B3F62F950413861C6B8BC285441AFDD8BC361F9504184345B7FB928544102D8C0815FF95041A115F57FB4285441D3E5C5BB5DF95041CC44CF6FB128544151F995375EF950416B8779DBAE28544109FF607960F9504143BC1E0DAE285441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975302 - 5252531
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000020000003A0000006A6523ED3CF95041C4F68E80AF2854419509DEC33CF95041A83C9577B5285441EC78F3683DF9504109482BFBB9285441BFAD989A3CF9504110BD0BE2BC285441A62757EE32F950419B6C5C3CC12854414D91A15131F950414C72277EC328544152DFE14033F950417B642244C5285441050C4D7A36F950417B642244C528544111CF6D503BF950419E93FC33C228544118444E373EF950417616E254C3285441B2DD5F5F48F9504103EDD2A6C8285441EC85373246F9504141C98E3AD0285441C2E17C5B46F95041493E6F21D3285441F3FA171949F95041FC6ADA5AD6285441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003D000000C3E783DC5FF950417B6C49C3CC2854414AEC7B6660F95041A570F930CC285441A4F3CAF55BF950412A434D8EC6285441CF9785CC5BF9504179EF415DC2285441FBB0208A5EF95041C1E9761BC0285441B22BCCB263F95041C537B70AC22854410CC2814F65F950411F598CC0C02854410CC2814F65F95041110B4CD1BE28544138F15B3F62F950413861C6B8BC285441AFDD8BC361F9504184345B7FB928544102D8C0815FF95041A115F57FB4285441D3E5C5BB5DF95041CC44CF6FB128544151F995375EF950416B8779DBAE28544109FF607960F9504143BC1E0DAE285441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975302 - 405986
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000020000003A0000006A6523ED3CF95041C4F68E80AF2854419509DEC33CF95041A83C9577B5285441EC78F3683DF9504109482BFBB9285441BFAD989A3CF9504110BD0BE2BC285441A62757EE32F950419B6C5C3CC12854414D91A15131F950414C72277EC328544152DFE14033F950417B642244C5285441050C4D7A36F950417B642244C528544111CF6D503BF950419E93FC33C228544118444E373EF950417616E254C3285441B2DD5F5F48F9504103EDD2A6C8285441EC85373246F9504141C98E3AD0285441C2E17C5B46F95041493E6F21D3285441F3FA171949F95041FC6ADA5AD6285441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003D0000004AEC7B6660F95041A570F930CC285441A4F3CAF55BF950412A434D8EC6285441CF9785CC5BF9504179EF415DC2285441FBB0208A5EF95041C1E9761BC0285441B22BCCB263F95041C537B70AC22854410CC2814F65F950411F598CC0C02854410CC2814F65F95041110B4CD1BE28544138F15B3F62F950413861C6B8BC285441AFDD8BC361F9504184345B7FB928544102D8C0815FF95041A115F57FB4285441D3E5C5BB5DF95041CC44CF6FB128544151F995375EF950416B8779DBAE28544109FF607960F9504143BC1E0DAE2854418B6071E462F95041C9F68E80AF285441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975302 - 412623
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000020000003A0000006A6523ED3CF95041C4F68E80AF2854419509DEC33CF95041A83C9577B5285441EC78F3683DF9504109482BFBB9285441BFAD989A3CF9504110BD0BE2BC285441A62757EE32F950419B6C5C3CC12854414D91A15131F950414C72277EC328544152DFE14033F950417B642244C5285441050C4D7A36F950417B642244C528544111CF6D503BF950419E93FC33C228544118444E373EF950417616E254C3285441B2DD5F5F48F9504103EDD2A6C8285441EC85373246F9504141C98E3AD0285441C2E17C5B46F95041493E6F21D3285441F3FA171949F95041FC6ADA5AD6285441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003D0000004AEC7B6660F95041A570F930CC285441A4F3CAF55BF950412A434D8EC6285441CF9785CC5BF9504179EF415DC2285441FBB0208A5EF95041C1E9761BC0285441B22BCCB263F95041C537B70AC22854410CC2814F65F950411F598CC0C02854410CC2814F65F95041110B4CD1BE28544138F15B3F62F950413861C6B8BC285441AFDD8BC361F9504184345B7FB928544102D8C0815FF95041A115F57FB4285441D3E5C5BB5DF95041CC44CF6FB128544151F995375EF950416B8779DBAE28544109FF607960F9504143BC1E0DAE2854418B6071E462F95041C9F68E80AF285441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>479245 - 3091360
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000F000000A4703D2A724851418FC2F578B3525441A4703DAA6F485141295C8FC2B3525441295C8F426F485141C3F528BCB6525441C3F5283C6E4851410AD7A3D0BF525441C3F5287C6D485141B81E85CBCA52544148E17AF46C4851418FC2F5A8DA525441A4703D7A6C4851411F85EBD1E65254411F85EBA16B485141B81E85ABEF525441CDCCCC6C6A485141EC51B84EF8525441AE47E17A69485141713D0A47FC525441F6285CBF6D48514185EB51A8FC525441295C8F728548514114AE47F1FD5254417B14AE078B4851413D0AD723B15254410AD7A3108B485141295C8F02B0525441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000295C8F728548514114AE47F1FD5254413D1AD2998F4851416D88757EFE525441DB12B3C996485141036F64E2FE5254410AD7A3609948514166666606FF525441F6285CAF994851415C8FC275FD52544199986E199A48514148E6404FF7525441A970E9859A4851419C7E17A3F0525441BEC4D2A89A4851414C19E033ED5254410880F58B9A485141602B4984EA525441E184AB459A4851410BAE35C4E7525441AA7ECAEB984851416ACF34FFE15254417EAA29C698485141E57F4DB6DF525441521DC2B898485141DCB74495DC5254419BC9F7BB98485141F1705A21DA525441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>479245 - 3436803
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000F000000A4703D2A724851418FC2F578B3525441A4703DAA6F485141295C8FC2B3525441295C8F426F485141C3F528BCB6525441C3F5283C6E4851410AD7A3D0BF525441C3F5287C6D485141B81E85CBCA52544148E17AF46C4851418FC2F5A8DA525441A4703D7A6C4851411F85EBD1E65254411F85EBA16B485141B81E85ABEF525441CDCCCC6C6A485141EC51B84EF8525441AE47E17A69485141713D0A47FC525441F6285CBF6D48514185EB51A8FC525441295C8F728548514114AE47F1FD5254417B14AE078B4851413D0AD723B15254410AD7A3108B485141295C8F02B0525441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000295C8F728548514114AE47F1FD5254413D1AD2998F4851416D88757EFE525441DB12B3C996485141036F64E2FE5254410AD7A3609948514166666606FF525441F6285CAF994851415C8FC275FD52544199986E199A48514148E6404FF7525441A970E9859A4851419C7E17A3F0525441BEC4D2A89A4851414C19E033ED5254410880F58B9A485141602B4984EA525441E184AB459A4851410BAE35C4E7525441AA7ECAEB984851416ACF34FFE15254417EAA29C698485141E57F4DB6DF525441521DC2B898485141DCB74495DC5254419BC9F7BB98485141F1705A21DA525441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>513266 - 1227654
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001F00000048E17A14D68F514152B81E5593985441AE47E19AD58F51418FC2F5C889985441A4703D0AD48F51410AD7A3B08798544185EB51D8D28F5141EC51B8FE86985441000000A0D28F5141713D0A9785985441CDCCCCACCF8F5141295C8F2284985441AE47E10ACE8F5141CDCCCCCC83985441AE47E17AC88F5141CDCCCC5C8498544185EB5108C08F51416666660686985441295C8F22BC8F5141D7A3704D8898544148E17A24B78F5141B81E856B8C985441333333C3B88F514114AE47119C9854413D0AD773B98F51419A999979A49854419A999999B88F51410AD7A3F0A4985441 [...]
+</a>
+
+<b>
+01060000000100000001030000000400000055000000921396EAA78F51417D7BF6FDE2985441C157A207958F5141FE891292E7985441E17A147E958F51410AD7A380E7985441B81E85EBA08F5141E17A14BEE498544148E17AC4A28F5141C3F5284CE49854413D0AD743AD8F5141333333C3E1985441CDCCCC5CB28F5141EC51B8EEDF985441CDCCCC1CB98F51411F85EB71DC9854417B14AE87B68F5141000000C0DB985441F6285C8FAB8F51415C8FC295DA9854410AD7A310A88F5141F6285CCFD998544185EB5118A78F51419A999949CD98544100000020A68F514148E17A24BE9854413D0AD7A3A58F514114AE4751B8985441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>513266 - 3491503
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001F00000048E17A14D68F514152B81E5593985441AE47E19AD58F51418FC2F5C889985441A4703D0AD48F51410AD7A3B08798544185EB51D8D28F5141EC51B8FE86985441000000A0D28F5141713D0A9785985441CDCCCCACCF8F5141295C8F2284985441AE47E10ACE8F5141CDCCCCCC83985441AE47E17AC88F5141CDCCCC5C8498544185EB5108C08F51416666660686985441295C8F22BC8F5141D7A3704D8898544148E17A24B78F5141B81E856B8C985441333333C3B88F514114AE47119C9854413D0AD773B98F51419A999979A49854419A999999B88F51410AD7A3F0A4985441 [...]
+</a>
+
+<b>
+01060000000100000001030000000400000055000000921396EAA78F51417D7BF6FDE2985441C157A207958F5141FE891292E7985441E17A147E958F51410AD7A380E7985441B81E85EBA08F5141E17A14BEE498544148E17AC4A28F5141C3F5284CE49854413D0AD743AD8F5141333333C3E1985441CDCCCC5CB28F5141EC51B8EEDF985441CDCCCC1CB98F51411F85EB71DC9854417B14AE87B68F5141000000C0DB985441F6285C8FAB8F51415C8FC295DA9854410AD7A310A88F5141F6285CCFD998544185EB5118A78F51419A999949CD98544100000020A68F514148E17A24BE9854413D0AD7A3A58F514114AE4751B8985441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>480002 - 4557116
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000012000000E17A142E671751415C8FC2350DA1544166666606621751410AD7A3D006A15441295C8F125F175141D7A370BD05A15441666666F642175141EC51B8DE0DA154413D0AD7834E175141D7A3702D34A15441295C8F1253175141D7A3706D34A154415C8FC27554175141A4703D5A34A1544152B81E35551751413D0AD76333A15441295C8FC255175141713D0A7732A15441E17A147E56175141666666462FA154417B14AE0757175141F6285C1F26A154418FC2F52857175141A4703DBA23A15441295C8F1258175141D7A370ED1FA1544185EB515859175141713D0AF71BA15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000009A999919731751418FC2F5F84BA15441333333D37E175141000000603FA1544148E17A3482175141D7A3700D49A154413D0AD7F386175141D7A370BD43A154413D0AD7F386175141D7A370BD43A1544130CBC9088917514106902F6441A154415E6ECBED721751414D6532F732A1544181E7B1035B1751410BDFF54E22A1544188173E265717514157C94DEC23A15441E17A147E56175141666666462FA15441295C8FC255175141713D0A7732A1544152B81E35551751413D0AD76333A154415C8FC27554175141A4703D5A34A15441295C8F1253175141D7A3706D34A15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>480678 - 388971
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000019000000D7A3704DB9EC50417B14AE87F2975441AE47E12AA3EC5041295C8F02EF975441A4703DFAA0EC504152B81E35F7975441C3F5285C9CEC5041F6285C5FFF975441EC51B8CE9CEC504133333393FF97544148E17AC49EEC504152B81E7500985441C3F528BC9DEC50418FC2F51804985441AE47E13A9AEC50413333332303985441B81E855B95EC504114AE47010D9854410AD7A36094EC5041713D0A070F98544152B81E35AFEC50410AD7A35014985441EC51B8EEB6EC50419A99993915985441A4703DAAC4EC5041EC51B87E1598544166666666C7EC5041C3F5282C15985441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000260000009A7D79C49EEC5041BCC71D7500985441C3F528BC9DEC50418FC2F51804985441AE47E13A9AEC50413333332303985441B81E855B95EC504114AE47010D9854412676C66094EC50411E1011070F9854413093D165AEEC50413E48C927149854417659A7F5B0EC5041651B7A8514985441426FD83FB4EC504177C6AFE814985441C97DC647B9EC5041A9E66A451598544108657146C1EC5041866CA86D15985441C5AC99DBC4EC504157C8835C1598544162A9E827C7EC50414115AF21159854415C146449C8EC50417F4D35DC14985441EC51B81ECCEC5041295C8F8213985441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>910540 - 3156778
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3C092CC50410AD7A300B3445441D7A3706DA7CC5041CDCCCC1CB8445441666666A6B0CC504148E17A64BA445441713D0A77B2CC5041AE47E13AAF445441B81E85DBB1CC5041EC51B84EAE4454413D0AD76396CC504148E17A84A744544148E17A147ACC504166666686A0445441AE47E10A79CC5041713D0A07A14454410000005074CC5041A4703D7AAB4454410AD7A3C092CC50410AD7A300B3445441
+</a>
+
+<b>
+010600000001000000010300000001000000140000009242975574CC5041965AE36DAB445441C9DDC84275CC50412E1A42B6AB4454418F769BB982CC50414DCB560AAF44544145EC791B92CC5041876DCFD7B2445441616A46F89ECC5041454AA905B6445441E080E3E0ADCC504181D512B5B94454416C4BE8A4B0CC50411991AC6DBA445441D05B7173B2CC5041C8D30051AF44544157F38BEEB1CC504133C49C6BAE44544114F166A7AACC5041050EDA86AC4454413DFF828E9DCC5041A35B034AA944544192C997F790CC50418E1E962DA6445441760903A58ACC5041CC06CD9DA444544171D7F94984CC50413952ED0BA3445441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>910540 - 3555039
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3C092CC50410AD7A300B3445441D7A3706DA7CC5041CDCCCC1CB8445441666666A6B0CC504148E17A64BA445441713D0A77B2CC5041AE47E13AAF445441B81E85DBB1CC5041EC51B84EAE4454413D0AD76396CC504148E17A84A744544148E17A147ACC504166666686A0445441AE47E10A79CC5041713D0A07A14454410000005074CC5041A4703D7AAB4454410AD7A3C092CC50410AD7A300B3445441
+</a>
+
+<b>
+010600000001000000010300000001000000140000009242975574CC5041965AE36DAB445441C9DDC84275CC50412E1A42B6AB4454418F769BB982CC50414DCB560AAF44544145EC791B92CC5041876DCFD7B2445441616A46F89ECC5041454AA905B6445441E080E3E0ADCC504181D512B5B94454416C4BE8A4B0CC50411991AC6DBA445441D05B7173B2CC5041C8D30051AF44544157F38BEEB1CC504133C49C6BAE44544114F166A7AACC5041050EDA86AC4454413DFF828E9DCC5041A35B034AA944544192C997F790CC50418E1E962DA6445441760903A58ACC5041CC06CD9DA444544171D7F94984CC50413952ED0BA3445441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>584730 - 58132
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000021000000C3F5288C85E350415C8FC2E563E25441A4703D8A7DE3504185EB516862E25441666666B678E350415C8FC22560E25441713D0A976EE350411F85EBD157E25441333333F35AE3504185EB51C863E254410AD7A3C05BE35041C3F5288C65E254419A9999A960E350415C8FC2456DE25441EC51B84E68E35041666666467BE25441E17A145E72E35041AE47E16A8CE25441295C8F5278E350417B14AEB796E25441295C8F7279E35041F6285C3F98E25441C3F5283C7AE35041CDCCCC6C99E25441CDCCCC8C7CE35041B81E854B98E25441AE47E1EA7EE35041B81E854B97E25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007D000000295C8F7279E35041F6285C3F98E254415BCB85E779E350417F3A3FEE98E25441C3F5283C7AE35041CDCCCC6C99E25441CDCCCC8C7CE35041B81E854B98E254414AA902557EE3504142A9D28A97E25441AE47E1EA7EE35041B81E854B97E25441CBF247F182E3504118120E9D95E25441E141FCB983E35041E032354995E2544119AB785689E350410C4A18F192E254418902AAC18AE350417E998A5892E25441D11B66918EE35041AE32D17090E254418A007D768FE3504179531FEA8FE254418359FFA490E35041A875D1268FE25441D4E4DB1F91E3504170417FD78EE25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>584730 - 123375
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000C3F5288C85E350415C8FC2E563E25441A4703D8A7DE3504185EB516862E25441666666B678E350415C8FC22560E25441713D0A976EE350411F85EBD157E25441333333F35AE3504185EB51C863E254410AD7A3C05BE35041C3F5288C65E254419A9999A960E350415C8FC2456DE25441EC51B84E68E35041666666467BE25441E17A145E72E35041AE47E16A8CE25441295C8F5278E350417B14AEB796E25441295C8F7279E35041F6285C3F98E25441C3F5283C7AE35041CDCCCC6C99E25441CDCCCC8C7CE35041B81E854B98E25441AE47E1EA7EE35041B81E854B97E25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007D000000295C8F7279E35041F6285C3F98E254415CCB85E779E350417D3A3FEE98E25441C3F5283C7AE35041CDCCCC6C99E25441CDCCCC8C7CE35041B81E854B98E2544148A902557EE3504145A9D28A97E25441AE47E1EA7EE35041B81E854B97E25441C8F247F182E350411C120E9D95E25441E541FCB983E35041DD32354995E2544117AB785689E350410E4A18F192E254418802AAC18AE3504181998A5892E25441D31B66918EE35041AD32D17090E2544187007D768FE3504178531FEA8FE254418759FFA490E35041A975D1268FE25441D8E4DB1F91E3504174417FD78EE25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>584730 - 323272
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000C3F5288C85E350415C8FC2E563E25441A4703D8A7DE3504185EB516862E25441666666B678E350415C8FC22560E25441713D0A976EE350411F85EBD157E25441333333F35AE3504185EB51C863E254410AD7A3C05BE35041C3F5288C65E254419A9999A960E350415C8FC2456DE25441EC51B84E68E35041666666467BE25441E17A145E72E35041AE47E16A8CE25441295C8F5278E350417B14AEB796E25441295C8F7279E35041F6285C3F98E25441C3F5283C7AE35041CDCCCC6C99E25441CDCCCC8C7CE35041B81E854B98E25441AE47E1EA7EE35041B81E854B97E25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007D000000295C8F7279E35041F6285C3F98E254415CCB85E779E350417D3A3FEE98E25441C3F5283C7AE35041CDCCCC6C99E25441CDCCCC8C7CE35041B81E854B98E2544148A902557EE3504145A9D28A97E25441AE47E1EA7EE35041B81E854B97E25441C8F247F182E350411C120E9D95E25441E541FCB983E35041DD32354995E2544117AB785689E350410E4A18F192E254418802AAC18AE3504181998A5892E25441D31B66918EE35041AD32D17090E2544187007D768FE3504178531FEA8FE254418759FFA490E35041A975D1268FE25441D8E4DB1F91E3504174417FD78EE25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>481096 - 2937132
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000007000000E17A14FE2D125141CDCCCCFC137B54410000001030125141E17A14AE337B5441713D0A473712514166666636337B5441000000603E12514114AE47C1327B5441333333533B125141295C8F62157B5441295C8F3234125141713D0AB7147B5441E17A14FE2D125141CDCCCCFC137B5441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000C239075930125141EB34B284387B5441CE9ABB3C301251413086545C367B54418B60DDAC2F1251419BF447C02D7B5441E298725E2E12514120D439C0197B5441E17A14FE2D125141CDCCCCFC137B5441295C8F7226125141EC51B80E137B54411B36748F2812514189524871337B5441713D0A0729125141A4703D9A3A7B5441C239075930125141EB34B284387B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>481096 - 3735146
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000007000000E17A14FE2D125141CDCCCCFC137B54410000001030125141E17A14AE337B5441713D0A473712514166666636337B5441000000603E12514114AE47C1327B5441333333533B125141295C8F62157B5441295C8F3234125141713D0AB7147B5441E17A14FE2D125141CDCCCCFC137B5441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000C239075930125141EB34B284387B5441CE9ABB3C301251413086545C367B54418B60DDAC2F1251419BF447C02D7B5441E298725E2E12514120D439C0197B5441E17A14FE2D125141CDCCCCFC137B5441295C8F7226125141EC51B80E137B54411B36748F2812514189524871337B5441713D0A0729125141A4703D9A3A7B5441C239075930125141EB34B284387B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>481211 - 2925323
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002B000000CDCCCC3C701D51419A99998934765441A4703DBA651D5141B81E85BB34765441AE47E1AA661D5141713D0A1729765441D7A3707D6A1D5141713D0AB7F9755441F6285C8F671D5141AE47E19AEC7554415C8FC215651D5141A4703D8AEB755441295C8FE25F1D514100000010EB755441000000B05A1D514185EB5118EB755441F6285C7F571D5141713D0A67EB755441295C8F42551D5141E17A149EEB7554410AD7A3E04C1D5141C3F5286CED755441CDCCCC7C431D5141AE47E1FAEF75544114AE47E12B1D5141D7A370CDFA7554411F85EB612B1D514148E17AC4FA755441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000EC6B48B04A1D5141686EE8D82F7654418EB2B8434A1D5141D0E7C2BD2F765441ADA6E545491D51416376A63D3976544103D25E0C481D51411276C13649765441B81E85EB471D5141333333E34A76544148E17A54631D51415C8FC26559765441AE47E12A641D51410000006059765441FD592818681D5141554B414959765441E0C4F6E3691D51417708DA3E59765441510AE6A5711D51413A3AEB11597654412ECF98D9781D5141304634E85876544105A6FDF77C1D5141891459D05876544115EFF7FB851D514110F5209C58765441A7E943378E1D51419C34736C58765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>481211 - 3352428
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002B000000CDCCCC3C701D51419A99998934765441A4703DBA651D5141B81E85BB34765441AE47E1AA661D5141713D0A1729765441D7A3707D6A1D5141713D0AB7F9755441F6285C8F671D5141AE47E19AEC7554415C8FC215651D5141A4703D8AEB755441295C8FE25F1D514100000010EB755441000000B05A1D514185EB5118EB755441F6285C7F571D5141713D0A67EB755441295C8F42551D5141E17A149EEB7554410AD7A3E04C1D5141C3F5286CED755441CDCCCC7C431D5141AE47E1FAEF75544114AE47E12B1D5141D7A370CDFA7554411F85EB612B1D514148E17AC4FA755441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000EC6B48B04A1D5141686EE8D82F7654418EB2B8434A1D5141D0E7C2BD2F765441ADA6E545491D51416376A63D3976544103D25E0C481D51411276C13649765441B81E85EB471D5141333333E34A76544148E17A54631D51415C8FC26559765441AE47E12A641D51410000006059765441FD592818681D5141554B414959765441E0C4F6E3691D51417708DA3E59765441510AE6A5711D51413A3AEB11597654412ECF98D9781D5141304634E85876544105A6FDF77C1D5141891459D05876544115EFF7FB851D514110F5209C58765441A7E943378E1D51419C34736C58765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>481364 - 1062608
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001A00000014AE47E19D1B514133333343F88354410AD7A3C09D1B51410AD7A330F7835441B81E857B9C1B5141666666C6F78354411F85EB51961B5141C3F528FCEA835441000000D0801B5141D7A3700DF2835441CDCCCCBC6C1B514133333333F9835441A4703D2A5A1B51415C8FC245008454413D0AD7835B1B51417B14AE27098454411F85EB215C1B5141AE47E13A118454410AD7A3F05C1B514152B81EF516845441E17A140E5D1B5141666666C617845441D7A370CD5E1B5141F6285C2F1784544185EB5138601B514152B81EB516845441D7A3706D651B5141713D0AA713845441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000007F8823B09E1B5141E6FF98B105845441A4993AD79E1B51410D76BFA405845441DA545F1AA01B5141FBAC32AB04845441C32996969F1B51410E73783D018454413C6FFCDC9E1B514141676FB5FD8354416477E2A59D1B514177648D45FA835441E3BFC4DC9C1B51411EB55545F8835441F6DF56719C1B51416017ECB1F78354411F85EB51961B5141C3F528FCEA835441000000D0801B5141D7A3700DF2835441CDCCCCBC6C1B514133333333F9835441A4703D2A5A1B51415C8FC245008454413D0AD7835B1B51417B14AE27098454411F85EB215C1B5141AE47E13A11845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>481364 - 3602455
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001A00000014AE47E19D1B514133333343F88354410AD7A3C09D1B51410AD7A330F7835441B81E857B9C1B5141666666C6F78354411F85EB51961B5141C3F528FCEA835441000000D0801B5141D7A3700DF2835441CDCCCCBC6C1B514133333333F9835441A4703D2A5A1B51415C8FC245008454413D0AD7835B1B51417B14AE27098454411F85EB215C1B5141AE47E13A118454410AD7A3F05C1B514152B81EF516845441E17A140E5D1B5141666666C617845441D7A370CD5E1B5141F6285C2F1784544185EB5138601B514152B81EB516845441D7A3706D651B5141713D0AA713845441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000007F8823B09E1B5141E6FF98B105845441A4993AD79E1B51410D76BFA405845441DA545F1AA01B5141FBAC32AB04845441C32996969F1B51410E73783D018454413C6FFCDC9E1B514141676FB5FD8354416477E2A59D1B514177648D45FA835441E3BFC4DC9C1B51411EB55545F8835441F6DF56719C1B51416017ECB1F78354411F85EB51961B5141C3F528FCEA835441000000D0801B5141D7A3700DF2835441CDCCCCBC6C1B514133333333F9835441A4703D2A5A1B51415C8FC245008454413D0AD7835B1B51417B14AE27098454411F85EB215C1B5141AE47E13A11845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>481832 - 48625
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000120000001F85EBF129175141A4703D4A9687544148E17AD42F175141D7A3700D938754413333336336175141A4703D1A8F8754416666663638175141A4703D4A8E875441EC51B80E36175141000000B0848754411F85EB91341751419A9999397E87544114AE4791311751413D0AD7937F875441A4703D0A30175141AE47E17A81875441B81E851B2E1751411F85EB1182875441333333532C17514114AE47F181875441E17A14DE25175141000000C085875441D7A3701D2617514166666656888754410000008026175141B81E851B8C87544185EB51E8261751419A9999A98E875441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000120000003A106BD825175141083B9B9185875441D90652F02517514192B83EB5858754417DFE9E582C1751417AF2AAF1818754419D98B1292E17514150BB970D8287544145BF7B0A301751412FAD937A8187544102F440983117514179D9B2907F8754410690FA8834175141D8ADA03D7E875441C2F2BF73341751412B332E207D87544117B34447341751418F0145817B875441B580AB1A331751412851165D7B875441CBB823FE3217514112199E797B875441717BAB793217514158D232B17C8754418754726D2F1751416D60CDC17E87544147F93BCC2C1751415FC5147480875441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>481832 - 85571
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000120000001F85EBF129175141A4703D4A9687544148E17AD42F175141D7A3700D938754413333336336175141A4703D1A8F8754416666663638175141A4703D4A8E875441EC51B80E36175141000000B0848754411F85EB91341751419A9999397E87544114AE4791311751413D0AD7937F875441A4703D0A30175141AE47E17A81875441B81E851B2E1751411F85EB1182875441333333532C17514114AE47F181875441E17A14DE25175141000000C085875441D7A3701D2617514166666656888754410000008026175141B81E851B8C87544185EB51E8261751419A9999A98E875441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000120000003A106BD825175141083B9B9185875441D90652F02517514192B83EB5858754417DFE9E582C1751417AF2AAF1818754419D98B1292E17514150BB970D8287544145BF7B0A301751412FAD937A8187544102F440983117514179D9B2907F8754410690FA8834175141D8ADA03D7E875441C2F2BF73341751412B332E207D87544117B34447341751418F0145817B875441B580AB1A331751412851165D7B875441CBB823FE3217514112199E797B875441717BAB793217514158D232B17C8754418754726D2F1751416D60CDC17E87544147F93BCC2C1751415FC5147480875441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>482151 - 352642
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000080000003D0AD793371C514185EB5168FB7254410AD7A320391C514166666656F57254418FC2F598E51B5141713D0AD7FA7254410AD7A3D0E31B51418FC2F5D8007354411F85EB21ED1B514152B81E4500735441E17A14CE071C51410AD7A390FE725441D7A370FD201C5141B81E85CBFC7254413D0AD793371C514185EB5168FB725441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000A7E89C1D391C5141BF729956F572544152A1C795E51B51411313C2E1FA72544130E6D101E51B5141211F6CD4FC7254416149A6D0E31B5141BD9BF5D800735441D9A38521ED1B5141D7082545007354413F706123021C5141C2B15FEDFE7254417CAD15CE071C51418C6CA390FE7254415D5271FD201C514180B483CBFC7254416AB0A3FA301C5141C67615D0FB725441BD4AD693371C514148F75168FB725441A57EA320391C5141396C6656F5725441E8B7541E391C514101578D56F5725441A7E89C1D391C5141BF729956F5725441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>484761 - 214036
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+010600000001000000010300000001000000160000005C8FC2552A195141CDCCCCDC2E0A5541EC51B83E2A19514166666666310A5541CDCCCC7C2A19514185EB5178390A5541B81E85BB30195141333333A3660A554148E17A3431195141C3F5280C6A0A554148E17AE4341951411F85EBE1690A55418FC2F5783619514114AE47B1630A5541295C8FB250195141E17A14AE5F0A554114AE47E170195141295C8FD2500A55411F85EB2172195141EC51B83E500A554114AE4701601951417B14AE870C0A554114AE47115E195141000000700D0A554185EB51985819514114AE47D1100A5541AE47E15A561951418FC2F5D8110A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000CDCCCC7C2A19514185EB5178390A5541BAD0459B3019514180FFF7B9650A5541C39558F0331951410BCB2548660A55418175E2EC3519514154025EE0620A554132D2E2BF4F1951410B4CFE555E0A5541E123E62172195141F0CCBA3E500A5541EECD455C701951415F9820A0490A5541D632005C701951416D951C9F490A554136FE460160195141DB66AE870C0A554114AE47115E195141000000700D0A554185EB51985819514114AE47D1100A554123320B8B58195141777C62D7100A554191B1E25A561951412849F6D8110A5541097E67C64D195141AB3CC385130A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>485212 - 391214
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000800000052B81E4524D3504114AE476189C05441CDCCCC5C24D35041CDCCCC9C89C05441EC51B84E26D350417B14AEC788C054417B14AEF728D35041EC51B83E88C05441F6285CDF28D350413D0AD70388C05441D7A370CD19D35041D7A3700D63C0544185EB513815D350416666667664C0544152B81E4524D3504114AE476189C05441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000708BFC5424D350419821298989C05441CDCCCC5C24D35041CDCCCC9C89C05441EC51B84E26D350417B14AEC788C0544189F32A9F28D350417EB3855088C054418A85ADF728D350419E43B83E88C054410CC15ADF28D350411D1AD80388C054417A5370CD19D3504196BC700D63C0544185EB513815D350416666667664C05441844B184524D3504164EB376189C0544150F31F4524D350417D08476189C05441708BFC5424D350419821298989C05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>485414 - 101095
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000022000000E17A147E0C6A5141C3F528FCE9D6544114AE4781126A5141713D0AB7EBD65441EC51B83E196A5141666666F6EDD6544114AE4751206A5141AE47E14AF0D654413D0AD763266A5141F6285CDFF1D654411F85EB612A6A51419A9999C9F2D654415C8FC2B52E6A51418FC2F5C8F3D65441CDCCCCDC316A5141AE47E14AF4D654415C8FC255326A5141295C8F32F3D654410AD7A3C0326A514185EB51E8F0D6544185EB51D8316A5141E17A14EEEED65441666666362E6A514185EB5138EBD6544185EB51F82C6A51418FC2F578EAD654415C8FC275296A5141713D0A57EAD65441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000680000001778B6680C6A514134B81228B8D65441000000100C6A514148E17AA4B7D65441666666260A6A51411F85EB21BBD654412A4EDC140A6A514163582E93BBD654418EBC62130A6A5141EF7FB49CBBD65441FE1869F4096A51415D36BA64BCD65441908EE1E7096A514123EFA2B5BCD65441EB1A31A3096A514135AF3271BED654410AD7A300086A514100000000C9D65441A4703DDA026A51413D0AD7B3CAD654410F95A9A3026A5141825535F3CAD654417CF33803016A5141B755B9D6CCD654414D8D06AA006A514133A7493ECDD65441EBD9B946006A51419FD894B1CDD65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>485414 - 302625
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000022000000E17A147E0C6A5141C3F528FCE9D6544114AE4781126A5141713D0AB7EBD65441EC51B83E196A5141666666F6EDD6544114AE4751206A5141AE47E14AF0D654413D0AD763266A5141F6285CDFF1D654411F85EB612A6A51419A9999C9F2D654415C8FC2B52E6A51418FC2F5C8F3D65441CDCCCCDC316A5141AE47E14AF4D654415C8FC255326A5141295C8F32F3D654410AD7A3C0326A514185EB51E8F0D6544185EB51D8316A5141E17A14EEEED65441666666362E6A514185EB5138EBD6544185EB51F82C6A51418FC2F578EAD654415C8FC275296A5141713D0A57EAD65441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000680000001778B6680C6A514134B81228B8D65441000000100C6A514148E17AA4B7D65441666666260A6A51411F85EB21BBD654412A4EDC140A6A514163582E93BBD654418EBC62130A6A5141EF7FB49CBBD65441FE1869F4096A51415D36BA64BCD65441908EE1E7096A514123EFA2B5BCD65441EB1A31A3096A514135AF3271BED654410AD7A300086A514100000000C9D65441A4703DDA026A51413D0AD7B3CAD654410F95A9A3026A5141825535F3CAD654417CF33803016A5141B755B9D6CCD654414D8D06AA006A514133A7493ECDD65441EBD9B946006A51419FD894B1CDD65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>485651 - 1294856
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000300000001030000000100000026000000AE47E1BAA16F5141EC51B8DEE6D65441000000E0A06F51417B14AEC7E4D65441A4703DDA9F6F51411F85EB11E1D65441B81E853B9E6F514114AE47A1DAD65441000000C09D6F5141666666E6D7D65441C3F5287C916F5141C3F528FCD8D654415C8FC2458D6F514133333383D9D65441CDCCCCEC856F514152B81E75DAD654419A999989866F51418FC2F5B8DED65441C3F5285C886F51415C8FC235E5D65441EC51B83E8A6F5141295C8F12E9D6544185EB51988B6F51415C8FC215ECD654418FC2F5D88C6F5141A4703DEAEFD65441713D0AA78D6F51417B14AE77F3D65441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000750000009C1A9EABA66F5141F09E8658F8D6544114AE4781A66F5141CDCCCC9CF8D65441D7A3707DA66F5141713D0A57FED65441D7A3702DB56F514114AE47E1FFD65441333333F3CA6F51411F85EBC102D75441295C8FB2D16F5141295C8FA203D7544114AE4741D26F5141D7A3703DFBD6544114AE4781D26F514114AE4711F0D654418FC2F518D26F5141F6285C6FE7D65441E17A149ED16F5141A4703D3AE4D65441F6285CDFD06F51410AD7A340DFD65441AE47E13ACF6F51413D0AD773D7D65441CDCCCC8CCD6F5141CDCCCC9CCED65441E17A143ECC6F5141713D0AB7C7D65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>485651 - 3368781
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000300000001030000000100000026000000AE47E1BAA16F5141EC51B8DEE6D65441000000E0A06F51417B14AEC7E4D65441A4703DDA9F6F51411F85EB11E1D65441B81E853B9E6F514114AE47A1DAD65441000000C09D6F5141666666E6D7D65441C3F5287C916F5141C3F528FCD8D654415C8FC2458D6F514133333383D9D65441CDCCCCEC856F514152B81E75DAD654419A999989866F51418FC2F5B8DED65441C3F5285C886F51415C8FC235E5D65441EC51B83E8A6F5141295C8F12E9D6544185EB51988B6F51415C8FC215ECD654418FC2F5D88C6F5141A4703DEAEFD65441713D0AA78D6F51417B14AE77F3D65441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000750000009C1A9EABA66F5141F09E8658F8D6544114AE4781A66F5141CDCCCC9CF8D65441D7A3707DA66F5141713D0A57FED65441D7A3702DB56F514114AE47E1FFD65441333333F3CA6F51411F85EBC102D75441295C8FB2D16F5141295C8FA203D7544114AE4741D26F5141D7A3703DFBD6544114AE4781D26F514114AE4711F0D654418FC2F518D26F5141F6285C6FE7D65441E17A149ED16F5141A4703D3AE4D65441F6285CDFD06F51410AD7A340DFD65441AE47E13ACF6F51413D0AD773D7D65441CDCCCC8CCD6F5141CDCCCC9CCED65441E17A143ECC6F5141713D0AB7C7D65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>486673 - 180575
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002F000000EC51B80E44B650413D0AD763F8F95441AE47E18A43B6504114AE47B1F7F95441295C8FA241B6504152B81EC5F2F954410AD7A33042B6504114AE4721E9F95441295C8FA242B65041C3F5286CE1F95441C3F5283C43B650415C8FC215DDF95441F6285C2F45B65041B81E859BD5F954419A99998942B650415C8FC2D5D4F95441295C8F023CB65041B81E85ABE1F95441333333E336B6504152B81EB5E9F954416666662632B6504148E17AD4F5F9544148E17AA437B65041EC51B8AEF5F9544152B81E2538B65041713D0AD7F2F95441295C8F123BB65041AE47E12AF1F95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004C000000E17A141E45B65041713D0AC707FA54413CF2086545B650410455539C04FA54413333334346B650411F85EBB1FAF95441F95A615A45B65041AC62B043FAF9544111A2BE9043B65041E31039B9F7F95441AE47E18A43B6504114AE47B1F7F9544178422A1543B65041DA288181F6F95441D7BD38C442B6504170FE54B5F5F95441C47AA00A42B65041B5DEACD1F3F95441295C8FA241B6504152B81EC5F2F954415901DA8C41B6504100D93FB5F1F95441539517FC40B65041E6CAF3A9F0F954419C663BE83DB650417CA674DEECF95441BDF6E17E3CB65041010A58B0EBF95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>486673 - 355868
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002F000000EC51B80E44B650413D0AD763F8F95441AE47E18A43B6504114AE47B1F7F95441295C8FA241B6504152B81EC5F2F954410AD7A33042B6504114AE4721E9F95441295C8FA242B65041C3F5286CE1F95441C3F5283C43B650415C8FC215DDF95441F6285C2F45B65041B81E859BD5F954419A99998942B650415C8FC2D5D4F95441295C8F023CB65041B81E85ABE1F95441333333E336B6504152B81EB5E9F954416666662632B6504148E17AD4F5F9544148E17AA437B65041EC51B8AEF5F9544152B81E2538B65041713D0AD7F2F95441295C8F123BB65041AE47E12AF1F95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004C000000E17A141E45B65041713D0AC707FA54413CF2086545B650410455539C04FA54413333334346B650411F85EBB1FAF95441F95A615A45B65041AC62B043FAF9544111A2BE9043B65041E31039B9F7F95441AE47E18A43B6504114AE47B1F7F9544178422A1543B65041DA288181F6F95441D7BD38C442B6504170FE54B5F5F95441C47AA00A42B65041B5DEACD1F3F95441295C8FA241B6504152B81EC5F2F954415901DA8C41B6504100D93FB5F1F95441539517FC40B65041E6CAF3A9F0F954419C663BE83DB650417CA674DEECF95441BDF6E17E3CB65041010A58B0EBF95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>487770 - 3094096
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000070000009A9999A9F2B85041713D0A7747FA5441A4703D2AEFB850410AD7A33053FA5441E17A144EF0B85041AE47E11A56FA5441C3F5283CFDB850413333338358FA54413333335308B950416666665659FA5441C3F528DC0AB95041A4703DDA4CFA54419A9999A9F2B85041713D0A7747FA5441
+</a>
+
+<b>
+010600000001000000010300000001000000050000001FF6E7E809B950415A07478851FA54413DBF6E50F1B8504169632DFC4BFA544135614EF6EFB85041F698878450FA54419DE4F60209B95041A664C0F455FA54411FF6E7E809B950415A07478851FA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>487770 - 3442352
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000070000009A9999A9F2B85041713D0A7747FA5441A4703D2AEFB850410AD7A33053FA5441E17A144EF0B85041AE47E11A56FA5441C3F5283CFDB850413333338358FA54413333335308B950416666665659FA5441C3F528DC0AB95041A4703DDA4CFA54419A9999A9F2B85041713D0A7747FA5441
+</a>
+
+<b>
+010600000001000000010300000001000000050000001FF6E7E809B950415A07478851FA54413DBF6E50F1B8504169632DFC4BFA544135614EF6EFB85041F698878450FA54419DE4F60209B95041A664C0F455FA54411FF6E7E809B950415A07478851FA5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489092 - 43752
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000007D00000014AE47B10C355141713D0A8768385541AE47E1EA07355141B81E856B6D385541AE47E1CA023551411F85EB3172385541AE47E1EAFF3451418FC2F56874385541A4703DAAFD3451417B14AE77763855413D0AD773FB3451416666668678385541C3F528BCF8345141333333D37B385541EC51B86EF5345141C3F528CC8038554152B81EF5F334514185EB51F882385541295C8FD2F1345141666666168738554114AE47E1EF345141295C8F228C38554185EB5118EE345141F6285CDF90385541CDCCCCDCED34514148E17A0494385541EC51B89EEC3451413D0AD73397385541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000FB8BC5423E355141A05926585E38554185EB51083F3551413D0AD7335E385541919D0B1A4035514188C7DE1D5E385541BB54E457403551414303E8185E3855415C8FC2154235514152B81EF55D3855418B315ECC43355141FA7BF6F75D38554155B423C444355141FB9991F95D385541C717991845355141BE9017D75D385541DA4A2B9341355141548E7F745D38554192190CE0333551418F01DB555E3855413DDD333F2A35514199518D6F5F38554155CBCC8D21355141D1307C0A60385541B8A44C641B3551416C56BD346038554145E52F2F14355141077CFE5E60385541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489197 - 215468
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000050000000000000A0052E5141D7A370DD9F2555417B14AE47052E514185EB51D8A1255541D7A370FD062E5141AE47E1CAA42555410AD7A380092E5141EC51B86EA52555411F85EBA10B2E5141713D0A17A32555417B14AE870E2E5141A4703DCAA2255541F6285CEF0F2E514148E17A94A4255541D7A3707D122E514185EB5148A4255541F6285CBF122E5141C3F528ECA62555415C8FC225102E5141E17A14FEAD255541E17A148E112E5141713D0A87AF255541D7A3707D122E5141A4703D1AB1255541E17A148E132E5141713D0A67B3255541E17A147E142E5141CDCCCC5CB5255541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000065000000000000A0052E5141D7A370DD9F2555417B14AE47052E514185EB51D8A1255541D7A370FD062E5141AE47E1CAA42555416C76A940072E514125D200DCA42555410AD7A380092E5141EC51B86EA525554159FD913A0B2E51410F50B388A32555411F85EBA10B2E5141713D0A17A32555418CA19EFA0C2E514117C459F3A2255541DFDDABD10E2E5141C65A5556A225554161B41A7D0F2E5141FB72EA02A4255541F6285CEF0F2E514148E17A94A4255541D7A3707D122E514185EB5148A4255541F6285CBF122E5141C3F528ECA62555417DB156780F2E5141F654B570AE255541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489312 - 243328
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000030000006D00000066666606182C5141EC51B89E82265541AE47E17A1A2C514152B81E45892655411F85EBC11A2C51415C8FC2058A265541D7A370ED172C514114AE47718D26554152B81EC5102C51410AD7A3609026554148E17A94062C51419A99993993265541A4703D3AFE2B5141B81E853B94265541000000E0F52B5141000000E094265541000000F0EC2B5141EC51B80E952655411F85EBA1EC2B51418FC2F54899265541CDCCCC0CF52B514148E17A7498265541C3F5287CFC2B51417B14AEE797265541D7A3706D0E2C5141EC51B82E9526554114AE47E1122C5141EC51B8AE93265541 [...]
+</a>
+
+<b>
+010600000001000000010300000003000000770000001F85EBA1EC2B51418FC2F54899265541CDCCCC0CF52B514148E17A7498265541C3F5287CFC2B51417B14AEE797265541D7A3706D0E2C5141EC51B82E9526554114AE47E1122C5141EC51B8AE932655411F85EB91182C5141A4703D1A902655411F85EB211A2C514185EB51888D265541666666C61A2C5141295C8FF292265541EC7B50DB122C5141BB1CC2C69426554150994EB20E2C5141E67D09D595265541E17A144E062C5141F6285CFF9726554185EB5168F42B51411F85EB619A26554100000080EC2B51419A9999F99A26554185EB5148EC2B5141295C8FA29D265541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489312 - 339499
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000030000006D00000066666606182C5141EC51B89E82265541AE47E17A1A2C514152B81E45892655411F85EBC11A2C51415C8FC2058A265541D7A370ED172C514114AE47718D26554152B81EC5102C51410AD7A3609026554148E17A94062C51419A99993993265541A4703D3AFE2B5141B81E853B94265541000000E0F52B5141000000E094265541000000F0EC2B5141EC51B80E952655411F85EBA1EC2B51418FC2F54899265541CDCCCC0CF52B514148E17A7498265541C3F5287CFC2B51417B14AEE797265541D7A3706D0E2C5141EC51B82E9526554114AE47E1122C5141EC51B8AE93265541 [...]
+</a>
+
+<b>
+010600000001000000010300000003000000770000001F85EBA1EC2B51418FC2F54899265541CDCCCC0CF52B514148E17A7498265541C3F5287CFC2B51417B14AEE797265541D7A3706D0E2C5141EC51B82E9526554114AE47E1122C5141EC51B8AE932655411F85EB91182C5141A4703D1A902655411F85EB211A2C514185EB51888D265541666666C61A2C5141295C8FF292265541EC7B50DB122C5141BB1CC2C69426554150994EB20E2C5141E67D09D595265541E17A144E062C5141F6285CFF9726554185EB5168F42B51411F85EB619A26554100000080EC2B51419A9999F99A26554185EB5148EC2B5141295C8FA29D265541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489407 - 3128321
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000350000001F85EB317E2A514148E17A742B2655410AD7A3C07E2A5141F6285CBF2B265541713D0A97832A5141AE47E14A2E26554114AE47C1882A51411F85EB01312655419A9999D9892A51411F85EBC12E26554152B81EB58E2A51415C8FC25531265541000000C08C2A5141AE47E15A352655418FC2F5888C2A5141C3F528DC38265541333333938B2A514152B81EA53A2655410AD7A3B0962A514133333333402655410AD7A3209A2A5141B81E851B3B265541F6285C0F9C2A5141000000F03B265541B81E853B9D2A5141A4703D8A3C265541CDCCCC6CA62A51411F85EB4141265541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006B000000AE7FDACA892A5141E0B159FD182655417B14AE57862A514114AE4741172655419A9999E9852A5141EC51B81E18265541E17A14CE752A5141F6285C8F0F265541E2F4B50A752A5141A35C43DB1026554166829964742A51411B36772A12265541ECCB0A39732A514199BE91061526554152269155722A5141D7FF057E172655419703139C712A5141F8D2BEEA192655417220F833712A5141E70603661B2655410577A1FB702A5141D8CC46361C265541BDD2E9D3702A5141B12E19C91C265541E20B2DBC702A51412DB1C8701D265541A77374AA702A5141EF83EA0A1E265541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489407 - 3512736
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000350000001F85EB317E2A514148E17A742B2655410AD7A3C07E2A5141F6285CBF2B265541713D0A97832A5141AE47E14A2E26554114AE47C1882A51411F85EB01312655419A9999D9892A51411F85EBC12E26554152B81EB58E2A51415C8FC25531265541000000C08C2A5141AE47E15A352655418FC2F5888C2A5141C3F528DC38265541333333938B2A514152B81EA53A2655410AD7A3B0962A514133333333402655410AD7A3209A2A5141B81E851B3B265541F6285C0F9C2A5141000000F03B265541B81E853B9D2A5141A4703D8A3C265541CDCCCC6CA62A51411F85EB4141265541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006B000000AE7FDACA892A5141E0B159FD182655417B14AE57862A514114AE4741172655419A9999E9852A5141EC51B81E18265541E17A14CE752A5141F6285C8F0F265541E2F4B50A752A5141A35C43DB1026554166829964742A51411B36772A12265541ECCB0A39732A514199BE91061526554152269155722A5141D7FF057E172655419703139C712A5141F8D2BEEA192655417220F833712A5141E70603661B2655410577A1FB702A5141D8CC46361C265541BDD2E9D3702A5141B12E19C91C265541E20B2DBC702A51412DB1C8701D265541A77374AA702A5141EF83EA0A1E265541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489588 - 12356
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000450000007B14AEC7DF265141EC51B85E6D2055415C8FC2F5E4265141F6285C2F6F20554100000010F026514133333303732055413D0AD7A3F4265141C3F528DC6E2055413D0AD783F7265141C3F5289C6B2055413D0AD7A3F9265141C3F528CC662055413D0AD783FA265141C3F5283C622055413D0AD723FA265141C3F528CC5C2055413D0AD7D3F926514148E17A145A205541A4703D1AF8265141000000D059205541D7A3701DF62651413D0AD7935920554152B81E45F42651413333337359205541AE47E1FAF026514152B81E755920554166666626EF265141000000505B205541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000006C2C7B5BE0265141804B739B4A205541B70CA57BDF265141BFD3996C4A20554168DB36FBDE26514190371D7E4A205541FD00DDE3DE265141F5C046784A20554109A33D1EDF26514133EB299C4B2055419A63B9E4DF26514100EA828B4C205541E9942765E026514184089E174D205541EB802D60E12651411F7F741D4D205541F4BD6378E2265141427990D14C2055415B33936DE3265141A702BACB4C2055417AC884FFE32651417CCB67FF4B205541847EDF3EE3265141044FADAD4B205541216EDA6BE126514179DF61044B205541DF362A7AE0265141655B8EA24A205541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489588 - 55060
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000450000007B14AEC7DF265141EC51B85E6D2055415C8FC2F5E4265141F6285C2F6F20554100000010F026514133333303732055413D0AD7A3F4265141C3F528DC6E2055413D0AD783F7265141C3F5289C6B2055413D0AD7A3F9265141C3F528CC662055413D0AD783FA265141C3F5283C622055413D0AD723FA265141C3F528CC5C2055413D0AD7D3F926514148E17A145A205541A4703D1AF8265141000000D059205541D7A3701DF62651413D0AD7935920554152B81E45F42651413333337359205541AE47E1FAF026514152B81E755920554166666626EF265141000000505B205541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000006C2C7B5BE0265141804B739B4A205541B70CA57BDF265141BFD3996C4A20554168DB36FBDE26514190371D7E4A205541FD00DDE3DE265141F5C046784A20554109A33D1EDF26514133EB299C4B2055419A63B9E4DF26514100EA828B4C205541E9942765E026514184089E174D205541EB802D60E12651411F7F741D4D205541F4BD6378E2265141427990D14C2055415B33936DE3265141A702BACB4C2055417AC884FFE32651417CCB67FF4B205541847EDF3EE3265141044FADAD4B205541216EDA6BE126514179DF61044B205541DF362A7AE0265141655B8EA24A205541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>489733 - 376336
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000090000003D0AD7D34D2A514185EB5188E12A5541AE47E13A4B2A5141295C8FE2DF2A55410AD7A3B04B2A51413D0AD783F22A5541E17A140E4C2A51417B14AE67F82A55418FC2F5E8512A51410AD7A380F82A5541F6285CCF512A5141D7A370DDF52A554100000060512A5141B81E854BED2A55419A9999B9502A5141AE47E1FAE22A55413D0AD7D34D2A514185EB5188E12A5541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000C8D8FC714B2A5141C0D06B9AE82A55410AD7A3B04B2A51413D0AD783F22A55410E3AE4E24B2A51412B79BFAEF52A5541A19D78CE512A51419EC1EDCBF52A55415D291CA5512A5141F509119DF22A5541DF18EEA4512A514149848599F22A554100000060512A5141B81E854BED2A5541EA7B3705512A51414C02DCAAE72A5541C68A1D05512A5141855440A9E72A5541C30812ED502A5141BF27AD2BE62A5541A37420CD502A5141EB45C130E42A5541037A8F444B2A514199529E6AE12A5541C8D8FC714B2A5141C0D06B9AE82A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>490010 - 33104
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000AE47E11A8A34514148E17A94892A55417B14AED78D345141295C8F82772A5541E17A143E8E345141CDCCCC8C752A5541000000B0873451415C8FC225742A55413D0AD703863451417B14AE57732A554185EB51E8803451410AD7A320722A55419A9999297B3451418FC2F598702A554148E17A547434514114AE47316F2A55419A999939723451413D0AD7436F2A5541713D0AE771345141E17A143E712A5541AE47E12A6E345141F6285C6F832A55411F85EBF16E34514114AE47A1842A5541AE47E1DA8834514152B81E558A2A5541AE47E11A8A34514148E17A94892A5541
+</a>
+
+<b>
+01060000000100000001030000000100000027000000000000B0873451415C8FC225742A5541D89E6A778C345141EE4E852B752A5541E17A143E8E345141CDCCCC8C752A5541ECD142C38E34514151CF4EA9752A5541899883469334514133FD97A0762A55415D0067BA9B3451410909C86F782A5541A5BA3512A1345141E8B49094792A5541C3F5289CA7345141AE47E1FA7A2A55410AD7A350A93451410AD7A3D0782A5541F34978ABA4345141FA190867782A55415D337EA99F3451418C6B5E91772A55412EB85FA39934514113723381762A5541CFB5518095345141016C379D752A55415CD4342492345141715CA3B9742A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>490010 - 75242
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000E000000AE47E11A8A34514148E17A94892A55417B14AED78D345141295C8F82772A5541E17A143E8E345141CDCCCC8C752A5541000000B0873451415C8FC225742A55413D0AD703863451417B14AE57732A554185EB51E8803451410AD7A320722A55419A9999297B3451418FC2F598702A554148E17A547434514114AE47316F2A55419A999939723451413D0AD7436F2A5541713D0AE771345141E17A143E712A5541AE47E12A6E345141F6285C6F832A55411F85EBF16E34514114AE47A1842A5541AE47E1DA8834514152B81E558A2A5541AE47E11A8A34514148E17A94892A5541
+</a>
+
+<b>
+01060000000100000001030000000100000027000000000000B0873451415C8FC225742A5541D89E6A778C345141EE4E852B752A5541E17A143E8E345141CDCCCC8C752A5541ECD142C38E34514151CF4EA9752A5541899883469334514133FD97A0762A55415D0067BA9B3451410909C86F782A5541A5BA3512A1345141E8B49094792A5541C3F5289CA7345141AE47E1FA7A2A55410AD7A350A93451410AD7A3D0782A5541F34978ABA4345141FA190867782A55415D337EA99F3451418C6B5E91772A55412EB85FA39934514113723381762A5541CFB5518095345141016C379D752A55415CD4342492345141715CA3B9742A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>490933 - 1486567
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002F0000003D0AD7B38E2E5141713D0AE7F9345541B81E85CBAC2E5141F6285C0FEA345541F6285C1FC22E5141F6285C2FDE345541A4703D4AD62E5141CDCCCCFCD234554185EB51D8DA2E5141CDCCCC3CD934554148E17A04DC2E5141EC51B8DED734554152B81EA5DD2E51419A999959D73455413D0AD713DF2E51418FC2F5D8D834554148E17A84E82E5141D7A3709DD4345541C3F528ECEF2E514185EB5158D1345541B81E85FBED2E5141AE47E1DACE3455411F85EBE1EC2E514148E17A34CD3455411F85EBC1EB2E51411F85EB31CB345541713D0A47EB2E5141D7A370EDC9345541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000078000000713D0A47062F51411F85EB614C345541401836FE072F5141C89307034C345541D1B4C0FA0C2F5141C737CA99463455417B14AE270F2F5141D7A3703D443455417398B53C0C2F51413F6E649442345541C3F5288C032F5141295C8FA23D345541CDCCCCAC012F5141CDCCCC3C3E34554114AE4731002F51417B14AE573F3455411D1B4329F92E51417E656FC042345541AE47E19AF32E514152B81EC544345541545F0E97EC2E5141828DAB2F463455417FC42900EA2E514117CCE9EF4634554120378B6FE72E51418039E32548345541A82E8733E62E5141B876A2F748345541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>490933 - 3337101
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002F0000003D0AD7B38E2E5141713D0AE7F9345541B81E85CBAC2E5141F6285C0FEA345541F6285C1FC22E5141F6285C2FDE345541A4703D4AD62E5141CDCCCCFCD234554185EB51D8DA2E5141CDCCCC3CD934554148E17A04DC2E5141EC51B8DED734554152B81EA5DD2E51419A999959D73455413D0AD713DF2E51418FC2F5D8D834554148E17A84E82E5141D7A3709DD4345541C3F528ECEF2E514185EB5158D1345541B81E85FBED2E5141AE47E1DACE3455411F85EBE1EC2E514148E17A34CD3455411F85EBC1EB2E51411F85EB31CB345541713D0A47EB2E5141D7A370EDC9345541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000078000000713D0A47062F51411F85EB614C345541401836FE072F5141C89307034C345541D1B4C0FA0C2F5141C737CA99463455417B14AE270F2F5141D7A3703D443455417398B53C0C2F51413F6E649442345541C3F5288C032F5141295C8FA23D345541CDCCCCAC012F5141CDCCCC3C3E34554114AE4731002F51417B14AE573F3455411D1B4329F92E51417E656FC042345541AE47E19AF32E514152B81EC544345541545F0E97EC2E5141828DAB2F463455417FC42900EA2E514117CCE9EF4634554120378B6FE72E51418039E32548345541A82E8733E62E5141B876A2F748345541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>491565 - 1367982
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000055000000000000800E3E514114AE477137DF5441000000D00B3E5141F6285CAF35DF544148E17A74113E514148E17AA43CDF5441A4703DEA133E51411F85EB513FDF5441C3F528CC153E514152B81E2542DF544152B81EF5163E5141AE47E19A44DF5441B81E854B0B3E5141CDCCCC3C53DF54411F85EBA1173E51410AD7A3505BDF5441CDCCCC4C263E5141713D0AF763DF5441F6285C4F223E5141F6285CDF6DDF5441F6285C8F213E5141F6285C7F70DF5441F6285C3F213E51410000002073DF5441F6285CAF203E5141000000B076DF5441F6285CAF203E51410AD7A37078DF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004D000000000000D00B3E5141F6285CAF35DF544114AE47B1093E5141E17A14CE33DF544133333343073E5141CDCCCCFC30DF5441EC51B89E053E5141B81E854B2FDF544114AE4731043E5141AE47E1DA2DDF5441AE47E1DA023E5141E17A147E2CDF544152B81E15013E514185EB51B82ADF544133333343003E5141000000202ADF54418FC2F558FF3D5141713D0AA729DF5441C3F5280CFE3D5141295C8F0229DF5441713D0A67F93D5141713D0AE72EDF5441C3F5287CF73D51417B14AE7731DF5441B81E858BF53D51417B14AEA733DF54411F85EBB1F13D5141295C8FF236DF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>491565 - 1367993
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000055000000000000800E3E514114AE477137DF5441000000D00B3E5141F6285CAF35DF544148E17A74113E514148E17AA43CDF5441A4703DEA133E51411F85EB513FDF5441C3F528CC153E514152B81E2542DF544152B81EF5163E5141AE47E19A44DF5441B81E854B0B3E5141CDCCCC3C53DF54411F85EBA1173E51410AD7A3505BDF5441CDCCCC4C263E5141713D0AF763DF5441F6285C4F223E5141F6285CDF6DDF5441F6285C8F213E5141F6285C7F70DF5441F6285C3F213E51410000002073DF5441F6285CAF203E5141000000B076DF5441F6285CAF203E51410AD7A37078DF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000005B000000F6285CDF1E3E51410AD7A3207CDF54410AF9F1901A3E514188C0A24A81DF544129F0F69C153E5141DA2FCEA885DF544121B7E9CE0B3E514109B497708EDF5441EC51B88E0F3E5141713D0A8790DF5441D7A3708D153E5141B81E852B94DF5441B81E854B1B3E514114AE47E197DF54419A999999203E51415C8FC2959BDF54413D0AD7D3273E5141D7A3709DA1DF5441E17A14FE353E51417B14AED7A1DF54418FC2F558333E51411F85EB219BDF54418FC2F5483C3E5141295C8FF296DF5441E17A14DE463E51416666669697DF544114AE47D1543E51419A9999D998DF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>491565 - 3650447
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000055000000000000800E3E514114AE477137DF5441000000D00B3E5141F6285CAF35DF544148E17A74113E514148E17AA43CDF5441A4703DEA133E51411F85EB513FDF5441C3F528CC153E514152B81E2542DF544152B81EF5163E5141AE47E19A44DF5441B81E854B0B3E5141CDCCCC3C53DF54411F85EBA1173E51410AD7A3505BDF5441CDCCCC4C263E5141713D0AF763DF5441F6285C4F223E5141F6285CDF6DDF5441F6285C8F213E5141F6285C7F70DF5441F6285C3F213E51410000002073DF5441F6285CAF203E5141000000B076DF5441F6285CAF203E51410AD7A37078DF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004D000000000000D00B3E5141F6285CAF35DF544114AE47B1093E5141E17A14CE33DF544133333343073E5141CDCCCCFC30DF5441EC51B89E053E5141B81E854B2FDF544114AE4731043E5141AE47E1DA2DDF5441AE47E1DA023E5141E17A147E2CDF544152B81E15013E514185EB51B82ADF544133333343003E5141000000202ADF54418FC2F558FF3D5141713D0AA729DF5441C3F5280CFE3D5141295C8F0229DF5441713D0A67F93D5141713D0AE72EDF5441C3F5287CF73D51417B14AE7731DF5441B81E858BF53D51417B14AEA733DF54411F85EBB1F13D5141295C8FF236DF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>491565 - 3653884
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000055000000000000800E3E514114AE477137DF5441000000D00B3E5141F6285CAF35DF544148E17A74113E514148E17AA43CDF5441A4703DEA133E51411F85EB513FDF5441C3F528CC153E514152B81E2542DF544152B81EF5163E5141AE47E19A44DF5441B81E854B0B3E5141CDCCCC3C53DF54411F85EBA1173E51410AD7A3505BDF5441CDCCCC4C263E5141713D0AF763DF5441F6285C4F223E5141F6285CDF6DDF5441F6285C8F213E5141F6285C7F70DF5441F6285C3F213E51410000002073DF5441F6285CAF203E5141000000B076DF5441F6285CAF203E51410AD7A37078DF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000005B000000F6285CDF1E3E51410AD7A3207CDF54410AF9F1901A3E514188C0A24A81DF544129F0F69C153E5141DA2FCEA885DF544121B7E9CE0B3E514109B497708EDF5441EC51B88E0F3E5141713D0A8790DF5441D7A3708D153E5141B81E852B94DF5441B81E854B1B3E514114AE47E197DF54419A999999203E51415C8FC2959BDF54413D0AD7D3273E5141D7A3709DA1DF5441E17A14FE353E51417B14AED7A1DF54418FC2F558333E51411F85EB219BDF54418FC2F5483C3E5141295C8FF296DF5441E17A14DE463E51416666669697DF544114AE47D1543E51419A9999D998DF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>492829 - 4031513
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002D00000085EB5128B3535141B81E85BBD0DC544152B81E75BC53514133333353D0DC544152B81EA5C153514185EB51A8D0DC5441D7A370EDC6535141AE47E1FAD0DC5441F6285C4FC753514148E17A34CDDC5441000000B0C653514148E17A74CBDC5441EC51B8AEC5535141295C8F92C7DC5441295C8F12C4535141F6285C5FC1DC544148E17A94C3535141E17A14DEBFDC5441B81E85DBC253514114AE47A1BEDC5441D7A3701DC253514114AE4791BDDC5441CDCCCC5CC1535141D7A370CDBCDC5441000000D0BE5351413D0AD7E3BADC5441AE47E1BABD535141000000F0B9DC5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000FC0AE5EA9A5351412A717C1DCADC5441D18E7E9B9A5351410B88FD70CBDC5441291E998D9A53514102F9A970CBDC54410666A25D955351413ADF7851CBDC54412D3DA3A8945351410CE077F0CBDC5441293F29479453514173A51846CCDC5441508F6B3C90535141C1977A54D7DC5441315AECA092535141AD4D65A1D7DC544113AF7CDF98535141BCB5E7D2D7DC5441FACA8DE29C535141C6587D33D9DC5441E17A142E9E53514114AE4751D8DC5441AE47E1AAA153514114AE4791D6DC544152B81E65A353514100000010D6DC5441C3F5284CA65351417B14AEA7D5DC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>492829 - 4031532
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002D00000085EB5128B3535141B81E85BBD0DC544152B81E75BC53514133333353D0DC544152B81EA5C153514185EB51A8D0DC5441D7A370EDC6535141AE47E1FAD0DC5441F6285C4FC753514148E17A34CDDC5441000000B0C653514148E17A74CBDC5441EC51B8AEC5535141295C8F92C7DC5441295C8F12C4535141F6285C5FC1DC544148E17A94C3535141E17A14DEBFDC5441B81E85DBC253514114AE47A1BEDC5441D7A3701DC253514114AE4791BDDC5441CDCCCC5CC1535141D7A370CDBCDC5441000000D0BE5351413D0AD7E3BADC5441AE47E1BABD535141000000F0B9DC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000E16478E0BC5351415A5C0A76A7DC5441D82E2B0EB95351419155BA15A0DC544170FD8373B753514184C4CF8E9DDC544155D97B39B75351418277AE6A9CDC54417E294FB5B35351411F86D2D09EDC544131C17E2AAD53514154A9DB53A3DC54413F74BDE89D535141A31BC82DAEDC5441547DBCA199535141626C1F54B3DC5441D12C5E409653514192CF67B4BBDC5441A733E05B91535141E08DF92EC8DC5441E22B309D91535141413FBABAC9DC54415A2DAE079353514130C6782CCBDC54410666A25D955351413ADF7851CBDC5441D18E7E9B9A5351410B88FD70CBDC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>492880 - 4031513
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000002A0000001F85EB41C0535141EC51B88EA1DC5441AE47E11ABF5351415C8FC2259DDC5441D7A3704DBE53514185EB51E89ADC544114AE4731BD535141333333A398DC54415C8FC205BB5351417B14AEE794DC5441D7A3708DB75351418FC2F5A89BDC5441F6285C1FB753514152B81E659CDC5441713D0AB7B6535141666666169DDC5441A4703D2AB6535141295C8FF29DDC544166666666B5535141295C8FC29EDC544148E17A74B3535141AE47E14AA0DC54419A9999A9AE5351418FC2F558A2DC5441EC51B89EA553514148E17AD4A8DC544166666626A05351411F85EBB1ACDC5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000FC0AE5EA9A5351412A717C1DCADC5441D18E7E9B9A5351410B88FD70CBDC5441291E998D9A53514102F9A970CBDC54410666A25D955351413ADF7851CBDC54412D3DA3A8945351410CE077F0CBDC5441293F29479453514173A51846CCDC5441508F6B3C90535141C1977A54D7DC5441315AECA092535141AD4D65A1D7DC544113AF7CDF98535141BCB5E7D2D7DC5441FACA8DE29C535141C6587D33D9DC5441E17A142E9E53514114AE4751D8DC5441AE47E1AAA153514114AE4791D6DC544152B81E65A353514100000010D6DC5441C3F5284CA65351417B14AEA7D5DC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>492880 - 4031532
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000020000002A0000001F85EB41C0535141EC51B88EA1DC5441AE47E11ABF5351415C8FC2259DDC5441D7A3704DBE53514185EB51E89ADC544114AE4731BD535141333333A398DC54415C8FC205BB5351417B14AEE794DC5441D7A3708DB75351418FC2F5A89BDC5441F6285C1FB753514152B81E659CDC5441713D0AB7B6535141666666169DDC5441A4703D2AB6535141295C8FF29DDC544166666666B5535141295C8FC29EDC544148E17A74B3535141AE47E14AA0DC54419A9999A9AE5351418FC2F558A2DC5441EC51B89EA553514148E17AD4A8DC544166666626A05351411F85EBB1ACDC5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000E16478E0BC5351415A5C0A76A7DC5441D82E2B0EB95351419155BA15A0DC544170FD8373B753514184C4CF8E9DDC544155D97B39B75351418277AE6A9CDC54417E294FB5B35351411F86D2D09EDC544131C17E2AAD53514154A9DB53A3DC54413F74BDE89D535141A31BC82DAEDC5441547DBCA199535141626C1F54B3DC5441D12C5E409653514192CF67B4BBDC5441A733E05B91535141E08DF92EC8DC5441E22B309D91535141413FBABAC9DC54415A2DAE079353514130C6782CCBDC54410666A25D955351413ADF7851CBDC5441D18E7E9B9A5351410B88FD70CBDC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>493825 - 1368502
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000EC51B81E8F3B5141B81E85DBCBCB5441E17A14EE8F3B5141B81E85BBD9CB544114AE47719B3B514100000060D8CB5441A4703D4AB13B51418FC2F5A8D7CB5441295C8F22C13B51418FC2F5D8D7CB5441B81E859BDE3B5141B81E857BD4CB544148E17AB4D93B51411F85EB41CDCB54415C8FC2A5D43B51413D0AD723CDCB5441E17A14EECE3B5141AE47E17ACCCB54415C8FC2A5C93B51417B14AE37CBCB544133333383B93B5141C3F528FCC9CB54419A999929B23B51417B14AE27C9CB5441C3F528ECAB3B51417B14AEA7C8CB5441333333739F3B51410AD7A3A0C9CB5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000038000000741EB1F4D83B514181D52E45CDCB54417595CB39D73B51419871AE2ECDCB5441FFE1153AD43B51410E1C6917CDCB5441288276ECCF3B51414DA53E98CCCB544193D00E12CA3B5141C2159051CBCB54417F611E77C73B5141A8D8010DCBCB5441F12BD6D3B93B51412BCF5102CACB54412D19F21DAF3B5141D12B35E9C8CB5441E12A8B2DAA3B514194DC80CAC8CB54419F301127A53B51419DD9CF2EC9CB544123090C559F3B514118F5C1A4C9CB544138E6EBBC9A3B51418F185E45CACB5441F5FD8C03963B5141D87384EACACB54418C66C41E8F3B5141989791DFCBCB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>493825 - 3513405
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000EC51B81E8F3B5141B81E85DBCBCB5441E17A14EE8F3B5141B81E85BBD9CB544114AE47719B3B514100000060D8CB5441A4703D4AB13B51418FC2F5A8D7CB5441295C8F22C13B51418FC2F5D8D7CB5441B81E859BDE3B5141B81E857BD4CB544148E17AB4D93B51411F85EB41CDCB54415C8FC2A5D43B51413D0AD723CDCB5441E17A14EECE3B5141AE47E17ACCCB54415C8FC2A5C93B51417B14AE37CBCB544133333383B93B5141C3F528FCC9CB54419A999929B23B51417B14AE27C9CB5441C3F528ECAB3B51417B14AEA7C8CB5441333333739F3B51410AD7A3A0C9CB5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000038000000741EB1F4D83B514181D52E45CDCB54417595CB39D73B51419871AE2ECDCB5441FFE1153AD43B51410E1C6917CDCB5441288276ECCF3B51414DA53E98CCCB544193D00E12CA3B5141C2159051CBCB54417F611E77C73B5141A8D8010DCBCB5441F12BD6D3B93B51412BCF5102CACB54412D19F21DAF3B5141D12B35E9C8CB5441E12A8B2DAA3B514194DC80CAC8CB54419F301127A53B51419DD9CF2EC9CB544123090C559F3B514118F5C1A4C9CB544138E6EBBC9A3B51418F185E45CACB5441F5FD8C03963B5141D87384EACACB54418C66C41E8F3B5141989791DFCBCB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>494967 - 64062
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001F00000000000000B6D75041333333034F6D5441D7A3707DB6D750419A999969516D54419A999989B7D750418FC2F5F8526D5441CDCCCCDCB8D75041295C8FD2536D5441CDCCCC7CC5D75041D7A370CD576D5441EC51B80EC7D75041B81E85AB586D5441B81E85EBC7D7504152B81E655A6D5441295C8F92CCD75041C3F5280C696D544114AE47C1CFD750411F85EB11736D5441713D0AC7E6D75041B81E855B716D5441F6285C0FE7D75041F6285C6F706D54419A999949EFD75041AE47E1DA6E6D5441295C8F82EFD750410AD7A3E06E6D544185EB51A8EFD75041EC51B8CE696D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001200000063A12FDED7D75041E5926E77726D5441751DAAFED2D75041152E3AD4726D544156F6E13BD0D75041F6E3CC08736D54417B14AE97D0D75041713D0A17746D544114AE4701D5D7504133333333816D54410AD7A370D8D75041EC51B8DE8D6D544185EB51A8E6D7504152B81E05886D5441B81E85BBE9D750413D0AD743866D5441333333F3EBD75041E17A142E826D5441D7A3702DECD75041EC51B83E816D54419A9999D9EDD75041D7A3703D7B6D54410AD7A3F0EED7504114AE4751766D5441295C8F32EFD750413D0AD7D3736D5441295C8F82EFD750410AD7A3E06E6D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>494967 - 359090
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001F00000000000000B6D75041333333034F6D5441D7A3707DB6D750419A999969516D54419A999989B7D750418FC2F5F8526D5441CDCCCCDCB8D75041295C8FD2536D5441CDCCCC7CC5D75041D7A370CD576D5441EC51B80EC7D75041B81E85AB586D5441B81E85EBC7D7504152B81E655A6D5441295C8F92CCD75041C3F5280C696D544114AE47C1CFD750411F85EB11736D5441713D0AC7E6D75041B81E855B716D5441F6285C0FE7D75041F6285C6F706D54419A999949EFD75041AE47E1DA6E6D5441295C8F82EFD750410AD7A3E06E6D544185EB51A8EFD75041EC51B8CE696D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001200000063A12FDED7D75041E5926E77726D5441751DAAFED2D75041152E3AD4726D544156F6E13BD0D75041F6E3CC08736D54417B14AE97D0D75041713D0A17746D544114AE4701D5D7504133333333816D54410AD7A370D8D75041EC51B8DE8D6D544185EB51A8E6D7504152B81E05886D5441B81E85BBE9D750413D0AD743866D5441333333F3EBD75041E17A142E826D5441D7A3702DECD75041EC51B83E816D54419A9999D9EDD75041D7A3703D7B6D54410AD7A3F0EED7504114AE4751766D5441295C8F32EFD750413D0AD7D3736D5441295C8F82EFD750410AD7A3E06E6D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>495699 - 3137797
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000270000007B14AE8767CF50418FC2F548B3655441666666C667CF5041D7A370BDB26554417B14AEC767CF5041A4703D6AB26554419A9999A967CF504133333323B26554417B14AE2767CF5041E17A14BEB1655441713D0A9766CF50415C8FC245B16554411F85EB3166CF504185EB5198B06554416666662666CF5041333333F3AF655441D7A3705D66CF50418FC2F538AF655441AE47E19A66CF5041EC51B8CEAE655441E17A14BE66CF50411F85EB61AE655441A4703DBA66CF504185EB5118AE6554413D0AD78366CF5041CDCCCC6CAD6554418FC2F57866CF5041AE47E1DAAC655441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000370000000CABE87A66CF50417AFF5AAFAC6554416467FE3365CF50412211C7EBB465544116AAD22F65CF504159669D73B56554418C650B2465CF5041103037F3B665544100DE7BAC64CF50411639E31CBE655441797770A661CF5041984367F9C565544187F3BEB35ECF50411CD31035CA655441A43D98395BCF5041FF8837AFCD655441BF5ED38956CF5041647CCBF9D2655441A0C2BD9857CF50418693BB8BD565544143C5DE8F59CF50419C2E5D10DB655441F4958AFF5ACF5041922DE9A3E1655441333333435CCF5041E17A142EE96554415C8FC2255DCF5041713D0A77EB655441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>495699 - 3350456
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000270000007B14AE8767CF50418FC2F548B3655441666666C667CF5041D7A370BDB26554417B14AEC767CF5041A4703D6AB26554419A9999A967CF504133333323B26554417B14AE2767CF5041E17A14BEB1655441713D0A9766CF50415C8FC245B16554411F85EB3166CF504185EB5198B06554416666662666CF5041333333F3AF655441D7A3705D66CF50418FC2F538AF655441AE47E19A66CF5041EC51B8CEAE655441E17A14BE66CF50411F85EB61AE655441A4703DBA66CF504185EB5118AE6554413D0AD78366CF5041CDCCCC6CAD6554418FC2F57866CF5041AE47E1DAAC655441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000370000000CABE87A66CF50417AFF5AAFAC6554416467FE3365CF50412211C7EBB465544116AAD22F65CF504159669D73B56554418C650B2465CF5041103037F3B665544100DE7BAC64CF50411639E31CBE655441797770A661CF5041984367F9C565544187F3BEB35ECF50411CD31035CA655441A43D98395BCF5041FF8837AFCD655441BF5ED38956CF5041647CCBF9D2655441A0C2BD9857CF50418693BB8BD565544143C5DE8F59CF50419C2E5D10DB655441F4958AFF5ACF5041922DE9A3E1655441333333435CCF5041E17A142EE96554415C8FC2255DCF5041713D0A77EB655441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>496440 - 249178
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000030000000103000000010000000B000000D7A3704D6ADC5041000000D0B066544185EB51C863DC5041A4703D8AA2665441E17A145E63DC50419A9999F99A665441AE47E16A21DC5041713D0A979D66544152B81EB521DC504152B81EC59F665441713D0A1723DC504148E17A34A166544114AE479138DC5041B81E856BA566544185EB51084BDC50410AD7A380A96654417B14AED758DC5041295C8F12AD6654419A99998969DC50418FC2F5D8B1665441D7A3704D6ADC5041000000D0B066544101030000000100000021000000E17A148EE0DB5041B81E850B9B665441000000E0F5DB5041AE47E18A9C66544185EB51 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000000AD7A350D9DB504114AE47E12E66544113D4D3BBDADB50417760485F3B6654413B1F033BDBDB5041564131BF3F66544177A4205ADBDB504123F869B94066544113315D1FDCDB504107BCAAA946665441F126C578DCDB504140C8C95A49665441E49EF6F2DCDB50416307A0084D6654412D6B2C5CDDDB504159728F335066544122A1F29BDDDB504169FEA81352665441FC0298F4DDDB50417F52FFAE54665441AD711E6ADEDB5041BB5CBD2358665441EE712C08DFDB5041DAD897C95C6654419A999959E1DB50411F85EB916D665441B81E85EBE1DB504152B81E0578665441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>496440 - 296406
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000030000000103000000010000000B000000D7A3704D6ADC5041000000D0B066544185EB51C863DC5041A4703D8AA2665441E17A145E63DC50419A9999F99A665441AE47E16A21DC5041713D0A979D66544152B81EB521DC504152B81EC59F665441713D0A1723DC504148E17A34A166544114AE479138DC5041B81E856BA566544185EB51084BDC50410AD7A380A96654417B14AED758DC5041295C8F12AD6654419A99998969DC50418FC2F5D8B1665441D7A3704D6ADC5041000000D0B066544101030000000100000021000000E17A148EE0DB5041B81E850B9B665441000000E0F5DB5041AE47E18A9C66544185EB51 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000000AD7A350D9DB504114AE47E12E66544113D4D3BBDADB50417760485F3B6654413B1F033BDBDB5041564131BF3F66544177A4205ADBDB504123F869B94066544113315D1FDCDB504107BCAAA946665441F126C578DCDB504140C8C95A49665441E49EF6F2DCDB50416307A0084D6654412D6B2C5CDDDB504159728F335066544122A1F29BDDDB504169FEA81352665441FC0298F4DDDB50417F52FFAE54665441AD711E6ADEDB5041BB5CBD2358665441EE712C08DFDB5041DAD897C95C6654419A999959E1DB50411F85EB916D665441B81E85EBE1DB504152B81E0578665441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>496767 - 1768142
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000009000000C3F5288CF0D7504148E17A746F7A54411F85EB71EED75041B81E852B7D7A544100000030EED750417B14AEC77E7A5441AE47E10A2BD8504185EB51D8477A5441F6285C7F2DD85041EC51B89E377A5441A4703D0A18D85041EC51B8FE4A7A5441B81E85CB03D850415C8FC2455D7A5441AE47E17AF1D75041F6285CCF6D7A5441C3F5288CF0D7504148E17A746F7A5441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000C3F5288CF0D7504148E17A746F7A54411F85EB71EED75041B81E852B7D7A544100000030EED750417B14AEC77E7A5441363643670CD850415234E880637A54414431AE9005D8504125C5A3AC5B7A54410D543C630ED8504169BF94B5537A544133CDA27B0ED85041457B8946527A544192B89B6617D85041CAFA1F394A7A5441666666F62CD8504114AE47C1367A5441295C8FE22DD8504100000010357A544185EB51682FD85041EC51B8FE2A7A5441AE47E12A1BD85041333333433D7A5441E17A14EE06D8504185EB51884F7A54410AD7A3B0F2D75041CDCCCCCC617A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>496767 - 3323200
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000009000000C3F5288CF0D7504148E17A746F7A54411F85EB71EED75041B81E852B7D7A544100000030EED750417B14AEC77E7A5441AE47E10A2BD8504185EB51D8477A5441F6285C7F2DD85041EC51B89E377A5441A4703D0A18D85041EC51B8FE4A7A5441B81E85CB03D850415C8FC2455D7A5441AE47E17AF1D75041F6285CCF6D7A5441C3F5288CF0D7504148E17A746F7A5441
+</a>
+
+<b>
+01060000000100000001030000000100000011000000C3F5288CF0D7504148E17A746F7A54411F85EB71EED75041B81E852B7D7A544100000030EED750417B14AEC77E7A5441363643670CD850415234E880637A54414431AE9005D8504125C5A3AC5B7A54410D543C630ED8504169BF94B5537A544133CDA27B0ED85041457B8946527A544192B89B6617D85041CAFA1F394A7A5441666666F62CD8504114AE47C1367A5441295C8FE22DD8504100000010357A544185EB51682FD85041EC51B8FE2A7A5441AE47E12A1BD85041333333433D7A5441E17A14EE06D8504185EB51884F7A54410AD7A3B0F2D75041CDCCCCCC617A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899599 - 150780
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000027000000CDCCCCDC62FE50410AD7A3B0B1315441CDCCCC8C63FE5041A4703D5AB3315441A4703DFA62FE5041D7A3700DB6315441D7A3706D61FE50419A9999E9B6315441D7A370FD5FFE50417B14AEA7B6315441713D0AD75FFE504185EB5128B7315441F6285CFF5FFE50418FC2F5C8B731544148E17AB460FE50411F85EB81B8315441F6285CAF61FE5041EC51B83EB9315441E17A146E63FE5041295C8F62BA31544114AE479164FE504133333323BB31544185EB514865FE50411F85EB71BB315441C3F528FC67FE5041A4703DCABB3154413333332369FE5041666666E6B9315441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000EAFDE7E45FFE50410695905FB73154412C41022660FE5041949F6DF0B7315441203ECC9260FE50411112865FB8315441C7D1BB9860FE504151DD9565B8315441921EC89960FE504153DAA766B8315441A1D0334962FE50416FCDC6F8B8315441EAB25C7163FE504129E48809B9315441DDE5D57A63FE5041C1ADD409B9315441D79CCAE664FE504140BA2325B83154418D8A2E1A65FE50414814A101B8315441F58B7FC765FE5041916DDE89B7315441AA98100967FE5041A932ABABB631544157F7DB1769FE50413EB341EDB631544162EA671C6AFE504156E1CBAEB8315441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>899599 - 290019
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000027000000CDCCCCDC62FE50410AD7A3B0B1315441CDCCCC8C63FE5041A4703D5AB3315441A4703DFA62FE5041D7A3700DB6315441D7A3706D61FE50419A9999E9B6315441D7A370FD5FFE50417B14AEA7B6315441713D0AD75FFE504185EB5128B7315441F6285CFF5FFE50418FC2F5C8B731544148E17AB460FE50411F85EB81B8315441F6285CAF61FE5041EC51B83EB9315441E17A146E63FE5041295C8F62BA31544114AE479164FE504133333323BB31544185EB514865FE50411F85EB71BB315441C3F528FC67FE5041A4703DCABB3154413333332369FE5041666666E6B9315441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000EAFDE7E45FFE50410695905FB73154412C41022660FE5041949F6DF0B7315441203ECC9260FE50411112865FB8315441C7D1BB9860FE504151DD9565B8315441921EC89960FE504153DAA766B8315441A1D0334962FE50416FCDC6F8B8315441EAB25C7163FE504129E48809B9315441DDE5D57A63FE5041C1ADD409B9315441D79CCAE664FE504140BA2325B83154418D8A2E1A65FE50414814A101B8315441F58B7FC765FE5041916DDE89B7315441AA98100967FE5041A932ABABB631544157F7DB1769FE50413EB341EDB631544162EA671C6AFE504156E1CBAEB8315441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>497867 - 3174181
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703DCA56005141AE47E11A19325441CDCCCCDC640051418FC2F5780C3254411F85EB8168005141295C8FE207325441D7A370FD67005141713D0A87073254418FC2F52866005141F6285C4F06325441E17A14CE6400514148E17A040832544114AE4791610051417B14AEA70B325441E17A145E5F005141F6285C4F0E32544114AE47115E0051417B14AE270D325441D7A370CD59005141713D0A471032544185EB51285200514152B81EA5153254418FC2F5C84A005141A4703D1A1B3254417B14AEE7440051411F85EB411F325441333333333E005141D7A3708D23325441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000E8E07ACC560051411485DE1819325441F6F9B06C5600514174E078C41B325441D3A9DD2C550051417E35755E26325441AEF63621540051411289B33D2F325441461B31636D0051411BF54D7B2C3254418BBFA9A978005141C9D09DC42B3254419AF840CD7C005141AA5E6F7D23325441EFEFC4A7800051415FFADA7E1D3254418F72DD2080005141DCAD83161B325441238424EE7C0051411DF0B6E61532544199F3ACAB790051415A54D4B2113254410994CA9372005141B45AB08E0D325441E0D899026F00514140B0CB530C32544186789B4E68005141BE0A242308325441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>497867 - 3568344
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000016000000A4703DCA56005141AE47E11A19325441CDCCCCDC640051418FC2F5780C3254411F85EB8168005141295C8FE207325441D7A370FD67005141713D0A87073254418FC2F52866005141F6285C4F06325441E17A14CE6400514148E17A040832544114AE4791610051417B14AEA70B325441E17A145E5F005141F6285C4F0E32544114AE47115E0051417B14AE270D325441D7A370CD59005141713D0A471032544185EB51285200514152B81EA5153254418FC2F5C84A005141A4703D1A1B3254417B14AEE7440051411F85EB411F325441333333333E005141D7A3708D23325441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000E8E07ACC560051411485DE1819325441F6F9B06C5600514174E078C41B325441D3A9DD2C550051417E35755E26325441AEF63621540051411289B33D2F325441461B31636D0051411BF54D7B2C3254418BBFA9A978005141C9D09DC42B3254419AF840CD7C005141AA5E6F7D23325441EFEFC4A7800051415FFADA7E1D3254418F72DD2080005141DCAD83161B325441238424EE7C0051411DF0B6E61532544199F3ACAB790051415A54D4B2113254410994CA9372005141B45AB08E0D325441E0D899026F00514140B0CB530C32544186789B4E68005141BE0A242308325441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498556 - 151371
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000050000000103000000010000001D000000CDCCCC4C95FF5041D7A370BD8F315441D7A370ED8FFF5041713D0AA78E31544148E17AC495FF5041C3F528DC843154416666664694FF5041C3F5286C84315441AE47E16A8FFF5041F6285C2F823154419A9999398FFF5041AE47E16A81315441C3F528DC8CFF5041666666A6803154417B14AE278CFF5041E17A14FE8131544185EB51488CFF504152B81E3583315441B81E85CB8CFF5041AE47E13A843154413D0AD7338EFF50411F85EB71853154411F85EBE18DFF504185EB514889315441F6285C7F8DFF5041000000708D3154413D0AD7C38CFF50419A99994991315441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000370000008EB1DA7E63FF5041B04CA06D43315441B81E854B60FF5041713D0A5741315441AE47E18A60FF50415C8FC2F53D3154410762E73760FF50417B6926F93A315441013C06EC5FFF5041FF3251263A315441673C5FD95EFF50412B0FB97E37315441D6E760E15DFF50411F172A0536315441B7CE8CC75DFF5041EF4495E23531544153383AAD5CFF5041C81A9668343154414149B2CD5BFF50419F8781EA33315441A8DF14085BFF5041D7ACEA8B3331544140FCA88D5AFF5041B8EB145D33315441E025C0DD59FF5041C7D8875833315441459F909858FF50419778514A33315441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498674 - 3669847
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000190000000AD7A360A50151415C8FC215552C544148E17A74A4015141295C8FE2532C5441EC51B80EA4015141F6285C8F532C5441A4703D4AA30151419A999979552C544148E17AF49F0151419A9999A95E2C5441C3F5284C9F01514185EB51D8642C5441295C8F429E015141A4703D6A672C54419A9999099E015141295C8FB2692C5441C3F528FCA30151413D0AD7536F2C544166666696A501514114AE47F16F2C544148E17A54A70151413D0AD7E36C2C54410AD7A300AB0151417B14AEE7682C5441C3F528FCAB015141A4703DDA652C5441D7A370DDAC015141E17A14AE632C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001900000026ED1FA49F015141A5939746612C544181AAEE739F01514194E95662632C54413A64B04F9F0151416FEA22B7642C5441D16262159F015141385B0160652C5441AD7894AA9E015141D8F4D06C662C544113EA564F9E015141F371954A672C5441582DEA3A9E015141C40EABB8672C5441E1AC45179E0151415859385F682C5441CED34A789F015141442776E3692C5441F8981B36A401514128978AFC6E2C54411EF2E03AA5015141B23852F46D2C54417A1BDB37A7015141EEA4F2916B2C54416B6DB35DA9015141F638FCBD682C5441F46512E3AA0151415CBA7883662C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498917 - 238041
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000002000000010300000001000000EF0000001F85EBD1300851415C8FC2D5073454418FC2F5D82E085141B81E85EB0634544148E17AA42D085141B81E854B06345441F6285CDF2C085141D7A3706D05345441295C8F322C0851411F85EB5104345441EC51B8FE2A085141EC51B8AE023454419A9999392A085141000000A00134544152B81E05290851410AD7A39000345441000000A02708514100000050FF3354417B14AE77260851415C8FC2C5FD335441EC51B8BE2508514100000060FC335441666666A625085141E17A14EEFA3354416666664626085141A4703D1AF9335441EC51B80E28085141CDCCCC8CF6335441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000E60000009A9999493408514148E17AD4B93354419CF152ED33085141E1CA4BFFB93354419A9999A933085141EC51B81EBA335441B81E85CB320851410AD7A340B93354414F09E52E32085141012D5FE1B83354410A2029CC30085141E8E1BC63B7335441EC51B8FE2A08514100000060B73354419A9999292D085141B81E85FBB1335441A4703D1A2C08514185EB5158B033544185EB51482B085141A4703D7AAF335441BC864DCE2A085141804E3BF5AC3354411C1570522A085141BFA14BF6AB335441D43BE8CE2A085141C13F1FBFAA335441EC51B8FE2A085141E17A14EEA8335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498917 - 260570
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000002000000010300000001000000EF0000001F85EBD1300851415C8FC2D5073454418FC2F5D82E085141B81E85EB0634544148E17AA42D085141B81E854B06345441F6285CDF2C085141D7A3706D05345441295C8F322C0851411F85EB5104345441EC51B8FE2A085141EC51B8AE023454419A9999392A085141000000A00134544152B81E05290851410AD7A39000345441000000A02708514100000050FF3354417B14AE77260851415C8FC2C5FD335441EC51B8BE2508514100000060FC335441666666A625085141E17A14EEFA3354416666664626085141A4703D1AF9335441EC51B80E28085141CDCCCC8CF6335441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000E60000009A9999493408514148E17AD4B93354419CF152ED33085141E1CA4BFFB93354419A9999A933085141EC51B81EBA335441B81E85CB320851410AD7A340B93354414F09E52E32085141012D5FE1B83354410A2029CC30085141E8E1BC63B7335441EC51B8FE2A08514100000060B73354419A9999292D085141B81E85FBB1335441A4703D1A2C08514185EB5158B033544185EB51482B085141A4703D7AAF335441BC864DCE2A085141804E3BF5AC3354411C1570522A085141BFA14BF6AB335441D43BE8CE2A085141C13F1FBFAA335441EC51B8FE2A085141E17A14EEA8335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498982 - 1007621
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000060000000103000000010000000F0000008FC2F588E5005141D7A3709D691F5441A4703D1AE4005141C3F5281C641F54411F85EB21DB005141C3F528AC5E1F5441AE47E1EAD6005141A4703D4A611F544114AE4711D5005141F6285C0F681F54419A9999B9D50051413D0AD7F36F1F5441F6285C5FD30051411F85EB617A1F544152B81EC5D2005141F6285C7F8D1F54417B14AE97CF00514148E17AC4931F544185EB5118D90051410AD7A350921F54419A9999A9D80051410AD7A3D0901F54411F85EB21DA0051410AD7A3608B1F54411F85EBC1E0005141333333F37B1F544133333333E4005141C3F528DC711F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000056000000D3AD95D6DE0051411ECC831D9D1F54418FC2F518DA0051418FC2F5C8951F54413D0AD763D8005141AE47E11A961F544185EB5158D8005141295C8F12981F54418FC2F598CE005141295C8FA2981F544166666686CE005141F6285CDF951F5441333333A3CA005141AE47E1EA9F1F544114AE4721C500514166666686A71F544148E17AA4CF00514185EB51D8AB1F54415C8FC255E2005141D7A370DDB41F54415C8FC225E50051418FC2F598B71F5441295C8FE2E400514148E17A64BE1F54413D0AD703EA005141B81E85FBC11F54415C8FC245F2005141AE47E18ABD1F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>498982 - 3514171
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000060000000103000000010000000F0000008FC2F588E5005141D7A3709D691F5441A4703D1AE4005141C3F5281C641F54411F85EB21DB005141C3F528AC5E1F5441AE47E1EAD6005141A4703D4A611F544114AE4711D5005141F6285C0F681F54419A9999B9D50051413D0AD7F36F1F5441F6285C5FD30051411F85EB617A1F544152B81EC5D2005141F6285C7F8D1F54417B14AE97CF00514148E17AC4931F544185EB5118D90051410AD7A350921F54419A9999A9D80051410AD7A3D0901F54411F85EB21DA0051410AD7A3608B1F54411F85EBC1E0005141333333F37B1F544133333333E4005141C3F528DC711F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000056000000D3AD95D6DE0051411ECC831D9D1F54418FC2F518DA0051418FC2F5C8951F54413D0AD763D8005141AE47E11A961F544185EB5158D8005141295C8F12981F54418FC2F598CE005141295C8FA2981F544166666686CE005141F6285CDF951F5441333333A3CA005141AE47E1EA9F1F544114AE4721C500514166666686A71F544148E17AA4CF00514185EB51D8AB1F54415C8FC255E2005141D7A370DDB41F54415C8FC225E50051418FC2F598B71F5441295C8FE2E400514148E17A64BE1F54413D0AD703EA005141B81E85FBC11F54415C8FC245F2005141AE47E18ABD1F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499013 - 91337
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000300000001030000000200000020000000666666E6691351413D0AD713F72454411F85EB1167135141D7A370BDF4245441D7A370AD67135141666666B6F824544166666666671351415C8FC205FC2454419A9999D966135141B81E859BFF2454410000003066135141B81E853B052554410000004065135141713D0A97092554410000004065135141666666E60C2554411F85EB3165135141F6285CFF0E255441295C8FB264135141D7A370CD1225544185EB518864135141CDCCCCEC182554415C8FC2B564135141000000401F2554415C8FC22564135141AE47E1AA25255441666666A663135141E17A147E2E255441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000005D000000DA391056661351413DFF84C4F4245441EC100E1A67135141419BA2F2F4245441F193062567135141CA6E37F5F4245441D7A370AD67135141666666B6F824544166666666671351415C8FC205FC2454419A9999D966135141B81E859BFF2454410000003066135141B81E853B052554410000004065135141713D0A97092554410000004065135141666666E60C2554411F85EB3165135141F6285CFF0E255441295C8FB264135141D7A370CD1225544185EB518864135141CDCCCCEC182554415C8FC2B564135141000000401F2554415C8FC22564135141AE47E1AA25255441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499013 - 360732
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000300000001030000000200000020000000666666E6691351413D0AD713F72454411F85EB1167135141D7A370BDF4245441D7A370AD67135141666666B6F824544166666666671351415C8FC205FC2454419A9999D966135141B81E859BFF2454410000003066135141B81E853B052554410000004065135141713D0A97092554410000004065135141666666E60C2554411F85EB3165135141F6285CFF0E255441295C8FB264135141D7A370CD1225544185EB518864135141CDCCCCEC182554415C8FC2B564135141000000401F2554415C8FC22564135141AE47E1AA25255441666666A663135141E17A147E2E255441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000005D000000DA391056661351413DFF84C4F4245441EC100E1A67135141419BA2F2F4245441F193062567135141CA6E37F5F4245441D7A370AD67135141666666B6F824544166666666671351415C8FC205FC2454419A9999D966135141B81E859BFF2454410000003066135141B81E853B052554410000004065135141713D0A97092554410000004065135141666666E60C2554411F85EB3165135141F6285CFF0E255441295C8FB264135141D7A370CD1225544185EB518864135141CDCCCCEC182554415C8FC2B564135141000000401F2554415C8FC22564135141AE47E1AA25255441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499121 - 226669
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002D000000CDCCCC5C66065141000000109F31544185EB516865065141C3F5289C9E31544114AE477162065141F6285C4FA23154416666664663065141000000E0A33154415C8FC2B5610651410AD7A370A531544148E17AD460065141295C8FD2A431544185EB515860065141B81E850BA63154415C8FC2655E0651417B14AED7AC315441C3F528BC5B065141D7A3701DB23154418FC2F53858065141CDCCCCBCB83154411F85EB3155065141A4703D2ABF315441666666D6530651419A9999E9C1315441E17A145E54065141F6285C5FC63154418FC2F56853065141000000F0C6315441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000005C8FC27580065141CDCCCC5CAF315441EF2265A17C065141CF2B52ACAD315441CF1D7FEC790651414BB13A08AC3154413CC042E26F0651413D2F2E2FA5315441CDCCCC5C66065141000000109F3154411A06A44963065141A25ACA3CA2315441F8ED77EF65065141C6B56D01A5315441D7D54B9568065141D904FB18A931544164B075616A065141905A7A91AA315441B0B1098E6C065141122DDC58AC31544168C0890B70065141D63B5CD6AF3154410BB7DD2E76065141E4C9C11FB23154413C1D1F847D065141FBC63C04B63154418CCA99B27E0651414A173213B3315441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499121 - 364997
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002D000000CDCCCC5C66065141000000109F31544185EB516865065141C3F5289C9E31544114AE477162065141F6285C4FA23154416666664663065141000000E0A33154415C8FC2B5610651410AD7A370A531544148E17AD460065141295C8FD2A431544185EB515860065141B81E850BA63154415C8FC2655E0651417B14AED7AC315441C3F528BC5B065141D7A3701DB23154418FC2F53858065141CDCCCCBCB83154411F85EB3155065141A4703D2ABF315441666666D6530651419A9999E9C1315441E17A145E54065141F6285C5FC63154418FC2F56853065141000000F0C6315441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000005C8FC27580065141CDCCCC5CAF315441EF2265A17C065141CF2B52ACAD315441CF1D7FEC790651414BB13A08AC3154413CC042E26F0651413D2F2E2FA5315441CDCCCC5C66065141000000109F3154411A06A44963065141A25ACA3CA2315441F8ED77EF65065141C6B56D01A5315441D7D54B9568065141D904FB18A931544164B075616A065141905A7A91AA315441B0B1098E6C065141122DDC58AC31544168C0890B70065141D63B5CD6AF3154410BB7DD2E76065141E4C9C11FB23154413C1D1F847D065141FBC63C04B63154418CCA99B27E0651414A173213B3315441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499168 - 386182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000078010000B81E853B8F055141A4703D2A41325441C3F5283C9505514114AE4741433254411F85EBF1970551415C8FC2D543325441A4703DBA990551410AD7A36044325441F6285C1F9B0551416666664646325441666666969B055141D7A3704D48325441F6285CEF9E055141B81E85DB49325441295C8FB2A00551411F85EB414C325441AE47E10AA4055141CDCCCC0C50325441666666A6A705514114AE4761543254418FC2F5B8A9055141295C8FB256325441EC51B8DEA8055141CDCCCC2C59325441333333B3A605514148E17AF45A325441713D0A27A5055141A4703DDA5C325441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000072000000CDCCCCECAF0551415C8FC2C535325441999E72D7AF055141F455D9C535325441E25A8E6BAE05514166EFD219363254414D616D55AD0551416A8BA7C736325441AD674C3FAC0551419746409837325441E8EA3BB4AB055141605F25D138325441C3B329C7A40551415D97CE2C3A3254415AA12378A205514134780A0A3A3254415D697A1CA105514191B6924F3A325441945095E39F05514191B6924F3A325441FF5674CD9E055141955267FD3A32544106E721169C055141928A10593C325441D8570B3C9905514131B0B3653B325441157A4E0F97055141345146593C325441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499619 - 138492
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000034000000583B09596C6D5141BEEB14DCE16E5441977E56CC696D5141ADDF6340E26E5441977E56CC696D5141290D3A55E26E544105D0DCBE696D5141F2169AF9E26E5441FCBCD0536B6D51417E1B8CAFE76E54415B9FE5596D6D5141F16C67B6ED6E54410CD8D0856E6D514154B29F33F16E54411A4CAD056F6D51412EA86BB0F26E5441912385F16A6D51416FB78BD5F36E544189820DC0646D51418BFB338CF56E5441D36C8986606D5141C4B21CB7F66E5441CDDF1201606D51419AA3FFDBF66E54415F7698B45F6D51417D89672BF76E5441661E5806606D5141A4993191F86E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000000000020836D51418FC2F538096F5441CDCCCC3C836D51419A999979146F54410AD7A3B0866D51411F85EB91136F544100000060946D514185EB51F80F6F5441713D0AB7946D5141CDCCCCCC0D6F54411F85EB81946D5141EC51B8FEFE6E54413D0AD753936D51419A999979F06E5441F6285CEF8C6D5141EC51B8BEF26E5441E17A148E876D51418FC2F588F56E5441666666F6826D5141C3F528CCF86E544100000020836D51418FC2F538096F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499619 - 1250040
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000034000000583B09596C6D5141BEEB14DCE16E5441977E56CC696D5141ADDF6340E26E5441977E56CC696D5141290D3A55E26E544105D0DCBE696D5141F2169AF9E26E5441FCBCD0536B6D51417E1B8CAFE76E54415B9FE5596D6D5141F16C67B6ED6E54410CD8D0856E6D514154B29F33F16E54411A4CAD056F6D51412EA86BB0F26E5441912385F16A6D51416FB78BD5F36E544189820DC0646D51418BFB338CF56E5441D36C8986606D5141C4B21CB7F66E5441CDDF1201606D51419AA3FFDBF66E54415F7698B45F6D51417D89672BF76E5441661E5806606D5141A4993191F86E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000000000020836D51418FC2F538096F5441CDCCCC3C836D51419A999979146F54410AD7A3B0866D51411F85EB91136F544100000060946D514185EB51F80F6F5441713D0AB7946D5141CDCCCCCC0D6F54411F85EB81946D5141EC51B8FEFE6E54413D0AD753936D51419A999979F06E5441F6285CEF8C6D5141EC51B8BEF26E5441E17A148E876D51418FC2F588F56E5441666666F6826D5141C3F528CCF86E544100000020836D51418FC2F538096F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>499619 - 3222462
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000034000000583B09596C6D5141BEEB14DCE16E5441977E56CC696D5141ADDF6340E26E5441977E56CC696D5141290D3A55E26E544105D0DCBE696D5141F2169AF9E26E5441FCBCD0536B6D51417E1B8CAFE76E54415B9FE5596D6D5141F16C67B6ED6E54410CD8D0856E6D514154B29F33F16E54411A4CAD056F6D51412EA86BB0F26E5441912385F16A6D51416FB78BD5F36E544189820DC0646D51418BFB338CF56E5441D36C8986606D5141C4B21CB7F66E5441CDDF1201606D51419AA3FFDBF66E54415F7698B45F6D51417D89672BF76E5441661E5806606D5141A4993191F86E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000000000020836D51418FC2F538096F5441CDCCCC3C836D51419A999979146F54410AD7A3B0866D51411F85EB91136F544100000060946D514185EB51F80F6F5441713D0AB7946D5141CDCCCCCC0D6F54411F85EB81946D5141EC51B8FEFE6E54413D0AD753936D51419A999979F06E5441F6285CEF8C6D5141EC51B8BEF26E5441E17A148E876D51418FC2F588F56E5441666666F6826D5141C3F528CCF86E544100000020836D51418FC2F538096F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>500586 - 3022788
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000B81E85DBE640514152B81E75726654418FC2F598E0405141333333636666544148E17A14DD405141F6285C3F5E665441F6285C2FDB405141CDCCCC7C56665441C3F528CCD940514114AE4771556654417B14AE37D74051417B14AEC755665441B81E850BDD4051413D0AD713756654417B14AE17E1405141D7A370DD8A665441D7A3704DE3405141295C8F6296665441F6285C4FE7405141E17A148E95665441EC51B83EE9405141D7A3700D9C665441B81E854BEE4051415C8FC2459A665441C3F5282CF74051417B14AE1797665441AE47E1DAF04051415C8FC2458A665441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000B81E854BEE4051415C8FC2459A665441C3F5282CF74051417B14AE1797665441BAC462FBF54051416BEA34AD94665441755443BCF4405141E2B09D2592665441AE47E1DAF04051415C8FC2458A6654411A76DE44F0405141AC6C207A88665441EB95BCCCEF405141C776F9738766544152B81EE5F040514185EB511887665441863E77FFEF40514139326A068566544130841CB5EF4051417660D95A846654410787715EEE40514136DB367A8466544187D39C90EA405141D1314A0086665441EBB01CA6EA40514100989767866654411694EFCCEA4051414BBC222287665441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>515244 - 386688
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000D7A370FDCEF65041A4703D9ADCFA5441D7A3705DC1F65041A4703D8AF9FA5441333333C3B8F65041333333330CFB54415C8FC2B5BEF65041D7A3704D0EFB544114AE47F1C2F650413D0AD7530FFB5441A4703D7ACEF650418FC2F5D8FAFA54417B14AE47DDF65041A4703D3AE0FA544185EB5158DEF6504152B81E45DEFA54417B14AE47DFF65041CDCCCC7CDCFA5441D7A370CDDEF650415C8FC2B5DAFA5441713D0A27D3F6504185EB5158D3FA5441D7A370FDCEF65041A4703D9ADCFA5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000D7A370FDCEF65041A4703D9ADCFA5441DACA6A31C3F65041777F5FCCF5FA5441D7A3705DC1F65041A4703D8AF9FA5441333333C3B8F65041333333330CFB54415C8FC2B5BEF65041D7A3704D0EFB544114AE47F1C2F650413D0AD7530FFB54418B38BA62C9F6504161E8ACE103FB5441B4D25C38CBF65041A8207BA100FB5441A4703D7ACEF650418FC2F5D8FAFA54417B14AE47DDF65041A4703D3AE0FA54410B0000D0DDF650416514AE3FDFFA54411AEB5158DEF650419DB81E45DEFA54415517EEE7DEF6504101E05633DDFA5441B1760BE8DEF65041F9E01E33DDFA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>500894 - 373792
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000012000000295C8FE2CF3F5141000000E0C96654415C8FC255C93F514114AE4741CC66544114AE47A1C83F514133333383CC665441F6285C7FC43F514133333303CE6654413D0AD783C63F51418FC2F5A8D666544185EB5148C83F5141295C8FF2DC6654410AD7A3B0C93F5141A4703D5ADE665441295C8F92CD3F514185EB5138DE66544166666636CE3F514185EB5128E1665441D7A3704DD13F51415C8FC265EE665441B81E85EBD23F514166666656F566544114AE4741D53F51417B14AE57FF665441E17A14AEDB3F5141A4703D0AFD6654415C8FC2D5E63F5141AE47E10AF9665441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000290000002E0B0593CD3F5141D6116E3ADE665441DA1415E3CD3F51419F67DE37DE66544145B54AC4CD3F5141F6891383DD665441F86896B7CE3F5141DCC52CD4DD665441A25596FFCF3F51419F63D7AEDE6654411F4796F5D03F5141BCF7812DE0665441608CEB06D23F5141C1DA8119E26654418387EB58D23F514198C281B3E36654416AD640C6D23F514142AF81FBE4665441C4CC406AD33F51419DA5819FE5665441E260EBE8D43F5141D3EAD6B0E6665441A5FE95C3D53F51411E7A8181E8665441D2F99515D63F5141AFB5D636EA665441FFF49567D63F51411C408159EC665441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>501146 - 5236319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000032000000A4703D6AA18551411F85EB8151775441333333C39F855141295C8FC257775441F6285C2F9F8551413333339358775441D7A3700D9D855141E17A14EE58775441F6285CFF988551410AD7A3505977544185EB519894855141EC51B87E597754417B14AEF78F8551419A999939597754418FC2F5B88B855141CDCCCC7C58775441713D0A27868551411F85EBE156775441295C8F32808551410AD7A31055775441AE47E1CA778551415C8FC27552775441AE47E11A70855141A4703DFA4F775441AE47E1CA6F855141EC51B8EE4F775441000000E06285514152B81E454E775441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000047000000AE47E1AA56855141AE47E14A7C77544152B81ED5538551419A9999C985775441883C36C04F855141D10FFA1F8E77544160C80B9F4B8551413F0E969196775441FCCCB202498551419F3C0B209C775441BE68B0D247855141AD5B14299F775441C9948DAB4785514144BB6FEFA07754413A451E3D4B85514135F95E26A277544185EB51E84B8551410AD7A360A277544164C6C2264C855141387FB620A3775441E5417A004F8551416CCA1BB3AB775441E8F9B26D518551415C88BEAEAF77544116C1A0E354855141BF1CC9FEB377544148E17A345B855141EC51B88EBA775441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>501661 - 3079306
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000049000000F6285CCF3E5951411F85EB018EB65441CDCCCC3C3D5951417B14AE6790B65441D7A3706D3B59514148E17A9494B65441C3F5282C3B595141EC51B82E9CB65441666666A63D5951410AD7A310ACB65441E17A14EE3E595141CDCCCCCCB5B65441713D0AA7445951413D0AD7D3BDB654418FC2F5684859514148E17A54C1B654413D0AD7F3575951417B14AE77CAB65441713D0A9764595141000000C0D2B6544185EB510869595141B81E851BD7B6544114AE47B16F59514114AE47C1D9B654411F85EB317359514166666666DCB65441F6285C1F77595141666666F6DEB65441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000494CF33977595141EC17525DB4B654418C0E7CDA7D5951412EC1E731B6B65441C92613D384595141B3919B7BB7B65441C73ECDC78A595141B71F7D1AB8B6544199F767588E595141B71F7D1AB8B6544185F85E608F59514117753826B8B654419A3CE501905951413A3F662DB8B65441A12909A4915951413BC1FB3FB8B65441791F24B7915951417D21D540B8B65441729AEEC8915951419513BE45B5B654418FEF66CC91595141ADA5A433B3B6544146CE63B99159514168F73387B0B65441A8838C869059514114C7CBE5ABB65441FDBC76919059514115DAB377A7B65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>501661 - 3394869
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000049000000F6285CCF3E5951411F85EB018EB65441CDCCCC3C3D5951417B14AE6790B65441D7A3706D3B59514148E17A9494B65441C3F5282C3B595141EC51B82E9CB65441666666A63D5951410AD7A310ACB65441E17A14EE3E595141CDCCCCCCB5B65441713D0AA7445951413D0AD7D3BDB654418FC2F5684859514148E17A54C1B654413D0AD7F3575951417B14AE77CAB65441713D0A9764595141000000C0D2B6544185EB510869595141B81E851BD7B6544114AE47B16F59514114AE47C1D9B654411F85EB317359514166666666DCB65441F6285C1F77595141666666F6DEB65441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000494CF33977595141EC17525DB4B654418C0E7CDA7D5951412EC1E731B6B65441C92613D384595141B3919B7BB7B65441C73ECDC78A595141B71F7D1AB8B6544199F767588E595141B71F7D1AB8B6544185F85E608F59514117753826B8B654419A3CE501905951413A3F662DB8B65441A12909A4915951413BC1FB3FB8B65441791F24B7915951417D21D540B8B65441729AEEC8915951419513BE45B5B654418FEF66CC91595141ADA5A433B3B6544146CE63B99159514168F73387B0B65441A8838C869059514114C7CBE5ABB65441FDBC76919059514115DAB377A7B65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>502349 - 1070288
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F00000000000070D7F25041E17A14FE8F235441C3F5289CE5F250413D0AD71390235441D7A3704DE5F2504185EB51388E235441295C8F02EAF25041D7A370CD8B23544148E17AB4EDF25041F6285CCF8B23544114AE4781F1F25041B81E85AB8C235441B81E85DBF3F25041C3F5286C8C2354413D0AD743F5F25041EC51B85E8A235441F6285C3FF2F25041D7A370ED842354415C8FC2A5EBF25041E17A141E7D235441EC51B80EEAF250411F85EBF1782354418FC2F5F8E9F250417B14AEE776235441713D0A67EBF2504185EB51785E2354410AD7A350EBF250417B14AE4757235441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000000000070D7F25041E17A14FE8F235441C3F5289CE5F250413D0AD713902354412C6192E8E6F25041751857128F2354413524B234E9F25041DD9D31738D2354411F78C6DAECF25041E881D53B8C2354419FC879F7F0F25041295DDF568B235441B4FD6C04F2F25041FAC5A47D8A235441B4FD6C04F2F2504187623CBE87235441E596C597EFF2504146C3629784235441FAA2A059EBF250418D93CCF17F2354413524B234E9F25041F00A0E737923544191C5E8CCE8F2504164951019732354417AEA053CEAF250415DB7BE6D72235441DFA389C6EAF2504165C7E32E69235441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>502349 - 5257195
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F00000000000070D7F25041E17A14FE8F235441C3F5289CE5F250413D0AD71390235441D7A3704DE5F2504185EB51388E235441295C8F02EAF25041D7A370CD8B23544148E17AB4EDF25041F6285CCF8B23544114AE4781F1F25041B81E85AB8C235441B81E85DBF3F25041C3F5286C8C2354413D0AD743F5F25041EC51B85E8A235441F6285C3FF2F25041D7A370ED842354415C8FC2A5EBF25041E17A141E7D235441EC51B80EEAF250411F85EBF1782354418FC2F5F8E9F250417B14AEE776235441713D0A67EBF2504185EB51785E2354410AD7A350EBF250417B14AE4757235441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F00000000000070D7F25041E17A14FE8F235441C3F5289CE5F250413D0AD713902354412C6192E8E6F25041751857128F2354413524B234E9F25041DD9D31738D2354411F78C6DAECF25041E881D53B8C2354419FC879F7F0F25041295DDF568B235441B4FD6C04F2F25041FAC5A47D8A235441B4FD6C04F2F2504187623CBE87235441E596C597EFF2504146C3629784235441FAA2A059EBF250418D93CCF17F2354413524B234E9F25041F00A0E737923544191C5E8CCE8F2504164951019732354417AEA053CEAF250415DB7BE6D72235441DFA389C6EAF2504165C7E32E69235441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>502359 - 156677
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000035000000B81E858B76EF5041295C8F9221225441D7A3709D76EF50416666666622225441000000D076EF5041000000702322544148E17A4477EF5041295C8FE2232254419A99994989EF5041333333A319225441CDCCCC8C89EF5041AE47E1CA16225441F6285CDF8AEF5041295C8F1213225441CDCCCC1C8CEF5041CDCCCCAC102254417B14AE978EEF5041CDCCCC5C0E22544148E17A5490EF5041666666360C2254410000005092EF50411F85EB510922544152B81EA592EF5041B81E852B07225441CDCCCC7C91EF5041C3F5288C01225441295C8F5291EF504114AE4711FF215441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003700000036C95A8F79EF50419DE0D194222254419A99994989EF5041333333A319225441CDCCCC8C89EF5041AE47E1CA16225441F6285CDF8AEF5041295C8F1213225441CDCCCC1C8CEF5041CDCCCCAC102254417B14AE978EEF5041CDCCCC5C0E22544148E17A5490EF5041666666360C2254410000005092EF50411F85EB510922544152B81EA592EF5041B81E852B07225441CDCCCC7C91EF5041C3F5288C01225441295C8F5291EF504114AE4711FF215441A4703DBA92EF5041AE47E12AFD21544185EB514896EF504114AE47F1F9215441B81E85AB99EF5041F6285C5FF8215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>502359 - 414288
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000035000000B81E858B76EF5041295C8F9221225441D7A3709D76EF50416666666622225441000000D076EF5041000000702322544148E17A4477EF5041295C8FE2232254419A99994989EF5041333333A319225441CDCCCC8C89EF5041AE47E1CA16225441F6285CDF8AEF5041295C8F1213225441CDCCCC1C8CEF5041CDCCCCAC102254417B14AE978EEF5041CDCCCC5C0E22544148E17A5490EF5041666666360C2254410000005092EF50411F85EB510922544152B81EA592EF5041B81E852B07225441CDCCCC7C91EF5041C3F5288C01225441295C8F5291EF504114AE4711FF215441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003700000036C95A8F79EF50419DE0D194222254419A99994989EF5041333333A319225441CDCCCC8C89EF5041AE47E1CA16225441F6285CDF8AEF5041295C8F1213225441CDCCCC1C8CEF5041CDCCCCAC102254417B14AE978EEF5041CDCCCC5C0E22544148E17A5490EF5041666666360C2254410000005092EF50411F85EB510922544152B81EA592EF5041B81E852B07225441CDCCCC7C91EF5041C3F5288C01225441295C8F5291EF504114AE4711FF215441A4703DBA92EF5041AE47E12AFD21544185EB514896EF504114AE47F1F9215441B81E85AB99EF5041F6285C5FF8215441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>224834 - 800588
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002A0000009C17808415FA5041AD01C80E6288544104CF247F12FA50414CA1BEEC6688544110FEF2020DFA50411E1EE03F7088544113462E6409FA504175B2E8D4768854412CB3AB6A07FA504162E4C28F7A885441E8FBA91906FA504143D8EDC77A8854418AD72AC206FA50414DBF80EA78885441716AADBB08FA50419EA550BF74885441CC46F1B10BFA50417B425F976F885441D2E548730DFA504121661BA16C8854413C48774D10FA50412D95E92467885441E5C24FB712FA5041D3B8A52E648854418D6959C713FA5041AAA46FFC618854414CCE613110FA50412A3ECDC461885441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000600000048E17AE421FA504185EB51884C88544148E17A24FFF95041A4703DFA88885441EC51B8FE00FA50416666661689885441295C8F1203FA5041AE47E1AA89885441B81E855B24FA50410AD7A3704D88544148E17AE421FA504185EB51884C885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>224834 - 1109045
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002A0000009C17808415FA5041AD01C80E6288544104CF247F12FA50414CA1BEEC6688544110FEF2020DFA50411E1EE03F7088544113462E6409FA504175B2E8D4768854412CB3AB6A07FA504162E4C28F7A885441E8FBA91906FA504143D8EDC77A8854418AD72AC206FA50414DBF80EA78885441716AADBB08FA50419EA550BF74885441CC46F1B10BFA50417B425F976F885441D2E548730DFA504121661BA16C8854413C48774D10FA50412D95E92467885441E5C24FB712FA5041D3B8A52E648854418D6959C713FA5041AAA46FFC618854414CCE613110FA50412A3ECDC461885441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000600000048E17AE421FA504185EB51884C88544148E17A24FFF95041A4703DFA88885441EC51B8FE00FA50416666661689885441295C8F1203FA5041AE47E1AA89885441B81E855B24FA50410AD7A3704D88544148E17AE421FA504185EB51884C885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>224834 - 3910566
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002A0000009C17808415FA5041AD01C80E6288544104CF247F12FA50414CA1BEEC6688544110FEF2020DFA50411E1EE03F7088544113462E6409FA504175B2E8D4768854412CB3AB6A07FA504162E4C28F7A885441E8FBA91906FA504143D8EDC77A8854418AD72AC206FA50414DBF80EA78885441716AADBB08FA50419EA550BF74885441CC46F1B10BFA50417B425F976F885441D2E548730DFA504121661BA16C8854413C48774D10FA50412D95E92467885441E5C24FB712FA5041D3B8A52E648854418D6959C713FA5041AAA46FFC618854414CCE613110FA50412A3ECDC461885441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000600000048E17AE421FA504185EB51884C88544148E17A24FFF95041A4703DFA88885441EC51B8FE00FA50416666661689885441295C8F1203FA5041AE47E1AA89885441B81E855B24FA50410AD7A3704D88544148E17AE421FA504185EB51884C885441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900018 - 3011957
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001A0000001F85EB4156F65041295C8F9277155441E17A147E55F650417B14AED7761554417B14AEB754F65041CDCCCC8C7715544152B81E7554F650417B14AE4777155441666666E64FF650419A999989721554417B14AEA74FF650415C8FC2D572155441C3F5282C4FF65041AE47E16A7315544185EB51084BF65041EC51B86E781554415C8FC2A545F65041333333F37E1554410000005040F650418FC2F56885155441CDCCCC2C3EF65041F6285CFF871554413D0AD7A33AF65041666666468C155441D7A370FD39F65041000000108D155441CDCCCC1C37F65041AE47E18A90155441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000049000000CDCCCCAC63F65041A4703D2A8A155441D7A3702D65F650418FC2F558881554417B14AEB765F650411F85EBB187155441D7A370ED66F65041AE47E13A86155441F6285C2F6AF65041AE47E14A821554419A9999296EF65041AE47E17A7D155441168E704F6DF650418C2A4A2C7D1554418071AF8D6CF650415ED07DE67C155441666666166CF65041B81E85BB7C1554410C270FBF6BF65041FB9DF1767C1554419C4461696BF650413017AC337C155441EC51B8CE6AF65041A4703DBA7B15544144F31B196AF65041230F662B7B15544123831B8869F6504147EE59B97A155441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900018 - 5257575
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001A0000001F85EB4156F65041295C8F9277155441E17A147E55F650417B14AED7761554417B14AEB754F65041CDCCCC8C7715544152B81E7554F650417B14AE4777155441666666E64FF650419A999989721554417B14AEA74FF650415C8FC2D572155441C3F5282C4FF65041AE47E16A7315544185EB51084BF65041EC51B86E781554415C8FC2A545F65041333333F37E1554410000005040F650418FC2F56885155441CDCCCC2C3EF65041F6285CFF871554413D0AD7A33AF65041666666468C155441D7A370FD39F65041000000108D155441CDCCCC1C37F65041AE47E18A90155441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000049000000CDCCCCAC63F65041A4703D2A8A155441D7A3702D65F650418FC2F558881554417B14AEB765F650411F85EBB187155441D7A370ED66F65041AE47E13A86155441F6285C2F6AF65041AE47E14A821554419A9999296EF65041AE47E17A7D155441168E704F6DF650418C2A4A2C7D1554418071AF8D6CF650415ED07DE67C155441666666166CF65041B81E85BB7C1554410C270FBF6BF65041FB9DF1767C1554419C4461696BF650413017AC337C155441EC51B8CE6AF65041A4703DBA7B15544144F31B196AF65041230F662B7B15544123831B8869F6504147EE59B97A155441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900039 - 3176529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000060000000103000000010000000F0000007B14AE47ECE05041295C8F829C2A5441E17A149EE8E05041B81E851B9A2A5441295C8FD2E2E05041F6285C9F982A5441CDCCCC9CDDE050415C8FC275962A544133333323D9E050410AD7A380A92A544114AE47C1DBE05041713D0A27AA2A5441B81E856BE3E0504185EB5118AA2A5441A4703D7AE7E050411F85EB01AB2A5441000000B0EAE050415C8FC275AB2A544152B81E45F0E0504148E17A14B02A54410AD7A380F1E0504133333393B02A54419A999969F6E05041E17A146EB02A5441B81E853BF7E05041B81E85DBAF2A5441B81E850BF2E050415C8FC2B5A82A5441 [...]
+</a>
+
+<b>
+010600000001000000010300000006000000D60100005EEFE29DD0E150411B64FA052E2A5441E6C82FFECDE15041D5B2921F2B2A54417EE7151ACCE15041D1E699E8272A5441801EB4B2C8E15041B1170AE2242A5441A9277921C8E150412630C25E232A54419824E251C8E15041AD4B11AB212A544139C70AC4C8E15041093D7220212A5441308E401FC7E15041DF5A9C0B202A54417C084F64C4E15041F57DFE481F2A54412BBF8E8BC3E15041E47168C41D2A5441783D017FC2E15041CF8FB7741C2A5441F98682C4C1E15041636D44F81A2A5441D86621AEC1E150417D75FA5D192A5441DB1114B2C1E15041DAFF8226182A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900039 - 5310386
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000060000000103000000010000000F0000007B14AE47ECE05041295C8F829C2A5441E17A149EE8E05041B81E851B9A2A5441295C8FD2E2E05041F6285C9F982A5441CDCCCC9CDDE050415C8FC275962A544133333323D9E050410AD7A380A92A544114AE47C1DBE05041713D0A27AA2A5441B81E856BE3E0504185EB5118AA2A5441A4703D7AE7E050411F85EB01AB2A5441000000B0EAE050415C8FC275AB2A544152B81E45F0E0504148E17A14B02A54410AD7A380F1E0504133333393B02A54419A999969F6E05041E17A146EB02A5441B81E853BF7E05041B81E85DBAF2A5441B81E850BF2E050415C8FC2B5A82A5441 [...]
+</a>
+
+<b>
+010600000001000000010300000006000000D60100005EEFE29DD0E150411B64FA052E2A5441E6C82FFECDE15041D5B2921F2B2A54417EE7151ACCE15041D1E699E8272A5441801EB4B2C8E15041B1170AE2242A5441A9277921C8E150412630C25E232A54419824E251C8E15041AD4B11AB212A544139C70AC4C8E15041093D7220212A5441308E401FC7E15041DF5A9C0B202A54417C084F64C4E15041F57DFE481F2A54412BBF8E8BC3E15041E47168C41D2A5441783D017FC2E15041CF8FB7741C2A5441F98682C4C1E15041636D44F81A2A5441D86621AEC1E150417D75FA5D192A5441DB1114B2C1E15041DAFF8226182A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911023 - 293542
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001700000048E17A94CCF9504148E17AE4879E5441713D0A97BDF95041B81E85BB869E5441000000F0BAF950417B14AE87869E5441B81E85DBBEF95041EC51B8CE899E5441713D0A37C2F950415C8FC2F5919E5441F6285C1FC3F9504185EB5128949E54417B14AE87C3F9504166666626959E544166666616C4F950410AD7A380969E5441B81E857BC5F95041295C8FA2959E5441F6285C1FCFF9504114AE4741909E544148E17A94D8F95041666666868C9E54413D0AD7D3DAF950418FC2F5A88B9E544114AE4701DEF95041EC51B82E8B9E5441CDCCCCDCEBF9504185EB51788D9E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000362017CCD9F95041314A780E8C9E54413D0AD7D3DAF950418FC2F5A88B9E5441C67B7ED4DAF95041E898DCA88B9E5441E67FCB7CDDF950415B37713D8B9E54416A68C78DDDF95041FCB313408B9E544114AE4701DEF95041EC51B82E8B9E544132E6CBDCEBF95041684251788D9E5441FB81C04CEEF950418C41CEFC8C9E54411F85EB21F0F95041EC51B8AE8B9E5441FFC4FCB1EAF95041471B3AE8829E54417B14AE17E7F950417B14AE177D9E544114AE4731DCF950413D0AD783809E5441F048A3F0D2F95041D0A9F56B839E5441F4F8FFEFD2F9504190E7296C839E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900251 - 226076
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000200000001030000000100000014000000666666B65DFB5041295C8F62622954416666666646FB50411F85EB314229544114AE47A144FB5041AE47E1DA3F295441A4703D3A42FB5041B81E855B412954419A9999D940FB504114AE476142295441F6285C2F3FFB50415C8FC28543295441EC51B8FE3CFB504148E17AD444295441713D0A273AFB504185EB513846295441D7A3701D40FB5041295C8FF250295441000000704DFB5041A4703D6A6829544114AE47214EFB50418FC2F5A869295441D7A3707D4FFB50419A99992969295441CDCCCCBC51FB5041CDCCCC7C682954416666667653FB50416666665668295441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000001F85EBC138FB504114AE4731282954411474622B38FB5041B29F472F2A295441E69B882137FB5041070DBB022E295441241AD30E37FB5041775857F32D295441D5FF810C37FB5041A34530FB2D2954414DE4F40737FB5041B0A99A0A2E2954412885A7FA36FB50418D28A9372E2954412015758535FB50419009E330332954411FF8377935FB50413F3D3051332954417B14AE7735FB50416666665633295441C97572B62EFB50411ABB8C9231295441234BC5B939FB504139658B5045295441000000303CFB50418FC2F54844295441CDCCCC9C3EFB50415C8FC20543295441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900342 - 3106511
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000B0000003D0AD753F7EA5041000000F0AC3554411F85EB61F9EA5041F6285CDFB435544166666696FBEA50418FC2F5F8C7355441295C8F52FCEA50417B14AEF7CC3554419A999959FDEA5041D7A3700DD035544166666686FEEA50413D0AD723D33554415C8FC21503EB5041A4703D5ADF3554415C8FC26528EB504114AE4751DE355441E17A14BE34EB50417B14AE57D53554413D0AD7E334EB50417B14AE77AB3554413D0AD753F7EA5041000000F0AC355441
+</a>
+
+<b>
+010600000001000000010300000001000000130000001E4DA916F7EA50411192A624AD355441231567C1F8EA5041C2BDE662B1355441CAB02BAAF9EA50410A583944B935544129DD246CFAEA5041476210D0BD35544189091E2EFBEA5041E498E01DC3355441591E1935FDEA5041AB75D89FCF35544164EA4851FFEA50417EB93343D5355441D38839DB00EB504105763E62D935544193938DC901EB504152AE87E0DB3554413E4B1B3003EB5041ED3E5C59DF3554415ABC3EC428EB504129E3B74EDE355441DDA59B6E31EB504128C183C9D83554417514AE1135EB504163A0D39AD5355441E83517C434EB504120CE3E64CF355441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900702 - 3172806
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000030000000103000000010000003E0000003333333397F450418FC2F5E820385441A4703D1A9BF45041666666B6193854411F85EB119EF450418FC2F5D814385441B81E850B9FF4504185EB51D812385441C3F528DC9FF4504114AE4721113854413D0AD7A3A0F450413D0AD7631038544185EB5128A2F45041EC51B86E0F385441EC51B8CEA3F4504185EB51B80E3854417B14AE87A4F45041C3F5289C0E385441AE47E12AA5F45041333333830E38544148E17AB4A5F4504114AE47810E3854418FC2F558A6F450419A9999990E385441E17A142EA7F45041713D0AC70E38544152B81EF5A7F45041D7A370FD0E385441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000049000000E058615E68F45041D55E44723A385441F4DEE0EA68F45041F58D4CD93A38544158D1D97E6BF45041D46147BD3C3854410C80887574F450413CC2A73D3F3854410B838BC076F4504166EFD4323E385441FB6D766B78F450417701E73C3A385441D7A370ED74F450417B14AEF738385441037A82DF6FF45041FF886E1C3738544148BCC4296DF450415EE3C806353854410AD7A3706CF450419A9999D93338544158D1D97E6BF4504198250B5132385441944C031C6BF450418DD1206F31385441295C8FD26AF45041000000E030385441D0434C096AF45041C34F35FB2E385441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900966 - 1006371
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000D7A3700D6CEF504148E17AB467355441E17A14BE46EF5041F6285CEF63355441CDCCCCAC3BEF5041C3F5285C7D35544152B81E7587EF50416666661685355441AE47E1EA8CEF5041CDCCCC0C7635544148E17A748FEF5041D7A3705D6E35544148E17A7490EF50411F85EB616B355441D7A3700D6CEF504148E17AB467355441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000CDCCCCAC3BEF5041C3F5285C7D355441713D0A2737EF5041000000C08735544185EB51C836EF50419A99990989355441A4703DEA37EF5041713D0A27893554419A9999395DEF5041C3F528EC8C355441C3F5286C83EF504185EB51C890355441C3F5285C86EF5041B81E851B8835544152B81E7587EF50416666661685355441DD990A6981EF504109148B7884355441A4AD091778EF50414E693E8583355441915FBDC167EF50411E0EE1DA813554412F256CF445EF5041224E81687E355441CDCCCCAC3BEF5041C3F5285C7D355441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>900966 - 3407303
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000D7A3700D6CEF504148E17AB467355441E17A14BE46EF5041F6285CEF63355441CDCCCCAC3BEF5041C3F5285C7D35544152B81E7587EF50416666661685355441AE47E1EA8CEF5041CDCCCC0C7635544148E17A748FEF5041D7A3705D6E35544148E17A7490EF50411F85EB616B355441D7A3700D6CEF504148E17AB467355441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000CDCCCCAC3BEF5041C3F5285C7D355441713D0A2737EF5041000000C08735544185EB51C836EF50419A99990989355441A4703DEA37EF5041713D0A27893554419A9999395DEF5041C3F528EC8C355441C3F5286C83EF504185EB51C890355441C3F5285C86EF5041B81E851B8835544152B81E7587EF50416666661685355441DD990A6981EF504109148B7884355441A4AD091778EF50414E693E8583355441915FBDC167EF50411E0EE1DA813554412F256CF445EF5041224E81687E355441CDCCCCAC3BEF5041C3F5285C7D355441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>901538 - 1158003
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000015000000B81E859B77FD5041B81E85CB9D2F544185EB51F879FD504185EB5118A32F5441B81E857B7BFD50410AD7A3C0A32F544185EB51887CFD5041F6285CEFA42F54411F85EBE17FFD5041295C8FF2A32F544152B81EF58CFD5041C3F5288C9F2F54417B14AE5792FD5041333333D39E2F54410AD7A31093FD5041000000509D2F544114AE47F197FD5041B81E856B9C2F5441A4703D1A95FD50417B14AE37892F5441CDCCCCAC93FD50411F85EB21802F54413D0AD75393FD50411F85EB317E2F5441D7A3707D8BFD50417B14AEE77E2F5441E17A148E85FD504148E17A347C2F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002100000038C76F1179FD504122A06B55A02F54416FDAABA57AFD50416A92AD69A32F5441B81E857B7BFD50410AD7A3C0A32F544185EB51887CFD5041F6285CEFA42F54411F85EBE17FFD5041295C8FF2A32F54418E3F95F887FD50412C86BD39A12F5441A20780FD8AFD504166CF9204A02F544152B81EF58CFD5041C3F5288C9F2F54419E5D1FD58DFD5041182EE1629F2F5441CBE7056F8EFD5041540675599F2F54411A00F0B391FD50416B4E2BE99E2F5441F829580492FD50418D24C3989E2F54412197D39192FD5041FDE15F559D2F5441AA45278294FD5041CDA2620C9D2F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>901538 - 5255631
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000015000000B81E859B77FD5041B81E85CB9D2F544185EB51F879FD504185EB5118A32F5441B81E857B7BFD50410AD7A3C0A32F544185EB51887CFD5041F6285CEFA42F54411F85EBE17FFD5041295C8FF2A32F544152B81EF58CFD5041C3F5288C9F2F54417B14AE5792FD5041333333D39E2F54410AD7A31093FD5041000000509D2F544114AE47F197FD5041B81E856B9C2F5441A4703D1A95FD50417B14AE37892F5441CDCCCCAC93FD50411F85EB21802F54413D0AD75393FD50411F85EB317E2F5441D7A3707D8BFD50417B14AEE77E2F5441E17A148E85FD504148E17A347C2F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002100000038C76F1179FD504122A06B55A02F54416FDAABA57AFD50416A92AD69A32F5441B81E857B7BFD50410AD7A3C0A32F544185EB51887CFD5041F6285CEFA42F54411F85EBE17FFD5041295C8FF2A32F54418E3F95F887FD50412C86BD39A12F5441A20780FD8AFD504166CF9204A02F544152B81EF58CFD5041C3F5288C9F2F54419E5D1FD58DFD5041182EE1629F2F5441CBE7056F8EFD5041540675599F2F54411A00F0B391FD50416B4E2BE99E2F5441F829580492FD50418D24C3989E2F54412197D39192FD5041FDE15F559D2F5441AA45278294FD5041CDA2620C9D2F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911967 - 410306
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000D7000000C3F528BC34E25041E17A140EFDA65441CDCCCC9C24E250418FC2F54800A75441C3F528FC25E2504114AE47D105A754417B14AE1726E250417B14AEA70AA754411F85EB7125E25041666666260DA75441295C8F7222E25041D7A3703D14A754415C8FC21520E250413333333316A7544114AE47911CE25041E17A146E16A754410AD7A3F019E25041E17A145E16A7544185EB51F818E25041A4703DBA17A75441713D0AC71DE25041B81E851B24A7544185EB51B81FE25041EC51B84E26A75441295C8F4223E250410000006028A754411F85EBF126E25041D7A370FD28A75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000077010000C3F528FC25E2504114AE47D105A754410721E6FE25E25041CF48884C06A754419C40E42826E25041619D55BA0AA754412622F61525E25041CA27F91F14A75441917CC84325E250410BDD190116A75441698404213FE25041AD70E8280CA75441AA75091D40E250414845EF2712A75441B91567AD2DE25041DB3860BF1AA754418A41DC3329E25041E6DE09171CA7544112407D0626E2504181448D331CA75441EDC0520324E25041A2B92B8028A754411F85EBF126E25041D7A370FD28A75441B29D92A52EE250412B64936828A754410000006036E25041333333D327A75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911973 - 410313
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000020000000103000000010000001F000000C3F5281CE7E650418FC2F54821AA5441295C8F02F2E650410AD7A3B027AA544185EB51C8F4E650410AD7A3E029AA5441C3F528FCF7E6504148E17AE42AAA5441C3F5281CFBE650410AD7A3702BAA544185EB5178F9E650410AD7A3502DAA5441EC51B89EFBE650416666661630AA5441295C8F92FDE650410AD7A3C030AA544185EB51B8FFE65041AE47E11A31AA5441F6285CEF00E750411F85EBC131AA544148E17A2403E7504114AE472132AA54416666669603E75041666666362EAA54416666668604E75041AE47E1BA2CAA544148E17AA404E750410AD7A3102CAA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004000000066666666EEE550416666668615AA544159E3563AEEE55041A0C9B25D14AA5441D2306515ECE55041846E69E013AA54412F6CAA4AE7E5504139D76EC812AA5441E6ECF8D8E8E550413936319115AA5441D1A825B9E1E550419D23DD4D16AA544167468168E5E55041D2FFD1E31AAA544151AE5FF2E7E55041FC3133481CAA5441794A1E85E8E550411EBFB9581DAA5441B9D9233AE6E55041054624A81EAA5441070E223DE6E55041B0660FAF1EAA5441E5E81A4AE6E55041E22D04A81EAA5441534B69AAE7E550411B476CFB21AA54410B0B8F8EE8E55041B8B3CC0A24AA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911973 - 410314
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000020000000103000000010000001F000000C3F5281CE7E650418FC2F54821AA5441295C8F02F2E650410AD7A3B027AA544185EB51C8F4E650410AD7A3E029AA5441C3F528FCF7E6504148E17AE42AAA5441C3F5281CFBE650410AD7A3702BAA544185EB5178F9E650410AD7A3502DAA5441EC51B89EFBE650416666661630AA5441295C8F92FDE650410AD7A3C030AA544185EB51B8FFE65041AE47E11A31AA5441F6285CEF00E750411F85EBC131AA544148E17A2403E7504114AE472132AA54416666669603E75041666666362EAA54416666668604E75041AE47E1BA2CAA544148E17AA404E750410AD7A3102CAA5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000030000000BED4A5D9D8E550415AA9F3973CAA5441AC09DAAEDBE55041B367472044AA5441E4CDA984DBE5504137307D8F42AA54415D2395BADBE5504119F2FA7642AA5441A4703DBADBE55041EC51B85E42AA5441F672485BDDE550411B2B92B941AA5441E61ACD98DDE550413FB09B9D41AA5441607476B6DFE550416D178F013FAA544166666656E0E55041AE47E13A3EAA544166B75A57E0E55041363C203B3EAA54414E9B716EE0E550412A23A61E3EAA5441BA8B49F1E1E55041F5C4AB793EAA5441ADFAE565E5E55041C8175F363BAA5441D63546DAE9E550416B7C900137AA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911975 - 207995
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000005C000000A4703D8ADBE1504114AE47F10BA8544166666636DAE15041CDCCCCBC14A854411F85EBD1DCE150411F85EBA11DA8544166666676DEE150417B14AE6722A854418FC2F518E0E15041EC51B82E25A854417B14AE27E4E15041A4703DEA26A8544148E17A34E6E15041D7A3709D25A85441EC51B8AEE3E1504185EB516823A85441AE47E1CAE1E150410AD7A38022A854413D0AD773E0E15041666666A620A854413D0AD783E1E15041A4703DAA1FA854411F85EB31E4E15041666666961FA854419A9999E9E6E150413333332320A8544152B81E65E9E1504185EB519821A85441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000B7000000F44B5451DAE150418B1C630A14A8544128B5DB63DAE150414565A4B114A85441900258F8DAE15041922F675217A854411F85EBD1DCE150411F85EBA11DA8544160FE2C91DDE150412587A3CD1FA854412B690771DEE15041C32D3C3522A85441EC1CFF35E0E150411879382E25A854419773861AE4E1504120C911E126A85441B6CC641BE6E15041C32D59AD25A8544148E17A34E6E15041D7A3709D25A85441767059CCE5E15041B113504225A854414FFD0BABE3E15041A8A4F18923A85441505502D0E1E150413C29978C22A85441D8EBA573E0E1504132818DB120A85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911975 - 263105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000005C000000A4703D8ADBE1504114AE47F10BA8544166666636DAE15041CDCCCCBC14A854411F85EBD1DCE150411F85EBA11DA8544166666676DEE150417B14AE6722A854418FC2F518E0E15041EC51B82E25A854417B14AE27E4E15041A4703DEA26A8544148E17A34E6E15041D7A3709D25A85441EC51B8AEE3E1504185EB516823A85441AE47E1CAE1E150410AD7A38022A854413D0AD773E0E15041666666A620A854413D0AD783E1E15041A4703DAA1FA854411F85EB31E4E15041666666961FA854419A9999E9E6E150413333332320A8544152B81E65E9E1504185EB519821A85441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000B7000000F44B5451DAE150418B1C630A14A8544128B5DB63DAE150414565A4B114A85441900258F8DAE15041922F675217A854411F85EBD1DCE150411F85EBA11DA8544160FE2C91DDE150412587A3CD1FA854412B690771DEE15041C32D3C3522A85441EC1CFF35E0E150411879382E25A854419773861AE4E1504120C911E126A85441B6CC641BE6E15041C32D59AD25A8544148E17A34E6E15041D7A3709D25A85441767059CCE5E15041B113504225A854414FFD0BABE3E15041A8A4F18923A85441505502D0E1E150413C29978C22A85441D8EBA573E0E1504132818DB120A85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911977 - 208020
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000770000005C8FC27534E35041C3F528FC19A9544148E17AD434E35041CDCCCCBC19A95441295C8F3238E35041A4703D9A1AA954411F85EB113CE35041EC51B8AE18A954411F85EB813FE35041295C8F5201A954415C8FC26542E35041295C8F4202A95441E17A140E45E35041AE47E10A03A9544152B81E6546E35041EC51B8BE03A954417B14AEB748E350413D0AD773FEA8544148E17AB449E35041E17A140EFDA85441CDCCCC3C4AE35041C3F5283CF9A85441CDCCCC3C4AE35041713D0A27F6A85441E17A14DE49E35041F6285C3FF5A85441CDCCCC5C47E35041AE47E12AF2A85441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000021010000070420771EE35041EC5F9CF012A954418FC2F5B81EE350413333339313A95441874FDBA71EE350414FD446A413A954414C21D0A81EE35041AB70CDA713A954414E93A9261DE35041A9FEF32915A9544176444FD61DE350414963FC7315A954411CD92E591FE35041D894F1F415A95441D6A20F1121E3504131E0BA4816A95441FE567F0D21E35041E2842B5116A95441AE47E11A21E350413D0AD75316A95441A3308BAD20E35041A7326C3417A95441ECEDB06220E350411F46B3E517A954419617AD7120E35041B3910E0A18A954412BE7D27420E350417AA0B11118A95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911977 - 373518
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000770000005C8FC27534E35041C3F528FC19A9544148E17AD434E35041CDCCCCBC19A95441295C8F3238E35041A4703D9A1AA954411F85EB113CE35041EC51B8AE18A954411F85EB813FE35041295C8F5201A954415C8FC26542E35041295C8F4202A95441E17A140E45E35041AE47E10A03A9544152B81E6546E35041EC51B8BE03A954417B14AEB748E350413D0AD773FEA8544148E17AB449E35041E17A140EFDA85441CDCCCC3C4AE35041C3F5283CF9A85441CDCCCC3C4AE35041713D0A27F6A85441E17A14DE49E35041F6285C3FF5A85441CDCCCC5C47E35041AE47E12AF2A85441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000021010000070420771EE35041EC5F9CF012A954418FC2F5B81EE350413333339313A95441874FDBA71EE350414FD446A413A954414C21D0A81EE35041AB70CDA713A954414E93A9261DE35041A9FEF32915A9544176444FD61DE350414963FC7315A954411CD92E591FE35041D894F1F415A95441D6A20F1121E3504131E0BA4816A95441FE567F0D21E35041E2842B5116A95441AE47E11A21E350413D0AD75316A95441A3308BAD20E35041A7326C3417A95441ECEDB06220E350411F46B3E517A954419617AD7120E35041B3910E0A18A954412BE7D27420E350417AA0B11118A95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911980 - 208018
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000002A0000007B14AE077AE35041B81E853B6CA95441333333D37BE35041B81E853B6CA95441C3F528EC7CE35041713D0A576CA95441CDCCCC1C80E35041000000E06CA954415C8FC26581E350419A9999C96DA95441AE47E1DA84E350419A9999396DA954411F85EBF186E3504148E17A046CA954419A99998986E35041CDCCCC1C5EA954411F85EB5185E35041D7A370AD55A95441CDCCCC3C85E35041AE47E15A54A9544185EB519883E35041B81E85BB54A95441F6285CCF80E35041713D0A1754A95441CDCCCC8C7FE35041B81E853B53A9544114AE47917DE35041B81E851B52A95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000004C000000EEE824547AE35041B81E853B6CA95441CE970FB57BE350411CB6CE1E6CA954410C32D3BA7BE35041B81E853B6CA95441333333D37BE35041B81E853B6CA954414FBFD9807CE350411770874C6CA9544184750EAF7CE350411770874C6CA95441F9FFC6597EE35041E93A7D896CA954414F0967AA7FE350411070D0CC6CA95441CDCCCC1C80E35041000000E06CA954415C8FC26581E350419A9999C96DA954419EE68BA184E35041BA75ED426DA95441E67BE80285E35041024479226DA95441F51F941786E35041EC82A0826CA95441237D83CD86E35041038A83196CA95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>911980 - 394239
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000002A0000007B14AE077AE35041B81E853B6CA95441333333D37BE35041B81E853B6CA95441C3F528EC7CE35041713D0A576CA95441CDCCCC1C80E35041000000E06CA954415C8FC26581E350419A9999C96DA95441AE47E1DA84E350419A9999396DA954411F85EBF186E3504148E17A046CA954419A99998986E35041CDCCCC1C5EA954411F85EB5185E35041D7A370AD55A95441CDCCCC3C85E35041AE47E15A54A9544185EB519883E35041B81E85BB54A95441F6285CCF80E35041713D0A1754A95441CDCCCC8C7FE35041B81E853B53A9544114AE47917DE35041B81E851B52A95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000004C000000EEE824547AE35041B81E853B6CA95441CE970FB57BE350411CB6CE1E6CA954410C32D3BA7BE35041B81E853B6CA95441333333D37BE35041B81E853B6CA954414FBFD9807CE350411770874C6CA9544184750EAF7CE350411770874C6CA95441F9FFC6597EE35041E93A7D896CA954414F0967AA7FE350411070D0CC6CA95441CDCCCC1C80E35041000000E06CA954415C8FC26581E350419A9999C96DA954419EE68BA184E35041BA75ED426DA95441E67BE80285E35041024479226DA95441F51F941786E35041EC82A0826CA95441237D83CD86E35041038A83196CA95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>548942 - 968098
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000009B000000B7DB408F650F51418B9918F82B3C5541EDBF900F610F5141BCB393EB273C5541C779DC6F5E0F51418479FBE1273C5541142F80365B0F51411171B43B263C5541BDF4A3A3560F514167C34222243C5541CD4E5F3D520F51412BF89C37223C554192BFF2CA4F0F51412685FDC2263C55414D9E1455520F51419D9BC977293C554103C4B6F9550F514147DD152F2D3C55416B8DA1A2580F5141C8DF600B303C5541DCBEC25C5B0F5141D912E0442C3C5541ECE431A35C0F514137C4571B2B3C554193B3AA5C5E0F5141268A82DB283C55419C50957C5F0F5141BFFD1EB5283C5541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000700000003115A2C5790F51419EF59FD19F3C55411B9C75A7790F51417F3569A39D3C55412E3A36AD790F514101DC5C309D3C5541C458D9CD790F51414E789EA39A3C554112CE18687B0F5141A57205EE983C554194E71ED07B0F51411A02107F983C5541668740927D0F51416C24EC9E963C55412F10E65D7E0F5141F053705C953C554142D434A07E0F51417422D50F933C5541E5F658937E0F514115F00F318F3C554128FD64007E0F5141AC11DC1C8C3C554127FBEF767D0F5141E806973B893C5541478F6B1A7D0F514138675C4B873C554197C6BA227D0F514111C95073863C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>913934 - 1025227
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B000000E17A148E570651410AD7A32067BA54415C8FC20562065141EC51B85E66BA5441F6285CFF6B06514152B81E4565BA5441A4703DAA6D0651415C8FC21565BA54417B14AE277B06514114AE47A163BA5441D7A3703D81065141A4703D8A62BA5441E17A14AE9A0651411F85EBF15CBA54415C8FC2059B065141E17A14DE5CBA5441F6285CEF9F065141F6285CBF5BBA5441713D0A07A1065141A4703D3A5ABA544152B81E15A006514114AE471151BA54415C8FC235990651410AD7A39050BA54413D0AD7B398065141333333A350BA54419A9999C987065141B81E858B51BA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006E00000012C7DF787D0651416214536252BA54419A9999E980065141713D0A1752BA5441DF2C86FE8306514112F57FD851BA544136058ECF86065141147E579F51BA54419A9999C987065141B81E858B51BA544128552CDC96065141825581BC50BA544152B81EE596065141AE47E1CA4FBA5441E17A14AE9A065141CDCCCC9C4FBA5441666666F69F065141A4703DEA4FBA5441000000B08C065141F6285CAF2EBA54417B14AEC78D065141AE47E14A24BA5441AE47E1FA87065141AE47E1FA23BA544114AE47217906514185EB517824BA54410000003063065141F6285C4F26BA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>913934 - 3435350
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002B000000E17A148E570651410AD7A32067BA54415C8FC20562065141EC51B85E66BA5441F6285CFF6B06514152B81E4565BA5441A4703DAA6D0651415C8FC21565BA54417B14AE277B06514114AE47A163BA5441D7A3703D81065141A4703D8A62BA5441E17A14AE9A0651411F85EBF15CBA54415C8FC2059B065141E17A14DE5CBA5441F6285CEF9F065141F6285CBF5BBA5441713D0A07A1065141A4703D3A5ABA544152B81E15A006514114AE471151BA54415C8FC235990651410AD7A39050BA54413D0AD7B398065141333333A350BA54419A9999C987065141B81E858B51BA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006E00000012C7DF787D0651416214536252BA54419A9999E980065141713D0A1752BA5441DF2C86FE8306514112F57FD851BA544136058ECF86065141147E579F51BA54419A9999C987065141B81E858B51BA544128552CDC96065141825581BC50BA544152B81EE596065141AE47E1CA4FBA5441E17A14AE9A065141CDCCCC9C4FBA5441666666F69F065141A4703DEA4FBA5441000000B08C065141F6285CAF2EBA54417B14AEC78D065141AE47E14A24BA5441AE47E1FA87065141AE47E1FA23BA544114AE47217906514185EB517824BA54410000003063065141F6285C4F26BA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>902413 - 233466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000030000000F000000295C8FA2D8B45041CDCCCC3CF7265441CDCCCC0CDAB450418FC2F5C8EC26544100000040D2B45041A4703D7AEC265441CDCCCCBCCCB45041295C8FC215275441C3F5281CCAB45041E17A146E29275441AE47E1FAC9B45041000000B02A27544100000010D0B45041295C8FD22A275441EC51B8AED1B4504152B81E5529275441000000F0D1B45041713D0A5728275441E17A144ED4B45041D7A370FD162754413333335308B5504185EB515830275441CDCCCC3C07B5504185EB51381B275441000000E0D6B450417B14AE2704275441295C8F52D8B45041E17A148EF9265441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000EC51B84EF0B4504185EB511813275441E4037131EFB45041845FD1D111275441118EDF87EFB45041C1D3EEE90F275441D15BA726EEB4504101CD79410F275441A0CEB1A8EBB45041818A38110E275441A81FDA61E7B4504176CE11070C27544141F34AFCE2B45041C9D244EE0927544125ADD584E2B450419E074CB509275441000000E0D6B450417B14AE2704275441E383A726D4B45041B0D45AAC16275441D7CF2BE1E3B45041DE69C8941E27544181182C2CE8B45041E40F72AC202754419A999949F2B450418FC2F5A816275441713D0AB7F1B4504152B81E6516275441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>902413 - 340321
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000030000000F000000295C8FA2D8B45041CDCCCC3CF7265441CDCCCC0CDAB450418FC2F5C8EC26544100000040D2B45041A4703D7AEC265441CDCCCCBCCCB45041295C8FC215275441C3F5281CCAB45041E17A146E29275441AE47E1FAC9B45041000000B02A27544100000010D0B45041295C8FD22A275441EC51B8AED1B4504152B81E5529275441000000F0D1B45041713D0A5728275441E17A144ED4B45041D7A370FD162754413333335308B5504185EB515830275441CDCCCC3C07B5504185EB51381B275441000000E0D6B450417B14AE2704275441295C8F52D8B45041E17A148EF9265441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000EC51B84EF0B4504185EB511813275441E4037131EFB45041845FD1D111275441118EDF87EFB45041C1D3EEE90F275441D15BA726EEB4504101CD79410F275441A0CEB1A8EBB45041818A38110E275441A81FDA61E7B4504176CE11070C27544141F34AFCE2B45041C9D244EE0927544125ADD584E2B450419E074CB509275441000000E0D6B450417B14AE2704275441E383A726D4B45041B0D45AAC16275441D7CF2BE1E3B45041DE69C8941E27544181182C2CE8B45041E40F72AC202754419A999949F2B450418FC2F5A816275441713D0AB7F1B4504152B81E6516275441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13600 - 3101259
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002A000000CDCCCC3C0B1F5141C3F5287C672155417B14AEA70A1F5141A4703DAA5C215541A0E0F5AD0B1F514139E2E462572155415DC753A60A1F5141143AB1B556215541A7C9DA5BFD1E5141EAC2332E5C2155419F9825ACFE1E5141E3917E7E5D2155416A9A7C32031F51417347C3335D2155412520463C071F514161E8E95E672155419350DE69041F514102A74D1F69215541093FBDD5011F5141CB8E81886A215541D0AD9D95FF1E51418CE1242068215541A68D170EFB1E51415FB01F4E5F215541C3F5284CF91E514152B81E455D215541CDCCCCCCF31E51418FC2F5A85F215541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006D00000044BC3D81CC1E51414860598C75215541BDF9F594CD1E5141BA8BA89874215541B1AE13B4CF1E51414A34D5FE72215541977DE5E4CF1E51418095FED9722155414D98FC4FD01E51413DA42F89722155410DDB1C35D21E5141CA671E1B712155416FE9DD25D41E514179E67CEE6F2155415DC007C3D51E514171FF71F46E215541B720CD2BD71E5141D3301C1A6E215541BC9858F1DC1E5141CE1E4FFD6B21554107B0006EE11E514176915E566A215541C2D88732E81E51419B8A724B672155417A331775E91E5141B7126FA7662155418B91134BED1E5141C07A1EB464215541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13600 - 3462629
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002A000000CDCCCC3C0B1F5141C3F5287C672155417B14AEA70A1F5141A4703DAA5C215541A0E0F5AD0B1F514139E2E462572155415DC753A60A1F5141143AB1B556215541A7C9DA5BFD1E5141EAC2332E5C2155419F9825ACFE1E5141E3917E7E5D2155416A9A7C32031F51417347C3335D2155412520463C071F514161E8E95E672155419350DE69041F514102A74D1F69215541093FBDD5011F5141CB8E81886A215541D0AD9D95FF1E51418CE1242068215541A68D170EFB1E51415FB01F4E5F215541C3F5284CF91E514152B81E455D215541CDCCCCCCF31E51418FC2F5A85F215541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000060000000EB6565CC061F5141616B9B747A2155416F51A83D0B1F51411EB3B24F7F215541AE47E19A0B1F5141713D0AE77E215541CDCCCC6C0C1F5141000000007D215541BDE1BC750C1F514151F2AECD7C215541ABFF9CC00C1F5141618C29287B215541B6DD5DD30C1F5141089B4F4278215541D05584C20C1F51414D31A27477215541CC36C39B0C1F5141A157939B75215541B99FDB850C1F5141C4E73190742155418B3579620C1F5141D8BC45E072215541FCC4643F0C1F5141726111347121554173E5A0100C1F51410EE239F96E21554131772FD00B1F5141A2DA98E66B215541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>502897 - 1549119
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3E05AFD504133333333CEFB5441D7A3701D5EFD5041CDCCCC7CCEFB54413D0AD7C35FFD5041E17A141ECDFB5441B81E85EB60FD5041333333B3C0FB544148E17A5460FD5041F6285C3FB1FB5441666666A661FD50417B14AE07ACFB54419A99990953FD5041D7A3707DA9FB544152B81EA556FD5041E17A14FEC5FB54410AD7A33059FD5041AE47E1EACCFB54410AD7A3E05AFD504133333333CEFB5441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000EEC401EE57FD50415007FD7CC9FB5441FA3E368559FD50415007FD7CC9FB5441D02D550C5AFD504157368926BAFB5441152FB69E58FD504118F97B2EBAFB5441BDBAB10758FD5041CE3AA0E7C7FB54412D1EE57157FD504120F5462BC8FB5441EEC401EE57FD50415007FD7CC9FB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>502897 - 3214904
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3E05AFD504133333333CEFB5441D7A3701D5EFD5041CDCCCC7CCEFB54413D0AD7C35FFD5041E17A141ECDFB5441B81E85EB60FD5041333333B3C0FB544148E17A5460FD5041F6285C3FB1FB5441666666A661FD50417B14AE07ACFB54419A99990953FD5041D7A3707DA9FB544152B81EA556FD5041E17A14FEC5FB54410AD7A33059FD5041AE47E1EACCFB54410AD7A3E05AFD504133333333CEFB5441
+</a>
+
+<b>
+01060000000100000001030000000100000007000000EEC401EE57FD50415007FD7CC9FB5441FA3E368559FD50415007FD7CC9FB5441D02D550C5AFD504157368926BAFB5441152FB69E58FD504118F97B2EBAFB5441BDBAB10758FD5041CE3AA0E7C7FB54412D1EE57157FD504120F5462BC8FB5441EEC401EE57FD50415007FD7CC9FB5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>516080 - 1441960
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D0000009A9999F9AAF1504152B81E4599105541CDCCCC0CAEF15041AE47E1FAA01055419A9999B9AEF15041C3F528ACA21055410AD7A370AEF1504152B81E95A410554133333373B3F1504148E17A44B0105541295C8F12B4F150413D0AD703B010554185EB51B8C2F150413D0AD723A8105541A4703D1ABDF15041CDCCCCCCA110554185EB51A8B7F15041F6285C8F9F10554148E17AF4B5F1504185EB51B89C105541000000B0B4F150410AD7A3B098105541D7A370BDB4F15041C3F5282C94105541AE47E1FAB5F1504185EB51F88F105541B81E851BB7F15041D7A3709D8E105541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000046000000B81E851BB7F15041D7A3709D8E1055413D0AD7C3B7F150415C8FC2858C105541295C8FB2B7F15041AE47E1DA8B105541C3F5284CB7F15041AE47E1DA8A1055411F85EBB1B5F15041E17A141E88105541E17A147EB3F150410AD7A36084105541F13A8DB4B1F150416BB0DB2F81105541BF504B60B0F1504149090C3E7F105541AC3EDBBBAFF1504169BA3B377E105541C5193003AEF1504154F265D97B105541781C8E57ABF15041F2933E31781055415C8FC235AAF15041295C8FD276105541FFD66B42A9F15041CCE42E70751055413B55D993A8F150414B66E3D075105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>516080 - 3352630
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D0000009A9999F9AAF1504152B81E4599105541CDCCCC0CAEF15041AE47E1FAA01055419A9999B9AEF15041C3F528ACA21055410AD7A370AEF1504152B81E95A410554133333373B3F1504148E17A44B0105541295C8F12B4F150413D0AD703B010554185EB51B8C2F150413D0AD723A8105541A4703D1ABDF15041CDCCCCCCA110554185EB51A8B7F15041F6285C8F9F10554148E17AF4B5F1504185EB51B89C105541000000B0B4F150410AD7A3B098105541D7A370BDB4F15041C3F5282C94105541AE47E1FAB5F1504185EB51F88F105541B81E851BB7F15041D7A3709D8E105541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000046000000B81E851BB7F15041D7A3709D8E1055413D0AD7C3B7F150415C8FC2858C105541295C8FB2B7F15041AE47E1DA8B105541C3F5284CB7F15041AE47E1DA8A1055411F85EBB1B5F15041E17A141E88105541E17A147EB3F150410AD7A36084105541F13A8DB4B1F150416BB0DB2F81105541BF504B60B0F1504149090C3E7F105541AC3EDBBBAFF1504169BA3B377E105541C5193003AEF1504154F265D97B105541781C8E57ABF15041F2933E31781055415C8FC235AAF15041295C8FD276105541FFD66B42A9F15041CCE42E70751055413B55D993A8F150414B66E3D075105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>516351 - 3100958
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002C000000000000F03AF55041B81E851B4E1155415C8FC2C530F55041F6285C0F4C1155415C8FC2452DF550417B14AE774B11554148E17AC422F55041666666564A115541713D0A771FF55041B81E852B4A115541EC51B8DE1CF5504114AE47A14A115541AE47E1CA1CF5504114AE47A1511155415C8FC2E51CF55041F6285C2F5511554185EB51081DF550415C8FC2355611554185EB51081DF550416666667658115541A4703DDA1DF55041B81E851B5D115541333333431EF550419A9999395F1155419A9999491FF5504114AE4751601155411F85EBE121F55041D7A3705D62115541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000E233019C36F55041D51C096B7D115541AEA38A0B34F55041076164B5741155418FD23D5430F55041879D591668115541F6285CFF2DF550410AD7A3706B11554185EB51182DF55041C3F5283C6F115541F6285CDF2CF55041713D0A07711155419A9999D92CF550411F85EBB173115541E17A142E2DF5504152B81EF575115541C3F5289C2DF550411F85EB1178115541EC51B85E2EF55041000000C0791155415C8FC27530F55041F6285CFF7E115541E233019C36F55041D51C096B7D115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>516351 - 3454588
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002C000000000000F03AF55041B81E851B4E1155415C8FC2C530F55041F6285C0F4C1155415C8FC2452DF550417B14AE774B11554148E17AC422F55041666666564A115541713D0A771FF55041B81E852B4A115541EC51B8DE1CF5504114AE47A14A115541AE47E1CA1CF5504114AE47A1511155415C8FC2E51CF55041F6285C2F5511554185EB51081DF550415C8FC2355611554185EB51081DF550416666667658115541A4703DDA1DF55041B81E851B5D115541333333431EF550419A9999395F1155419A9999491FF5504114AE4751601155411F85EBE121F55041D7A3705D62115541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C000000E233019C36F55041D51C096B7D115541AEA38A0B34F55041076164B5741155418FD23D5430F55041879D591668115541F6285CFF2DF550410AD7A3706B11554185EB51182DF55041C3F5283C6F115541F6285CDF2CF55041713D0A07711155419A9999D92CF550411F85EBB173115541E17A142E2DF5504152B81EF575115541C3F5289C2DF550411F85EB1178115541EC51B85E2EF55041000000C0791155415C8FC27530F55041F6285CFF7E115541E233019C36F55041D51C096B7D115541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507328 - 51572
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000034000000EC51B80E4EFD50410AD7A3F067495441AE47E16A49FD50410AD7A3D06949544148E17AC444FD504114AE47A16B495441D7A3702D3EFD50415C8FC2156E495441E17A14BE38FD5041F6285C6F704954413333330332FD5041EC51B8BE74495441333333D32AFD504185EB51687949544148E17AF423FD50418FC2F5987E4954418FC2F5E81AFD504114AE47F184495441333333931FFD50418FC2F52886495441E17A147E24FD50416666668686495441EC51B82E2AFD5041EC51B80E87495441F6285C2F30FD5041D7A3704D87495441295C8F5234FD504114AE474187495441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000048000000C0B3EC0660FD50419F20615CA24954411228475F62FD50410518FB93A0495441170CDF9961FD50412A44AF6FA04954413D891E0E61FD504198D4D830A0495441F766F9345FFD5041434FD1D99E4954413F05AA525BFD5041D45F320A9C495441068647FB55FD504170790D3E9849544147A1442851FD50412752CE9D94495441647C8E6B4BFD5041375A669790495441B6F5712248FD50416558285F8E495441CE8B3AD646FD5041E03B37C88D4954418108E4FA44FD504124A136E48C495441A6E7CBE743FD50413EAEB71F8C49544168CCDB4B42FD50410A6C90DF8A495441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507328 - 85356
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000034000000EC51B80E4EFD50410AD7A3F067495441AE47E16A49FD50410AD7A3D06949544148E17AC444FD504114AE47A16B495441D7A3702D3EFD50415C8FC2156E495441E17A14BE38FD5041F6285C6F704954413333330332FD5041EC51B8BE74495441333333D32AFD504185EB51687949544148E17AF423FD50418FC2F5987E4954418FC2F5E81AFD504114AE47F184495441333333931FFD50418FC2F52886495441E17A147E24FD50416666668686495441EC51B82E2AFD5041EC51B80E87495441F6285C2F30FD5041D7A3704D87495441295C8F5234FD504114AE474187495441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000048000000C0B3EC0660FD50419F20615CA24954411228475F62FD50410518FB93A0495441170CDF9961FD50412A44AF6FA04954413D891E0E61FD504198D4D830A0495441F766F9345FFD5041434FD1D99E4954413F05AA525BFD5041D45F320A9C495441068647FB55FD504170790D3E9849544147A1442851FD50412752CE9D94495441647C8E6B4BFD5041375A669790495441B6F5712248FD50416558285F8E495441CE8B3AD646FD5041E03B37C88D4954418108E4FA44FD504124A136E48C495441A6E7CBE743FD50413EAEB71F8C49544168CCDB4B42FD50410A6C90DF8A495441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507333 - 3115326
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002E000000EC51B8DEEEFC5041CDCCCC4C1749544133333323F0FC504152B81E2515495441D7A3703D09FD504114AE474104495441EC51B84E0CFD5041295C8F2202495441EC51B87E11FD5041A4703D2AFE4854413D0AD76313FD5041EC51B87EFC485441EC51B8BE14FD5041713D0A47FB4854419A99993917FD5041B81E85CBF84854410AD7A3F018FD5041666666E6F6485441713D0A571AFD5041F6285C2FF5485441EC51B8CE1BFD5041CDCCCC4CF3485441295C8F621CFD5041295C8FC2F2485441F6285C0F1DFD5041713D0AF7F1485441F6285C4F1FFD50418FC2F528EF485441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000FB897C3DE0FC5041312F554B0249544169CFD98705FD5041FDB09E74CD485441CD54C1350AFD5041D7399121CD485441EB1DF25B0EFD5041C1EF81C3CC485441A8DF9BC515FD5041551853E2CC485441BB932F1319FD5041A1334920CD4854410B6754F51DFD5041C2E6C991CD485441959C63D81FFD50418F61E494CD485441E619E20C20FD504110C437BCCC485441523A65931DFD5041AEAE4DAECA4854417BD542021AFD504190190008C94854415C37095214FD5041BF48D645C8485441323BBC8A06FD5041EE77AC83C7485441CF59DBD1FDFC5041762A5063C7485441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507333 - 3383970
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002E000000EC51B8DEEEFC5041CDCCCC4C1749544133333323F0FC504152B81E2515495441D7A3703D09FD504114AE474104495441EC51B84E0CFD5041295C8F2202495441EC51B87E11FD5041A4703D2AFE4854413D0AD76313FD5041EC51B87EFC485441EC51B8BE14FD5041713D0A47FB4854419A99993917FD5041B81E85CBF84854410AD7A3F018FD5041666666E6F6485441713D0A571AFD5041F6285C2FF5485441EC51B8CE1BFD5041CDCCCC4CF3485441295C8F621CFD5041295C8FC2F2485441F6285C0F1DFD5041713D0AF7F1485441F6285C4F1FFD50418FC2F528EF485441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000FB897C3DE0FC5041312F554B0249544169CFD98705FD5041FDB09E74CD485441CD54C1350AFD5041D7399121CD485441EB1DF25B0EFD5041C1EF81C3CC485441A8DF9BC515FD5041551853E2CC485441BB932F1319FD5041A1334920CD4854410B6754F51DFD5041C2E6C991CD485441959C63D81FFD50418F61E494CD485441E619E20C20FD504110C437BCCC485441523A65931DFD5041AEAE4DAECA4854417BD542021AFD504190190008C94854415C37095214FD5041BF48D645C8485441323BBC8A06FD5041EE77AC83C7485441CF59DBD1FDFC5041762A5063C7485441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507337 - 51579
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000490000000AD7A3A0E3FC5041C3F5283C3A495441C3F5286CE5FC5041A4703DDA3A49544185EB51F8EFFC5041F6285C6F3D49544133333393FAFC50413D0AD7034049544114AE477109FD5041C3F5281C44495441000000D012FD5041C3F528DC46495441C3F5283C16FD50410AD7A34047495441D7A370AD1BFD5041713D0A9747495441B81E856B23FD5041713D0A9747495441EC51B83E28FD504185EB518847495441A4703DCA2CFD50415C8FC21547495441C3F5284C33FD504148E17A04464954411F85EB2139FD50419A99994945495441AE47E14A3EFD5041713D0AD744495441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E0000005C8FC2B540FD5041E17A149E44495441544E379B3EFD50416566A5CF44495441CCDE3A4839FD5041380F474645495441EE8073A535FD5041FF1241B94549544118B3084E31FD5041D76D29584649544107ED3D7F2CFD5041F2F0241D47495441A313D94628FD50418C0C858747495441E9F47C4526FD50411A45578E47495441EA2CD70A24FD5041463024954749544172C7B5F11FFD5041713D0A97474954411C48A8791AFD50413A2CF4834749544184B17D0B17FD50413B3B7F4D47495441B17E34FA13FD504116DC5BFE4649544185AEFF7912FD5041D164EBC246495441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507337 - 85445
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000490000000AD7A3A0E3FC5041C3F5283C3A495441C3F5286CE5FC5041A4703DDA3A49544185EB51F8EFFC5041F6285C6F3D49544133333393FAFC50413D0AD7034049544114AE477109FD5041C3F5281C44495441000000D012FD5041C3F528DC46495441C3F5283C16FD50410AD7A34047495441D7A370AD1BFD5041713D0A9747495441B81E856B23FD5041713D0A9747495441EC51B83E28FD504185EB518847495441A4703DCA2CFD50415C8FC21547495441C3F5284C33FD504148E17A04464954411F85EB2139FD50419A99994945495441AE47E14A3EFD5041713D0AD744495441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E0000005C8FC2B540FD5041E17A149E44495441544E379B3EFD50416566A5CF44495441CCDE3A4839FD5041380F474645495441EE8073A535FD5041FF1241B94549544118B3084E31FD5041D76D29584649544107ED3D7F2CFD5041F2F0241D47495441A313D94628FD50418C0C858747495441E9F47C4526FD50411A45578E47495441EA2CD70A24FD5041463024954749544172C7B5F11FFD5041713D0A97474954411C48A8791AFD50413A2CF4834749544184B17D0B17FD50413B3B7F4D47495441B17E34FA13FD504116DC5BFE4649544185AEFF7912FD5041D164EBC246495441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507494 - 51619
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000033000000B81E859B45F350413D0AD7D3004F54418FC2F58848F35041B81E858B064F5441000000104DF35041000000300F4F5441EC51B8FE52F35041B81E850B1B4F5441A4703D6A57F3504100000060244F5441666666565CF35041E17A140E2F4F54411F85EB0162F35041A4703D2A3A4F54411F85EBD165F35041CDCCCC1C414F54410000009067F35041B81E85DB3F4F54413D0AD7F369F3504185EB51983D4F54411F85EBB170F35041E17A147E364F5441E17A14DE7AF35041CDCCCC3C2B4F5441713D0A7780F350418FC2F518254F5441EC51B88E84F3504148E17AB4204F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000D7A3708D9CF35041EC51B83E044F5441798ACD379CF3504152DAA4AB054F5441013D69FE9AF350417C50ECD3074F5441ABD2D89E97F350411C654CDD0B4F5441753B54A891F35041CA6FF8AD124F544119FFB19C8BF35041186CFC32194F5441A108CDB984F35041BE41B786204F54415D58CF317CF3504189DE24C8294F5441822CB3C375F350411E9C32E2304F5441A1BBC57C70F350415AB710B6364F5441BCD135D769F3504190256CB33D4F54419D2A26F666F350411DF6534A404F54411F85EBD165F35041CDCCCC1C414F544110C21CB066F35041AEB2A45B424F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507494 - 85333
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000033000000B81E859B45F350413D0AD7D3004F54418FC2F58848F35041B81E858B064F5441000000104DF35041000000300F4F5441EC51B8FE52F35041B81E850B1B4F5441A4703D6A57F3504100000060244F5441666666565CF35041E17A140E2F4F54411F85EB0162F35041A4703D2A3A4F54411F85EBD165F35041CDCCCC1C414F54410000009067F35041B81E85DB3F4F54413D0AD7F369F3504185EB51983D4F54411F85EBB170F35041E17A147E364F5441E17A14DE7AF35041CDCCCC3C2B4F5441713D0A7780F350418FC2F518254F5441EC51B88E84F3504148E17AB4204F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000D7A3708D9CF35041EC51B83E044F5441798ACD379CF3504152DAA4AB054F5441013D69FE9AF350417C50ECD3074F5441ABD2D89E97F350411C654CDD0B4F5441753B54A891F35041CA6FF8AD124F544119FFB19C8BF35041186CFC32194F5441A108CDB984F35041BE41B786204F54415D58CF317CF3504189DE24C8294F5441822CB3C375F350411E9C32E2304F5441A1BBC57C70F350415AB710B6364F5441BCD135D769F3504190256CB33D4F54419D2A26F666F350411DF6534A404F54411F85EBD165F35041CDCCCC1C414F544110C21CB066F35041AEB2A45B424F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507677 - 1140593
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000140000006666662690F250410AD7A310984E544185EB51B885F25041713D0A078F4E5441713D0A8785F25041C3F528DC8E4E54418FC2F5A884F2504152B81E05904E5441CDCCCC0C77F250419A999939A14E5441F6285C2F6FF25041C3F5284CAA4E54419A9999B96AF25041F6285CCFB04E5441295C8F626FF2504133333383B34E544152B81E0576F250417B14AE77B74E5441D7A3706D75F2504152B81EB5B84E5441B81E85CB7AF25041333333C3BB4E54418FC2F5487BF2504152B81E15BC4E544114AE47017FF2504133333383BE4E5441E17A142E80F25041CDCCCC7CBF4E5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000000E2DB2A583F250416ABC74A3914E5441A2F26C387DF25041E519DDE6994E5441BAC0FA0777F25041A7FF10DCA14E54418FC2F5286BF2504191ED7C1FB14E54418B6CE74B76F250417F6ABC04B74E54418FC2F50876F25041A69BC408B84E54416DE7FB4180F25041A245B6DBBE4E5441A77E2C588EF250415F553CF4A94E5441E6F8338D91F25041E3401714A54E54419058C53193F250410439BC94A24E5441C1083EC194F25041BC6B7335A04E5441BCA9905196F25041264DDFD49D4E54414A18B5CF96F250412CB51B159D4E5441AA5BE50591F25041C7E92B2F9A4E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>507677 - 3802682
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000140000006666662690F250410AD7A310984E544185EB51B885F25041713D0A078F4E5441713D0A8785F25041C3F528DC8E4E54418FC2F5A884F2504152B81E05904E5441CDCCCC0C77F250419A999939A14E5441F6285C2F6FF25041C3F5284CAA4E54419A9999B96AF25041F6285CCFB04E5441295C8F626FF2504133333383B34E544152B81E0576F250417B14AE77B74E5441D7A3706D75F2504152B81EB5B84E5441B81E85CB7AF25041333333C3BB4E54418FC2F5487BF2504152B81E15BC4E544114AE47017FF2504133333383BE4E5441E17A142E80F25041CDCCCC7CBF4E5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000000E2DB2A583F250416ABC74A3914E5441A2F26C387DF25041E519DDE6994E5441BAC0FA0777F25041A7FF10DCA14E54418FC2F5286BF2504191ED7C1FB14E54418B6CE74B76F250417F6ABC04B74E54418FC2F50876F25041A69BC408B84E54416DE7FB4180F25041A245B6DBBE4E5441A77E2C588EF250415F553CF4A94E5441E6F8338D91F25041E3401714A54E54419058C53193F250410439BC94A24E5441C1083EC194F25041BC6B7335A04E5441BCA9905196F25041264DDFD49D4E54414A18B5CF96F250412CB51B159D4E5441AA5BE50591F25041C7E92B2F9A4E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>460527 - 342686
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000295C8FC29AE550418FC2F538509F544114AE47E19FE55041713D0A673C9F54413D0AD7F3A1E550413D0AD7632B9F54419A9999F99DE550413D0AD7532F9F5441AE47E13A9BE550419A9999E92E9F54419A9999399BE5504133333373359F54410AD7A3A09CE55041D7A3702D369F5441A4703D5A9DE5504152B81E65399F5441B81E851B9CE55041713D0AB73C9F5441295C8F229AE55041713D0A073D9F544185EB51089AE55041000000804F9F5441295C8FC29AE550418FC2F538509F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000009F92CBBF9BE55041BEABA9644C9F544114AE47E19FE55041713D0A673C9F54413D0AD7F3A1E550413D0AD7632B9F54419A9999F99DE550413D0AD7532F9F5441AE47E13A9BE550419A9999E92E9F54419A9999399BE5504133333373359F54410AD7A3A09CE55041D7A3702D369F5441A4703D5A9DE5504152B81E65399F5441B81E851B9CE55041713D0AB73C9F5441295C8F229AE55041713D0A073D9F54418C0A6F0C9AE55041A1029F9A4C9F54416BDB50149AE550417151DB264D9F54412A3385699BE55041FC00D0394D9F54419F92CBBF9BE55041BEABA9644C9F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>508612 - 217147
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000015000000CDCCCC8C87D2504148E17A2413C15441000000F085D25041E17A140E16C15441AE47E19A84D250415C8FC27518C154413D0AD7F3A2D2504114AE47612AC15441EC51B85EA7D25041EC51B83E24C154417B14AEC7AAD25041EC51B8FE1FC15441F6285CAFAED25041E17A140E1CC15441666666C6AFD25041F6285C0F1BC154415C8FC2E5BFD25041C3F5285C0CC154413D0AD733A4D25041713D0A37E5C05441E17A14DEA0D25041713D0AE7E8C054415C8FC2A5A0D2504114AE4781EBC054417B14AE079FD25041C3F5280CEDC05441D7A3704D9CD250415C8FC235EDC05441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000D072D68394D250415881B9BE01C1544185EB518890D250419A9999B909C1544148E17A848CD25041295C8FE20EC15441CDCCCC8C87D2504148E17A2413C15441000000F085D25041E17A140E16C154418209E29A84D25041D001C37518C1544166194C9B84D25041D4A2017618C15441669AD7F3A2D25041D8E546612AC15441E4E1AAD1A3D250417408352D29C15441BA70A356A4D25041EAB0897428C15441EC15B75EA7D250418F96B73E24C15441173BADC7AAD2504198EAB8FE1FC15441947E8842ABD250410805C4821FC15441F6285CAFAED25041E17A140E1CC15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>518335 - 205937
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000008A000000EC51B88EFA2B514185EB51C84D9C5441CDCCCC5CED2B5141EC51B80E519C5441666666E6ED2B51418FC2F5F85D9C5441F6285C7FE42B514148E17A245F9C54415C8FC205E12B514114AE47215F9C5441D7A3708DDF2B51415C8FC2055F9C5441AE47E10ADF2B514114AE4721639C54418FC2F5C8DE2B514133333333649C5441D7A3706DDE2B5141F6285C8F659C5441AE47E12ADE2B5141D7A3706D669C544152B81EE5DD2B5141C3F5283C679C544114AE4781DD2B51415C8FC245689C544114AE4721DD2B514114AE47C1689C544100000050DC2B5141E17A147E699C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007E000000666666E6ED2B51418FC2F5F85D9C5441F6285C7FE42B514148E17A245F9C544186615309E22B51415CB436225F9C5441EF8DC205E12B51419F3248215F9C54418EE6FE9EE02B51410FD2C3195F9C5441D7A3708DDF2B51415C8FC2055F9C5441F7972923DF2B514148FAB55D629C5441C06BE10ADF2B5141B8F54721639C5441931B5EF7DE2B514179515C72639C54418FC2F5C8DE2B514133333333649C5441D7A3706DDE2B5141F6285C8F659C54414600EE42DE2B5141DC80321D669C5441845EE22ADE2B51412313706D669C544176C04FFFDD2B5141BAEB8BEE669C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>518335 - 382294
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000008A000000EC51B88EFA2B514185EB51C84D9C5441CDCCCC5CED2B5141EC51B80E519C5441666666E6ED2B51418FC2F5F85D9C5441F6285C7FE42B514148E17A245F9C54415C8FC205E12B514114AE47215F9C5441D7A3708DDF2B51415C8FC2055F9C5441AE47E10ADF2B514114AE4721639C54418FC2F5C8DE2B514133333333649C5441D7A3706DDE2B5141F6285C8F659C5441AE47E12ADE2B5141D7A3706D669C544152B81EE5DD2B5141C3F5283C679C544114AE4781DD2B51415C8FC245689C544114AE4721DD2B514114AE47C1689C544100000050DC2B5141E17A147E699C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000007E000000666666E6ED2B51418FC2F5F85D9C5441F6285C7FE42B514148E17A245F9C544186615309E22B51415CB436225F9C5441EF8DC205E12B51419F3248215F9C54418EE6FE9EE02B51410FD2C3195F9C5441D7A3708DDF2B51415C8FC2055F9C5441F7972923DF2B514148FAB55D629C5441C06BE10ADF2B5141B8F54721639C5441931B5EF7DE2B514179515C72639C54418FC2F5C8DE2B514133333333649C5441D7A3706DDE2B5141F6285C8F659C54414600EE42DE2B5141DC80321D669C5441845EE22ADE2B51412313706D669C544176C04FFFDD2B5141BAEB8BEE669C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>519231 - 2008483
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000059010000B81E858B0E19514185EB51E874A3544114AE47210F195141C3F5288C83A3544185EB51C80F195141295C8FF291A354411F85EBB1101951415C8FC205A0A35441C3F528DC0F195141000000F0A0A35441A4703D5A0F195141EC51B85E9AA35441B81E853B0E19514114AE476183A354418FC2F5C80D19514185EB51C879A35441E17A149E0D195141A4703D2A75A354410AD7A3000D1951417B14AE1774A35441E17A14DE0B195141713D0AD770A3544114AE47D1091951415C8FC2E56CA354413D0AD7D3061951410000009069A35441295C8FB2021951413333334366A35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000800000014AE47616D1851413D0AD763B2A254418FC2F5F83A1851419A9999398FA25441EC51B8FE49185141713D0A67A7A25441EC51B82E541851418FC2F5E8B5A254411F85EBF159185141EC51B82EBFA25441CDE994ED5B1851410C1D995FC2A25441B7BB7B397018514185161760B4A2544114AE47616D1851413D0AD763B2A25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>519231 - 3320244
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000059010000B81E858B0E19514185EB51E874A3544114AE47210F195141C3F5288C83A3544185EB51C80F195141295C8FF291A354411F85EBB1101951415C8FC205A0A35441C3F528DC0F195141000000F0A0A35441A4703D5A0F195141EC51B85E9AA35441B81E853B0E19514114AE476183A354418FC2F5C80D19514185EB51C879A35441E17A149E0D195141A4703D2A75A354410AD7A3000D1951417B14AE1774A35441E17A14DE0B195141713D0AD770A3544114AE47D1091951415C8FC2E56CA354413D0AD7D3061951410000009069A35441295C8FB2021951413333334366A35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000800000014AE47616D1851413D0AD763B2A254418FC2F5F83A1851419A9999398FA25441EC51B8FE49185141713D0A67A7A25441EC51B82E541851418FC2F5E8B5A254411F85EBF159185141EC51B82EBFA25441CDE994ED5B1851410C1D995FC2A25441B7BB7B397018514185161760B4A2544114AE47616D1851413D0AD763B2A25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>519231 - 251992
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000059010000B81E858B0E19514185EB51E874A3544114AE47210F195141C3F5288C83A3544185EB51C80F195141295C8FF291A354411F85EBB1101951415C8FC205A0A35441C3F528DC0F195141000000F0A0A35441A4703D5A0F195141EC51B85E9AA35441B81E853B0E19514114AE476183A354418FC2F5C80D19514185EB51C879A35441E17A149E0D195141A4703D2A75A354410AD7A3000D1951417B14AE1774A35441E17A14DE0B195141713D0AD770A3544114AE47D1091951415C8FC2E56CA354413D0AD7D3061951410000009069A35441295C8FB2021951413333334366A35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006C01000093FF8BE2ED185141D5B5B48442A35441DEAE4671EC18514148C06F1D3CA354419F9A433CEB18514183F98A773BA3544185EB51A8EB1851418FC2F5C83CA354419A999939ED185141666666D643A354419A999979EE185141C3F5285C48A354410AD7A380F0185141A4703D3A4DA35441F6285C3FF218514185EB511851A35441666666D6F41851416666660655A35441D7A3706DF6185141D7A3700D57A3544148E17A74F9185141B81E851B5BA35441333333C3FB185141AE47E17A5DA35441295C8FD2FD1851419A9999795FA3544152B81E75091951415C8FC28568A35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>519231 - 398052
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000059010000B81E858B0E19514185EB51E874A3544114AE47210F195141C3F5288C83A3544185EB51C80F195141295C8FF291A354411F85EBB1101951415C8FC205A0A35441C3F528DC0F195141000000F0A0A35441A4703D5A0F195141EC51B85E9AA35441B81E853B0E19514114AE476183A354418FC2F5C80D19514185EB51C879A35441E17A149E0D195141A4703D2A75A354410AD7A3000D1951417B14AE1774A35441E17A14DE0B195141713D0AD770A3544114AE47D1091951415C8FC2E56CA354413D0AD7D3061951410000009069A35441295C8FB2021951413333334366A35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006C01000093FF8BE2ED185141D5B5B48442A35441DEAE4671EC18514148C06F1D3CA354419F9A433CEB18514183F98A773BA3544185EB51A8EB1851418FC2F5C83CA354419A999939ED185141666666D643A354419A999979EE185141C3F5285C48A354410AD7A380F0185141A4703D3A4DA35441F6285C3FF218514185EB511851A35441666666D6F41851416666660655A35441D7A3706DF6185141D7A3700D57A3544148E17A74F9185141B81E851B5BA35441333333C3FB185141AE47E17A5DA35441295C8FD2FD1851419A9999795FA3544152B81E75091951415C8FC28568A35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>520034 - 230678
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000002A0000003D0AD7A307675141B81E853B896D54410AD7A3A00B675141EC51B87E896D5441EC51B8DE10675141E17A141E906D544114AE47F11A6751410AD7A3408F6D544185EB51F82467514114AE47C18F6D5441713D0AF7256751417B14AEC78F6D54411F85EBD12A67514148E17A94856D5441295C8F122B6751419A999989826D5441295C8FC22A6751411F85EB617F6D5441CDCCCC5C296751419A9999397B6D544166666666286751410AD7A3D0786D5441000000A02767514185EB5188776D54419A9999F92667514148E17A24766D5441B81E858B266751411F85EB81746D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B0000008A86F65629675141B58F4C6A836D54416119BE852967514113672639816D5441BD5DA97C29675141598E28BF806D5441A3A453672967514152378DA07F6D54418A074A4829675141E449398E7E6D5441C462AD1429675141FF3FE8CB7D6D544114AE47C1286751411F85EB917C6D5441125C679C28675141879CD2017C6D544155E32E532867514128E3B4E37A6D5441E552051D28675141CFEF0F107A6D5441D020B1BE276751419B0930EB786D54412F2CD8232767514149966D43776D5441D00E93A226675141FC1FAAE1756D5441CDCCCC2C26675141F6285C9F746D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>520034 - 230680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000002A0000003D0AD7A307675141B81E853B896D54410AD7A3A00B675141EC51B87E896D5441EC51B8DE10675141E17A141E906D544114AE47F11A6751410AD7A3408F6D544185EB51F82467514114AE47C18F6D5441713D0AF7256751417B14AEC78F6D54411F85EBD12A67514148E17A94856D5441295C8F122B6751419A999989826D5441295C8FC22A6751411F85EB617F6D5441CDCCCC5C296751419A9999397B6D544166666666286751410AD7A3D0786D5441000000A02767514185EB5188776D54419A9999F92667514148E17A24766D5441B81E858B266751411F85EB81746D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000065000000D042511A1867514188F232E0756D5441A011A3A4166751413A87A5AD766D54413031300C16675141DD4D7601776D544118E85B7815675141C5E5BC52776D5441161128E01467514121046BA6776D54413109ED47146751419B161DFA776D5441ED144D2D13675141520F18A2786D5441173819D5126751416FC2EADF786D544173044245126751411BEABC44796D54416C1349EF106751415F006F347A6D544150C84EA510675141B03F49687A6D54413F4C5B680F675141D89D71467B6D544121F981F30E675141637E58987B6D54410AC4936C0E67514113DAEBF67B6D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>520034 - 343602
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000002A0000003D0AD7A307675141B81E853B896D54410AD7A3A00B675141EC51B87E896D5441EC51B8DE10675141E17A141E906D544114AE47F11A6751410AD7A3408F6D544185EB51F82467514114AE47C18F6D5441713D0AF7256751417B14AEC78F6D54411F85EBD12A67514148E17A94856D5441295C8F122B6751419A999989826D5441295C8FC22A6751411F85EB617F6D5441CDCCCC5C296751419A9999397B6D544166666666286751410AD7A3D0786D5441000000A02767514185EB5188776D54419A9999F92667514148E17A24766D5441B81E858B266751411F85EB81746D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B0000008A86F65629675141B58F4C6A836D54416119BE852967514113672639816D5441BD5DA97C29675141598E28BF806D5441A3A453672967514152378DA07F6D54418A074A4829675141E449398E7E6D5441C462AD1429675141FF3FE8CB7D6D544114AE47C1286751411F85EB917C6D5441125C679C28675141879CD2017C6D544155E32E532867514128E3B4E37A6D5441E552051D28675141CFEF0F107A6D5441D020B1BE276751419B0930EB786D54412F2CD8232767514149966D43776D5441D00E93A226675141FC1FAAE1756D5441CDCCCC2C26675141F6285C9F746D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>520034 - 343729
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000002A0000003D0AD7A307675141B81E853B896D54410AD7A3A00B675141EC51B87E896D5441EC51B8DE10675141E17A141E906D544114AE47F11A6751410AD7A3408F6D544185EB51F82467514114AE47C18F6D5441713D0AF7256751417B14AEC78F6D54411F85EBD12A67514148E17A94856D5441295C8F122B6751419A999989826D5441295C8FC22A6751411F85EB617F6D5441CDCCCC5C296751419A9999397B6D544166666666286751410AD7A3D0786D5441000000A02767514185EB5188776D54419A9999F92667514148E17A24766D5441B81E858B266751411F85EB81746D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000065000000D042511A1867514188F232E0756D5441A011A3A4166751413A87A5AD766D54413031300C16675141DD4D7601776D544118E85B7815675141C5E5BC52776D5441161128E01467514121046BA6776D54413109ED47146751419B161DFA776D5441ED144D2D13675141520F18A2786D5441173819D5126751416FC2EADF786D544173044245126751411BEABC44796D54416C1349EF106751415F006F347A6D544150C84EA510675141B03F49687A6D54413F4C5B680F675141D89D71467B6D544121F981F30E675141637E58987B6D54410AC4936C0E67514113DAEBF67B6D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>962291 - 62744
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000200000008AAFF1AA65D95041353E93E05D4B55410EE20AE565D950418410948D5D4B554160625C6364D95041B85932435C4B5541AE0B8FB862D9504144C65DD55A4B55415A2DE19561D950413721EA7B5C4B55416ACE3BF460D95041AA364B675D4B55419B3CA28560D95041029785075E4B554161918E3060D95041AC1A4D845E4B5541AD1EC3A25FD95041CB4DE7515F4B5541DCB50A0B5FD9504160711A2F604B55415F2F19915ED95041C2C058E0604B5541E5A827175ED9504123109791614B5541ACFD13C25DD95041CD935E0E624B55411E70394F5DD9504115EDAFB5624B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000009000000A4703DDA71D95041CDCCCCCC674B55418FC2F5B86AD950410AD7A3B0614B554148E17AE465D95041D7A3708D5D4B5541666666C646D950413D0AD7838A4B5541E17A140E49D950413D0AD7B3964B5541EC51B8DE49D95041713D0AF7974B5541F6285CFF4DD950415C8FC2759B4B55419A9999095FD950415C8FC2A5824B5541A4703DDA71D95041CDCCCCCC674B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>962291 - 1427019
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000200000008AAFF1AA65D95041353E93E05D4B55410EE20AE565D950418410948D5D4B554160625C6364D95041B85932435C4B5541AE0B8FB862D9504144C65DD55A4B55415A2DE19561D950413721EA7B5C4B55416ACE3BF460D95041AA364B675D4B55419B3CA28560D95041029785075E4B554161918E3060D95041AC1A4D845E4B5541AD1EC3A25FD95041CB4DE7515F4B5541DCB50A0B5FD9504160711A2F604B55415F2F19915ED95041C2C058E0604B5541E5A827175ED9504123109791614B5541ACFD13C25DD95041CD935E0E624B55411E70394F5DD9504115EDAFB5624B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000009000000A4703DDA71D95041CDCCCCCC674B55418FC2F5B86AD950410AD7A3B0614B554148E17AE465D95041D7A3708D5D4B5541666666C646D950413D0AD7838A4B5541E17A140E49D950413D0AD7B3964B5541EC51B8DE49D95041713D0AF7974B5541F6285CFF4DD950415C8FC2759B4B55419A9999095FD950415C8FC2A5824B5541A4703DDA71D95041CDCCCCCC674B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>962291 - 4116433
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000200000008AAFF1AA65D95041353E93E05D4B55410EE20AE565D950418410948D5D4B554160625C6364D95041B85932435C4B5541AE0B8FB862D9504144C65DD55A4B55415A2DE19561D950413721EA7B5C4B55416ACE3BF460D95041AA364B675D4B55419B3CA28560D95041029785075E4B554161918E3060D95041AC1A4D845E4B5541AD1EC3A25FD95041CB4DE7515F4B5541DCB50A0B5FD9504160711A2F604B55415F2F19915ED95041C2C058E0604B5541E5A827175ED9504123109791614B5541ACFD13C25DD95041CD935E0E624B55411E70394F5DD9504115EDAFB5624B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000009000000A4703DDA71D95041CDCCCCCC674B55418FC2F5B86AD950410AD7A3B0614B554148E17AE465D95041D7A3708D5D4B5541666666C646D950413D0AD7838A4B5541E17A140E49D950413D0AD7B3964B5541EC51B8DE49D95041713D0AF7974B5541F6285CFF4DD950415C8FC2759B4B55419A9999095FD950415C8FC2A5824B5541A4703DDA71D95041CDCCCCCC674B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>945605 - 1167922
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000EC51B8BE407A51413D0AD793168F54417B14AE47437A51411F85EB611A8F5441A4703D7A457A514114AE4721208F544148E17AD4467A5141295C8F82238F54415C8FC215477A51415C8FC2B5258F544148E17AD4467A514152B81E752B8F5441D7A3703D467A5141C3F5285C308F54417B14AE27467A5141EC51B8DE368F5441F6285CBF467A514148E17A843E8F5441EC51B8AE487A5141D7A3708D3E8F544152B81EB5527A5141D7A370BD3E8F5441333333B3617A514152B81E053F8F5441F6285CBF647A5141B81E853B328F5441A4703DFA657A51410AD7A3102D8F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000F6285CBF467A514148E17A843E8F5441EC51B8AE487A5141D7A3708D3E8F544152B81EB5527A5141D7A370BD3E8F5441333333B3617A514152B81E053F8F5441F6285CBF647A5141B81E853B328F5441A4703DFA657A51410AD7A3102D8F5441A4703D6A6A7A5141295C8F321A8F5441B81E853B6C7A51419A999979128F54411F85EB41707A514148E17A84038F5441AE47E18A637A5141D7A3705D038F54418FC2F5A8577A51418FC2F538038F544185EB5158577A514133333363FB8E5441CDCCCC0C3C7A514114AE4781FC8E5441F8E422893D7A5141080AC9EC108F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>945605 - 3289386
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000EC51B8BE407A51413D0AD793168F54417B14AE47437A51411F85EB611A8F5441A4703D7A457A514114AE4721208F544148E17AD4467A5141295C8F82238F54415C8FC215477A51415C8FC2B5258F544148E17AD4467A514152B81E752B8F5441D7A3703D467A5141C3F5285C308F54417B14AE27467A5141EC51B8DE368F5441F6285CBF467A514148E17A843E8F5441EC51B8AE487A5141D7A3708D3E8F544152B81EB5527A5141D7A370BD3E8F5441333333B3617A514152B81E053F8F5441F6285CBF647A5141B81E853B328F5441A4703DFA657A51410AD7A3102D8F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000F6285CBF467A514148E17A843E8F5441EC51B8AE487A5141D7A3708D3E8F544152B81EB5527A5141D7A370BD3E8F5441333333B3617A514152B81E053F8F5441F6285CBF647A5141B81E853B328F5441A4703DFA657A51410AD7A3102D8F5441A4703D6A6A7A5141295C8F321A8F5441B81E853B6C7A51419A999979128F54411F85EB41707A514148E17A84038F5441AE47E18A637A5141D7A3705D038F54418FC2F5A8577A51418FC2F538038F544185EB5158577A514133333363FB8E5441CDCCCC0C3C7A514114AE4781FC8E5441F8E422893D7A5141080AC9EC108F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>963255 - 13606
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000260000002D9C01376C20514123E6134F812155418EAFA6846C20514152AB5F0E81215541CDCCCC1C6D2051415C8FC2A57F21554114AE47416F205141295C8F327B215541D7A370FD6F20514185EB513877215541713D0A676F2051418FC2F598732155419A9999496F2051417B14AEB772215541C3F5287C6E205141000000A06C215541CDCCCCEC6E2051419A999959692155417B14AED76C205141713D0A576521554152B81E356A205141D7A3700D652155419A9999795F2051415C8FC2B56821554133333303562051419A9999696B215541AE47E11A54205141295C8F726C215541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000C8CFFF9A54205141684E6D478C2155417A61BA8054205141C7C0C6578C215541E40F34175420514143F9D4A08C215541A5CC080D542051415EA830A58C215541E31906F153205141DBD703B88C2155418000B0EF53205141A13863B68C215541645C33CF532051410ED86CC98C2155414CC5ACA453205141997A58E28C2155417E6113FD53205141B14DB66C8D21554114AE476154205141EC51B81E8E215541295C8FD254205141EC51B83E8F21554152B81E9555205141E17A147E912155417B14AE9756205141D7A3704D942155410AD7A3C059205141B81E858B9C215541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>522470 - 56857
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000110000008FC2F508C9D65041B81E859B5C7054415C8FC215C8D65041F6285C5F5C70544148E17AF48CD65041F6285CFF65705441713D0A6795D65041000000508A705441F6285CDF96D6504114AE47A1907054415C8FC2659AD65041CDCCCC1C90705441666666D69FD65041000000508F705441AE47E12AA4D65041D7A370AD8E70544114AE47C1A5D6504152B81EE58F7054410AD7A3D0AAD650415C8FC2C5937054419A999979AFD650418FC2F5589770544148E17AA4B3D65041AE47E18A9A7054417B14AE97B8D65041713D0A279A705441EC51B84EC4D65041B81E853B99705441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000AE47E12AA4D65041D7A370AD8E705441F0F2FF8CA6D65041003B3B81907054410AD7A3D0AAD650415C8FC2C59370544147354BC9AED650417120B4D19670544148E17AA4B3D65041AE47E18A9A7054417B14AE97B8D65041713D0A279A705441EC51B84EC4D65041B81E853B99705441EC51B88EC6D65041666666667C705441701450E8C6D65041886FB3E877705441FFE172C292D650419D0666F37E705441F42C5BC593D6504143B56A4C83705441EABBFCF893D6504171BC5F2A84705441F6285CDF96D6504114AE47A190705441C1E0DD4D9BD650413EAAAAFA8F705441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524118 - 358308
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000E17A143EA2B75041CDCCCCBC352554415C8FC2E599B750413D0AD733352554415C8FC2D59AB75041F6285C6F582554410AD7A310A3B7504152B81EB554255441E17A143EA2B75041CDCCCCBC35255441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000000AD7A310A3B7504152B81EB55425544112A56AB1A2B75041B51CA0B3462554411B12143EA2B7504115C6CCBC35255441F2C5649E9FB7504110EFBC9135255441A8DBC2E599B7504186FFD73335255441FE83ED1D9AB75041095DB3723D255441531814BF9AB75041D976F51A55255441B884C2D59AB7504110995A6F58255441E5543E94A0B750413EB15AD5552554410AD7A310A3B7504152B81EB554255441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524119 - 231492
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F0000003333336379B850417B14AEE7F3245441CDCCCCFC79B850415C8FC2B5F5245441C3F5288C7FB85041A4703D2A06255441295C8F0283B850413D0AD7A3122554419A9999D983B85041F6285C1F15255441CDCCCC6C8CB850418FC2F5081425544148E17A349CB85041713D0AC712255441713D0A77A1B850411F85EB5112255441F6285C0FA1B85041B81E852B102554411F85EB519EB85041E17A148EFF2454413D0AD7E39AB8504133333373FA245441333333D390B85041C3F528CCFA245441AE47E11A90B85041CDCCCC2CF424544185EB51F88FB85041000000E0F2245441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000DA2D21667CB850411B57C4D8FC245441C3F5288C7FB85041A4703D2A06255441DF7815BC82B850411F23ECA511255441553CA6F582B850411922A56912255441D8FEA14D8BB85041D740A73D0E25544172DD96F490B8504155E813AF0B255441411728AF97B85041A5ED25B9082554415F956E389FB8504126DC507E05255441646A4E999EB85041B60BF53E0125544191FE4E889EB850417199E2D700255441008AC3619EB850418AA527EEFF245441BB8120A59AB85041FC7D5D75FA245441A04CF8A09AB85041093C8275FA245441BB43C99B9AB85041190DB075FA245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524119 - 358557
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F0000003333336379B850417B14AEE7F3245441CDCCCCFC79B850415C8FC2B5F5245441C3F5288C7FB85041A4703D2A06255441295C8F0283B850413D0AD7A3122554419A9999D983B85041F6285C1F15255441CDCCCC6C8CB850418FC2F5081425544148E17A349CB85041713D0AC712255441713D0A77A1B850411F85EB5112255441F6285C0FA1B85041B81E852B102554411F85EB519EB85041E17A148EFF2454413D0AD7E39AB8504133333373FA245441333333D390B85041C3F528CCFA245441AE47E11A90B85041CDCCCC2CF424544185EB51F88FB85041000000E0F2245441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000DA2D21667CB850411B57C4D8FC245441C3F5288C7FB85041A4703D2A06255441DF7815BC82B850411F23ECA511255441553CA6F582B850411922A56912255441D8FEA14D8BB85041D740A73D0E25544172DD96F490B8504155E813AF0B255441411728AF97B85041A5ED25B9082554415F956E389FB8504126DC507E05255441646A4E999EB85041B60BF53E0125544191FE4E889EB850417199E2D700255441008AC3619EB850418AA527EEFF245441BB8120A59AB85041FC7D5D75FA245441A04CF8A09AB85041093C8275FA245441BB43C99B9AB85041190DB075FA245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524196 - 1849081
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000002C0000000000008070B650415C8FC255B13D5441C3F528EC71B65041D7A370CDAC3D54418FC2F5E872B65041E17A148EA83D544152B81E3573B65041E17A147EA53D544114AE474173B650411F85EB21A23D5441C3F528DC72B65041C3F528EC9E3D54419A9999A972B6504152B81E059B3D5441A4703D6A71B65041666666C6953D5441D7A3704D6FB6504148E17AB48F3D5441EC51B8DE6DB650417B14AEA78B3D54418FC2F5586CB65041333333B38B3D544152B81E556BB65041666666968A3D54418FC2F5C869B650413D0AD7B3883D54415C8FC26569B65041F6285C0F873D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000AC000000EC51B8CE6BB65041B81E85BB613D5441AE47E11A6AB650418FC2F5B8623D5441E17A148E69B65041C3F5280C663D5441AE47E1EA68B6504185EB5158683D5441CDCCCCFC67B65041D7A3706D6A3D544185EB510866B6504148E17A446E3D5441333333E364B65041D7A3705D703D54418FC2F53864B65041F6285CFF723D5441A4703D5A64B6504100000070753D54413D0AD79364B65041C3F528BC773D5441EC51B88E65B65041295C8F127B3D5441295C8F5266B65041B81E856B7D3D54413333331367B6504185EB51387F3D5441EC51B84E68B65041666666267F3D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524493 - 2885007
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000002000000500000003D0AD7535CA15041295C8F02C62454413D0AD7B35BA15041000000B0C5245441A4703D1A59A1504185EB5158C42454410000009055A15041B81E853BC22454415C8FC2E549A15041B81E85CBBB2454417B14AE973FA15041A4703D9AB724544152B81E753CA15041D7A370BDB62454410AD7A3E039A1504185EB5128B624544114AE47B137A15041666666A6B62454418FC2F54834A15041B81E855BB624544185EB51A82FA15041333333E3B22454411F85EB412BA150415C8FC2F5AD2454411F85EB712BA15041AE47E19AB524544185EB51B82AA150415C8FC2B5B8245441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000853705382DA15041872C0E28B02454419A993A932DA1504168D4328EB02454414CA4816031A15041448BBF24AD24544182438F162FA1504193FCDC06AA245441C3F528BC2DA1504166666626A824544148E17AC42CA15041EC51B8CEA6245441F6285C7F27A15041CDCCCCCCA4245441728A139726A15041DD829092A4245441017112DC25A15041A7EB4460A5245441F4870A4626A150417E353F40A724544162A61DA327A1504198F7CA64A92454419A99999929A150410AD7A3F0AA2454411F85EBB12AA1504185EB51D8AB2454411F85EB412BA150415C8FC2F5AD245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524493 - 3497589
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000002000000500000003D0AD7535CA15041295C8F02C62454413D0AD7B35BA15041000000B0C5245441A4703D1A59A1504185EB5158C42454410000009055A15041B81E853BC22454415C8FC2E549A15041B81E85CBBB2454417B14AE973FA15041A4703D9AB724544152B81E753CA15041D7A370BDB62454410AD7A3E039A1504185EB5128B624544114AE47B137A15041666666A6B62454418FC2F54834A15041B81E855BB624544185EB51A82FA15041333333E3B22454411F85EB412BA150415C8FC2F5AD2454411F85EB712BA15041AE47E19AB524544185EB51B82AA150415C8FC2B5B8245441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000853705382DA15041872C0E28B02454419A993A932DA1504168D4328EB02454414CA4816031A15041448BBF24AD24544182438F162FA1504193FCDC06AA245441C3F528BC2DA1504166666626A824544148E17AC42CA15041EC51B8CEA6245441F6285C7F27A15041CDCCCCCCA4245441728A139726A15041DD829092A4245441017112DC25A15041A7EB4460A5245441F4870A4626A150417E353F40A724544162A61DA327A1504198F7CA64A92454419A99999929A150410AD7A3F0AA2454411F85EBB12AA1504185EB51D8AB2454411F85EB412BA150415C8FC2F5AD245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524611 - 231531
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000002000000180000003D0AD743E4AD5041D7A3704D8D275441713D0A37F2AD5041E17A14FEA5275441EC51B8EEF5AD504166666656AC27544114AE47910AAE5041B81E856BA72754415C8FC2350BAE5041F6285C3FA7275441C3F5288C0AAE50415C8FC2C5A627544148E17AE408AE50419A999939A3275441C3F528CC08AE504185EB51B8A027544185EB513807AE5041C3F5289CA0275441333333A306AE5041EC51B87EA027544114AE47F105AE5041C3F528CC9F2754411F85EBE105AE5041EC51B8DE9E2754418FC2F55806AE50413D0AD7F39C2754418FC2F52807AE504152B81EE59C275441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000006FB17A84D3AD504121A1ADF79F27544103151FD5D5AD50414F15711DA427544185EB51F8D6AD50411F85EB81A5275441666666E6D7AD5041295C8F02A7275441EC51B85ED8AD5041EC51B89EA8275441E17A148ED9AD5041666666C6A92754416C1C39BAD9AD504123699AE4A9275441060DE2FADAAD50415811FFBFAA275441D68A7BB4DBAD5041D5AF3DBAAB275441C1781101DCAD504198B1C8D6AB275441FBFDEA61DCAD5041C09AE0FAAB27544175187CF4DEAD5041745D7AB4AE2754417DC93C67DFAD5041C128AA49AF27544114AE47A1DFAD504152B81E95AF275441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524611 - 368410
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000002000000180000003D0AD743E4AD5041D7A3704D8D275441713D0A37F2AD5041E17A14FEA5275441EC51B8EEF5AD504166666656AC27544114AE47910AAE5041B81E856BA72754415C8FC2350BAE5041F6285C3FA7275441C3F5288C0AAE50415C8FC2C5A627544148E17AE408AE50419A999939A3275441C3F528CC08AE504185EB51B8A027544185EB513807AE5041C3F5289CA0275441333333A306AE5041EC51B87EA027544114AE47F105AE5041C3F528CC9F2754411F85EBE105AE5041EC51B8DE9E2754418FC2F55806AE50413D0AD7F39C2754418FC2F52807AE504152B81EE59C275441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000006FB17A84D3AD504121A1ADF79F27544103151FD5D5AD50414F15711DA427544185EB51F8D6AD50411F85EB81A5275441666666E6D7AD5041295C8F02A7275441EC51B85ED8AD5041EC51B89EA8275441E17A148ED9AD5041666666C6A92754416C1C39BAD9AD504123699AE4A9275441060DE2FADAAD50415811FFBFAA275441D68A7BB4DBAD5041D5AF3DBAAB275441C1781101DCAD504198B1C8D6AB275441FBFDEA61DCAD5041C09AE0FAAB27544175187CF4DEAD5041745D7AB4AE2754417DC93C67DFAD5041C128AA49AF27544114AE47A1DFAD504152B81E95AF275441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>524777 - 357179
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000530000000AD7A3907BB95041A4703DBAE42D544185EB510871B9504185EB5138E02D5441713D0A9769B950415C8FC285DC2D54415C8FC2F567B95041A4703D2ADB2D5441333333E365B95041EC51B8CED92D5441713D0AA764B95041EC51B8DED92D5441AE47E1EA5CB9504114AE47E1E22D544148E17AF45DB950415C8FC2C5E32D5441E17A149E52B95041D7A3703D032E54413D0AD7C34FB9504133333353092E5441EC51B85E4EB95041295C8F520B2E5441D7A3705D47B9504114AE47A1022E54413D0AD7733EB950411F85EB91F72D544185EB51182DB95041B81E85ABFF2D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000440000005C8FC23559B95041CDCCCC5C4D2E5441EC51B8EE59B950413D0AD793472E5441000000D05BB95041E17A14FE432E5441E17A140E5FB95041A4703D9A412E5441645671F15EB95041A93E6549392E544177A4B4E95EB950418ADF3B0A372E5441CA2B9DE65EB95041BB496724362E5441237408E65EB95041FEE437F9352E5441679C04E45EB950412D0F6D63352E5441D0490EDE5EB950415DED34A8332E544186C7FADC5EB95041FC133458332E54418D9F14D75EB950412EBCADA1312E544116CC0ED75EB95041CAA3FC9F312E5441B08CF0D65EB9504191153497312E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975328 - 1755529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000011000000BF4C611B19EA5041C220B911FA80544125B95E2719EA50412EA0EBF0FA805441CCC5F0CF1CEA504173EE2094F98054412B1C1C981EEA5041560AE4E8F88054411CD0625429EA5041FF041818F5805441AF6A20242AEA5041CB1F42CEF48054419E13D1F62CEA5041560F3329F480544192481A222DEA50419BE2151EF48054410C53E54D2DEA5041E09E4F15F48054416004EA6835EA50419217633BF28054410CC7166031EA50410A0AECBCDC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA805441B0A9541919EA5041D11DE9B5ED805441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003A00000088EE881719EA5041DA0E337AED805441B0A9541919EA5041D11DE9B5ED805441A1095AE818EA5041B2DF2CEFED805441E86A4CC218EA5041AA82F034EE805441C14C611B19EA5041BE20B911FA80544129B95E2719EA50412CA0EBF0FA8054418124492219EA5041CCF09BF5FA8054418F2B01C419EA50410A453C8A02815441B6383AF31AEA50418B90B654098154415C4297D11BEA504101B861E20C815441595FAE6C1EEA5041FEB0A9400C8154412E008D0528EA504138FCC7840981544152B81E5528EA504148E17A44098154417B14AE6737EA504114AE477104815441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975328 - 3298215
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000011000000BF4C611B19EA5041C220B911FA80544125B95E2719EA50412EA0EBF0FA805441CCC5F0CF1CEA504173EE2094F98054412B1C1C981EEA5041560AE4E8F88054411CD0625429EA5041FF041818F5805441AF6A20242AEA5041CB1F42CEF48054419E13D1F62CEA5041560F3329F480544192481A222DEA50419BE2151EF48054410C53E54D2DEA5041E09E4F15F48054416004EA6835EA50419217633BF28054410CC7166031EA50410A0AECBCDC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA805441B0A9541919EA5041D11DE9B5ED805441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003A00000088EE881719EA5041DA0E337AED805441B0A9541919EA5041D11DE9B5ED805441A1095AE818EA5041B2DF2CEFED805441E86A4CC218EA5041AA82F034EE805441C14C611B19EA5041BE20B911FA80544129B95E2719EA50412CA0EBF0FA8054418124492219EA5041CCF09BF5FA8054418F2B01C419EA50410A453C8A02815441B6383AF31AEA50418B90B654098154415C4297D11BEA504101B861E20C815441595FAE6C1EEA5041FEB0A9400C8154412E008D0528EA504138FCC7840981544152B81E5528EA504148E17A44098154417B14AE6737EA504114AE477104815441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>525036 - 1873675
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000040000000103000000010000000E00000014AE47517BB45041000000806D305441AE47E10A7DB450418FC2F5A86C30544148E17A7480B450413D0AD7636C305441D7A3705D82B450411F85EBB16B3054413333331370B4504148E17A443F305441D7A370ED6EB45041A4703D6A3F3054413D0AD74366B45041F6285C2F42305441295C8FE261B4504152B81E65433054411F85EB715AB450417B14AE8745305441A4703D3A6DB450413D0AD73371305441EC51B80E73B45041D7A3709D6F305441295C8FA276B45041B81E859B6E3054411F85EBC179B45041333333B36D30544114AE47517BB45041000000806D305441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002400000085EB511861B450418FC2F56830305441E17A14BE65B45041B81E85AB413054415C8ED6E169B4504143BF926B4030544135BDAF126AB4504141E32EF840305441E7E3473366B45041D33FEF3342305441295C8FE261B4504152B81E65433054411F85EB715AB450417B14AE8745305441A4703D3A6DB450413D0AD73371305441EC51B80E73B45041D7A3709D6F305441295C8FA276B45041B81E859B6E3054411F85EBC179B45041333333B36D30544114AE47517BB45041000000806D305441AE47E10A7DB450418FC2F5A86C30544148E17A7480B450413D0AD7636C305441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>525036 - 3442795
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000040000000103000000010000000E00000014AE47517BB45041000000806D305441AE47E10A7DB450418FC2F5A86C30544148E17A7480B450413D0AD7636C305441D7A3705D82B450411F85EBB16B3054413333331370B4504148E17A443F305441D7A370ED6EB45041A4703D6A3F3054413D0AD74366B45041F6285C2F42305441295C8FE261B4504152B81E65433054411F85EB715AB450417B14AE8745305441A4703D3A6DB450413D0AD73371305441EC51B80E73B45041D7A3709D6F305441295C8FA276B45041B81E859B6E3054411F85EBC179B45041333333B36D30544114AE47517BB45041000000806D305441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002400000085EB511861B450418FC2F56830305441E17A14BE65B45041B81E85AB413054415C8ED6E169B4504143BF926B4030544135BDAF126AB4504141E32EF840305441E7E3473366B45041D33FEF3342305441295C8FE261B4504152B81E65433054411F85EB715AB450417B14AE8745305441A4703D3A6DB450413D0AD73371305441EC51B80E73B45041D7A3709D6F305441295C8FA276B45041B81E859B6E3054411F85EBC179B45041333333B36D30544114AE47517BB45041000000806D305441AE47E10A7DB450418FC2F5A86C30544148E17A7480B450413D0AD7636C305441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>525742 - 372882
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000500000048E17AB4A5CD5041AE47E1AA34525441713D0A5768CD5041333333B327525441295C8FC267CD5041295C8FD22A5254417B14AE07A5CD5041666666A63952544148E17AB4A5CD5041AE47E1AA34525441
+</a>
+
+<b>
+010600000001000000010300000001000000060000005A6B2C0EA5CD50417ADF777639525441D1A379B4A5CD50419804E1AA34525441D1650B5768CD5041D47133B32752544117F08FC267CD5041F67F8FD22A5254417B14AE07A5CD5041666666A6395254415A6B2C0EA5CD50417ADF777639525441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>525779 - 188229
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000240000000000008059B950410AD7A37089405441295C8FD257B95041EC51B8AE9740544114AE47D15AB95041713D0AE79740544185EB517864B95041CDCCCC9C98405441333333E36AB950415C8FC21599405441000000C070B950413D0AD783994054418FC2F50873B9504152B81ED590405441B81E850B75B950413333334382405441F6285C3F76B950413D0AD73379405441B81E858B76B950417B14AE476F40544114AE475174B95041666666E66D40544114AE47516DB95041666666F6674054415C8FC2756BB95041D7A3706D644054415C8FC27568B95041A4703D7A64405441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003500000032A3F96276B950419759F88F744054412EC3856B76B950412DF2E372734054410763117476B950414D3DE055724054413EBDE77976B95041F0302F9371405441DB568CF675B95041B0D448DB704054416D99E5D66FB9504137E266956D405441CC348C406AB950412917B44B704054417BB037E466B9504138639E68714054417A1DEF1963B95041AA8162DA7240544162F1DDEA61B95041C1CCD03873405441578F209063B95041E02EFD4475405441073CF62265B95041BCBAD777754054416CB3123D6CB95041B13C02D874405441D7B3123D6CB950411CE8A72B76405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>525779 - 269378
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000240000000000008059B950410AD7A37089405441295C8FD257B95041EC51B8AE9740544114AE47D15AB95041713D0AE79740544185EB517864B95041CDCCCC9C98405441333333E36AB950415C8FC21599405441000000C070B950413D0AD783994054418FC2F50873B9504152B81ED590405441B81E850B75B950413333334382405441F6285C3F76B950413D0AD73379405441B81E858B76B950417B14AE476F40544114AE475174B95041666666E66D40544114AE47516DB95041666666F6674054415C8FC2756BB95041D7A3706D644054415C8FC27568B95041A4703D7A64405441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003300000031C3856B76B9504132F2E372734054413FBDE77976B95041EF302F9371405441DB568CF675B95041B0D448DB704054416D99E5D66FB9504137E266956D405441CC348C406AB950412917B44B704054417BB037E466B9504138639E68714054417A1DEF1963B95041AA8162DA7240544162F1DDEA61B95041C1CCD038734054415B8F209063B95041DD2EFD4475405441073CF62265B95041BCBAD777754054416CB3123D6CB95041B13C02D874405441D7B3123D6CB950411CE8A72B7640544150A422016CB950414E756D0777405441A318A8E56BB95041E3D94E7C77405441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>457924 - 1757495
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000030000000F00000048E17AC41AE150418FC2F5A833635441A4703D2A19E15041295C8FE23663544148E17A2417E150413D0AD7533B635441EC51B8BE13E15041333333834363544152B81EF510E150418FC2F5784B635441295C8FA211E15041CDCCCC9C4C6354411F85EB3126E150410AD7A38050635441333333F33FE15041F6285C5F55635441B81E851B41E1504100000090546354413D0AD75341E150415C8FC25553635441B81E857B43E150411F85EB414163544114AE47A142E1504148E17A0440635441EC51B83E30E15041CDCCCC4C3B6354410AD7A3201CE150413333332333635441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000006E1187D742E15041457797A14663544110CCDADE42E15041C4AA206446635441B039A8052CE15041D33F33A040635441E23BB33D2BE15041F44B8A97426354412E45CB342BE150411B065C944263544194D5D9282BE15041A57F0DB2426354410AD7A3A02CE15041000000104363544148E17A442DE150417B14AEE746635441000000E02CE150419A9999F948635441C3F5284C2BE15041CDCCCC6C4C635441651345152AE15041471655874C635441D5671E3928E1504120A6D0E250635441333333F33FE15041F6285C5F55635441B81E851B41E150410000009054635441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>457924 - 3821219
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000030000000F00000048E17AC41AE150418FC2F5A833635441A4703D2A19E15041295C8FE23663544148E17A2417E150413D0AD7533B635441EC51B8BE13E15041333333834363544152B81EF510E150418FC2F5784B635441295C8FA211E15041CDCCCC9C4C6354411F85EB3126E150410AD7A38050635441333333F33FE15041F6285C5F55635441B81E851B41E1504100000090546354413D0AD75341E150415C8FC25553635441B81E857B43E150411F85EB414163544114AE47A142E1504148E17A0440635441EC51B83E30E15041CDCCCC4C3B6354410AD7A3201CE150413333332333635441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000006E1187D742E15041457797A14663544110CCDADE42E15041C4AA206446635441B039A8052CE15041D33F33A040635441E23BB33D2BE15041F44B8A97426354412E45CB342BE150411B065C944263544194D5D9282BE15041A57F0DB2426354410AD7A3A02CE15041000000104363544148E17A442DE150417B14AEE746635441000000E02CE150419A9999F948635441C3F5284C2BE15041CDCCCC6C4C635441651345152AE15041471655874C635441D5671E3928E1504120A6D0E250635441333333F33FE15041F6285C5F55635441B81E851B41E150410000009054635441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>525923 - 45230
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000310000006666667675C950413D0AD723FC2E5441C3F528FC73C9504148E17A04FE2E5441C3F5281C73C9504133333393FF2E5441CDCCCC9C76C95041295C8F02082F54415C8FC24577C950419A999999092F54410000005078C9504152B81E95092F5441AE47E1AA7BC95041F6285C5F092F54410000008086C9504148E17A64082F5441A4703D2A87C95041E17A14BE082F5441CDCCCCAC86C950410AD7A320092F5441AE47E1AA7BC95041000000000A2F54411F85EB1178C95041295C8F620A2F54417B14AEE777C95041EC51B81E0B2F54415C8FC22578C9504148E17AB40B2F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000060000002EADC44C73C950417962AD3CFF2E544148A8F87175C95041EF284218FC2E5441934291FB73C9504179222545F82E54418DC0104D6FC95041E26A30C6F52E5441B3C1B42471C95041AA411ECCFA2E54412EADC44C73C950417962AD3CFF2E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>525923 - 81581
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000310000006666667675C950413D0AD723FC2E5441C3F528FC73C9504148E17A04FE2E5441C3F5281C73C9504133333393FF2E5441CDCCCC9C76C95041295C8F02082F54415C8FC24577C950419A999999092F54410000005078C9504152B81E95092F5441AE47E1AA7BC95041F6285C5F092F54410000008086C9504148E17A64082F5441A4703D2A87C95041E17A14BE082F5441CDCCCCAC86C950410AD7A320092F5441AE47E1AA7BC95041000000000A2F54411F85EB1178C95041295C8F620A2F54417B14AEE777C95041EC51B81E0B2F54415C8FC22578C9504148E17AB40B2F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000060000002EADC44C73C950417962AD3CFF2E544148A8F87175C95041EF284218FC2E5441934291FB73C9504179222545F82E54418DC0104D6FC95041E26A30C6F52E5441B3C1B42471C95041AA411ECCFA2E54412EADC44C73C950417962AD3CFF2E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526165 - 3088802
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000070000009A99995984C950413D0AD793C9465441C3F528ECA2C950410AD7A3D0C84654417B14AE27C1C95041F6285C0FC84654419A999979C1C950411F85EB31AE465441295C8F02A2C95041C3F528FCAE4654416666664682C9504185EB51C8AF4654419A99995984C950413D0AD793C9465441
+</a>
+
+<b>
+010600000001000000010300000001000000180000007AC6C8AF8AC9504135CAF63BD9465441FA76367593C95041A58F6004D9465441BE7FDD269DC95041D322B7C6D8465441BC53764FA9C9504151D8FF78D8465441A3F000A3B5C95041D5EF382AD8465441ADCEA7B8BCC95041CC71F2FCD7465441666666A6C0C950413D0AD7E3D746544164F17771C1C95041A7328801D7465441CADD6B92C1C95041E32490DDD64654418D153B3CC1C95041964412F1CA46544186D85624C1C950410D5E210EC846544122E15E32B2C95041F264FD6EC846544156A928BAA7C95041544FECB1C8465441E007604F9BC95041887C3E01C9465441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526165 - 3435645
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000070000009A99995984C950413D0AD793C9465441C3F528ECA2C950410AD7A3D0C84654417B14AE27C1C95041F6285C0FC84654419A999979C1C950411F85EB31AE465441295C8F02A2C95041C3F528FCAE4654416666664682C9504185EB51C8AF4654419A99995984C950413D0AD793C9465441
+</a>
+
+<b>
+010600000001000000010300000001000000180000007AC6C8AF8AC9504135CAF63BD9465441FA76367593C95041A58F6004D9465441BE7FDD269DC95041D322B7C6D8465441BC53764FA9C9504151D8FF78D8465441A3F000A3B5C95041D5EF382AD8465441ADCEA7B8BCC95041CC71F2FCD7465441666666A6C0C950413D0AD7E3D746544164F17771C1C95041A7328801D7465441CADD6B92C1C95041E32490DDD64654418D153B3CC1C95041964412F1CA46544186D85624C1C950410D5E210EC846544122E15E32B2C95041F264FD6EC846544156A928BAA7C95041544FECB1C8465441E007604F9BC95041887C3E01C9465441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526266 - 187564
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000100000007B14AE97C6BA50411F85EB01DE2854417B14AE17C2BA504148E17A54DF2854411F85EB71C2BA5041295C8F02E428544185EB5198C2BA5041CDCCCCECE7285441666666A6C3BA5041D7A370FDEB2854417B14AE77C8BA50415C8FC2A5ED2854417B14AEC7CBBA5041295C8FF2ED285441EC51B83ECFBA5041A4703DDAEE28544133333373D0BA5041B81E85ABF328544152B81EB5D2BA50418FC2F5F8F32854415C8FC2C5D6BA504114AE4711F32854413D0AD743DDBA50419A999989F0285441713D0AB7DBBA5041C3F528DCE2285441CDCCCC9CCFBA5041AE47E1EADC285441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000BC698192C2BA5041DA5E7A60D9285441902753AAC2BA5041010B2A41D92854418B2FFF10C2BA504160CD2009D728544104D61C9CC0BA5041209CEE11D2285441E123B3BABFBA5041421A1974D12854419C79D0A1C0BA5041520AB280CC28544181145919C1BA50415D1D6392CC285441B169C824C4BA5041C52C66F6CC285441B83A42E0C7BA50415DC138DCCC285441357F4A5ACBBA50415DC138DCCC285441B4CBB378CEBA5041C834C79ACC28544111708653D2BA50419338CCA3CB285441BC0425D9D8BA50412F6F8A81C9285441E4FEE2D7D8BA5041935A6776C9285441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526266 - 356872
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000100000007B14AE97C6BA50411F85EB01DE2854417B14AE17C2BA504148E17A54DF2854411F85EB71C2BA5041295C8F02E428544185EB5198C2BA5041CDCCCCECE7285441666666A6C3BA5041D7A370FDEB2854417B14AE77C8BA50415C8FC2A5ED2854417B14AEC7CBBA5041295C8FF2ED285441EC51B83ECFBA5041A4703DDAEE28544133333373D0BA5041B81E85ABF328544152B81EB5D2BA50418FC2F5F8F32854415C8FC2C5D6BA504114AE4711F32854413D0AD743DDBA50419A999989F0285441713D0AB7DBBA5041C3F528DCE2285441CDCCCC9CCFBA5041AE47E1EADC285441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002300000067F538D6D8BA5041025EAB67C9285441B20B72D5D8BA50419B42CA60C92854418DFB41C8D8BA50419FC36AECC8285441639301DFD7BA5041BFC57F3DC92854415FD09610D5BA504194D42518CA285441130CE0C7D0BA50418D5D44F6CA285441B7D3141DCEBA50411697D37ACB2854412E0DDEA1CCBA5041FCA635AECB2854417ED194F1CABA5041CD4489E3CB28544120A66FFAC7BA5041CD4489E3CB285441A6494493C5BA5041CD4489E3CB28544102D435A9C2BA5041199F341FCB285441A2A0AF0DC0BA5041FD8DB240CA285441699E2FE2BCBA5041E58CF2AAC8285441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526595 - 281524
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000048000000E17A14BE26D15041B81E857BAC5154415C8FC22527D150419A999919AC5154417B14AE7727D15041EC51B8CEAB5154418FC2F5F827D15041C3F528ECAB515441EC51B86E28D15041713D0A87AC5154411F85EBB128D150415C8FC225AD515441F6285C3F29D15041666666E6AD515441333333132AD15041C3F528ECAD5154415C8FC2E52AD15041EC51B8BEAD5154410AD7A3F02BD15041A4703D5AAD51544152B81EB52CD1504166666696AD5154415C8FC2B52DD15041B81E855BAE5154418FC2F5282FD15041AE47E18AAF51544148E17AE430D1504100000080B0515441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000340000001F85EBC11CD15041713D0A47A95154410427467E26D1504184A71DCDAB5154417D86C17326D15041784B8BF6A95154418082D2E029D150417E9FFECC755154417C6445AD2AD1504127231CF8735154412FB3158A2AD15041DC1F22B76D515441598912732AD150413B104D1A6D515441D5F0690D2BD150415A466AEC635154419FE0D1C82AD150413E95504E55515441543AF7C515D150410F5756A5505154413FAD1E651FD1504111F1E0A538515441AB7F49061FD1504141EACEA838515441EEB628DC20D15041F7D6D7733751544132E08FC229D15041AA7D5D9F32515441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526892 - 1829736
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000005C0000005C8FC2251ACB504185EB51683C325441C3F528FC18CB5041C3F5288C3E3254410000000018CB504152B81EB5403254413D0AD73317CB5041713D0A974232544148E17AC416CB5041D7A3705D443254419A99999916CB504152B81E05463254410AD7A36016CB5041CDCCCC6C47325441CDCCCCFC16CB5041A4703D9A4A325441295C8FB217CB5041666666164E32544152B81EB519CB50413333335352325441A4703DAA1CCB50417B14AE3757325441713D0A371FCB50418FC2F5B85B325441000000B020CB5041B81E851B5F325441B81E851B23CB5041F6285C0F64325441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000091000000695C485537CB504147ABB8DE6A325441F6529D5437CB50419BFD90DD6A3254410BBA3D0433CB504155905DEB62325441D8F9106B22CB504161A1DCD243325441B7ED063128CB5041D92CC75A41325441495E43D031CB50416091513D3D325441555B81D631CB5041C626A63A3D325441EBA52B893BCB504146DBE9045432544175B2A17F3BCB504150AB684D543254410477F8853BCB50410625805C543254410E5966293BCB50419396DD735732544178C9BD153ACB50416A54BA175F325441193AF5333ACB504170AB16A65F32544105CFCC603CCB5041BE4504A56A325441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>526892 - 3190521
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000005C0000005C8FC2251ACB504185EB51683C325441C3F528FC18CB5041C3F5288C3E3254410000000018CB504152B81EB5403254413D0AD73317CB5041713D0A974232544148E17AC416CB5041D7A3705D443254419A99999916CB504152B81E05463254410AD7A36016CB5041CDCCCC6C47325441CDCCCCFC16CB5041A4703D9A4A325441295C8FB217CB5041666666164E32544152B81EB519CB50413333335352325441A4703DAA1CCB50417B14AE3757325441713D0A371FCB50418FC2F5B85B325441000000B020CB5041B81E851B5F325441B81E851B23CB5041F6285C0F64325441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000091000000695C485537CB504147ABB8DE6A325441F6529D5437CB50419BFD90DD6A3254410BBA3D0433CB504155905DEB62325441D8F9106B22CB504161A1DCD243325441B7ED063128CB5041D92CC75A41325441495E43D031CB50416091513D3D325441555B81D631CB5041C626A63A3D325441EBA52B893BCB504146DBE9045432544175B2A17F3BCB504150AB684D543254410477F8853BCB50410625805C543254410E5966293BCB50419396DD735732544178C9BD153ACB50416A54BA175F325441193AF5333ACB504170AB16A65F32544105CFCC603CCB5041BE4504A56A325441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527029 - 525343
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000036000000295C8FA26ECC5041C3F5289C9D2D5441000000806ECC5041F6285CDF9C2D54415C8FC2A56ACC5041C3F528FC872D54415C8FC23565CC5041F6285C7F6A2D54413D0AD7F364CC50411F85EB316A2D54418FC2F5C85ECC5041EC51B81E662D5441A4703D0A5BCC5041F6285CCF632D54418FC2F5A855CC504100000010652D544152B81E1552CC504166666636662D544185EB51784FCC50419A999919662D5441D7A3700D4DCC5041A4703DFA642D54410AD7A3D049CC5041CDCCCC9C632D5441EC51B89E46CC5041B81E856B622D5441295C8F6242CC5041295C8F32622D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000230000001F85EB31B6CC5041295C8FF2C22D54417B14AE17B1CC5041713D0A27C32D54418FC2F5D8B0CC5041EC51B8CEBA2D5441666666D6B4CC50410AD7A3A0BA2D5441666666D6B4CC5041CDCCCCECB72D54418FC2F538AFCC50419A999959B32D54415C8FC235A6CC50418FC2F5C8B02D5441A4703DDA9CCC504133333303AE2D54417CB3894591CC5041B8ECFAB4AA2D5441233392778CCC504102095492A82D54419776BFFF8ACC50413D72778D942D544193DD974389CC50412DBF41AB822D54412CAF71BA86CC50414C1698FA692D544138C478B982CC5041D2A01BFA672D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527142 - 3178566
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000060000003333338323C85041AE47E1EA39435441A4703D7A1FC8504152B81E95514354418FC2F5F85CC850413D0AD773664354410AD7A3A05CC850413D0AD7434D435441713D0A3740C8504148E17AA4434354413333338323C85041AE47E1EA39435441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000024668F85CC850418E7F7D4B66435441C723BE575DC850417CF2BB34664354414A3CE3B85CC850411E38D64B4D435441A083055F58C850416843D1D24B435441E88134684DC8504129A63A1C4843544131BCB0DA38C8504184FE052641435441D2D05EB324C8504144FEAA503A435441F934987F23C85041317305003A435441C6734E851FC850412470F95251435441944BB81120C85041F46087C85143544155CC464129C85041A5EF97E654435441080821043BC85041C205B1ED5A435441F36B97C243C85041B5E45FE55D4354411D3576FE51C85041336105BA62435441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527142 - 3577526
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000060000003333338323C85041AE47E1EA39435441A4703D7A1FC8504152B81E95514354418FC2F5F85CC850413D0AD773664354410AD7A3A05CC850413D0AD7434D435441713D0A3740C8504148E17AA4434354413333338323C85041AE47E1EA39435441
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000024668F85CC850418E7F7D4B66435441C723BE575DC850417CF2BB34664354414A3CE3B85CC850411E38D64B4D435441A083055F58C850416843D1D24B435441E88134684DC8504129A63A1C4843544131BCB0DA38C8504184FE052641435441D2D05EB324C8504144FEAA503A435441F934987F23C85041317305003A435441C6734E851FC850412470F95251435441944BB81120C85041F46087C85143544155CC464129C85041A5EF97E654435441080821043BC85041C205B1ED5A435441F36B97C243C85041B5E45FE55D4354411D3576FE51C85041336105BA62435441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527279 - 57946
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000A000000AE47E15A84C45041666666C649395441CDCCCC9C84C450419A9999A94A395441E17A142E85C45041333333A34C395441F6285C5F85C45041EC51B84E4D39544148E17AF485C45041333333534F3954411F85EB4186C450410AD7A3605039544114AE47B1B4C450410AD7A35050395441B81E859BB4C450415C8FC2154C395441AE47E19AB4C45041295C8F0248395441AE47E15A84C45041666666C649395441
+</a>
+
+<b>
+01060000000100000001030000000100000027000000A77947DFB1C450413E9E9C51503954413E18E5A2B4C45041F0CB695050395441363DE39BB4C45041B95E0E284C395441B81E859BB4C450415C8FC2154C3954414542E49AB4C45041A1E88615483954415692CD6AACC45041A5323C4F48395441C3AFB8F1A5C450417C09DA8B483954418F5D63089FC45041140BB1CC483954416983CB2391C45041165CBB4E493954417A0F80E28AC4504124C047894939544193BD163188C450412AC27CA249395441220EF03986C45041483CE0B4493954414FEEC9E984C45041411F2CC149395441B20BE35A84C45041DD5566C649395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527301 - 3031821
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000013000000B81E85AB69BB5041333333731C2B54410AD7A3706ABB50413D0AD7331D2B544152B81E256DBB5041AE47E11A222B54419A9999D96FBB5041EC51B8DE2D2B54410AD7A3A070BB5041A4703D8A302B5441CDCCCC5C72BB5041B81E852B332B54410AD7A3A077BB5041F6285CFF362B544114AE47A17BBB5041666666563B2B54418FC2F5E87EBB50419A9999D93D2B5441CDCCCC9C89BB5041D7A370BD332B5441EC51B81E91BB5041EC51B87E2C2B5441CDCCCCAC88BB50415C8FC2151B2B5441D7A3703D95BB50410AD7A3700F2B54417B14AEA79BBB50418FC2F548092B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000A088C8017FBB5041DDA126C23D2B54419FA27FD483BB504122292044412B5441CA43BA728BBB5041D00AEF37472B5441CE35BB178DBB50419668FA7C472B5441D1E9FF409BBB5041F8BE69E0432B54412181B7AA9BBB5041FCF787B0432B5441360447CF9FBB5041A4F66AE3412B5441E9C83A34A6BB50415A3478BC3E2B5441D28C8384ABBB5041DCF168673B2B54411AD03DEEAFBB5041C4EFA085382B544176D69593B8BB504140ACADBF332B54417A3340CEBBBB50419F7517AD312B5441DE89AF31B8BB504145CA684E2C2B5441A80A437CB5BB5041B2E8B113282B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527301 - 3621060
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000013000000B81E85AB69BB5041333333731C2B54410AD7A3706ABB50413D0AD7331D2B544152B81E256DBB5041AE47E11A222B54419A9999D96FBB5041EC51B8DE2D2B54410AD7A3A070BB5041A4703D8A302B5441CDCCCC5C72BB5041B81E852B332B54410AD7A3A077BB5041F6285CFF362B544114AE47A17BBB5041666666563B2B54418FC2F5E87EBB50419A9999D93D2B5441CDCCCC9C89BB5041D7A370BD332B5441EC51B81E91BB5041EC51B87E2C2B5441CDCCCCAC88BB50415C8FC2151B2B5441D7A3703D95BB50410AD7A3700F2B54417B14AEA79BBB50418FC2F548092B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000A088C8017FBB5041DDA126C23D2B54419FA27FD483BB504122292044412B5441CA43BA728BBB5041D00AEF37472B5441CE35BB178DBB50419668FA7C472B5441D1E9FF409BBB5041F8BE69E0432B54412181B7AA9BBB5041FCF787B0432B5441360447CF9FBB5041A4F66AE3412B5441E9C83A34A6BB50415A3478BC3E2B5441D28C8384ABBB5041DCF168673B2B54411AD03DEEAFBB5041C4EFA085382B544176D69593B8BB504140ACADBF332B54417A3340CEBBBB50419F7517AD312B5441DE89AF31B8BB504145CA684E2C2B5441A80A437CB5BB5041B2E8B113282B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527400 - 34433
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002D000000713D0AF7C2C85041EC51B88E3A3D54413D0AD743C2C850417B14AEF73B3D54417B14AE07C0C850413D0AD7E33D3D544148E17A24BBC850410AD7A3E03E3D5441B81E856BB1C85041EC51B85E3D3D5441C3F5284CAEC8504114AE47413D3D5441E17A14BEAEC85041EC51B89E353D5441295C8FE2B1C8504114AE4751353D5441AE47E1DAB1C85041713D0A07333D5441CDCCCC4CB4C8504185EB51A8323D544114AE47D1B4C85041B81E858B333D54415C8FC2B5B7C850417B14AED7333D54413D0AD703B9C850417B14AE37283D5441CDCCCC4CB4C85041D7A3709D273D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000080000005CEF3F8AADC8504160637E262C3D5441300D3A49ADC8504125B8CE3D303D5441A5B824DDACC850412EB8D1DF3C3D54416680936AADC85041365BAFFB3C3D544136A6D6DBADC8504135F13B42313D544106CC194DAEC850415659EFBD283D5441B06163C2ADC850419A03489E283D54415CEF3F8AADC8504160637E262C3D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527400 - 73827
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002D000000713D0AF7C2C85041EC51B88E3A3D54413D0AD743C2C850417B14AEF73B3D54417B14AE07C0C850413D0AD7E33D3D544148E17A24BBC850410AD7A3E03E3D5441B81E856BB1C85041EC51B85E3D3D5441C3F5284CAEC8504114AE47413D3D5441E17A14BEAEC85041EC51B89E353D5441295C8FE2B1C8504114AE4751353D5441AE47E1DAB1C85041713D0A07333D5441CDCCCC4CB4C8504185EB51A8323D544114AE47D1B4C85041B81E858B333D54415C8FC2B5B7C850417B14AED7333D54413D0AD703B9C850417B14AE37283D5441CDCCCC4CB4C85041D7A3709D273D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000080000005CEF3F8AADC8504160637E262C3D5441300D3A49ADC8504125B8CE3D303D5441A5B824DDACC850412EB8D1DF3C3D54416680936AADC85041365BAFFB3C3D544136A6D6DBADC8504135F13B42313D544106CC194DAEC850415659EFBD283D5441B06163C2ADC850419A03489E283D54415CEF3F8AADC8504160637E262C3D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527480 - 187818
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E0000006666664633D05041713D0AC7565154416666661637D050411F85EB6158515441C3F5281C39D05041CDCCCCCC58515441B81E858B47D050419A9999F94051544148E17AF438D0504148E17AF43751544185EB51581ED050413D0AD793275154411F85EB210CD05041E17A14FE44515441713D0A170FD05041713D0A07465154410AD7A3F011D0504166666606475154410000009016D05041E17A146E49515441AE47E12A1AD05041F6285C1F4B5154413333330320D05041A4703DEA4D515441A4703DCA2ED05041333333E3545154416666664633D05041713D0AC756515441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000000AD7A3F011D05041666666064751544133C29B7514D050415508F755485154418178009016D050415A89146E495154410F3DAF0A17D05041BDC3ADA749515441AE47E12A1AD05041F6285C1F4B51544155DA432C1ED050419E273F094D51544102C1330320D050414A353DEA4D515441A44D350320D05041B26E3EEA4D515441A4703DCA2ED05041333333E3545154416666664633D05041713D0AC756515441D42F631637D05041D52AEA6158515441BEF8641637D050419F42EA6158515441C3F5281C39D05041CDCCCCCC58515441FFF7B37E47D05041C525C10E41515441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527571 - 187718
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000002000000210000000000007070BA50413D0AD7A3312D54415C8FC25573BA50419A999949362D5441AE47E11A75BA504185EB5108342D54411F85EB6176BA5041333333F3322D5441295C8F6274BA50410AD7A380172D544185EB516864BA5041333333B3182D54415C8FC23553BA5041D7A370FD192D544185EB519855BA5041AE47E19A1B2D544148E17A3457BA50417B14AE571C2D5441D7A370AD58BA5041C3F528FC1C2D5441C3F5284C59BA5041E17A14EE1D2D5441F6285CDF59BA504152B81E751E2D54413D0AD7F35ABA5041C3F528BC1E2D544114AE47115CBA50411F85EB411F2D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003600000085EB516864BA5041333333B3182D5441BDE98B8355BA5041A51733D1192D54411AA714E957BA5041BBABAA8A1B2D5441D7A370AD58BA5041C3F528FC1C2D5441C3F5284C59BA5041E17A14EE1D2D54411350E18F59BA504105B3342C1E2D5441C9E3EDC559BA50414FA7E5411E2D5441FBA741005ABA5041A093927D1E2D54413D0AD7F35ABA5041C3F528BC1E2D544114AE47115CBA50411F85EB411F2D5441666666965CBA5041AE47E1CA1F2D5441195F7DA45CBA504184E05624212D54410051F6E25CBA5041F6CAA32A212D544127F7790D5FBA50418D4812BA222D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>527571 - 359135
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000002000000210000000000007070BA50413D0AD7A3312D54415C8FC25573BA50419A999949362D5441AE47E11A75BA504185EB5108342D54411F85EB6176BA5041333333F3322D5441295C8F6274BA50410AD7A380172D544185EB516864BA5041333333B3182D54415C8FC23553BA5041D7A370FD192D544185EB519855BA5041AE47E19A1B2D544148E17A3457BA50417B14AE571C2D5441D7A370AD58BA5041C3F528FC1C2D5441C3F5284C59BA5041E17A14EE1D2D5441F6285CDF59BA504152B81E751E2D54413D0AD7F35ABA5041C3F528BC1E2D544114AE47115CBA50411F85EB411F2D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003600000085EB516864BA5041333333B3182D5441BDE98B8355BA5041A51733D1192D54411AA714E957BA5041BBABAA8A1B2D5441D7A370AD58BA5041C3F528FC1C2D5441C3F5284C59BA5041E17A14EE1D2D54411350E18F59BA504105B3342C1E2D5441C9E3EDC559BA50414FA7E5411E2D5441FBA741005ABA5041A093927D1E2D54413D0AD7F35ABA5041C3F528BC1E2D544114AE47115CBA50411F85EB411F2D5441666666965CBA5041AE47E1CA1F2D5441195F7DA45CBA504184E05624212D54410051F6E25CBA5041F6CAA32A212D544127F7790D5FBA50418D4812BA222D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528163 - 2997506
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C00000052B81E95560E514166666606899F54419A9999E9620E5141713D0AD7639F5441C3F5283C620E514148E17AC4629F544185EB51D85B0E51418FC2F5F8619F5441EC51B8FE200E51418FC2F5585A9F54410AD7A360200E5141CDCCCC6C5E9F5441F6285C9F1D0E5141AE47E18A709F544152B81E45180E5141E17A14FE809F54413D0AD7F3180E51411F85EB11829F5441AE47E17A350E5141F6285CBF859F5441713D0A47550E514185EB51D8899F544152B81E95560E514166666606899F5441
+</a>
+
+<b>
+010600000001000000010300000001000000170000003D0AD7F3180E51411F85EB11829F5441F4CB768C280E514189A99C14849F54412C5B8728430E5141FB329782879F544187B1AED1540E5141447032C9899F5441713D0A47550E514185EB51D8899F5441CEB7E55C560E51415647BA29899F544152B81E95560E514166666606899F54415D9CB8575E0E5141C9A62D9F719F544197829EB85E0E5141F58D818E709F54413BDF0A054B0E51418CE740306E9F5441BFE94159340E5141522B9F766B9F54418988F2C71E0E51415BBCF1DE689F5441BC02F51C1E0E5141E6E5EC506D9F54416863ABBE1D0E5141BC55FBBC6F9F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>583706 - 3076092
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000160000007B14AE97A9DA50418FC2F5184ADE5441AE47E19AA9DA5041E17A141E4BDE5441AE47E1AAA9DA50410AD7A34050DE5441666666C6A9DA5041F6285C0F59DE5441AE47E10AAADA5041C3F5284C6FDE5441AE47E13AAADA5041B81E85BB7EDE5441E17A142EABDA5041295C8F627FDE5441AE47E1DABCDA5041666666D678DE544100000040D1DA50417B14AE4771DE5441D7A3702DD2DA5041EC51B8EE6FDE54418FC2F5F8D1DA50410AD7A3005EDE54413D0AD7D3D1DA50416666667651DE54419A9999C9D1DA5041CDCCCC1C4EDE544185EB51C8D1DA5041EC51B89E4DDE5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000F441813CAADA50410E59495743DE5441BB3C51ABA9DA5041969657D843DE54416C0473BBA9DA50419F64DBC64ADE5441B0B4D907ABDA504102884E254BDE5441B6AA6189ADDA5041D8D57FAE4BDE54419BA75178B0DA5041E130F57E4CDE544108B02E8FB3DA5041161DDA6A4DDE54416508D69BB6DA50414E345A0C4EDE544185CA268DB9DA50415844C0464EDE544104E7F24BBCDA50410FD0183B4EDE544131E2A8F3BEDA5041D6FFADE34DDE5441BD122492C1DA50413BF762584DDE5441BF3E18F4C2DA504106864B3C4DDE5441CA823265C4DA50418DB810294DDE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>583706 - 3372839
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000160000007B14AE97A9DA50418FC2F5184ADE5441AE47E19AA9DA5041E17A141E4BDE5441AE47E1AAA9DA50410AD7A34050DE5441666666C6A9DA5041F6285C0F59DE5441AE47E10AAADA5041C3F5284C6FDE5441AE47E13AAADA5041B81E85BB7EDE5441E17A142EABDA5041295C8F627FDE5441AE47E1DABCDA5041666666D678DE544100000040D1DA50417B14AE4771DE5441D7A3702DD2DA5041EC51B8EE6FDE54418FC2F5F8D1DA50410AD7A3005EDE54413D0AD7D3D1DA50416666667651DE54419A9999C9D1DA5041CDCCCC1C4EDE544185EB51C8D1DA5041EC51B89E4DDE5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000F441813CAADA50410E59495743DE5441BB3C51ABA9DA5041969657D843DE54416C0473BBA9DA50419F64DBC64ADE5441B0B4D907ABDA504102884E254BDE5441B6AA6189ADDA5041D8D57FAE4BDE54419BA75178B0DA5041E130F57E4CDE544108B02E8FB3DA5041161DDA6A4DDE54416508D69BB6DA50414E345A0C4EDE544185CA268DB9DA50415844C0464EDE544104E7F24BBCDA50410FD0183B4EDE544131E2A8F3BEDA5041D6FFADE34DDE5441BD122492C1DA50413BF762584DDE5441BF3E18F4C2DA504106864B3C4DDE5441CA823265C4DA50418DB810294DDE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528596 - 987105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002D000000D7A370FDED135141C3F528EC8C885441A4703D2AF1135141EC51B8EE8E8854410AD7A360F5135141295C8FB2918854410AD7A330F8135141295C8FB29388544114AE4731FB135141E17A14CE95885441B81E85BBFB13514152B81EA5968854413D0AD7F3FE135141295C8F42988854413D0AD71301145141AE47E15A9988544166666626031451410AD7A3509A885441CDCCCC7C0514514185EB51689B885441EC51B86E0714514148E17A649C8854417B14AE8709145141A4703D4A9D885441B81E854B0B145141AE47E1FA9D885441CDCCCC8C0E14514148E17A449F885441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000009DC38483F1135141831F7ABF7E88544150E83233F1135141E111F2137F885441CF143FCCF01351414696B0AD7F885441B784E548F0135141A960D7718088544160B3B2D3EF135141B922DC2081885441C95EDE73EF1351414888F7AF818854417216A1B7EE135141011413C9828854414626CB37EE135141A669FA87838854416F901DE6ED135141E2C6F3018488544182E12058ED135141DA24FDD5848854416CE93518ED135141ACCF7035858854416ADABC8DEC135141E4B83A048688544100000010EC135141000000C086885441470D99ADEC135141E913221187885441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528597 - 369560
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000028000000F6285CEF65045141CDCCCC5CC37C5441333333C360045141F6285CCFC67C5441295C8F225E045141CDCCCC8CC77C544152B81E755A045141E17A14BEC67C5441E17A149E5B0451415C8FC2C5C87C5441295C8F725D04514133333343C87C54417B14AE3765045141B81E858BD47C544185EB51D86A0451419A999939DE7C5441CDCCCC2C6C045141B81E859BE07C5441D7A3705D6D04514100000060DF7C544148E17AC46D045141AE47E12ADE7C54415C8FC2E56D0451410AD7A350DD7C544185EB51C86D0451413D0AD713DC7C54413D0AD7D36D0451413D0AD763DB7C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003300000066666696770451418FC2F5E8D67C54419831D95278045141CBDE226BD67C5441E1BF5B6279045141A58A42DFD47C544108CC2F39770451419C2701A8D17C5441A116ED1D77045141C528A2D4C67C54410AD7A3E0760451419A9999C9BB7C544179E224CD7604514192CE359DB47C54413FD8D1007604514171094E76B57C5441DC686F04720451416FAEDB4FBA7C54410AD7A3007204514148E17A54BA7C544133E59B836E045141CC21AAE0BC7C544101B519746604514129E2A1F7C27C5441F6285CEF65045141CDCCCC5CC37C5441333333C360045141F6285CCFC67C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528730 - 3008112
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000034000000E17A14EE9C175141D7A3702DCA815441333333639D175141A4703D0ACD81544114AE47D19F1751418FC2F548D5815441000000E0A1175141295C8F12DE81544185EB5118A2175141B81E851BE18154413D0AD7A39C17514148E17A14E28154413333337398175141C3F528DCE2815441CDCCCC1C961751418FC2F558E3815441F6285C8F901751413D0AD783E4815441C3F528FC90175141A4703DEAEB8154418FC2F52891175141AE47E15AEE815441D7A3701D91175141B81E85EBEE815441713D0A2791175141A4703D9AF78154410AD7A39091175141F6285CBFFE815441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000FE63D1E3E917514155CAAF16FB8154411387BB1DE8175141F6C80A86F7815441CD65BD5FC71751418FA91142F581544140E782E2C71751413F2C610BFD8154415CC63633CD175141D2EB5E67FD81544100000010D21751417B14AE57FE81544148E17A74D51751413D0AD7A3FF8154418956030BD81751417DB965CD008254417EAB4A51E3175141CC6178F1FD815441FE63D1E3E917514155CAAF16FB815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528730 - 3215129
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000034000000E17A14EE9C175141D7A3702DCA815441333333639D175141A4703D0ACD81544114AE47D19F1751418FC2F548D5815441000000E0A1175141295C8F12DE81544185EB5118A2175141B81E851BE18154413D0AD7A39C17514148E17A14E28154413333337398175141C3F528DCE2815441CDCCCC1C961751418FC2F558E3815441F6285C8F901751413D0AD783E4815441C3F528FC90175141A4703DEAEB8154418FC2F52891175141AE47E15AEE815441D7A3701D91175141B81E85EBEE815441713D0A2791175141A4703D9AF78154410AD7A39091175141F6285CBFFE815441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000FE63D1E3E917514155CAAF16FB8154411387BB1DE8175141F6C80A86F7815441CD65BD5FC71751418FA91142F581544140E782E2C71751413F2C610BFD8154415CC63633CD175141D2EB5E67FD81544100000010D21751417B14AE57FE81544148E17A74D51751413D0AD7A3FF8154418956030BD81751417DB965CD008254417EAB4A51E3175141CC6178F1FD815441FE63D1E3E917514155CAAF16FB815441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528843 - 985321
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001E000000295C8F4201075141D7A3703D6877544152B81E05000751413333338367775441295C8F42FC0651419A9999A965775441D7A370CDF8065141C3F5283C6C77544148E17AC4EF06514152B81EB5797754417B14AE77ED06514114AE47F17C775441F6285CDFEB065141EC51B84E7F7754419A999959E90651418FC2F5E8827754419A999929E5065141F6285C9F8977544152B81E35E3065141333333838C775441C3F5286CE00651418FC2F56890775441713D0A47DC065141295C8FE2957754419A999939D80651411F85EBC19A775441D7A370BDD7065141713D0A579B775441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000230000008EA66D0DE1065141D86D45878F775441C3F5286CE00651418FC2F56890775441BEC36CF3DE0651417CDC935A92775441713D0A47DC065141295C8FE295775441CF9811F5DA065141C8F4EA789777544133180F6BD80651414EFA5C8C9A77544133392E22D9065141AEDC6A549B7754411CEF02F7DA0651413D12ED0D9C7754413D65FA81DD0651418912C6009D775441BC65B916DF065141633D2E959D7754418A3DFABBE206514192BA4BC9977754415128796DE706514184DE634B90775441173E0B12E8065141FF3AF13E8F7754417B14AEC7ED065141EC51B8EE85775441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528945 - 3102105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000CDCCCC2C0A2351411F85EBC19584544148E17A94F12251415C8FC2A593845441A4703D0AEF225141CDCCCCCC978454415C8FC275EB22514133333363A184544148E17AE4E82251415C8FC275A8845441C3F528DCE7225141EC51B81EAD8454413D0AD713E7225141000000D0B184544185EB5158D92251417B14AE97B28454419A9999C9CC225141EC51B84EB3845441666666E6CD225141B81E850BBB84544148E17AC4EC2251411F85EB11B7845441EC51B85E0B235141295C8F62B58454419A9999691823514148E17A84B7845441E17A14EE18235141A4703D9AB7845441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002600000056A071B9CE225141C843D4EEE5845441E1A203D3D7225141000DCD6BE684544118162DEADA225141F8838F7DE6845441D3BA743DDE22514162A959CFE68454418FC2F5D8E122514166666686E684544148B23103E2225141A6773FEDE6845441DB42F969E5225141840294CFE2845441502A3856E82251415D59E4F0E0845441025AB1F1EB225141BC6AF7A3DF8454416D04D277ED22514154F0A523DF845441885753BFF0225141DB20B837DE8454413CA8F336F3225141927F1199DD8454413BC9C6AEF5225141E21A5EFADC84544164A74675F922514196A421BEDB845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>528945 - 3465935
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000018000000CDCCCC2C0A2351411F85EBC19584544148E17A94F12251415C8FC2A593845441A4703D0AEF225141CDCCCCCC978454415C8FC275EB22514133333363A184544148E17AE4E82251415C8FC275A8845441C3F528DCE7225141EC51B81EAD8454413D0AD713E7225141000000D0B184544185EB5158D92251417B14AE97B28454419A9999C9CC225141EC51B84EB3845441666666E6CD225141B81E850BBB84544148E17AC4EC2251411F85EB11B7845441EC51B85E0B235141295C8F62B58454419A9999691823514148E17A84B7845441E17A14EE18235141A4703D9AB7845441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002600000056A071B9CE225141C843D4EEE5845441E1A203D3D7225141000DCD6BE684544118162DEADA225141F8838F7DE6845441D3BA743DDE22514162A959CFE68454418FC2F5D8E122514166666686E684544148B23103E2225141A6773FEDE6845441DB42F969E5225141840294CFE2845441502A3856E82251415D59E4F0E0845441025AB1F1EB225141BC6AF7A3DF8454416D04D277ED22514154F0A523DF845441885753BFF0225141DB20B837DE8454413CA8F336F3225141927F1199DD8454413BC9C6AEF5225141E21A5EFADC84544164A74675F922514196A421BEDB845441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529013 - 3099530
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D00000052B81EF5A51B514148E17A94C98B5441B81E85EBAC1B514100000070CD8B5441D7A3704DB61B51413D0AD713D38B54413D0AD793B81B514100000040CF8B544166666696BA1B51411F85EB61C48B54418FC2F548B81B5141C3F5286CC38B54417B14AE27B71B514166666656B98B544185EB51F8B51B5141F6285CDFAE8B5441CDCCCC2CAB1B5141C3F5289CAF8B5441A4703D5AA31B51411F85EBA1AF8B54410AD7A3B0A51B514100000080BA8B5441EC51B85EA61B5141713D0AA7C28B544152B81EF5A51B514148E17A94C98B5441
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000C48863D8BE1B51413B154701AE8B5441AEE0AD50BE1B5141265FDBE8A68B5441A988B25FBE1B5141A2987CC8A68B54418730DB40BE1B514147D9D6AEA68B5441562FD2A2BC1B5141C50B619CA68B54419EFC6525B61B5141E2F125A1A68B54418D9CA43FAA1B51415CB9CBC6A68B54419F4FC9E0A21B5141ABFD6741A78B5441295C8F12A01B51410AD7A370A78B544103B5F7DA9D1B5141FF63DBAC9E8B5441852CFCC89D1B514151E4C4659E8B54412ACF4648991B5141F1A569209F8B54410CA4F410941B514115D35A30A08B5441FA3B23D88F1B51411E44BCD6A08B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529013 - 3458676
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D00000052B81EF5A51B514148E17A94C98B5441B81E85EBAC1B514100000070CD8B5441D7A3704DB61B51413D0AD713D38B54413D0AD793B81B514100000040CF8B544166666696BA1B51411F85EB61C48B54418FC2F548B81B5141C3F5286CC38B54417B14AE27B71B514166666656B98B544185EB51F8B51B5141F6285CDFAE8B5441CDCCCC2CAB1B5141C3F5289CAF8B5441A4703D5AA31B51411F85EBA1AF8B54410AD7A3B0A51B514100000080BA8B5441EC51B85EA61B5141713D0AA7C28B544152B81EF5A51B514148E17A94C98B5441
+</a>
+
+<b>
+0106000000010000000103000000010000002C000000C48863D8BE1B51413B154701AE8B5441AEE0AD50BE1B5141265FDBE8A68B5441A988B25FBE1B5141A2987CC8A68B54418730DB40BE1B514147D9D6AEA68B5441562FD2A2BC1B5141C50B619CA68B54419EFC6525B61B5141E2F125A1A68B54418D9CA43FAA1B51415CB9CBC6A68B54419F4FC9E0A21B5141ABFD6741A78B5441295C8F12A01B51410AD7A370A78B544103B5F7DA9D1B5141FF63DBAC9E8B5441852CFCC89D1B514151E4C4659E8B54412ACF4648991B5141F1A569209F8B54410CA4F410941B514115D35A30A08B5441FA3B23D88F1B51411E44BCD6A08B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>626538 - 3152509
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B000000333333935C1551418FC2F578E62D5541B81E854B62155141AE47E11ADD2D554114AE47A16B15514114AE47D1CD2D55411F85EB916315514166666666C82D5541713D0A275A155141295C8F82C22D55417B14AE0746155141B81E858BB42D5541333333B344155141EC51B8FEB32D5541333333A34015514114AE4751B22D5541EC51B89E381551418FC2F538B02D5541C3F528FC2815514114AE4771AC2D55415C8FC2F524155141A4703DDAAB2D55417B14AE9726155141A4703D3AAF2D55415C8FC2452815514166666616B32D5541295C8FD22A155141000000B0B82D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000864C68353B155141EEA587590D2E554138481E1C3815514157F656030B2E5541621EF8D935155141CE194D66072E55411E30730B3415514142C810D7042E5541B93FDE4730155141FDD98B08032E5541C19E751E2D15514111821F9AFA2D55418F5EAB0727155141CE20BEC6F92D5541EC51B8DE26155141713D0A27FA2D5541E17A142E26155141713D0A17092E55419515FF533115514100447B600B2E5541864C68353B155141EEA587590D2E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>626538 - 3482201
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B000000333333935C1551418FC2F578E62D5541B81E854B62155141AE47E11ADD2D554114AE47A16B15514114AE47D1CD2D55411F85EB916315514166666666C82D5541713D0A275A155141295C8F82C22D55417B14AE0746155141B81E858BB42D5541333333B344155141EC51B8FEB32D5541333333A34015514114AE4751B22D5541EC51B89E381551418FC2F538B02D5541C3F528FC2815514114AE4771AC2D55415C8FC2F524155141A4703DDAAB2D55417B14AE9726155141A4703D3AAF2D55415C8FC2452815514166666616B32D5541295C8FD22A155141000000B0B82D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000864C68353B155141EEA587590D2E554138481E1C3815514157F656030B2E5541621EF8D935155141CE194D66072E55411E30730B3415514142C810D7042E5541B93FDE4730155141FDD98B08032E5541C19E751E2D15514111821F9AFA2D55418F5EAB0727155141CE20BEC6F92D5541EC51B8DE26155141713D0A27FA2D5541E17A142E26155141713D0A17092E55419515FF533115514100447B600B2E5541864C68353B155141EEA587590D2E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529354 - 153183
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000200000001030000000100000013000000333333B36C0F514148E17A64147A5441CDCCCC1C760F5141295C8F72FA795441EC51B83E760F514148E17A04FA79544185EB51786C0F51411F85EB91F67954418FC2F538670F514148E17A34027A5441F6285CFF600F5141F6285C1F0D7A54418FC2F538610F51417B14AE470D7A5441E17A146E610F5141A4703D9A0D7A5441F6285CCF610F5141295C8F320E7A54417B14AE37620F5141666666D60E7A5441C3F5280C660F5141AE47E1CA107A54418FC2F5B8660F5141B81E854B117A5441B81E85AB670F514100000000127A54418FC2F568680F5141A4703D7A127A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000D14DE11A630F5141CAD85E4A0F7A54419FC34066630F51417C19D8700F7A5441CFBB7166630F51417A4A98700F7A54414F91C407660F5141E5C2A2C8107A5441735B2A0C660F5141F369E1CA107A5441F51C2A8A660F514138F0AE28117A54418FC2F5B8660F5141B81E854B117A5441B81E85AB670F514100000000127A544197C033CE670F5141131E6116127A5441942DF768680F51410F4E3C7A127A5441E829A794680F514109405A96127A5441B81E85BB680F5141F6285CAF127A5441713D0A87690F51417B14AE07137A5441000000306B0F5141295C8FC2137A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529566 - 59719
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A00000048E17AF44F075141E17A14DEBE765441A4703D2A3807514114AE47D1B4765441A4703DDA280751419A9999B9C07654410000008021075141AE47E13AC67654418FC2F5A8150751417B14AE07CF765441CDCCCCDC12075141CDCCCCBCD07654419A9999190F075141713D0A47D4765441713D0A371A075141C3F5287CE2765441333333E332075141CDCCCC1CD276544148E17AF44F075141E17A14DEBE765441
+</a>
+
+<b>
+0106000000010000000103000000010000003A000000BEB57E6430075141FAF45F7B01775441A4703DAA3807514166666636FE7654418FC2F5083F0751418FC2F5A8FA7654413D0AD723460751410AD7A320F6765441D7A3707D4D075141B81E85FBF07654410AD7A31056075141713D0AB7EB765441E17A14AE5C0751413D0AD733E67654417B14AE0764075141295C8F52E07654410AD7A370680751413D0AD703DD765441000000A06B07514152B81EB5D9765441A4703DCA6F075141F6285CAFD4765441AE47E12A710751413D0AD783D4765441A4703D4A7C075141295C8F02C8765441E17A140E88075141CDCCCCCCBA765441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529781 - 990563
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A0000005C8FC2A57415514185EB51285E6854413D0AD7535B155141C3F528BC5B685441EC51B83E5A1551411F85EBA15B685441295C8F123A155141E17A148E586854418FC2F5F838155141E17A14AE59685441AE47E19A39155141E17A141E5F6854411F85EB813B155141000000706F6854413D0AD7433D1551417B14AEE77A6854417B14AE773F1551417B14AE87846854413D0AD76344155141666666C683685441713D0AB748155141000000E0846854417B14AE17501551415C8FC2258668544152B81E25531551415C8FC22586685441713D0A875A155141E17A14AE85685441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000047000000F0EF48418115514177481C368B685441ECB14A7A82155141E6DD039C8C6854417EE670BC83155141C09C5F0C8E6854419CA3E59087155141955D776D9268544136FB53018B1551412963F25E966854415D03721D8D155141C5E12D5396685441A152FE638E155141B6A6966796685441DB2B5CD38F15514191F5D0A4966854412731085C91155141894160CD9668544177BE9F1294155141E7FBA911976854413108ACF496155141BE9F1A0797685441560E2DC29915514110583924976854411EFB7CCF9915514119B4AB66946854412DB29DCF99155141B29DEF5F94685441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529781 - 3569144
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A0000005C8FC2A57415514185EB51285E6854413D0AD7535B155141C3F528BC5B685441EC51B83E5A1551411F85EBA15B685441295C8F123A155141E17A148E586854418FC2F5F838155141E17A14AE59685441AE47E19A39155141E17A141E5F6854411F85EB813B155141000000706F6854413D0AD7433D1551417B14AEE77A6854417B14AE773F1551417B14AE87846854413D0AD76344155141666666C683685441713D0AB748155141000000E0846854417B14AE17501551415C8FC2258668544152B81E25531551415C8FC22586685441713D0A875A155141E17A14AE85685441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000047000000F0EF48418115514177481C368B685441ECB14A7A82155141E6DD039C8C6854417EE670BC83155141C09C5F0C8E6854419CA3E59087155141955D776D9268544136FB53018B1551412963F25E966854415D03721D8D155141C5E12D5396685441A152FE638E155141B6A6966796685441DB2B5CD38F15514191F5D0A4966854412731085C91155141894160CD9668544177BE9F1294155141E7FBA911976854413108ACF496155141BE9F1A0797685441560E2DC29915514110583924976854411EFB7CCF9915514119B4AB66946854412DB29DCF99155141B29DEF5F94685441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529794 - 1056684
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D000000B81E85CBED165141F6285C8F006C5441CDCCCCFCD51651411F85EB81056C54413D0AD723D716514148E17A84076C544148E17AC4D81651410AD7A3600A6C5441713D0AC7DA165141666666E60D6C544166666656DE165141AE47E17A136C5441333333B3E1165141000000C0186C544166666696E316514152B81EB51B6C54418FC2F5F8E416514185EB51181E6C5441295C8F22E51651410AD7A3601E6C544185EB51E8E51651415C8FC2B51F6C5441295C8F12E8165141000000C0236C54413D0AD753E81651413D0AD743246C544114AE47D1EA165141EC51B84E296C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000001C000000A5A25AEA49175141D8750FD9096C5441D679E4DC40175141A37D353A0B6C5441A4703DEA411751413D0AD7030B6C544181A25AEA4917514183750FD9096C5441FAB592FC491751419D66BA8E096C5441D730F0B147175141B8B6603C046C54413D0AD7B3401751410AD7A300056C5441A4703DDA27175141D7A3700D0A6C5441000000A01A1751418FC2F5D80C6C5441666666C6081751419A999959116C5441C3F528DCF71651418FC2F5D8166C5441295C8F22E51651410AD7A3601E6C544185EB51E8E51651415C8FC2B51F6C5441295C8F12E8165141000000C0236C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529795 - 51678
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000D000000713D0A47CD15514114AE47810969544152B81E35CC155141AE47E18A10695441AE47E10AC81551411F85EBF12B695441C3F5281CDE155141AE47E10A2869544152B81E95E9155141CDCCCC5C28695441B81E85EBF715514185EB51F8C7685441AE47E11ADD155141EC51B85EC268544100000080DA1551419A999999C26854417B14AE67D9155141295C8FC2C3685441F6285CAFD8155141C3F528CCC5685441AE47E1CAD715514148E17AC4CC685441AE47E1AAD4155141000000C0E4685441713D0A47CD15514114AE478109695441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000210D0DEED215514182D2F853E46854412E4BFB8DCD1551412E74AEAE076954414E82DDB2CE1551417400C16F02695441778DE63BD015514143C4F2CCFA685441A29FADF0D11551418EE09550F268544119714067D4155141645B5B10E66854419E25F75DD51551418B7AA061DF6854416AA78F8DD61551413C38B647D668544159824F58D7155141F445BB33D068544157EF691FD815514190AB4F30CA6854411E625DC3D8155141059C8C93C56854414BA7D683D91551415DE1BAA4C368544100000080DA1551419A999999C2685441AE47E11ADD155141EC51B85EC2685441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>529795 - 85649
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000D000000713D0A47CD15514114AE47810969544152B81E35CC155141AE47E18A10695441AE47E10AC81551411F85EBF12B695441C3F5281CDE155141AE47E10A2869544152B81E95E9155141CDCCCC5C28695441B81E85EBF715514185EB51F8C7685441AE47E11ADD155141EC51B85EC268544100000080DA1551419A999999C26854417B14AE67D9155141295C8FC2C3685441F6285CAFD8155141C3F528CCC5685441AE47E1CAD715514148E17AC4CC685441AE47E1AAD4155141000000C0E4685441713D0A47CD15514114AE478109695441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000210D0DEED215514182D2F853E46854412E4BFB8DCD1551412E74AEAE076954414E82DDB2CE1551417400C16F02695441778DE63BD015514143C4F2CCFA685441A29FADF0D11551418EE09550F268544119714067D4155141645B5B10E66854419E25F75DD51551418B7AA061DF6854416AA78F8DD61551413C38B647D668544159824F58D7155141F445BB33D068544157EF691FD815514190AB4F30CA6854411E625DC3D8155141059C8C93C56854414BA7D683D91551415DE1BAA4C368544100000080DA1551419A999999C2685441AE47E11ADD155141EC51B85EC2685441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>530235 - 2951105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000210000001F85EBD1880A514152B81E4594735441C3F5284C800A514148E17A149A735441A4703DFA7D0A5141000000E09B735441AE47E18A7D0A5141CDCCCC6C9D735441000000D07E0A5141333333C3A0735441295C8F82880A514100000000B87354411F85EB218C0A5141EC51B8AEC0735441713D0A17850A5141A4703D2AC77354413D0AD7D3810A51413D0AD7A3CB7354413D0AD7E3800A5141F6285CFFD373544185EB51F87F0A5141295C8F12E0735441333333D37F0A5141A4703DBAEF73544148E17A44800A5141A4703DBAF573544148E17AB4810A514148E17A14FA735441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000005F76085E990A5141EA164F08C17354413BA4F82B9B0A514100FAD2FBC07354411ED70AD99E0A514146FAB5FCC0735441C03E9702A20A5141DE4079FDC0735441F4E1D092A70A51417DCCD0FEC073544177EB851BAB0A51413F07ABFFC0735441A4703DCAB10A514114AE4701C1735441B471CD02AF0A5141C0611F86BA735441D80394F7A70A5141A24D401AAA735441ED856AD6A20A5141FF85D5249E735441DCDB394A9E0A51418F0ACC8A93735441A50DDFC59B0A51413104A3AC8D735441B81E852B9A0A5141000000F08973544185EB51E8910A5141C3F5287C8E735441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>530235 - 3461119
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000210000001F85EBD1880A514152B81E4594735441C3F5284C800A514148E17A149A735441A4703DFA7D0A5141000000E09B735441AE47E18A7D0A5141CDCCCC6C9D735441000000D07E0A5141333333C3A0735441295C8F82880A514100000000B87354411F85EB218C0A5141EC51B8AEC0735441713D0A17850A5141A4703D2AC77354413D0AD7D3810A51413D0AD7A3CB7354413D0AD7E3800A5141F6285CFFD373544185EB51F87F0A5141295C8F12E0735441333333D37F0A5141A4703DBAEF73544148E17A44800A5141A4703DBAF573544148E17AB4810A514148E17A14FA735441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000005F76085E990A5141EA164F08C17354413BA4F82B9B0A514100FAD2FBC07354411ED70AD99E0A514146FAB5FCC0735441C03E9702A20A5141DE4079FDC0735441F4E1D092A70A51417DCCD0FEC073544177EB851BAB0A51413F07ABFFC0735441A4703DCAB10A514114AE4701C1735441B471CD02AF0A5141C0611F86BA735441D80394F7A70A5141A24D401AAA735441ED856AD6A20A5141FF85D5249E735441DCDB394A9E0A51418F0ACC8A93735441A50DDFC59B0A51413104A3AC8D735441B81E852B9A0A5141000000F08973544185EB51E8910A5141C3F5287C8E735441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>530235 - 21419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000210000001F85EBD1880A514152B81E4594735441C3F5284C800A514148E17A149A735441A4703DFA7D0A5141000000E09B735441AE47E18A7D0A5141CDCCCC6C9D735441000000D07E0A5141333333C3A0735441295C8F82880A514100000000B87354411F85EB218C0A5141EC51B8AEC0735441713D0A17850A5141A4703D2AC77354413D0AD7D3810A51413D0AD7A3CB7354413D0AD7E3800A5141F6285CFFD373544185EB51F87F0A5141295C8F12E0735441333333D37F0A5141A4703DBAEF73544148E17A44800A5141A4703DBAF573544148E17AB4810A514148E17A14FA735441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000B48E94309A0A5141634237ED897354419F6C13ED9A0A5141A26FE1B08B7354416D96498F9C0A514177D730828F735441929120109E0A5141B37D5A0393735441F7E65A9D9F0A5141A36565A19673544143D73FDC9F0A51412BEB0434977354410658F35DA20A5141874FFE0B9D735441AA56DA60A20A5141386DC2129D7354414FDF6571A20A5141FFD754399D735441F1374B9CA30A51417F1C27F29F735441DBD35265A50A5141E412A41BA473544182597511A60A514133C7F1ACA5735441F47516E6A90A51411CF41A9BAE735441DE251EC3AA0A51418593CD99B0735441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>530235 - 65278
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000210000001F85EBD1880A514152B81E4594735441C3F5284C800A514148E17A149A735441A4703DFA7D0A5141000000E09B735441AE47E18A7D0A5141CDCCCC6C9D735441000000D07E0A5141333333C3A0735441295C8F82880A514100000000B87354411F85EB218C0A5141EC51B8AEC0735441713D0A17850A5141A4703D2AC77354413D0AD7D3810A51413D0AD7A3CB7354413D0AD7E3800A5141F6285CFFD373544185EB51F87F0A5141295C8F12E0735441333333D37F0A5141A4703DBAEF73544148E17A44800A5141A4703DBAF573544148E17AB4810A514148E17A14FA735441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000B48E94309A0A5141634237ED897354419F6C13ED9A0A5141A26FE1B08B7354416D96498F9C0A514177D730828F735441929120109E0A5141B37D5A0393735441F7E65A9D9F0A5141A36565A19673544143D73FDC9F0A51412BEB0434977354410658F35DA20A5141874FFE0B9D735441AA56DA60A20A5141386DC2129D7354414FDF6571A20A5141FFD754399D735441F1374B9CA30A51417F1C27F29F735441DBD35265A50A5141E412A41BA473544182597511A60A514133C7F1ACA5735441F47516E6A90A51411CF41A9BAE735441DE251EC3AA0A51418593CD99B0735441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>530519 - 352336
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000900000048E17A94210F51415C8FC2E5A57A5441000000401E0F51417B14AE27A47A5441D7A370BD1D0F51413D0AD7E3A37A54410AD7A3001A0F51413D0AD7F3A17A54418FC2F5B8060F5141713D0A77B57A5441EC51B86E090F514114AE47D1B77A544152B81E750C0F5141CDCCCC2CBA7A5441CDCCCC9C0D0F51410AD7A310B97A544148E17A94210F51415C8FC2E5A57A5441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000A8E32277110F51410D46D25DB57A544133E098850E0F5141BF7C2B31B87A54416B957C70110F51410E7E81C7BA7A5441E3BAA40C250F51412486E9B5A77A5441543ACC0C250F51413243C2B5A77A5441CDCCCCBC240F5141C3F5288CA77A5441A46DA1FB220F5141178C70A1A67A5441EE047B94210F5141AF4BC3E5A57A5441A8E32277110F51410D46D25DB57A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>531031 - 3102961
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000009000000E17A143E81125141C3F5281CA66E5441EC51B85E801251417B14AE97C06E544100000010A91251419A9999B9BF6E544185EB51C8BB125141713D0A57BF6E5441AE47E19AC41251413D0AD723BF6E5441AE47E13AFF1251413D0AD7E3BD6E5441C3F528CCF712514114AE4771A66E544152B81E25B51251410AD7A340A66E5441E17A143E81125141C3F5281CA66E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000008D9F8B3880125141FE821FBDC56E54417B8350FFC1125141FF6E05F6C36E5441F1814EDCC1125141B13AC14FBF6E5441EA1E43ECBF125141F907033FBF6E5441A2390DA2B6125141D1DD2672BF6E5441B4DE31AFA81251417EEAA9BBBF6E54417FB0AAE89C125141D7C0EDFBBF6E5441C8B989258E1251416A697E4CC06E5441015C9DCE88125141296BA269C06E5441013ED91A851251412CDED67DC06E5441EC51B85E801251417B14AE97C06E544117A18D5B80125141C465F923C36E54418D9F8B3880125141FE821FBDC56E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>531031 - 3473247
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000009000000E17A143E81125141C3F5281CA66E5441EC51B85E801251417B14AE97C06E544100000010A91251419A9999B9BF6E544185EB51C8BB125141713D0A57BF6E5441AE47E19AC41251413D0AD723BF6E5441AE47E13AFF1251413D0AD7E3BD6E5441C3F528CCF712514114AE4771A66E544152B81E25B51251410AD7A340A66E5441E17A143E81125141C3F5281CA66E5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000008D9F8B3880125141FE821FBDC56E54417B8350FFC1125141FF6E05F6C36E5441F1814EDCC1125141B13AC14FBF6E5441EA1E43ECBF125141F907033FBF6E5441A2390DA2B6125141D1DD2672BF6E5441B4DE31AFA81251417EEAA9BBBF6E54417FB0AAE89C125141D7C0EDFBBF6E5441C8B989258E1251416A697E4CC06E5441015C9DCE88125141296BA269C06E5441013ED91A851251412CDED67DC06E5441EC51B85E801251417B14AE97C06E544117A18D5B80125141C465F923C36E54418D9F8B3880125141FE821FBDC56E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>531657 - 153058
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000AE47E1DA5F13514166666606F47154415C8FC25567135141AE47E1FA02725441EC51B82EA31351413D0AD753DF715441CDCCCCACCB135141AE47E17AC771544148E17AB4C31351413D0AD7B3B7715441A4703D2AA51351411F85EB81C9715441D7A370CD8B135141AE47E14AD87154418FC2F5C88A1351410AD7A310DA7154418FC2F5A889135141000000A0DB7154419A9999898713514100000030DD715441A4703DCA83135141F6285C4FDF715441CDCCCCDC75135141E17A143EE7715441AE47E1DA5F13514166666606F4715441
+</a>
+
+<b>
+010600000001000000010300000001000000130000009A9999898713514100000030DD715441C2355345871351414B5EAB56DD7154417908E300741351411C8B8052E8715441B78D025A7313514167A76DB3E87154418AD63ADE6C1351412B3C7877EC71544106A6EEDA5F135141A3A25E06F4715441FBF6C355671351411EEFDFFA02725441EC51B82EA31351413D0AD753DF715441A123CAACCB135141D9D8E27AC771544183861D20C5135141484FB283BA715441E73605FCC3135141774C7641B8715441996A7BB4C3135141131AD8B3B77154413B236CB4C313514188A2DFB3B7715441A4703D2AA51351411F85EB81C9715441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>531657 - 353833
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000AE47E1DA5F13514166666606F47154415C8FC25567135141AE47E1FA02725441EC51B82EA31351413D0AD753DF715441CDCCCCACCB135141AE47E17AC771544148E17AB4C31351413D0AD7B3B7715441A4703D2AA51351411F85EB81C9715441D7A370CD8B135141AE47E14AD87154418FC2F5C88A1351410AD7A310DA7154418FC2F5A889135141000000A0DB7154419A9999898713514100000030DD715441A4703DCA83135141F6285C4FDF715441CDCCCCDC75135141E17A143EE7715441AE47E1DA5F13514166666606F4715441
+</a>
+
+<b>
+010600000001000000010300000001000000130000009A9999898713514100000030DD715441C2355345871351414B5EAB56DD7154417908E300741351411C8B8052E8715441B78D025A7313514167A76DB3E87154418AD63ADE6C1351412B3C7877EC71544106A6EEDA5F135141A3A25E06F4715441FBF6C355671351411EEFDFFA02725441EC51B82EA31351413D0AD753DF715441A123CAACCB135141D9D8E27AC771544183861D20C5135141484FB283BA715441E73605FCC3135141774C7641B8715441996A7BB4C3135141131AD8B3B77154413B236CB4C313514188A2DFB3B7715441A4703D2AA51351411F85EB81C9715441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>531765 - 352642
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000050000008FC2F598E51B5141713D0AD7FA7254410AD7A320391C514166666656F572544148E17AA43A1C5141A4703D5AEF725441AE47E17AE71B5141CDCCCC7CF47254418FC2F598E51B5141713D0AD7FA725441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000A7E89C1D391C5141BF729956F572544152A1C795E51B51411313C2E1FA72544130E6D101E51B5141211F6CD4FC7254416149A6D0E31B5141BD9BF5D800735441D9A38521ED1B5141D7082545007354413F706123021C5141C2B15FEDFE7254417CAD15CE071C51418C6CA390FE7254415D5271FD201C514180B483CBFC7254416AB0A3FA301C5141C67615D0FB725441BD4AD693371C514148F75168FB725441A57EA320391C5141396C6656F5725441E8B7541E391C514101578D56F5725441A7E89C1D391C5141BF729956F5725441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>531922 - 1058420
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000130000000AD7A32057135141F6285C2FB17B54410AD7A33057135141A4703DDAB27B54413D0AD7D35A135141713D0A17B37B5441713D0A375F135141B81E851BB27B54419A9999F95F13514148E17A34B37B5441EC51B8DE6513514114AE4701B47B5441F6285C2F6413514166666676AC7B54411F85EBF1621351418FC2F5E8A67B54410000006062135141C3F5285CA47B5441713D0AE75C135141EC51B8DE8B7B54418FC2F5D84B1351418FC2F5C88B7B5441CDCCCCAC4313514114AE47318B7B544185EB51883C1351411F85EBF1897B5441A4703D1A3B135141EC51B8FEA27B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000713D0AE75C135141EC51B8DE8B7B54418FC2F5D84B1351418FC2F5C88B7B5441CDCCCCAC4313514114AE47318B7B544185EB51883C1351411F85EBF1897B5441A4703D1A3B135141EC51B8FEA27B5441464A007842135141CDB9FCD3A37B54410F951C8C4413514184E88BE6A37B5441EADE564E4613514183F34ADBA37B544168E3CB2448135141658C88CFA37B54416369E6134E13514112F98FA9A37B54415C8FC2C5511351411F85EB91A37B544152B81E65501351415C8FC2B5987B54410777488F5F135141DED7B7C2977B5441713D0AE75C135141EC51B8DE8B7B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>531922 - 3868882
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000130000000AD7A32057135141F6285C2FB17B54410AD7A33057135141A4703DDAB27B54413D0AD7D35A135141713D0A17B37B5441713D0A375F135141B81E851BB27B54419A9999F95F13514148E17A34B37B5441EC51B8DE6513514114AE4701B47B5441F6285C2F6413514166666676AC7B54411F85EBF1621351418FC2F5E8A67B54410000006062135141C3F5285CA47B5441713D0AE75C135141EC51B8DE8B7B54418FC2F5D84B1351418FC2F5C88B7B5441CDCCCCAC4313514114AE47318B7B544185EB51883C1351411F85EBF1897B5441A4703D1A3B135141EC51B8FEA27B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000713D0AE75C135141EC51B8DE8B7B54418FC2F5D84B1351418FC2F5C88B7B5441CDCCCCAC4313514114AE47318B7B544185EB51883C1351411F85EBF1897B5441A4703D1A3B135141EC51B8FEA27B5441464A007842135141CDB9FCD3A37B54410F951C8C4413514184E88BE6A37B5441EADE564E4613514183F34ADBA37B544168E3CB2448135141658C88CFA37B54416369E6134E13514112F98FA9A37B54415C8FC2C5511351411F85EB91A37B544152B81E65501351415C8FC2B5987B54410777488F5F135141DED7B7C2977B5441713D0AE75C135141EC51B8DE8B7B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532012 - 3138270
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002F00000085EB51285815514185EB5138BC7854415C8FC2B561155141CDCCCCECBB785441C3F5288C6915514152B81EF5B9785441713D0A676C15514133333343BA785441666666A677155141000000D0BC785441F6285C8F80155141EC51B80EC0785441F6285CCF8215514114AE4701C2785441AE47E14A8A155141AE47E12AC4785441333333F3911551411F85EB81C578544152B81E95951551417B14AE17C67854417B14AE47AE15514166666646CC7854418FC2F538B2155141C3F5283CCD78544100000010B9155141D7A3705DCC78544185EB5118BB1551419A9999E9CC785441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000085EB51285815514185EB5138BC7854415C8FC2B561155141CDCCCCECBB785441F7884FF464155141C2224D1CBB7854413C450D6765155141457CF077A97854415CB122CE5E1551416DD0B828AA785441A10EDA2C5B155141D5957DCEAA7854418F39F7FA58155141560D0746AB785441435C9C3F57155141261259A4AB78544197BBAE52571551417065B304B3785441C197F507581551417CE0F9DCB778544185EB51285815514185EB5138BC785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532012 - 3362396
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002F00000085EB51285815514185EB5138BC7854415C8FC2B561155141CDCCCCECBB785441C3F5288C6915514152B81EF5B9785441713D0A676C15514133333343BA785441666666A677155141000000D0BC785441F6285C8F80155141EC51B80EC0785441F6285CCF8215514114AE4701C2785441AE47E14A8A155141AE47E12AC4785441333333F3911551411F85EB81C578544152B81E95951551417B14AE17C67854417B14AE47AE15514166666646CC7854418FC2F538B2155141C3F5283CCD78544100000010B9155141D7A3705DCC78544185EB5118BB1551419A9999E9CC785441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000085EB51285815514185EB5138BC7854415C8FC2B561155141CDCCCCECBB785441F7884FF464155141C2224D1CBB7854413C450D6765155141457CF077A97854415CB122CE5E1551416DD0B828AA785441A10EDA2C5B155141D5957DCEAA7854418F39F7FA58155141560D0746AB785441435C9C3F57155141261259A4AB78544197BBAE52571551417065B304B3785441C197F507581551417CE0F9DCB778544185EB51285815514185EB5138BC785441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532351 - 3180577
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000050000000103000000010000000F0000007B14AE47B91E51417B14AE27B47A5441E17A145EB71E5141C3F528ECB47A544114AE4751B61E514152B81EF5B57A5441D7A370ADB31E514152B81E05B67A5441F6285C1FAD1E5141B81E85ABB77A5441333333B3B61E5141CDCCCCFCB87A54411F85EB11B91E514114AE4791B87A544166666676BA1E51418FC2F5C8B77A54417B14AE67BB1E5141CDCCCCACB67A5441F6285C0FBC1E5141AE47E1CAB57A5441AE47E1BABB1E514152B81E95B57A544114AE47F1BB1E5141D7A3700DB47A5441AE47E1BABB1E5141D7A3709DB37A54418FC2F5B8BA1E51410AD7A3A0B37A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000665A6437A21E514171778B93AB7A544159DB026DA21E51410F537DD6AB7A5441AB6A7D34AF1E514169C45674AB7A5441F2CD22B5B01E5141035575B6A97A54415139B88CB91E514148BBE42FAA7A5441E6B49FA5C11E514107F7D6E7A87A5441330EEEBAC01E5141ED07BD1DA87A54418E7E8C1FBC1E51417676D7E4A77A5441DA182420B81E51411EF24C47A77A54410B5B86FCB41E514148D230AFA77A54415F0943B7AF1E5141DDA19D40A77A5441C163F0C0A21E51410478C3CFA77A5441665A6437A21E514171778B93AB7A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532351 - 3587092
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000050000000103000000010000000F0000007B14AE47B91E51417B14AE27B47A5441E17A145EB71E5141C3F528ECB47A544114AE4751B61E514152B81EF5B57A5441D7A370ADB31E514152B81E05B67A5441F6285C1FAD1E5141B81E85ABB77A5441333333B3B61E5141CDCCCCFCB87A54411F85EB11B91E514114AE4791B87A544166666676BA1E51418FC2F5C8B77A54417B14AE67BB1E5141CDCCCCACB67A5441F6285C0FBC1E5141AE47E1CAB57A5441AE47E1BABB1E514152B81E95B57A544114AE47F1BB1E5141D7A3700DB47A5441AE47E1BABB1E5141D7A3709DB37A54418FC2F5B8BA1E51410AD7A3A0B37A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000665A6437A21E514171778B93AB7A544159DB026DA21E51410F537DD6AB7A5441AB6A7D34AF1E514169C45674AB7A5441F2CD22B5B01E5141035575B6A97A54415139B88CB91E514148BBE42FAA7A5441E6B49FA5C11E514107F7D6E7A87A5441330EEEBAC01E5141ED07BD1DA87A54418E7E8C1FBC1E51417676D7E4A77A5441DA182420B81E51411EF24C47A77A54410B5B86FCB41E514148D230AFA77A54415F0943B7AF1E5141DDA19D40A77A5441C163F0C0A21E51410478C3CFA77A5441665A6437A21E514171778B93AB7A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532746 - 3098573
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000017000000333333C3D21A51410AD7A3600B5D544185EB51E8EB1A5141295C8F72B95C544100000080EA1A514185EB5158B85C5441000000B0E71A514133333373B65C544148E17A64E31A51413D0AD7F3B35C5441C3F5280CDB1A5141CDCCCCACAF5C5441F6285CCFDA1A514100000090AF5C544133333363D11A514133333373CE5C54418FC2F5A8C21A5141295C8FB2FE5C5441CDCCCC1CAD1A5141E17A14FEFB5C5441CDCCCCCCAC1A514166666656FE5C5441F6285CDFA71A5141CDCCCC6CFD5C5441D7A3708DA61A5141D7A3709D025D5441CDCCCC8CA41A514185EB51780A5D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000FE956265A31A5141C3E8B4920E5D54415AC17645A71A514106B67D510F5D5441AF7AB49FAA1A5141F6452CED0F5D5441B67AF378AC1A51412E926E29105D5441602ECC9EAF1A514123AA3C8F105D5441C2479491B01A51418A87E8AD105D5441E12DDC32B11A5141B78ED1C3105D544189340397B21A51411B9534F5105D54411A02E280B51A5141E5995E5C115D544175B24307B81A5141F30CC4B5115D5441B6625AF8B91A514106B683FA115D54415D9FA9A5BC1A5141116C4B59125D5441B59678ADBE1A5141EA21A9BE0B5D544128D1C0F6C01A51415F4B2141045D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532746 - 3448425
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000017000000333333C3D21A51410AD7A3600B5D544185EB51E8EB1A5141295C8F72B95C544100000080EA1A514185EB5158B85C5441000000B0E71A514133333373B65C544148E17A64E31A51413D0AD7F3B35C5441C3F5280CDB1A5141CDCCCCACAF5C5441F6285CCFDA1A514100000090AF5C544133333363D11A514133333373CE5C54418FC2F5A8C21A5141295C8FB2FE5C5441CDCCCC1CAD1A5141E17A14FEFB5C5441CDCCCCCCAC1A514166666656FE5C5441F6285CDFA71A5141CDCCCC6CFD5C5441D7A3708DA61A5141D7A3709D025D5441CDCCCC8CA41A514185EB51780A5D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000FE956265A31A5141C3E8B4920E5D54415AC17645A71A514106B67D510F5D5441AF7AB49FAA1A5141F6452CED0F5D5441B67AF378AC1A51412E926E29105D5441602ECC9EAF1A514123AA3C8F105D5441C2479491B01A51418A87E8AD105D5441E12DDC32B11A5141B78ED1C3105D544189340397B21A51411B9534F5105D54411A02E280B51A5141E5995E5C115D544175B24307B81A5141F30CC4B5115D5441B6625AF8B91A514106B683FA115D54415D9FA9A5BC1A5141116C4B59125D5441B59678ADBE1A5141EA21A9BE0B5D544128D1C0F6C01A51415F4B2141045D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532753 - 152403
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000029000000713D0A77BD2A5141666666F624515441AE47E11AB62A5141000000A023515441D7A3702DB72A514148E17AA42A5154415C8FC225BE2A514152B81E952851544152B81EF5BF2A51413333337327515441EC51B8EEC52A51411F85EBD125515441713D0A17CC2A51416666667626515441EC51B82ED02A5141C3F5281C2651544185EB5168D02A5141B81E859B2551544148E17A44D12A51415C8FC26525515441713D0A47D52A5141333333D324515441CDCCCCDCDC2A5141295C8FB221515441AE47E11AE32A5141295C8F8220515441EC51B8DEE82A51416666660621515441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003B000000AE47E11AE32A5141295C8F82205154414D695429E92A51416B04F9E9205154411E022BE7F52A5141335072FE36515441295C8F22F62A5141295C8F6237515441CAA5513CF62A51415DB9DEF6375154416227F97DF62A51415CDCE17039515441706829ACF62A5141B85AD17A3A5154414B0198E2F62A51417F6337B43B515441AE47E11AF82A5141A4703DBA42515441AE47E15AF72A5141666666364B5154417B14AEA7F22A514152B81E65555154415C8FC2E5FA2A5141E17A145E58515441A299457BFB2A514147BADBCE5551544107925157FD2A5141859681A450515441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532753 - 397760
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000029000000713D0A77BD2A5141666666F624515441AE47E11AB62A5141000000A023515441D7A3702DB72A514148E17AA42A5154415C8FC225BE2A514152B81E952851544152B81EF5BF2A51413333337327515441EC51B8EEC52A51411F85EBD125515441713D0A17CC2A51416666667626515441EC51B82ED02A5141C3F5281C2651544185EB5168D02A5141B81E859B2551544148E17A44D12A51415C8FC26525515441713D0A47D52A5141333333D324515441CDCCCCDCDC2A5141295C8FB221515441AE47E11AE32A5141295C8F8220515441EC51B8DEE82A51416666660621515441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003B000000AE47E11AE32A5141295C8F82205154414D695429E92A51416B04F9E9205154411E022BE7F52A5141335072FE36515441295C8F22F62A5141295C8F6237515441CAA5513CF62A51415DB9DEF6375154416227F97DF62A51415CDCE17039515441706829ACF62A5141B85AD17A3A5154414B0198E2F62A51417F6337B43B515441AE47E11AF82A5141A4703DBA42515441AE47E15AF72A5141666666364B5154417B14AEA7F22A514152B81E65555154415C8FC2E5FA2A5141E17A145E58515441A299457BFB2A514147BADBCE5551544107925157FD2A5141859681A450515441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532782 - 53117
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001200000066666626132351418FC2F548F45D54415C8FC23510235141C3F5281C025E5441B81E856B0C2351418FC2F5A8145E5441666666D63023514148E17A54205E5441B81E855B39235141D7A3709D235E54415C8FC2253A2351413D0AD7E31F5E5441D7A3707D3A2351413D0AD7731C5E54413D0AD7833A235141B81E850B185E5441CDCCCC4C3A23514133333373155E54411F85EBC1392351413D0AD713125E5441CDCCCC9C3823514114AE47F10A5E544185EB511838235141B81E855B065E54411F85EB01382351417B14AE17035E54419A9999193823514152B81E05015E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000B348A4D70D2351412097A41D155E544136B1EB0C252351414B1A878D1C5E54414F431FBA302351419B186B4B205E5441666666D63023514148E17A54205E54416E2E322E38235141A9B04229235E5441A347D2AC38235141887FA973225E5441ED0B3D3433235141CB90E6BE1F5E54413028474332235141166BEBCD1D5E54417C024C523023514196E504EC1C5E5441674F557F29235141A661FAEB1A5E54415B5A59AC21235141E1B43C37195E54416102BA241D23514193C49DA0175E5441C1EA7A2411235141E75C9DAF145E5441B348A4D70D2351412097A41D155E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>626694 - 55424
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000017000000B81E857B62085141EC51B8CEAA0F5541666666D65D085141E17A149E9B0F55415C8FC2D55A08514100000000970F55410AD7A34059085141EC51B8CE940F5541A4703DBA580851417B14AEF7910F5541A4703DDA5908514185EB51188B0F5541000000305D085141C3F5285C830F554152B81E4559085141D7A370AD840F5541000000804E0851415C8FC2D5870F5541E17A14BE4808514114AE4701890F5541AE47E19A420851411F85EBD1890F5541333333632F085141C3F528BC8B0F55413D0AD7D3230851415C8FC2858C0F5541D7A3708D24085141295C8F62930F5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000037000000CB0E6D215E08514102C46D939C0F554182E532C75D08514178CBB3869B0F5541CE3BC0AD5B08514109512B4C980F55410AD7A34059085141EC51B8CE940F5541573C69CD58085141F0EA625F920F5541A0FF7ABC5808514130C2CC03920F5541A4703DBA580851417B14AEF7910F5541A4703DDA5908514185EB51188B0F55415DFB30155D0851417CA2569A830F5541E9A492065D0851418DA9176A830F554153133AE25B085141866669CC830F5541658D4F8E5B085141EA37A2E8830F55413BF291055A0851415182B76C840F554152B81E4559085141D7A370AD840F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>533834 - 1022187
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000045000000A4703DDA7E2F5141F6285C9FC5515441333333837E2F514133333343C2515441CDCCCC0C7F2F51410AD7A350C0515441CDCCCC2C7E2F5141295C8F22C0515441B81E857B7D2F51410AD7A380C0515441D7A3709D7C2F514166666626C1515441C3F5287C7B2F5141E17A14FEC15154418FC2F5F8792F5141CDCCCC8CC35154413D0AD7F3722F5141295C8F12CD51544166666656702F514166666686D0515441C3F5284C6C2F5141D7A3701DD6515441C3F5288C6A2F51417B14AEF7D8515441295C8F026A2F5141AE47E10ADA515441D7A370BD682F5141CDCCCC2CDD515441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000E4744C927F2F5141944740BA01525441C5577D9C802F5141DC8669C9015254417B14AE87AA2F5141AE47E11A0452544166666656BC2F514148E17A34055254418FC2F5E8BC2F51417B14AE0703525441000000A0C12F514148E17A84EA515441D7A3703DC52F5141F6285C7FD7515441713D0A57C52F51410AD7A3E0D6515441713D0A57C32F514114AE4781D55154411F85EB01C12F51415C8FC255D45154411F85EBB1BD2F51419A999959D3515441CDCCCCACB82F5141713D0AD7D2515441B81E858BB32F5141AE47E11AD251544166666676AF2F5141B81E858BD1515441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>533834 - 3466702
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000045000000A4703DDA7E2F5141F6285C9FC5515441333333837E2F514133333343C2515441CDCCCC0C7F2F51410AD7A350C0515441CDCCCC2C7E2F5141295C8F22C0515441B81E857B7D2F51410AD7A380C0515441D7A3709D7C2F514166666626C1515441C3F5287C7B2F5141E17A14FEC15154418FC2F5F8792F5141CDCCCC8CC35154413D0AD7F3722F5141295C8F12CD51544166666656702F514166666686D0515441C3F5284C6C2F5141D7A3701DD6515441C3F5288C6A2F51417B14AEF7D8515441295C8F026A2F5141AE47E10ADA515441D7A370BD682F5141CDCCCC2CDD515441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E000000E4744C927F2F5141944740BA01525441C5577D9C802F5141DC8669C9015254417B14AE87AA2F5141AE47E11A0452544166666656BC2F514148E17A34055254418FC2F5E8BC2F51417B14AE0703525441000000A0C12F514148E17A84EA515441D7A3703DC52F5141F6285C7FD7515441713D0A57C52F51410AD7A3E0D6515441713D0A57C32F514114AE4781D55154411F85EB01C12F51415C8FC255D45154411F85EBB1BD2F51419A999959D3515441CDCCCCACB82F5141713D0AD7D2515441B81E858BB32F5141AE47E11AD251544166666676AF2F5141B81E858BD1515441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>535510 - 236322
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000030000000103000000010000005B000000666666F6C1555141CDCCCCAC4A5D54413D0AD703C3555141295C8FD2465D54419A9999C9C4555141F6285C9F425D54418FC2F558C7555141666666E63E5D544148E17A04CA55514114AE47513C5D5441B81E85BBCC5551411F85EB51395D5441713D0A57D65551417B14AE572C5D5441B81E85DBD8555141D7A3707D285D544148E17A54DB5551413D0AD7D3235D544148E17AF4DD5551410AD7A3801D5D544185EB5168E0555141333333431A5D544133333373E3555141713D0AF7175D5441666666A6EA5551419A9999A9115D5441CDCCCC7CEC555141A4703D8A0F5D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000000AD7A3F0B2555141F6285C2F445D5441814B6D67B155514116D3E4B1445D5441F516A61FB15551412D3044E9445D54416E906D3CB155514181D1ECE3455D5441350E5E3DB15551411B6E1BEC455D544103B42067B1555141B6F6D357475D5441674946CBB1555141991A14C04A5D54411BAC43F2B1555141002AAB134C5D5441A766B585B255514194D7DD17515D5441DCD28EE5B2555141FBE3AF5A545D54410AD7A310B35551411F85EBD1555D5441295C8F92B455514114AE4751605D544166B62BE2B4555141C6B7BC6A615D544117E44377B6555141EB32EA02675D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>535510 - 376183
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000030000000103000000010000005B000000666666F6C1555141CDCCCCAC4A5D54413D0AD703C3555141295C8FD2465D54419A9999C9C4555141F6285C9F425D54418FC2F558C7555141666666E63E5D544148E17A04CA55514114AE47513C5D5441B81E85BBCC5551411F85EB51395D5441713D0A57D65551417B14AE572C5D5441B81E85DBD8555141D7A3707D285D544148E17A54DB5551413D0AD7D3235D544148E17AF4DD5551410AD7A3801D5D544185EB5168E0555141333333431A5D544133333373E3555141713D0AF7175D5441666666A6EA5551419A9999A9115D5441CDCCCC7CEC555141A4703D8A0F5D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000000AD7A3F0B2555141F6285C2F445D5441814B6D67B155514116D3E4B1445D5441F516A61FB15551412D3044E9445D54416E906D3CB155514181D1ECE3455D5441350E5E3DB15551411B6E1BEC455D544103B42067B1555141B6F6D357475D5441674946CBB1555141991A14C04A5D54411BAC43F2B1555141002AAB134C5D5441A766B585B255514194D7DD17515D5441DCD28EE5B2555141FBE3AF5A545D54410AD7A310B35551411F85EBD1555D5441295C8F92B455514114AE4751605D544166B62BE2B4555141C6B7BC6A615D544117E44377B6555141EB32EA02675D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>536080 - 998614
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002F00000052B81EF5625B5141C3F5289C274F544133333353615B51417B14AE87254F544114AE4791605B514148E17A34234F54417B14AEF7615B51418FC2F598184F5441AE47E13A625B51411F85EB810D4F5441A4703DAA615B5141000000300D4F544114AE47B1615B5141295C8FF20B4F544100000070645B514148E17AE40B4F54419A9999F96B5B5141CDCCCC6C0C4F54413D0AD7236E5B5141C3F528DC0D4F544148E17AB4715B5141B81E85FB0F4F5441B81E858B765B5141D7A370BD114F54418FC2F5E8775B5141D7A370BD114F54411F85EB21795B51413D0AD7C30F4F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000007B14AE975A5B5141B81E855B014F5441713D0AE7595B514148E17A741C4F5441CDCCCC5C4C5B5141000000501C4F5441AE47E1CA4B5B5141EC51B84E1C4F5441CDCCCC8C4B5B5141EC51B81E244F544185EB51F8495B5141A4703D0A264F544164E918E54B5B5141972B931B2C4F5441D79CA1554D5B5141D387EF6E344F5441BFA5A633535B5141F437832C354F5441693573C0585B514163DD896D354F5441D9CF52CF5E5B5141B430A048354F54418CED2EA35F5B514116F078972F4F54415DEF29905F5B514196D1E55D2C4F544100681A165E5B5141C281B5C5274F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>536080 - 3800384
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002F00000052B81EF5625B5141C3F5289C274F544133333353615B51417B14AE87254F544114AE4791605B514148E17A34234F54417B14AEF7615B51418FC2F598184F5441AE47E13A625B51411F85EB810D4F5441A4703DAA615B5141000000300D4F544114AE47B1615B5141295C8FF20B4F544100000070645B514148E17AE40B4F54419A9999F96B5B5141CDCCCC6C0C4F54413D0AD7236E5B5141C3F528DC0D4F544148E17AB4715B5141B81E85FB0F4F5441B81E858B765B5141D7A370BD114F54418FC2F5E8775B5141D7A370BD114F54411F85EB21795B51413D0AD7C30F4F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000007B14AE975A5B5141B81E855B014F5441713D0AE7595B514148E17A741C4F5441CDCCCC5C4C5B5141000000501C4F5441AE47E1CA4B5B5141EC51B84E1C4F5441CDCCCC8C4B5B5141EC51B81E244F544185EB51F8495B5141A4703D0A264F544164E918E54B5B5141972B931B2C4F5441D79CA1554D5B5141D387EF6E344F5441BFA5A633535B5141F437832C354F5441693573C0585B514163DD896D354F5441D9CF52CF5E5B5141B430A048354F54418CED2EA35F5B514116F078972F4F54415DEF29905F5B514196D1E55D2C4F544100681A165E5B5141C281B5C5274F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>536104 - 150105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000014000000666666761258514166666646056054418FC2F5880F58514114AE47C108605441333333430D5851411F85EB910C605441E17A143E0B5851410AD7A35011605441000000C0095851419A999929176054411F85EBE108585141B81E854B1D605441D7A3709D08585141D7A3703D23605441B81E858B085851410AD7A3402D6054410AD7A3702258514152B81E052A6054419A999909235851411F85EBF129605441AE47E17A24585141B81E85AB256054418FC2F5E8255851411F85EBB121605441AE47E1FA26585141713D0A171F6054419A9999B927585141F6285C6F1D605441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000D7A3709D08585141D7A3703D236054418515AB96085851416E0D090627605441DA08FCB408585141D8FAFD262D60544189DF45381358514118F181EB2B6054410AD7A3702258514152B81E052A60544106240DE422585141D71AA2F629605441FE60EF1623585141AB6D66CA29605441AE47E17A24585141B81E85AB256054418FC2F5E8255851411F85EBB121605441AE47E1FA26585141713D0A171F6054419A9999B927585141F6285C6F1D605441EC51B86E29585141000000301A605441CDCCCC4C155851419A9999890D60544114AE47311658514185EB519808605441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>536773 - 3182010
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001B0000003D0AD7C3A0585141000000F071575441A4703DFA965851415C8FC2F56D575441C3F5280C8D58514114AE47516A575441A4703D8A82585141666666D666575441D7A3700D775851413D0AD7D3625754411F85EB117558514166666626625754413333339374585141295C8F5263575441EC51B8FE7358514114AE4741655754410AD7A33072585141713D0AD76C575441D7A3703D71585141C3F5284C7057544148E17AE4705851411F85EB217357544148E17A0471585141000000607857544166666666715851410AD7A3E07B5754410AD7A3F071585141D7A3703D7E575441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000163A242CE55851415AD435E391575441C342881BDF585141AD1773D18E57544146E3D977D858514127E7307F91575441ED2F5830D7585141685DC98E9157544190A374AAD5585141A5FAFF5F9157544140A2B6DFD45851413672563A92575441F6795A53D4585141BD37E99792575441E8EE3498D35851417CC1508892575441DA630FDDD25851416E362BCD91575441FAEAFA37D1585141D09B709193575441BDE5020DCE5851419C483CE39057544128954AF4CC5851417CC15088925754413A911094CA5851419C483CE390575441E24550A6CC585141AA6BA0448E575441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>536773 - 3562735
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001B0000003D0AD7C3A0585141000000F071575441A4703DFA965851415C8FC2F56D575441C3F5280C8D58514114AE47516A575441A4703D8A82585141666666D666575441D7A3700D775851413D0AD7D3625754411F85EB117558514166666626625754413333339374585141295C8F5263575441EC51B8FE7358514114AE4741655754410AD7A33072585141713D0AD76C575441D7A3703D71585141C3F5284C7057544148E17AE4705851411F85EB217357544148E17A0471585141000000607857544166666666715851410AD7A3E07B5754410AD7A3F071585141D7A3703D7E575441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000163A242CE55851415AD435E391575441C342881BDF585141AD1773D18E57544146E3D977D858514127E7307F91575441ED2F5830D7585141685DC98E9157544190A374AAD5585141A5FAFF5F9157544140A2B6DFD45851413672563A92575441F6795A53D4585141BD37E99792575441E8EE3498D35851417CC1508892575441DA630FDDD25851416E362BCD91575441FAEAFA37D1585141D09B709193575441BDE5020DCE5851419C483CE39057544128954AF4CC5851417CC15088925754413A911094CA5851419C483CE390575441E24550A6CC585141AA6BA0448E575441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537540 - 3020004
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000295C8FB260555141B81E85AB0F5E5441295C8F3261555141000000700F5E5441E17A149E77555141B81E853B055E54413D0AD7B3755551410AD7A350005E54418FC2F5985D5551419A9999490B5E5441F6285C2F5D555141000000700B5E5441295C8FB260555141B81E85AB0F5E5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BC89A3115F555141752C23B50D5E544152C6FABC5D555141642AA61A0C5E54411C74691458555141F84B516A0E5E544161751F7154555141004E4198085E54419BC03E7A38555141F2270947155E54413DAEF66837555141295848811B5E5441D91209273655514127FD98A9225E544131F28D02555551413BCD7AB4145E5441B15D6FBC56555141C3015FFD135E5441056732C356555141B3A34601145E5441A5E0C4F457555141C4D4F17B135E5441A8D81E9F585551411E865A35135E544126ECD17A58555141492A7441135E54413D43F8BA5E555141555B4187105E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537540 - 3533979
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000007000000295C8FB260555141B81E85AB0F5E5441295C8F3261555141000000700F5E5441E17A149E77555141B81E853B055E54413D0AD7B3755551410AD7A350005E54418FC2F5985D5551419A9999490B5E5441F6285C2F5D555141000000700B5E5441295C8FB260555141B81E85AB0F5E5441
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BC89A3115F555141752C23B50D5E544152C6FABC5D555141642AA61A0C5E54411C74691458555141F84B516A0E5E544161751F7154555141004E4198085E54419BC03E7A38555141F2270947155E54413DAEF66837555141295848811B5E5441D91209273655514127FD98A9225E544131F28D02555551413BCD7AB4145E5441B15D6FBC56555141C3015FFD135E5441056732C356555141B3A34601145E5441A5E0C4F457555141C4D4F17B135E5441A8D81E9F585551411E865A35135E544126ECD17A58555141492A7441135E54413D43F8BA5E555141555B4187105E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537556 - 150049
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000130000009A9999F958555141D7A370FD085D5441C3F5289C5755514114AE4751065D544185EB5138555551413D0AD7A3015D54417B14AE7754555141B81E852B005D544114AE47B151555141C3F528BCFA5C5441E17A140E4F555141B81E85CBF55C54415C8FC2A54D555141D7A370CDF35C5441713D0A0745555141713D0A67F75C5441A4703D1A40555141666666D6ED5C54410AD7A35018555141F6285CFFFD5C5441A4703D0A1C55514166666656075D544148E17AA41C5551411F85EBD1085D544148E17A141F55514114AE47D10E5D544148E17A642155514148E17A84145D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E00000052B81EF52155514185EB51E8155D54413AE0C4DE2255514167A3EB27185D5441BF053E9A23555141D1B4C2F5195D5441BCF7FD7B24555141A61A2A211C5D54413D0AD7A324555141333333831C5D5441EA37F8AE24555141C67F8B9E1C5D5441A0417B04255551419908A3701D5D54415AC18AD335555141116FFED2165D5441013C3928515551416EE029110C5D54417F3CCC3255555141A9EDF6790A5D5441347799F95855514161B170FD085D54417B40289C5755514179FF4651065D5441953A5238555551419D2CD8A3015D54418D20DB0655555141E26B3643015D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537576 - 227178
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000004C000000EC51B80E8255514148E17A04215E5441E17A144E70555141D7A370BD285E5441333333636F55514152B81ED5295E54410AD7A3806E55514114AE47412A5E5441000000706E555141295C8F122B5E54419A9999B96D55514185EB51C82C5E5441295C8FE26B555141F6285CCF2D5E544114AE47116B555141E17A147E2F5E544185EB51186B55514148E17AB42F5E544114AE47716B555141C3F5285C325E5441A4703DBA6B555141333333C3345E54413D0AD7836C55514114AE4741365E54417B14AEA76D55514114AE47D1385E54418FC2F5386E5551418FC2F5483B5E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005E000000E17A144E70555141D7A370BD285E5441333333636F55514152B81ED5295E54410AD7A3806E55514114AE47412A5E5441000000706E555141295C8F122B5E54419A9999B96D55514185EB51C82C5E5441295C8FE26B555141F6285CCF2D5E54413923F17B6B5551415C028FA22E5E5441504348116B555141DDBA157E2F5E544182CBCB146B555141EAE93F992F5E544173E85D186B555141C778D6B42F5E544114AE47716B555141C3F5285C325E5441A4703DBA6B555141333333C3345E54413D0AD7836C55514114AE4741365E54417B14AEA76D55514114AE47D1385E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537576 - 365583
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000004C000000EC51B80E8255514148E17A04215E5441E17A144E70555141D7A370BD285E5441333333636F55514152B81ED5295E54410AD7A3806E55514114AE47412A5E5441000000706E555141295C8F122B5E54419A9999B96D55514185EB51C82C5E5441295C8FE26B555141F6285CCF2D5E544114AE47116B555141E17A147E2F5E544185EB51186B55514148E17AB42F5E544114AE47716B555141C3F5285C325E5441A4703DBA6B555141333333C3345E54413D0AD7836C55514114AE4741365E54417B14AEA76D55514114AE47D1385E54418FC2F5386E5551418FC2F5483B5E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005E000000E17A144E70555141D7A370BD285E5441333333636F55514152B81ED5295E54410AD7A3806E55514114AE47412A5E5441000000706E555141295C8F122B5E54419A9999B96D55514185EB51C82C5E5441295C8FE26B555141F6285CCF2D5E54413923F17B6B5551415C028FA22E5E5441504348116B555141DDBA157E2F5E544182CBCB146B555141EAE93F992F5E544173E85D186B555141C778D6B42F5E544114AE47716B555141C3F5285C325E5441A4703DBA6B555141333333C3345E54413D0AD7836C55514114AE4741365E54417B14AEA76D55514114AE47D1385E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>627435 - 224097
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002A0000000AD7A3A0A81151415C8FC2A5E9265541CDCCCCACA91151419A9999E9F0265541E17A143EAA115141A4703DBAF72655410AD7A3F0AD115141A4703DCA092755411F85EBA1B0115141B81E85FB152755415C8FC2D5B1115141666666D61927554166666606B211514152B81E651A275541D7A370EDB8115141666666E6172755415C8FC2D5B51151415C8FC2E50A275541A4703D6AB4115141666666860127554152B81EC5BB115141000000E0FC265541B81E857BCC115141295C8F12FD265541713D0A57D011514185EB5168FB26554148E17A44D21151410000002008275541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000002230DBBAD2115141EFC4071508275541F59A6B3CD4115141AA0E4DF107275541098B5B7CD51151410B35A7D3072755419BC2C3A3D7115141AF368EA007275541232F9254D81151413CD92B9007275541D37C9BADD91151415714866807275541F22641CAD9115141271CD1BA05275541EEFE1A71DD115141D266804905275541D20C4BC9DB11514113462BB5FC265541597EAA57D9115141F829375BF026554141E28B35D6115141B11574B8F42655418F445E69D3115141DC581AA3F82655412CA2039FD1115141F64DB1FCFA26554181480365D011514169FB82C4FB265541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>627435 - 321461
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002A0000000AD7A3A0A81151415C8FC2A5E9265541CDCCCCACA91151419A9999E9F0265541E17A143EAA115141A4703DBAF72655410AD7A3F0AD115141A4703DCA092755411F85EBA1B0115141B81E85FB152755415C8FC2D5B1115141666666D61927554166666606B211514152B81E651A275541D7A370EDB8115141666666E6172755415C8FC2D5B51151415C8FC2E50A275541A4703D6AB4115141666666860127554152B81EC5BB115141000000E0FC265541B81E857BCC115141295C8F12FD265541713D0A57D011514185EB5168FB26554148E17A44D21151410000002008275541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000002230DBBAD2115141EFC4071508275541F59A6B3CD4115141AA0E4DF107275541098B5B7CD51151410B35A7D3072755419BC2C3A3D7115141AF368EA007275541232F9254D81151413CD92B9007275541D37C9BADD91151415714866807275541F22641CAD9115141271CD1BA05275541EEFE1A71DD115141D266804905275541D20C4BC9DB11514113462BB5FC265541597EAA57D9115141F829375BF026554141E28B35D6115141B11574B8F42655418F445E69D3115141DC581AA3F82655412CA2039FD1115141F64DB1FCFA26554181480365D011514169FB82C4FB265541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537736 - 1242402
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000003B0000005C8FC2B5785D51415C8FC295A96D5441E17A148E785D514148E17AE4AA6D5441000000B0795D51417B14AE97A86D544152B81E757A5D51419A9999D9A66D5441D7A3706D7F5D5141AE47E10A8C6D544148E17A948C5D51417B14AEE7886D5441333333638F5D514152B81EC5886D54411F85EB71935D514114AE4771886D54415C8FC275985D51410AD7A340886D5441B81E850B9E5D514185EB5178886D5441A4703D9AA35D51410AD7A3E0886D5441713D0A57AB5D514152B81E65896D54415C8FC285B45D51413D0AD7A3896D544148E17A84B75D5141713D0AC7896D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000054000000BA04F192825D51412B1E23D28A6D5441F6AE7CF4865D51415147935D896D5441244BFE17875D5141BAE0FC5A896D544155B80E56875D5141ADAB0F4A896D5441E3B1A4018C5D5141815256FF886D5441CC2E7A5E905D514124D0F2AD886D54410B833EF9905D5141A95437B0886D5441F6285C6F985D5141EC51B83E886D5441BBC23029A75D514105D9840F896D5441E8984035A75D514145862210896D544185F93750A75D514180D9840F896D5441641957F0AD5D5141EB501F68896D5441920FB7F7AE5D514164EDE57D896D544123AAB468B05D51416846BE87896D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>537736 - 3282464
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000003B0000005C8FC2B5785D51415C8FC295A96D5441E17A148E785D514148E17AE4AA6D5441000000B0795D51417B14AE97A86D544152B81E757A5D51419A9999D9A66D5441D7A3706D7F5D5141AE47E10A8C6D544148E17A948C5D51417B14AEE7886D5441333333638F5D514152B81EC5886D54411F85EB71935D514114AE4771886D54415C8FC275985D51410AD7A340886D5441B81E850B9E5D514185EB5178886D5441A4703D9AA35D51410AD7A3E0886D5441713D0A57AB5D514152B81E65896D54415C8FC285B45D51413D0AD7A3896D544148E17A84B75D5141713D0AC7896D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000054000000BA04F192825D51412B1E23D28A6D5441F6AE7CF4865D51415147935D896D5441244BFE17875D5141BAE0FC5A896D544155B80E56875D5141ADAB0F4A896D5441E3B1A4018C5D5141815256FF886D5441CC2E7A5E905D514124D0F2AD886D54410B833EF9905D5141A95437B0886D5441F6285C6F985D5141EC51B83E886D5441BBC23029A75D514105D9840F896D5441E8984035A75D514145862210896D544185F93750A75D514180D9840F896D5441641957F0AD5D5141EB501F68896D5441920FB7F7AE5D514164EDE57D896D544123AAB468B05D51416846BE87896D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>303705 - 193944
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000003000000085EB515841B050413D0AD7D3584F54418FC2F53840B0504148E17A24574F54418FC2F5183FB050418FC2F5B8564F5441CDCCCC3C3DB050417B14AE67564F5441713D0A773CB05041A4703D5A554F5441E17A14FE3CB050418FC2F528544F544114AE47D13EB050411F85EBA1534F54419A99998940B0504114AE47C1524F5441B81E852B41B05041713D0AF7504F5441B81E852B41B05041F6285C1F4E4F544152B81E8541B05041F6285CFF4C4F5441713D0A4747B050419A9999A9494F5441B81E856B49B050411F85EBA1494F5441666666E64CB050418FC2F5F84A4F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000000F1C993E09B050417DF65667444F544111FD3D9E17B050418614CBD4474F544195C6FE3E17B050414458B3EC434F5441666666A608B0504114AE4701434F5441CE33832900B050411B896FEE3F4F54419C90D3DEF5AF5041CAEC35F13D4F544114AE4731DEAF504166666666394F5441C3F5284CDEAF5041333333833B4F5441FB3DBE07EDAF5041C7B9FB263E4F544166666636F3AF5041295C8F423F4F54413D0AD793FCAF5041CDCCCC3C414F54410F1C993E09B050417DF65667444F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>303705 - 345997
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000003000000085EB515841B050413D0AD7D3584F54418FC2F53840B0504148E17A24574F54418FC2F5183FB050418FC2F5B8564F5441CDCCCC3C3DB050417B14AE67564F5441713D0A773CB05041A4703D5A554F5441E17A14FE3CB050418FC2F528544F544114AE47D13EB050411F85EBA1534F54419A99998940B0504114AE47C1524F5441B81E852B41B05041713D0AF7504F5441B81E852B41B05041F6285C1F4E4F544152B81E8541B05041F6285CFF4C4F5441713D0A4747B050419A9999A9494F5441B81E856B49B050411F85EBA1494F5441666666E64CB050418FC2F5F84A4F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000000F1C993E09B050417DF65667444F544111FD3D9E17B050418614CBD4474F544195C6FE3E17B050414458B3EC434F5441666666A608B0504114AE4701434F5441CE33832900B050411B896FEE3F4F54419C90D3DEF5AF5041CAEC35F13D4F544114AE4731DEAF504166666666394F5441C3F5284CDEAF5041333333833B4F5441FB3DBE07EDAF5041C7B9FB263E4F544166666636F3AF5041295C8F423F4F54413D0AD793FCAF5041CDCCCC3C414F54410F1C993E09B050417DF65667444F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538248 - 962306
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000025000000CDCCCC9CE85C5141666666F6CB6554415C8FC245E95C5141E17A140ECD65544148E17A24EB5C51410AD7A3F0CE6554413D0AD7E3EB5C5141D7A3702DD06554410AD7A300EC5C5141000000A0D16554410AD7A3D0EB5C5141F6285C4FD26554413D0AD773EB5C51415C8FC2F5D2655441AE47E15AEA5C514185EB51E8D36554419A999969EF5C5141B81E85DBD6655441F6285C1FF35C51418FC2F5C8D66554410AD7A3900F5D5141B81E853BD66554410AD7A310125D5141F6285C2FD6655441333333031F5D5141F6285CEFD5655441333333A3205D51417B14AEE7D5655441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000D905A666655D5141CC99A482D465544117F0ED065B5D51413D6C1ACFD4655441031056FC595D5141AD1869E1DF6554416F182EB6595D5141718620A6E4655441D7200670595D51416F379839E76554413F29DE29595D51415BB9EF55EB6554413643290D825D5141287B175DED655441C7CF67A3775D5141F9A0131FD465544148E17A34765D5141713D0A27D4655441D905A666655D5141CC99A482D4655441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538890 - 1079811
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000020000006B000000F6285CAF88285141EC51B8AEEF285441D7A3701D8628514166666606EB285441000000B08328514152B81E65E8285441F6285C4F812851419A9999A9E52854413D0AD7D37A285141EC51B81EDF285441AE47E15A7128514185EB5178F22854418FC2F5987328514185EB5138F4285441713D0A5772285141A4703DEAF528544152B81E3570285141C3F528FCF4285441AE47E1FA65285141C3F5285C0E2954410AD7A3A063285141666666A61B2954410AD7A3306328514148E17AE42B2954410AD7A3605E28514148E17A74392954415C8FC2055E285141000000503B295441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000AB000000C18E326D0D2951412C2003AA672954418FC2F5C806295141CDCCCC6C522954418FC2F538F1285141CDCCCC7C5629544183FFBE10E328514138AC614C61295441E59DFE19E2285141BE7F88D7612954411940FD53E02851416B23052C612954411312158FCB285141FB5E0E0157295441295C8F32CE2851415C8FC2E55429544148E17AF4CE285141000000A053295441C3F528DCCF285141AE47E15A52295441EC51B85ED128514152B81E0551295441D7A3704DD2285141713D0A575029544152B81ED5D3285141C3F528AC4F29544133333383D528514114AE47414F295441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538890 - 3191345
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000020000006B000000F6285CAF88285141EC51B8AEEF285441D7A3701D8628514166666606EB285441000000B08328514152B81E65E8285441F6285C4F812851419A9999A9E52854413D0AD7D37A285141EC51B81EDF285441AE47E15A7128514185EB5178F22854418FC2F5987328514185EB5138F4285441713D0A5772285141A4703DEAF528544152B81E3570285141C3F528FCF4285441AE47E1FA65285141C3F5285C0E2954410AD7A3A063285141666666A61B2954410AD7A3306328514148E17AE42B2954410AD7A3605E28514148E17A74392954415C8FC2055E285141000000503B295441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000AB000000C18E326D0D2951412C2003AA672954418FC2F5C806295141CDCCCC6C522954418FC2F538F1285141CDCCCC7C5629544183FFBE10E328514138AC614C61295441E59DFE19E2285141BE7F88D7612954411940FD53E02851416B23052C612954411312158FCB285141FB5E0E0157295441295C8F32CE2851415C8FC2E55429544148E17AF4CE285141000000A053295441C3F528DCCF285141AE47E15A52295441EC51B85ED128514152B81E0551295441D7A3704DD2285141713D0A575029544152B81ED5D3285141C3F528AC4F29544133333383D528514114AE47414F295441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538890 - 252579
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000020000006B000000F6285CAF88285141EC51B8AEEF285441D7A3701D8628514166666606EB285441000000B08328514152B81E65E8285441F6285C4F812851419A9999A9E52854413D0AD7D37A285141EC51B81EDF285441AE47E15A7128514185EB5178F22854418FC2F5987328514185EB5138F4285441713D0A5772285141A4703DEAF528544152B81E3570285141C3F528FCF4285441AE47E1FA65285141C3F5285C0E2954410AD7A3A063285141666666A61B2954410AD7A3306328514148E17AE42B2954410AD7A3605E28514148E17A74392954415C8FC2055E285141000000503B295441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000AB00000052B81E758A28514148E17AB40629544143F0D3CF9028514100B349B5F9285441F0DC7F758F2851416C0EA0C9F7285441EC51B84E8D285141B81E85FBF5285441000000308C28514114AE47D1F32854419A9999E989285141EC51B87EF1285441F6285CAF88285141EC51B8AEEF285441D7A3701D8628514166666606EB285441000000B08328514152B81E65E8285441F6285C4F812851419A9999A9E52854413D0AD7D37A285141EC51B81EDF285441AE47E15A7128514185EB5178F22854418FC2F5987328514185EB5138F4285441713D0A5772285141A4703DEAF5285441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538890 - 361953
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000020000006B000000F6285CAF88285141EC51B8AEEF285441D7A3701D8628514166666606EB285441000000B08328514152B81E65E8285441F6285C4F812851419A9999A9E52854413D0AD7D37A285141EC51B81EDF285441AE47E15A7128514185EB5178F22854418FC2F5987328514185EB5138F4285441713D0A5772285141A4703DEAF528544152B81E3570285141C3F528FCF4285441AE47E1FA65285141C3F5285C0E2954410AD7A3A063285141666666A61B2954410AD7A3306328514148E17AE42B2954410AD7A3605E28514148E17A74392954415C8FC2055E285141000000503B295441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000AB00000052B81E758A28514148E17AB40629544143F0D3CF9028514100B349B5F9285441F0DC7F758F2851416C0EA0C9F7285441EC51B84E8D285141B81E85FBF5285441000000308C28514114AE47D1F32854419A9999E989285141EC51B87EF1285441F6285CAF88285141EC51B8AEEF285441D7A3701D8628514166666606EB285441000000B08328514152B81E65E8285441F6285C4F812851419A9999A9E52854413D0AD7D37A285141EC51B81EDF285441AE47E15A7128514185EB5178F22854418FC2F5987328514185EB5138F4285441713D0A5772285141A4703DEAF5285441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>539525 - 159941
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001E000000E17A14FE12115141713D0A87703F5441A4703DFA1B115141F6285CAF673F5441000000F021115141C3F5284C613F54413D0AD7F32611514114AE47615B3F54413D0AD7F327115141666666465C3F54413D0AD77329115141713D0AA7583F5441000000002D11514148E17A644B3F54410AD7A3202F115141E17A14BE443F544148E17AC42F11514100000080433F54419A999949271151415C8FC2653E3F544114AE47D1211151415C8FC2D5383F544114AE478120115141F6285C3F383F54417B14AE871F1151410AD7A3D0373F5441A4703DAA0F11514152B81EF5453F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000006E39742B06115141038FB6BD7B3F544148339A79051151410E571E557C3F5441FFBA7C6B0511514151E93F5E7C3F54411202816405115141E266C4627C3F54416B7A4881041151412B0BC2F57C3F544194A4A93406115141C7B2FE4C7E3F54413D0AD743061151418FC2F5587E3F54413CBBE74E061151417176AC617E3F5441592CEC610811514186A0D503803F544111533D9108115141A268DF28803F5441C7A785AB081151412C33713D803F54412685C94D0B1151417BB1BAEF7D3F544146E158900D1151411374B0987B3F5441FB9E7B7B0E1151412E335B8C7A3F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>539572 - 1126422
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003F000000E17A140EF42851415C8FC2A53C305441333333B3F0285141666666D63F305441B81E857BED2851411F85EB0143305441CDCCCC7CEC285141666666A644305441000000D0EA2851411F85EB914630544114AE4761EA28514185EB5118473054417B14AE17E8285141C3F528CC4930544185EB51C8E5285141CDCCCC9C4C305441D7A370DDE82851416666663650305441A4703D0AE028514114AE4731583054410AD7A3E0DD285141B81E858B5A305441CDCCCC2CDC285141D7A3704D5D3054415C8FC2F5E4285141E17A14FE69305441D7A3709DE42851418FC2F5286F305441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000630000000AD7A3C8F42851412DB29D473D30544137894148F2285141CFF753AB3E30544178BA4A8AF02851410A59C22E4030544102CA3945EF285141C17A816941305441516D33E1ED28514173D787CD42305441DE59017AED285141A4B90B3F433054417215EE8BEC285141BC8242D14430544114AE4761EA28514185EB5118473054417B14AE17E8285141C3F528CC49305441ACF9B745E52851412D6A036B4D3054417593185CE6285141986E12535230544133333313E6285141E17A14AE523054415B61FC4FE1285141C195BC07573054410F586CC7DF285141C9A6F77958305441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>539572 - 3570737
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003F000000E17A140EF42851415C8FC2A53C305441333333B3F0285141666666D63F305441B81E857BED2851411F85EB0143305441CDCCCC7CEC285141666666A644305441000000D0EA2851411F85EB914630544114AE4761EA28514185EB5118473054417B14AE17E8285141C3F528CC4930544185EB51C8E5285141CDCCCC9C4C305441D7A370DDE82851416666663650305441A4703D0AE028514114AE4731583054410AD7A3E0DD285141B81E858B5A305441CDCCCC2CDC285141D7A3704D5D3054415C8FC2F5E4285141E17A14FE69305441D7A3709DE42851418FC2F5286F305441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000630000000AD7A3C8F42851412DB29D473D30544137894148F2285141CFF753AB3E30544178BA4A8AF02851410A59C22E4030544102CA3945EF285141C17A816941305441516D33E1ED28514173D787CD42305441DE59017AED285141A4B90B3F433054417215EE8BEC285141BC8242D14430544114AE4761EA28514185EB5118473054417B14AE17E8285141C3F528CC49305441ACF9B745E52851412D6A036B4D3054417593185CE6285141986E12535230544133333313E6285141E17A14AE523054415B61FC4FE1285141C195BC07573054410F586CC7DF285141C9A6F77958305441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540041 - 2544750
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000025000000AE47E1CA8C635141EC51B8CE9F4D54411F85EB118D635141C3F5284CA94D544152B81E058D63514152B81E75AD4D5441A4703D3A8D63514152B81E85B94D5441B81E854B8D635141AE47E19ABC4D5441D7A370AD8D635141C3F528FCBF4D54419A9999298E63514185EB5138C24D54415C8FC2A58E635141295C8F92C34D54410AD7A3E08F635141CDCCCC0CC64D54411F85EBD1916351418FC2F538C94D5441AE47E1FA9263514114AE4781CA4D5441C3F5285C9663514152B81E85CD4D54418FC2F5F89763514114AE47A1CE4D5441C3F5285C99635141B81E855BCF4D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000000000108D635141AE47E1EA9E4D5441400A280B93635141FDEEDFE4944D5441E17A14BE9C6351413D0AD7A3844D54419A5FE1F89F6351414A10B7EB854D5441333333B3A26351410AD7A300874D5441A6E12A95AC63514108B7BE8A744D54411F85EB01AF63514133333303704D54417B14AEF7B36351411F85EB01694D5441A8211347BC635141DC52A4DB6C4D5441666666B6C1635141A4703D5A6F4D5441A4703D0AC863514114AE4711604D5441A4703D5ACE6351413D0AD7D3504D544100000030BB635141A4703D6A474D5441B81E85DBAB63514185EB5118404D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540041 - 3764925
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000025000000AE47E1CA8C635141EC51B8CE9F4D54411F85EB118D635141C3F5284CA94D544152B81E058D63514152B81E75AD4D5441A4703D3A8D63514152B81E85B94D5441B81E854B8D635141AE47E19ABC4D5441D7A370AD8D635141C3F528FCBF4D54419A9999298E63514185EB5138C24D54415C8FC2A58E635141295C8F92C34D54410AD7A3E08F635141CDCCCC0CC64D54411F85EBD1916351418FC2F538C94D5441AE47E1FA9263514114AE4781CA4D5441C3F5285C9663514152B81E85CD4D54418FC2F5F89763514114AE47A1CE4D5441C3F5285C99635141B81E855BCF4D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000000000108D635141AE47E1EA9E4D5441400A280B93635141FDEEDFE4944D5441E17A14BE9C6351413D0AD7A3844D54419A5FE1F89F6351414A10B7EB854D5441333333B3A26351410AD7A300874D5441A6E12A95AC63514108B7BE8A744D54411F85EB01AF63514133333303704D54417B14AEF7B36351411F85EB01694D5441A8211347BC635141DC52A4DB6C4D5441666666B6C1635141A4703D5A6F4D5441A4703D0AC863514114AE4711604D5441A4703D5ACE6351413D0AD7D3504D544100000030BB635141A4703D6A474D5441B81E85DBAB63514185EB5118404D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978239 - 57712
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003B0000004AD148DD6E76504134ECA6C3B20F5541D8572CE66F7650414DD62243B10F5541E452170B6C7650418CA39CFDAD0F554187499AC26476504188F862AEA70F55414F9CACBC5C7650414E7B9AC9A00F5541F455B0575B765041C4ED5E0EA30F554103910AC350765041FD2CE1259B0F55417E7FAD4B517650417C7A8F479A0F5541CB06C71945765041771FAF25910F5541B4B3FBE342765041EBBC55E9910F554157665C294776504150CE0562980F55410C7E710447765041F20C6EC59A0F55417066853E46765041A13B8BA39C0F554183668855447650418F6C075F9F0F5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000AC4C21168A765041B5CF9727AF0F554120A2EAA98D765041B369B5D8AB0F5541140ACF669176504169B00252A80F554136D8E95D887650413F2C44C29F0F5541C3F3B1B87B765041A2197AD7930F5541AABC5B66767650411397484B8E0F554103E9079B7C7650418AAD2270890F5541109AB6D37D765041C88B757B880F55419D62D74C7B7650419CF23078820F5541AAA69AC77676504139B8B44D850F55410EA704AD7776504119AAC5C1870F554113E2BCF372765041BB790D668B0F5541ADADF8A372765041E417F4908B0F55412EA0918070765041590F5DB78C0F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>541052 - 2953110
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000003E000000B81E85BBDE565141F6285C4F9A4A5441E17A14FEDD5651410AD7A3609D4A5441A4703D0ADD56514185EB51A8A04A544166666616DC56514152B81E75A34A54418FC2F558DB565141B81E856BA64A544148E17AC4DA5651417B14AEE7A84A5441666666B6DA565141A4703D9AAB4A5441A4703DFADA565141EC51B83EAE4A5441E17A14EEDB5651413D0AD7E3B04A54413D0AD783DD565141EC51B8BEB34A5441295C8FF2DF5651415C8FC205B74A54413D0AD713E5565141E17A145EBD4A54415C8FC275E8565141E17A14CEC04A54415C8FC295EC565141A4703DFAC34A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000057000000E2495325F55651418753D988C94A54414E02436CF1565141F72B9C25C74A544148E17A64F05651413D0AD783C64A54415C8FC295EC565141A4703DFAC34A544102224DF5E95651416DE10EF5C14A54415C8FC275E8565141E17A14CEC04A54410B42C373E6565141B39CB9C3BE4A54413D0AD713E5565141E17A145EBD4A5441295C8FF2DF5651415C8FC205B74A54413D0AD783DD565141EC51B8BEB34A5441E17A14EEDB5651413D0AD7E3B04A5441A4703DFADA565141EC51B83EAE4A544111DCB8BFDA565141BF7E32F7AB4A5441666666B6DA565141A4703D9AAB4A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>542768 - 3407520
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000800000000000000C63E5141D7A3701D37FE54418FC2F548833E51411F85EB4139FE5441A4703D9A843E51415C8FC2153DFE5441333333A3853E51418FC2F5A83EFE54419A9999B9A93E5141666666363DFE54418FC2F598C43E51415C8FC2053DFE5441D7A3705DC53E5141A4703DCA39FE544100000000C63E5141D7A3701D37FE5441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000BE301BDE9D3E51416EFD27B03DFE54415CE61A70A93E5141A78AC0803CFE5441A245B6F3AC3E514196438B243CFE5441212E3C60B63E5141E6E5B17B3BFE54415C8DA035C53E5141A6B9EB713AFE5441D7A3705DC53E5141A4703DCA39FE544100000000C63E5141D7A3701D37FE5441CDCCCC0CCA3E51413333331326FE544148E17AA4BB3E5141A4703D7A22FE544185EB51F8B53E5141F6285C0F21FE544114AE4761B43E514152B81E8525FE544152B81E85AA3E51417B14AEC724FE5441AE47E15AA43E51416666667623FE5441EC51B8CE973E51419A9999491FFE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>542768 - 4069232
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000000800000000000000C63E5141D7A3701D37FE54418FC2F548833E51411F85EB4139FE5441A4703D9A843E51415C8FC2153DFE5441333333A3853E51418FC2F5A83EFE54419A9999B9A93E5141666666363DFE54418FC2F598C43E51415C8FC2053DFE5441D7A3705DC53E5141A4703DCA39FE544100000000C63E5141D7A3701D37FE5441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000BE301BDE9D3E51416EFD27B03DFE5441B2247DC4863E5141153DABF43FFE544114AE47D1893E51416666660645FE54418F912AAD8E3E51411CD4997645FE54413108ACCC8E3E514179E926F943FE54411F85EB91953E5141355EBA4140FE544101497AE99D3E5141904A88583FFE544154E3A51BA43E5141CFF753AB3EFE544144096A5CA73E5141C12904CF3EFE5441A9DCE40FAB3E5141460EC8F73EFE54413F355EAAB23E514196438B743FFE54416ABC74C3BC3E51416891ED6C3EFE54418D976E1AC03E5141AE47E18A3FFE544139B4C8D6C13E5141A69BC49846FE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>542832 - 2929647
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000019000000A4703DBA983F5141295C8FA2020055415C8FC2F58D3F51415C8FC2050A005541F6285C3F7C3F5141000000501A005541EC51B85E643F514148E17A4430005541295C8FF2613F51413D0AD7633400554152B81E25603F5141E17A14EE3B005541C3F5283C6E3F5141F6285CCF37005541E17A144E813F5141C3F5283C32005541713D0A57983F5141000000802B0055418FC2F5189A3F5141EC51B88E3C00554100000070AC3F51418FC2F5D83600554152B81EB5B13F5141333333233400554133333383BB3F51417B14AEB72C005541EC51B87EBD3F5141E17A141E2B005541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000009C0C15456D3F51419E4DAF262800554149ECE4186C3F514101640B4229005541601C6F176C3F5141493F6C43290055413C62F4BD783F5141232BB4C725005541557627BD8C3F5141A046B546210055410DC413FC933F5141219C90CB1F0055416FA17930953F5141DB2ED0871F0055415FB3731A973F51418DDE60281F0055414F4B5420B53F51416D435E4F19005541D6C2936EB93F5141D39B9B1E1100554158C10BC3C43F5141BFB42A91FBFF54411AB51BE5BF3F5141FD28FF09FBFF5441C8FCFCDFBD3F5141648F65D0FAFF54413D27B408B43F5141ED9DAF63FCFF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>542832 - 3559840
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000019000000A4703DBA983F5141295C8FA2020055415C8FC2F58D3F51415C8FC2050A005541F6285C3F7C3F5141000000501A005541EC51B85E643F514148E17A4430005541295C8FF2613F51413D0AD7633400554152B81E25603F5141E17A14EE3B005541C3F5283C6E3F5141F6285CCF37005541E17A144E813F5141C3F5283C32005541713D0A57983F5141000000802B0055418FC2F5189A3F5141EC51B88E3C00554100000070AC3F51418FC2F5D83600554152B81EB5B13F5141333333233400554133333383BB3F51417B14AEB72C005541EC51B87EBD3F5141E17A141E2B005541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000009C0C15456D3F51419E4DAF262800554149ECE4186C3F514101640B4229005541601C6F176C3F5141493F6C43290055413C62F4BD783F5141232BB4C725005541557627BD8C3F5141A046B546210055410DC413FC933F5141219C90CB1F0055416FA17930953F5141DB2ED0871F0055415FB3731A973F51418DDE60281F0055414F4B5420B53F51416D435E4F19005541D6C2936EB93F5141D39B9B1E1100554158C10BC3C43F5141BFB42A91FBFF54411AB51BE5BF3F5141FD28FF09FBFF5441C8FCFCDFBD3F5141648F65D0FAFF54413D27B408B43F5141ED9DAF63FCFF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>543053 - 1407068
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000D7A3708D2BCB50410AD7A3D09A085541AE47E11A2CCB5041AE47E15AA60855415C8FC2752ECB504133333313A60855413333334339CB50418FC2F5F8A00855410AD7A3E032CB5041666666C662085541D7A3709D26CB5041295C8FC2630855413D0AD7D329CB504148E17A8486085541D7A3708D2BCB50410AD7A3D09A085541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000390C76FE2BCB50418A644C09A4085541D511FA2A2ACB50412262EB0C8908554140A429292ACB5041CFD5A4F9880855413435F4112ACB5041159F5A5F890855413D0AD7D329CB504148E17A8486085541590FB85D29CB5041A896798681085541D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E11A2CCB5041AE47E15AA6085541390C76FE2BCB50418A644C09A4085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>543053 - 3569419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000D7A3708D2BCB50410AD7A3D09A085541AE47E11A2CCB5041AE47E15AA60855415C8FC2752ECB504133333313A60855413333334339CB50418FC2F5F8A00855410AD7A3E032CB5041666666C662085541D7A3709D26CB5041295C8FC2630855413D0AD7D329CB504148E17A8486085541D7A3708D2BCB50410AD7A3D09A085541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000390C76FE2BCB50418A644C09A4085541D511FA2A2ACB50412262EB0C8908554140A429292ACB5041CFD5A4F9880855413435F4112ACB5041159F5A5F890855413D0AD7D329CB504148E17A8486085541590FB85D29CB5041A896798681085541D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E11A2CCB5041AE47E15AA6085541390C76FE2BCB50418A644C09A4085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>543053 - 302462
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000D7A3708D2BCB50410AD7A3D09A085541AE47E11A2CCB5041AE47E15AA60855415C8FC2752ECB504133333313A60855413333334339CB50418FC2F5F8A00855410AD7A3E032CB5041666666C662085541D7A3709D26CB5041295C8FC2630855413D0AD7D329CB504148E17A8486085541D7A3708D2BCB50410AD7A3D09A085541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000390C76FE2BCB50418A644C09A4085541E65836EB2ACB5041507CBB2594085541A5EFBB2729CB50419860633E7F085541D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E11A2CCB5041AE47E15AA6085541390C76FE2BCB50418A644C09A4085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>543849 - 1407068
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000002000000010300000001000000080000003333334339CB50418FC2F5F8A00855419A9999F943CB50419A9999E99B08554152B81E6545CB5041CDCCCC2C9A0855411F85EB3146CB5041D7A3701D98085541333333F341CB5041333333D362085541A4703D9A40CB5041C3F528AC610855410AD7A3E032CB5041666666C6620855413333334339CB50418FC2F5F8A008554101030000000100000009000000D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E1 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000390C76FE2BCB50418A644C09A4085541D511FA2A2ACB50412262EB0C8908554140A429292ACB5041CFD5A4F9880855413435F4112ACB5041159F5A5F890855413D0AD7D329CB504148E17A8486085541590FB85D29CB5041A896798681085541D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E11A2CCB5041AE47E15AA6085541390C76FE2BCB50418A644C09A4085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>543849 - 3569419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000002000000010300000001000000080000003333334339CB50418FC2F5F8A00855419A9999F943CB50419A9999E99B08554152B81E6545CB5041CDCCCC2C9A0855411F85EB3146CB5041D7A3701D98085541333333F341CB5041333333D362085541A4703D9A40CB5041C3F528AC610855410AD7A3E032CB5041666666C6620855413333334339CB50418FC2F5F8A008554101030000000100000009000000D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E1 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000390C76FE2BCB50418A644C09A4085541D511FA2A2ACB50412262EB0C8908554140A429292ACB5041CFD5A4F9880855413435F4112ACB5041159F5A5F890855413D0AD7D329CB504148E17A8486085541590FB85D29CB5041A896798681085541D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E11A2CCB5041AE47E15AA6085541390C76FE2BCB50418A644C09A4085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>543849 - 302462
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000002000000010300000001000000080000003333334339CB50418FC2F5F8A00855419A9999F943CB50419A9999E99B08554152B81E6545CB5041CDCCCC2C9A0855411F85EB3146CB5041D7A3701D98085541333333F341CB5041333333D362085541A4703D9A40CB5041C3F528AC610855410AD7A3E032CB5041666666C6620855413333334339CB50418FC2F5F8A008554101030000000100000009000000D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E1 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000390C76FE2BCB50418A644C09A4085541E65836EB2ACB5041507CBB2594085541A5EFBB2729CB50419860633E7F085541D7A3709D26CB5041295C8FC263085541A4703D7A24CB5041EC51B8EE6308554185EB512826CB5041000000F0770855410AD7A34028CB5041000000E09008554152B81E052ACB5041C3F528ECA5085541AE47E11A2CCB5041AE47E15AA6085541390C76FE2BCB50418A644C09A4085541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35776 - 1739060
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002E000000562B9383428C504123AC6A40ED065541713D0A97428C504185EB5118ED06554114AE47A1438C50418FC2F588EB065541DBC0B2C8438C50418E10BE57EB065541401D067F458C5041EB2180DCE8065541C3F528AC458C50411F85EB01E8065541EC51B88E448C504152B81EB5E6065541DDFE36A1438C5041381F002EE6065541295C8F823F8C504185EB5138E4065541C3F5288C408C50417B14AED7E0065541A4703D1A408C504133333323E0065541B81E85EB388C504100000010DA065541EC51B86E328C50415C8FC235DF06554185EB5138318C5041EC51B8BEE1065541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000210000004A2500433F8C50410802C759ED065541C3F528EC418C504185EB5178EE06554102D7D33D428C50413E5017D0ED065541713D0A97428C504185EB5118ED06554114AE47A1438C50418FC2F588EB0655417241ECD1448C5041CC5E950CEA065541B3A11374458C5041A0B48311E9065541C3F528AC458C50411F85EB01E8065541EC51B88E448C504152B81EB5E6065541E802F012428C5041A0EB104EE5065541295C8F823F8C504185EB5138E4065541C3F5288C408C50417B14AED7E0065541A4703D1A408C504133333323E0065541B81E85EB388C504100000010DA065541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35776 - 135914
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002E000000562B9383428C504123AC6A40ED065541713D0A97428C504185EB5118ED06554114AE47A1438C50418FC2F588EB065541DBC0B2C8438C50418E10BE57EB065541401D067F458C5041EB2180DCE8065541C3F528AC458C50411F85EB01E8065541EC51B88E448C504152B81EB5E6065541DDFE36A1438C5041381F002EE6065541295C8F823F8C504185EB5138E4065541C3F5288C408C50417B14AED7E0065541A4703D1A408C504133333323E0065541B81E85EB388C504100000010DA065541EC51B86E328C50415C8FC235DF06554185EB5138318C5041EC51B8BEE1065541 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000220000004A2500433F8C50410802C759ED065541C3F528EC418C504185EB5178EE06554102D7D33D428C50413E5017D0ED065541713D0A97428C504185EB5118ED06554114AE47A1438C50418FC2F588EB0655418741ECD1448C5041AC5E950CEA065541B3A11374458C5041A0B48311E9065541C3F528AC458C50411F85EB01E8065541EC51B88E448C504152B81EB5E60655410803F012428C5041B6EB104EE5065541295C8F823F8C504185EB5138E4065541C3F5288C408C50417B14AED7E0065541A4703D1A408C504133333323E0065541B81E85EB388C504100000010DA065541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>544985 - 180764
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000000000F047BD50411F85EB21ECF95441D7A3700D2BBD504148E17A740EFA5441C3F528FC2CBD50410AD7A3D00DFA5441AE47E13A3BBD504166666686FCF954410AD7A3C075BD5041000000C0EEF954418FC2F51876BD50411F85EB41FAF9544185EB514877BD5041CDCCCCFCF9F9544152B81EA576BD5041F6285C8FE5F954415C8FC2B55BBD5041666666F6E4F954411F85EB4156BD50413D0AD773E5F954415C8FC2B550BD504152B81ED5E6F954411F85EBE14BBD5041E17A143EE9F95441000000F047BD50411F85EB21ECF95441
+</a>
+
+<b>
+010600000001000000010300000001000000130000005C8FC2B550BD504152B81ED5E6F954412737E6BE4FBD504128CD5B50E7F954411F85EBE14BBD5041F77A143EE9F954412B0000F047BD50411485EB21ECF95441AB76DBF33CBD5041A250702FF9F954413C35F7AA37BD5041E0E80177FFF9544123A4700D2BBD5041EEE07A740EFA5441C3F528FC2CBD50410AD7A3D00DFA5441AE47E13A3BBD504166666686FCF954410AD7A3C075BD5041000000C0EEF954417D9B803376BD5041B253DF3BFAF954419BE9514877BD50413DCDCCFCF9F9544175FD3BA576BD504195100693E5F9544154B81EA576BD50412B295C8FE5F95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>544985 - 299660
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000000000F047BD50411F85EB21ECF95441D7A3700D2BBD504148E17A740EFA5441C3F528FC2CBD50410AD7A3D00DFA5441AE47E13A3BBD504166666686FCF954410AD7A3C075BD5041000000C0EEF954418FC2F51876BD50411F85EB41FAF9544185EB514877BD5041CDCCCCFCF9F9544152B81EA576BD5041F6285C8FE5F954415C8FC2B55BBD5041666666F6E4F954411F85EB4156BD50413D0AD773E5F954415C8FC2B550BD504152B81ED5E6F954411F85EBE14BBD5041E17A143EE9F95441000000F047BD50411F85EB21ECF95441
+</a>
+
+<b>
+010600000001000000010300000001000000130000005C8FC2B550BD504152B81ED5E6F954412737E6BE4FBD504128CD5B50E7F954411F85EBE14BBD5041F77A143EE9F954412B0000F047BD50411485EB21ECF95441AB76DBF33CBD5041A250702FF9F954413C35F7AA37BD5041E0E80177FFF9544123A4700D2BBD5041EEE07A740EFA5441C3F528FC2CBD50410AD7A3D00DFA5441AE47E13A3BBD504166666686FCF954410AD7A3C075BD5041000000C0EEF954417D9B803376BD5041B253DF3BFAF954419BE9514877BD50413DCDCCFCF9F9544175FD3BA576BD504195100693E5F9544154B81EA576BD50412B295C8FE5F95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546034 - 3049924
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002A000000295C8FB267F25041333333E3953F55419A9999C966F2504152B81E15973F554185EB514865F250417B14AEB7983F554114AE47F162F25041E17A14CE9B3F5541295C8F9260F25041666666369F3F5541CDCCCC1C5FF250415C8FC275A23F55415C8FC2D55EF25041A4703DFAA33F5541B81E85FB65F25041EC51B8EEA83F55413D0AD7936FF25041295C8FF2AD3F55417B14AEA77AF250415C8FC245B33F554148E17AE478F250415C8FC235B73F55418FC2F55886F2504133333373BD3F55410AD7A30094F250413D0AD743C33F5541D7A3704D93F25041666666B6C43F5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000295C8FB2B3F25041AE47E19AAE3F5541DB09EEDCB9F2504172CF343CB13F55411543FC85BFF25041A91C5EA6B33F5541EEF47D7DC4F25041B28BC9C4B53F55410F0E8113CAF250412C3563FCB73F5541C5B518F2CEF2504166A30FCCB93F5541D4313B84D4F25041A21284DEBB3F5541E17A141EDAF250413D0AD7F3BD3F55419A9999C9DAF2504185EB51E8BC3F554167775D05E0F2504121CBE362BF3F5541F71A925FE4F2504183F71A71C13F5541743B5F21E9F25041335C346AC33F5541B710C6B0EEF2504190BD78DAC53F55417CBE0129F4F250416911B49FC83F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546034 - 3311909
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002A000000295C8FB267F25041333333E3953F55419A9999C966F2504152B81E15973F554185EB514865F250417B14AEB7983F554114AE47F162F25041E17A14CE9B3F5541295C8F9260F25041666666369F3F5541CDCCCC1C5FF250415C8FC275A23F55415C8FC2D55EF25041A4703DFAA33F5541B81E85FB65F25041EC51B8EEA83F55413D0AD7936FF25041295C8FF2AD3F55417B14AEA77AF250415C8FC245B33F554148E17AE478F250415C8FC235B73F55418FC2F55886F2504133333373BD3F55410AD7A30094F250413D0AD743C33F5541D7A3704D93F25041666666B6C43F5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000295C8FB2B3F25041AE47E19AAE3F5541DB09EEDCB9F2504172CF343CB13F55411543FC85BFF25041A91C5EA6B33F5541EEF47D7DC4F25041B28BC9C4B53F55410F0E8113CAF250412C3563FCB73F5541C5B518F2CEF2504166A30FCCB93F5541D4313B84D4F25041A21284DEBB3F5541E17A141EDAF250413D0AD7F3BD3F55419A9999C9DAF2504185EB51E8BC3F554167775D05E0F2504121CBE362BF3F5541F71A925FE4F2504183F71A71C13F5541743B5F21E9F25041335C346AC33F5541B710C6B0EEF2504190BD78DAC53F55417CBE0129F4F250416911B49FC83F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546260 - 174646
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000004100000052B81E35C5055141F6285CBF5E4B55410AD7A3D0C90551413D0AD7035E4B5541B81E85EBCE055141666666B65D4B5541F6285C8FD40551419A9999095C4B554152B81EC5DE0551415C8FC2D5574B5541D7A3709DEA055141EC51B87E524B554114AE47A1F1055141E17A14EE4F4B554114AE47F1F405514152B81E654F4B554148E17A34F705514114AE47114F4B5541713D0A67F7055141333333634E4B5541AE47E14AF8055141E17A14DE4C4B554152B81EA5F8055141A4703D8A4C4B554166666696FE0551411F85EB414B4B55410AD7A34002065141713D0AD74A4B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000566A640FBB055141B001FA65514B554162B988A9B9055141E02F077B524B554159CE7124B205514177E5AB38574B554113531679A50551414B2B951C614B5541621D3FC59E055141D190739B654B55419C1233A59C0551418FAB2CFF664B5541D70727859A055141BE5BCBAC6A4B5541027DE86E9605514156B1FCE76F4B55419FC7A89D95055141CE3635EE724B55419FC7A89D95055141D681BFF5794B554158929BC296055141008224E27D4B5541E3A7B3029B055141150DC8E4854B5541E9405A0F9D0551418E9F38DF894B55412B8716419E055141E5D022F38A4B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546394 - 262773
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000D000000333333A35F085141F6285C7F654B5541AE47E1AA60085141D7A3702D644B55418FC2F5D860085141CDCCCCEC634B5541B81E85DB61085141F6285C7F624B5541F6285C1F5D085141A4703D1A624B5541F6285CCF54085141EC51B85E614B5541A4703DAA4208514148E17A845F4B5541EC51B84E420851417B14AEB7604B55418FC2F5D84108514166666646624B5541EC51B8CE4E08514148E17A34644B554166666686570851410AD7A3F0644B554185EB51085C085141CDCCCC2C654B5541333333A35F085141F6285C7F654B5541
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000007AEB51085C085141B7CCCC2C654B5541333333A35F085141F6285C7F654B5541AA47E1AA60085141DDA3702D644B5541961D42B060085141E33EE525644B554178C2F5D860085141EDCCCCEC634B5541CC7A14DE5408514120D7A3D0624B55410C52B84E420851417B14AEB7604B554116EA5BE141085141FC41F629624B5541383A4EDE41085141A3F24C34624B5541AE6D79DB41085141C805E33D624B554192C2F5D8410851415D666646624B5541EC51B8CE4E08514148E17A34644B554166666686570851410AD7A3F0644B55418DD1F84458085141065693FA644B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546433 - 239512
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000005C8FC2856F0851410AD7A3E0974D5541B81E85DB720851410AD7A3509F4D55413D0AD7A37B085141CDCCCC2C9A4D554185EB51388508514100000090944D5541666666A6820851411F85EBA18E4D5541333333C37F0851415C8FC2E5874D554148E17A546F08514152B81E958F4D554148E17A946B085141F6285C4F914D5541B81E85BB5C085141E17A14EE974D554148E17A0461085141AE47E10A9E4D55417B14AE7768085141B81E859B9A4D55415C8FC2856F0851410AD7A3E0974D5541
+</a>
+
+<b>
+010600000001000000010300000001000000110000002A7F66A68208514144BEEBA18E4D55416ED233C37F085141C202C4E5874D5541CBA6852C7108514164165CB88E4D554148E17A546F08514152B81E958F4D554141F8B36B6E08514119445A00904D554149F879946B08514109445D4F914D554199A0207D6608514111227B94934D5541377114D36408514147F67052944D5541801FB41661085141B271DBFC954D55416BAB85BB5C085141253C14EE974D5541677ED15C5F085141B82588AE9B4D55413E7E7A046108514166BAE00A9E4D5541578DAD77680851411906859B9A4D55410686C3296A085141FE0F8CF3994D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546433 - 385815
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000005C8FC2856F0851410AD7A3E0974D5541B81E85DB720851410AD7A3509F4D55413D0AD7A37B085141CDCCCC2C9A4D554185EB51388508514100000090944D5541666666A6820851411F85EBA18E4D5541333333C37F0851415C8FC2E5874D554148E17A546F08514152B81E958F4D554148E17A946B085141F6285C4F914D5541B81E85BB5C085141E17A14EE974D554148E17A0461085141AE47E10A9E4D55417B14AE7768085141B81E859B9A4D55415C8FC2856F0851410AD7A3E0974D5541
+</a>
+
+<b>
+010600000001000000010300000001000000110000002A7F66A68208514144BEEBA18E4D55416ED233C37F085141C202C4E5874D5541CBA6852C7108514164165CB88E4D554148E17A546F08514152B81E958F4D554141F8B36B6E08514119445A00904D554149F879946B08514109445D4F914D554199A0207D6608514111227B94934D5541377114D36408514147F67052944D5541801FB41661085141B271DBFC954D55416BAB85BB5C085141253C14EE974D5541677ED15C5F085141B82588AE9B4D55413E7E7A046108514166BAE00A9E4D5541578DAD77680851411906859B9A4D55410686C3296A085141FE0F8CF3994D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546546 - 250578
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000010000006700000066666606DBF25041C3F5286C9C3D5541B81E852BE3F250418FC2F5589B3D55415C8FC2C5EDF25041A4703D5A983D5541295C8F12F4F25041EC51B86E953D5541713D0AD7F4F25041E17A14CE9E3D5541A4703DBAFAF25041D7A3702D9D3D55413D0AD773FFF25041EC51B88E9A3D5541AE47E13A01F350411F85EB91983D55410000008000F350415C8FC2B5943D55418FC2F52805F3504100000040903D5541B81E855B0CF35041C3F5280C8A3D5541000000B014F350417B14AEA7833D554152B81EA518F35041E17A147E883D5541713D0A6724F35041CDCCCC4C813D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000ED43900831F35041E4F8BD78F63D55415C90447630F350413AD1CFEEF53D554131A6295D30F3504157729A97F53D55414E54113B30F350416CA68F2AF33D5541AB71BA6030F350411855C242EF3D5541B8CA32E430F35041C31602F8ED3D5541BAF84B3333F35041021AC427E73D5541F31B997333F350416568F5E3E33D5541C16BE12E34F3504144AC3985E03D55415BD63CD335F350412D200F1DDD3D5541D14D48EE35F350416EB2A608DD3D5541F3D10F5735F3504151ECCCECDC3D5541D626958633F3504185964197DC3D5541A9FC099125F350415E9B1B05DA3D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546546 - 373060
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000010000006700000066666606DBF25041C3F5286C9C3D5541B81E852BE3F250418FC2F5589B3D55415C8FC2C5EDF25041A4703D5A983D5541295C8F12F4F25041EC51B86E953D5541713D0AD7F4F25041E17A14CE9E3D5541A4703DBAFAF25041D7A3702D9D3D55413D0AD773FFF25041EC51B88E9A3D5541AE47E13A01F350411F85EB91983D55410000008000F350415C8FC2B5943D55418FC2F52805F3504100000040903D5541B81E855B0CF35041C3F5280C8A3D5541000000B014F350417B14AEA7833D554152B81EA518F35041E17A147E883D5541713D0A6724F35041CDCCCC4C813D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000ED43900831F35041E4F8BD78F63D55415C90447630F350413AD1CFEEF53D554131A6295D30F3504157729A97F53D55414E54113B30F350416CA68F2AF33D5541AB71BA6030F350411855C242EF3D5541B8CA32E430F35041C31602F8ED3D5541BAF84B3333F35041021AC427E73D5541F31B997333F350416568F5E3E33D5541C16BE12E34F3504144AC3985E03D55415BD63CD335F350412D200F1DDD3D5541D14D48EE35F350416EB2A608DD3D5541F3D10F5735F3504151ECCCECDC3D5541D626958633F3504185964197DC3D5541A9FC099125F350415E9B1B05DA3D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546764 - 42460
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000025000000000000A070F45041A4703D5A693D5541000000606FF45041F6285CEF693D55419A99995962F45041D7A370DD703D554114AE47A159F45041333333C3663D5541A4703D8A58F45041295C8F62653D5541CDCCCC1C4DF45041B81E85EB553D5541B81E85EB46F4504152B81E75553D554148E17A3443F45041AE47E1BA553D55411F85EBD13EF45041D7A3700D563D5541B81E852B45F45041EC51B8DE5E3D5541C3F5286C4BF450415C8FC2A5663D55415C8FC2A54AF45041E17A14BE673D55413D0AD77353F450411F85EB51713D55419A99996958F45041A4703D3A773D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000BE04DD286BF45041FBC8842D6C3D5541DBEEED5B69F45041E2A3C2226D3D5541DB4DA90F6AF45041478565476D3D5541EB86785A6DF45041E78BF0B76C3D5541B9EF91506FF450415538F5AA6B3D5541950B3BAA6FF450411A23D7C16A3D5541CC4FA4316FF45041716806086A3D55410844C8B16DF45041254A42D46A3D55417CC243266DF45041EE637D1E6B3D5541BE04DD286BF45041FBC8842D6C3D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546764 - 75156
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000025000000000000A070F45041A4703D5A693D5541000000606FF45041F6285CEF693D55419A99995962F45041D7A370DD703D554114AE47A159F45041333333C3663D5541A4703D8A58F45041295C8F62653D5541CDCCCC1C4DF45041B81E85EB553D5541B81E85EB46F4504152B81E75553D554148E17A3443F45041AE47E1BA553D55411F85EBD13EF45041D7A3700D563D5541B81E852B45F45041EC51B8DE5E3D5541C3F5286C4BF450415C8FC2A5663D55415C8FC2A54AF45041E17A14BE673D55413D0AD77353F450411F85EB51713D55419A99996958F45041A4703D3A773D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000BE04DD286BF45041FBC8842D6C3D5541DBEEED5B69F45041E2A3C2226D3D5541DB4DA90F6AF45041478565476D3D5541EB86785A6DF45041E78BF0B76C3D5541B9EF91506FF450415538F5AA6B3D5541950B3BAA6FF450411A23D7C16A3D5541CC4FA4316FF45041716806086A3D55410844C8B16DF45041254A42D46A3D55417CC243266DF45041EE637D1E6B3D5541BE04DD286BF45041FBC8842D6C3D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546917 - 2977019
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001B0000009A99990990FD504185EB5138263B5541EC51B8BE8FFD50415C8FC235273B5541EC51B88E8EFD5041295C8F42313B5541D7A3709D8CFD5041295C8FC23A3B55411F85EB217BFD504185EB5138333B5541666666566EFD50411F85EBE12B3B5541666666B668FD5041B81E852B333B5541295C8F2268FD50418FC2F518343B554114AE47E174FD5041B81E853B3C3B5541A4703DBA7DFD504148E17AB4413B5541295C8FE286FD5041A4703D0A473B554114AE47B18AFD50418FC2F5B8443B55419A9999A990FD50410AD7A370423B5541AE47E18A96FD5041EC51B8AE403B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000E9CB034892FD5041950A989E563B55415C8FC26597FD5041C3F528BC563B554111D9D6FD96FD5041644DE8D0553B55419C2515AE96FD5041D9A5006A543B5541400BD0BE95FD5041380AF3EB513B55419E6FC24093FD50410BC7FD064E3B5541CEA1BB0192FD50412405D1B04B3B5541C8A0D5C791FD5041C5FC3DA7493B5541B4AAF1DA90FD50418CC1DAF6483B554114AE47B18AFD50418FC2F5B8443B5541B5C23BB786FD5041D28F5646473B55413642D5E083FD5041A97BCF49453B5541B7DC47047EFD50416F659DDF413B5541F27FC5F978FD504145D00CC43E3B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546917 - 3667219
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001B0000009A99990990FD504185EB5138263B5541EC51B8BE8FFD50415C8FC235273B5541EC51B88E8EFD5041295C8F42313B5541D7A3709D8CFD5041295C8FC23A3B55411F85EB217BFD504185EB5138333B5541666666566EFD50411F85EBE12B3B5541666666B668FD5041B81E852B333B5541295C8F2268FD50418FC2F518343B554114AE47E174FD5041B81E853B3C3B5541A4703DBA7DFD504148E17AB4413B5541295C8FE286FD5041A4703D0A473B554114AE47B18AFD50418FC2F5B8443B55419A9999A990FD50410AD7A370423B5541AE47E18A96FD5041EC51B8AE403B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C000000E9CB034892FD5041950A989E563B55415C8FC26597FD5041C3F528BC563B554111D9D6FD96FD5041644DE8D0553B55419C2515AE96FD5041D9A5006A543B5541400BD0BE95FD5041380AF3EB513B55419E6FC24093FD50410BC7FD064E3B5541CEA1BB0192FD50412405D1B04B3B5541C8A0D5C791FD5041C5FC3DA7493B5541B4AAF1DA90FD50418CC1DAF6483B554114AE47B18AFD50418FC2F5B8443B5541B5C23BB786FD5041D28F5646473B55413642D5E083FD5041A97BCF49453B5541B7DC47047EFD50416F659DDF413B5541F27FC5F978FD504145D00CC43E3B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>547057 - 2987291
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001F00000033333323CCFA5041333333433E525541C3F5288CC5FA5041A4703DEA385255417B14AE07C2FA5041C3F5285C3652554114AE47E1BDFA50415C8FC2B53352554152B81E25BCFA50411F85EB0133525541CDCCCCECBAFA5041D7A3702D3152554185EB51E8B8FA5041F6285C5F2F52554185EB51E8B5FA5041295C8F122D52554114AE4771B0FA5041E17A14FE28525541713D0A87ACFA50411F85EBC12552554148E17A84A8FA504114AE47C1225255413D0AD7D3A3FA50410AD7A3001F525541713D0A97A0FA5041AE47E1CA1C5255416666667692FA5041295C8F0225525541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000910103F9FDFA5041CEBC030E68525541EEDC2F840FFB50416F84BFEF63525541BB5549780FFB5041D8EA76EA6352554136E28FD60FFB5041937ED2D263525541C96B7EFC0AFB50414CF1076B5E525541AA50AE8301FB5041AAB308AA575255412F405450FDFA5041293C4AE95752554112F2FA5BF2FA50410DEEF0F44C5255411F1553EFEBFA5041690581AC48525541CEFE14CEE8FA5041C171A0DC46525541FD5F956DE5FA504118DEBF0C455255412BE31B0AE3FA50411AAB36914352554186E92843DEFA50419CEF6BD6415255416089FA39DAFA50411F34A11B40525541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>547057 - 3735575
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001F00000033333323CCFA5041333333433E525541C3F5288CC5FA5041A4703DEA385255417B14AE07C2FA5041C3F5285C3652554114AE47E1BDFA50415C8FC2B53352554152B81E25BCFA50411F85EB0133525541CDCCCCECBAFA5041D7A3702D3152554185EB51E8B8FA5041F6285C5F2F52554185EB51E8B5FA5041295C8F122D52554114AE4771B0FA5041E17A14FE28525541713D0A87ACFA50411F85EBC12552554148E17A84A8FA504114AE47C1225255413D0AD7D3A3FA50410AD7A3001F525541713D0A97A0FA5041AE47E1CA1C5255416666667692FA5041295C8F0225525541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000910103F9FDFA5041CEBC030E68525541EEDC2F840FFB50416F84BFEF63525541BB5549780FFB5041D8EA76EA6352554136E28FD60FFB5041937ED2D263525541C96B7EFC0AFB50414CF1076B5E525541AA50AE8301FB5041AAB308AA575255412F405450FDFA5041293C4AE95752554112F2FA5BF2FA50410DEEF0F44C5255411F1553EFEBFA5041690581AC48525541CEFE14CEE8FA5041C171A0DC46525541FD5F956DE5FA504118DEBF0C455255412BE31B0AE3FA50411AAB36914352554186E92843DEFA50419CEF6BD6415255416089FA39DAFA50411F34A11B40525541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>628379 - 224602
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002300000052B81E250C1C51419A999919E116554148E17A041D1C5141D7A370DDD01655419A999929211C5141713D0A17CE165541333333E3261C51418FC2F5D8CC1655417B14AE07301C5141E17A148ECB1655413D0AD793341C514133333373CA1655410AD7A3502E1C514152B81EB5C2165541C3F5285C1A1C514185EB51F8CB165541713D0A570E1C5141C3F5288CD11655417B14AE070B1C514166666636CE165541B81E854B0A1C51418FC2F578CD165541D7A3702D091C514185EB51E8CE1655415C8FC2A50A1C5141D7A3705DD01655418FC2F5280C1C51411F85EB71D2165541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000B4D80141071C5141EAF45BB6D61655413DE5A56F061C5141552062BBD716554148E17A44061C51415C8FC2F5D71655415C8FC285051C5141F6285C9FD8165541713D0AC7041C51413D0AD7C3D81655418FC2F568FE1B5141713D0AE7E516554154D68A44FE1B5141EE28B48BE8165541E926712DFE1B5141FCF2F638EA1655415710EFB1FA1B51410D0ED197ED1655415C8FC235FA1B514100000010EE165541B823363BF61B51418338CFB5ED165541A4703D1AF01B5141AE47E12AED165541A66B7B64ED1B51411491E1BAEB165541E18EC3B5E41B5141183353B8FA165541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>628379 - 378828
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002300000052B81E250C1C51419A999919E116554148E17A041D1C5141D7A370DDD01655419A999929211C5141713D0A17CE165541333333E3261C51418FC2F5D8CC1655417B14AE07301C5141E17A148ECB1655413D0AD793341C514133333373CA1655410AD7A3502E1C514152B81EB5C2165541C3F5285C1A1C514185EB51F8CB165541713D0A570E1C5141C3F5288CD11655417B14AE070B1C514166666636CE165541B81E854B0A1C51418FC2F578CD165541D7A3702D091C514185EB51E8CE1655415C8FC2A50A1C5141D7A3705DD01655418FC2F5280C1C51411F85EB71D2165541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000B4D80141071C5141EAF45BB6D61655413DE5A56F061C5141552062BBD716554148E17A44061C51415C8FC2F5D71655415C8FC285051C5141F6285C9FD8165541713D0AC7041C51413D0AD7C3D81655418FC2F568FE1B5141713D0AE7E516554154D68A44FE1B5141EE28B48BE8165541E926712DFE1B5141FCF2F638EA1655415710EFB1FA1B51410D0ED197ED1655415C8FC235FA1B514100000010EE165541B823363BF61B51418338CFB5ED165541A4703D1AF01B5141AE47E12AED165541A66B7B64ED1B51411491E1BAEB165541E18EC3B5E41B5141183353B8FA165541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>548349 - 3105757
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001600000048E17A54C1FA5041B81E851B542B55410AD7A3C0C1FA5041CDCCCC7C502B55417B14AEA7C0FA5041C3F5282C4C2B554152B81E75BCFA5041713D0A77452B55410AD7A3B0B6FA504114AE4771402B5541713D0AF7B2FA50413D0AD7A33E2B5541AE47E10AADFA50411F85EBC13C2B55417B14AE87A4FA504114AE47C13A2B5541666666E699FA5041666666C6392B5541EC51B8AE90FA50417B14AE07392B5541CDCCCCBC87FA5041000000D0372B55419A9999F97FFA504148E17A34442B554185EB51587EFA504148E17A64482B5541666666D679FA5041000000F0612B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000EAC99C6991FA5041E233DBFE612B55415A5500738DFA5041AAFFF848632B5541B81174217FFA5041A2610216682B55417F3AA9E180FA5041AD868E616B2B554101C6CA2E84FA50419741929C6A2B55417593187887FA5041F52CB0AF692B554166572B1291FA5041FEE3B3FD662B5541EC75C9B59FFA5041F05A0305662B554118E451B6A2FA5041BCF34068652B5541177DE4BBA6FA5041258B427E642B55416424DCC6A6FA50410C866A9A642B554157C13B9CADFA5041AD8EB7EA622B5541145D0AB3A9FA50418B61592F5A2B554114AE4761A6FA5041666666365B2B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>548349 - 3468098
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001600000048E17A54C1FA5041B81E851B542B55410AD7A3C0C1FA5041CDCCCC7C502B55417B14AEA7C0FA5041C3F5282C4C2B554152B81E75BCFA5041713D0A77452B55410AD7A3B0B6FA504114AE4771402B5541713D0AF7B2FA50413D0AD7A33E2B5541AE47E10AADFA50411F85EBC13C2B55417B14AE87A4FA504114AE47C13A2B5541666666E699FA5041666666C6392B5541EC51B8AE90FA50417B14AE07392B5541CDCCCCBC87FA5041000000D0372B55419A9999F97FFA504148E17A34442B554185EB51587EFA504148E17A64482B5541666666D679FA5041000000F0612B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000EAC99C6991FA5041E233DBFE612B55415A5500738DFA5041AAFFF848632B5541B81174217FFA5041A2610216682B55417F3AA9E180FA5041AD868E616B2B554101C6CA2E84FA50419741929C6A2B55417593187887FA5041F52CB0AF692B554166572B1291FA5041FEE3B3FD662B5541EC75C9B59FFA5041F05A0305662B554118E451B6A2FA5041BCF34068652B5541177DE4BBA6FA5041258B427E642B55416424DCC6A6FA50410C866A9A642B554157C13B9CADFA5041AD8EB7EA622B5541145D0AB3A9FA50418B61592F5A2B554114AE4761A6FA5041666666365B2B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>583501 - 56122
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000034000000A4703D2A79E150413D0AD7034FEF5441AE47E1DA78E15041713D0A174FEF54419A99995976E150410AD7A3B04FEF5441AE47E10A76E150413D0AD7C34FEF544185EB51F873E15041713D0A6750EF54419A9999F972E150415C8FC2B550EF544114AE476171E1504114AE475151EF54419A9999F96FE15041A4703DDA51EF54411F85EB016FE15041B81E854B52EF544148E17A4471E150411F85EB6157EF544185EB517871E15041713D0AD757EF5441EC51B8BE7BE15041000000B057EF5441F6285C6F80E15041CDCCCCAC57EF5441C3F528EC86E1504185EB51A857EF5441 [...]
+</a>
+
+<b>
+0106000000020000000103000000010000002E0000005C8FC225A0E15041AE47E1FA41EF54410F4C4579A0E150417AF1C1DB42EF5441B73AA4DBA9E150414959BD8141EF54417CC4C893ABE15041B3235CFC3FEF5441268E5135ADE150412CAB8D523EEF5441CFCF1361ADE15041A91DDAAA3DEF54416A149275ADE15041834E505C3DEF54416241D57FADE15041AEE9FB343DEF54410E699189ADE15041FAF8AC0F3DEF54412D1C6A8AADE15041FE7D6E0C3DEF5441A94FA98CADE150411417D2033DEF5441C7213A8DADE150412514A7013DEF54419D68768DADE15041FC12C0003DEF5441460BEA4DADE1504129BAB4B13BEF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>583501 - 119274
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000034000000A4703D2A79E150413D0AD7034FEF5441AE47E1DA78E15041713D0A174FEF54419A99995976E150410AD7A3B04FEF5441AE47E10A76E150413D0AD7C34FEF544185EB51F873E15041713D0A6750EF54419A9999F972E150415C8FC2B550EF544114AE476171E1504114AE475151EF54419A9999F96FE15041A4703DDA51EF54411F85EB016FE15041B81E854B52EF544148E17A4471E150411F85EB6157EF544185EB517871E15041713D0AD757EF5441EC51B8BE7BE15041000000B057EF5441F6285C6F80E15041CDCCCCAC57EF5441C3F528EC86E1504185EB51A857EF5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000270000000DD55C326FE150416DCA91B852EF5441D4F7371970E15041C03840C054EF54412AF16D7270E150412DED128955EF54418D983C3F71E1504163E51D5657EF54415E0AD57871E1504123FB7DD557EF544101A8412572E15041632A79D457EF5441BC2F9B3172E150411C3E4AD457EF544119FC603572E150418EE83BD457EF5441694C6DE072E150414602B2D157EF54415930120A73E1504114C813D157EF544112A5DA0E74E15041D5EE34CD57EF5441C7FA801175E150418D305EC957EF544127024D007BE150411080D3B257EF5441898486207BE15041F10F59B257EF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>583501 - 319490
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000034000000A4703D2A79E150413D0AD7034FEF5441AE47E1DA78E15041713D0A174FEF54419A99995976E150410AD7A3B04FEF5441AE47E10A76E150413D0AD7C34FEF544185EB51F873E15041713D0A6750EF54419A9999F972E150415C8FC2B550EF544114AE476171E1504114AE475151EF54419A9999F96FE15041A4703DDA51EF54411F85EB016FE15041B81E854B52EF544148E17A4471E150411F85EB6157EF544185EB517871E15041713D0AD757EF5441EC51B8BE7BE15041000000B057EF5441F6285C6F80E15041CDCCCCAC57EF5441C3F528EC86E1504185EB51A857EF5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000270000000DD55C326FE150416DCA91B852EF5441D4F7371970E15041C03840C054EF54412AF16D7270E150412DED128955EF54418D983C3F71E1504163E51D5657EF54415E0AD57871E1504123FB7DD557EF544101A8412572E15041632A79D457EF5441BC2F9B3172E150411C3E4AD457EF544119FC603572E150418EE83BD457EF5441694C6DE072E150414602B2D157EF54415930120A73E1504114C813D157EF544112A5DA0E74E15041D5EE34CD57EF5441C7FA801175E150418D305EC957EF544127024D007BE150411080D3B257EF5441898486207BE15041F10F59B257EF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>548755 - 4147179
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000180000003D0AD7D3050F5141713D0A57582755415C8FC235070F51415C8FC2B55A2755413D0AD7D3050F514114AE47315C275541AE47E19A070F5141AE47E12A5E275541B81E854B080F5141F6285CBF5F27554152B81E55090F5141333333F35F275541713D0AB70E0F514114AE47C15D2755410AD7A3E0140F51411F85EBC154275541D7A3707D180F5141E17A143E4E27554166666656190F5141EC51B8DE4D275541B81E851B1E0F51411F85EB81442755419A9999D9200F5141E17A14FE3F275541666666C6220F514185EB51883D2755411F85EBB11E0F51413D0AD7F339275541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000295C8F12170F5141B81E858B18275541713D0A27150F51417B14AEE715275541AE47E19A140F5141666666F617275541000000C0100F5141E17A144E242755413D0AD7230B0F51418FC2F54833275541AE47E10A0E0F51410AD7A3E037275541CDCCCCEC130F5141B81E85DB43275541E7740A93190F51413C4C734E4E27554163A9F9461C0F51417D8BF56148275541B447DC2B1E0F5141E6BF0467442755412E5771C91E0F51413AEF966343275541AD133CC1200F51416E5D312640275541666666C6220F514185EB51883D2755411F85EBB11E0F51413D0AD7F339275541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>583793 - 407914
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000018000000D7A370BDE2D05041295C8F325AFF544133333373F6D05041666666D65EFF5441B81E853BFED05041D7A3702D48FF54410AD7A370FED050413D0AD79347FF54415C8FC215FDD05041713D0A4747FF54417B14AE97FBD05041AE47E12A46FF54410AD7A3A0FAD05041C3F5286C45FF544148E17AD4F9D05041EC51B80E44FF5441CDCCCC1CF9D05041F6285CCF42FF54411F85EB81F8D0504114AE47C141FF5441EC51B89EF6D05041AE47E12A41FF5441E17A147EF5D0504148E17A8441FF544185EB5168F4D0504148E17A1442FF544100000050F3D05041B81E85EB42FF5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000410000001B52187CF0D05041F5573E0443FF5441531865D6EFD05041531B206542FF5441668C28ECEED050414851481141FF5441FC67132EEED05041D0125C7F3FFF54418F7C50A8EDD050416A9B47F13DFF5441DBC532D3ECD0504121A090523CFF5441000000A0ECD05041A4703DEA3CFF5441FF844A0DE4D0504125A8A94F56FF5441C80C71BDE2D050415CB08E325AFF5441A2743373F6D05041E45E66D65EFF5441D53B419BFCD05041DFC3234760FF54416DC0EF4FFCD0504145EA071A61FF54418FC2F50802D15041713D0A9762FF544159A16D6D02D150411A85AAAE62FF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>549718 - 313478
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000001000000048E17A14321F51410AD7A3F04D145541EC51B8EE371F5141AE47E18A4A145541666666D63E1F5141F6285CEF46145541C3F5280C411F514185EB514846145541EC51B88E4C1F51415C8FC2D544145541D7A3700D4C1F514148E17A44411455411F85EBF14B1F5141C3F5289C3D145541AE47E14A4C1F51410000005037145541D7A3706D4A1F5141B81E85EB38145541AE47E11A481F5141EC51B85E3A145541000000A0441F5141CDCCCC8C3B145541A4703D5A391F514114AE47813C1455415C8FC255351F514148E17AF43D145541A4703D2A2F1F5141713D0A5742145541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000C3F5280C411F514185EB514846145541BF9A3041451F51412A5CDFC045145541EC81A82B451F51415382E8C745145541858492BF4A1F5141133C301A451455410AB5C8E04A1F514195035EFA451455413D0AD733411F51413D0AD71347145541D7A3703D3F1F51411F85EBA147145541EC51B85E381F5141A4703D3A4B145541A4703D9A321F5141CDCCCC8C4E145541B81E85EB431F5141CDCCCC4C6014554152B81ED5441F51411F85EB715F145541333333F34F1F51417B14AE374D145541333333A34C1F51418FC2F5C84514554128D80DA84B1F514153EBC2E945145541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>549770 - 2994112
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000D000000CDCCCC9C9F1151415C8FC2550A18554114AE4741A4115141C3F5281C081855415C8FC245A711514166666676061855419A9999E9A81151415C8FC2A50518554152B81E95AC115141CDCCCC4C03185541AE47E10AAC115141CDCCCCDC0218554114AE47F1A6115141EC51B87EFF175541A4703D0A9F11514152B81E25F8175541713D0AF79811514152B81EB5FC1755419A99998992115141F6285C6F01185541713D0A07981151417B14AE070718554152B81E459C115141295C8FE20B185541CDCCCC9C9F1151415C8FC2550A1855410103000000010000002C000000AE47E1 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000041000000699A999A7E1151419F0DACDC2D185541C2841C7F7F115141558125FF2B185541090D8A458011514151AFE4472A1855411A63C51781115141D398827628185541AE0FB8B081115141C93778A627185541A9D5C67882115141D453ADA62618554144BF78D78311514157E91DE7241855418A6AF31D8511514193AF7BA823185541C97CAE6A86115141FA46AC6F221855419769F543871151416C41769B21185541459C99B787115141C8B3F81A211855415E359705891151413AEDDEA71F1855416A60E14E8A11514140F673291E1855414E36649A8B11514140AD49A41C185541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>549770 - 3457355
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000000D000000CDCCCC9C9F1151415C8FC2550A18554114AE4741A4115141C3F5281C081855415C8FC245A711514166666676061855419A9999E9A81151415C8FC2A50518554152B81E95AC115141CDCCCC4C03185541AE47E10AAC115141CDCCCCDC0218554114AE47F1A6115141EC51B87EFF175541A4703D0A9F11514152B81E25F8175541713D0AF79811514152B81EB5FC1755419A99998992115141F6285C6F01185541713D0A07981151417B14AE070718554152B81E459C115141295C8FE20B185541CDCCCC9C9F1151415C8FC2550A1855410103000000010000002C000000AE47E1 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000041000000699A999A7E1151419F0DACDC2D185541C2841C7F7F115141558125FF2B185541090D8A458011514151AFE4472A1855411A63C51781115141D398827628185541AE0FB8B081115141C93778A627185541A9D5C67882115141D453ADA62618554144BF78D78311514157E91DE7241855418A6AF31D8511514193AF7BA823185541C97CAE6A86115141FA46AC6F221855419769F543871151416C41769B21185541459C99B787115141C8B3F81A211855415E359705891151413AEDDEA71F1855416A60E14E8A11514140F673291E1855414E36649A8B11514140AD49A41C185541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>550180 - 415766
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000002000000010300000002000000380000009A9999F9761C5141295C8FA2B72355419A9999497A1C514166666686AE235541EC51B89E7A1C514166666696AC235541B81E853B7A1C51410AD7A390AC235541B81E850B791C5141F6285C8FAC2355417B14AE07791C5141C3F5283CAD2355418FC2F588771C5141713D0A37AD235541AE47E18A771C5141CDCCCC8CAC23554148E17A34721C51415C8FC285AC235541AE47E13A721C5141000000A0A82355413D0AD743721C51413D0AD703A123554133333323721C51410AD7A3609E23554148E17AA4701C51415C8FC2059E235541666666266E1C514148E17A749C235541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002B000000000000603E1C5141F6285C1F66235541996AE1693E1C51416B0275956623554152E9587B3E1C5141B98D3A6667235541A0530FA73E1C5141E9FDB3706923554145FF0AB63E1C5141E3D7C9236A2355417A91ACC13E1C51412143CFAE6A235541CE6C85DB3E1C5141173EBFE36B2355417088E1E63E1C51411267866B6C235541F8F2AFEE3E1C5141BE78D4C86C23554116EFA8073F1C51416F9F50F36D2355410169D21C3F1C5141F40141F06E235541A09B32363F1C5141A2CF8E1F70235541E5087C533F1C514123CE9B7D71235541BD745B5B3F1C5141BE20B5DB71235541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>553004 - 984467
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000007B14AE7780E15041C3F5286CA0F05441B81E85CB7FE15041A4703DDAA6F054410AD7A3C07DE150419A999949BAF05441E17A146E96E15041CDCCCCACBAF0544185EB51A8AAE150417B14AEF7BAF05441F6285CDFA4E15041F6285CDFABF054415C8FC275A0E15041F6285CEFA0F05441B81E85DB9AE150418FC2F51895F05441666666B681E150413D0AD7B394F054417B14AE7780E15041C3F5286CA0F05441
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000005A3915BD7BE15041D655D776CDF0544162E75C9E7CE150410360AE7ACEF0544133FA7B4C9FE15041070764FFCEF05441E88ACD1BAEE15041BB55D736CFF05441D4DC851AAFE15041F95FAE3ACEF054416334BF18AFE15041AFDC3DB4C8F054417DF642A4ADE1504127EF874DC3F0544112589AA8AAE1504124041FF8BAF05441E440348F95E15041FADE4CA9BAF054415043ECC07DE150415B890A4ABAF054415A3915BD7BE15041D655D776CDF05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955962 - 777252
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000020000000D9D6F2C2FE6151414B808EA77B8654418DC9532BF8615141327DA4AF78865441B8562ADFF6615141D3AC784A788654419CA1746FF16151418A3E94A276865441620277ECF0615141F171AE7A76865441C80DB99BEE6151413538ED3F79865441FCEBEE6BEB61514174921BA07D865441C89E5B86E8615141DE27909B8186544188721980E5615141CC0CB6D985865441CF18729ADD6151411E0ABCED9086544107EBCE83D161514193C37D2EA28654411F85EBB1CE6151410AD7A340A6865441243BC359CB61514119D6F085AA86544132380F96C9615141F9350D28AD865441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000560000003A802ED795615141665C036F7A86544152B81E85996151411F85EB017A865441EC51B87EB06151413D0AD7C37786544156D72951BD615141F075DC5D7786544114AE4711CD615141F6285C7F76865441433ED250D76151416A431D43768654418FC2F5D8E061514185EB51D8758654410AD7A360EE615141C3F5287C76865441E17A14DEE66151410AD7A35081865441D7A370EDE5615141E17A149E828654411F85EB21E4615141A4703D5A85865441B0A32174DC615141407D2D7D8F8654417B14AEB7D8615141666666C694865441A4703D2AD86151419A99999995865441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955962 - 1274989
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000020000000D9D6F2C2FE6151414B808EA77B8654418DC9532BF8615141327DA4AF78865441B8562ADFF6615141D3AC784A788654419CA1746FF16151418A3E94A276865441620277ECF0615141F171AE7A76865441C80DB99BEE6151413538ED3F79865441FCEBEE6BEB61514174921BA07D865441C89E5B86E8615141DE27909B8186544188721980E5615141CC0CB6D985865441CF18729ADD6151411E0ABCED9086544107EBCE83D161514193C37D2EA28654411F85EBB1CE6151410AD7A340A6865441243BC359CB61514119D6F085AA86544132380F96C9615141F9350D28AD865441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000560000003B802ED795615141615C036F7A86544152B81E85996151411F85EB017A865441EC51B87EB06151413D0AD7C37786544154D72951BD615141ED75DC5D7786544114AE4711CD615141F6285C7F76865441463ED250D761514168431D43768654418FC2F5D8E061514185EB51D8758654410AD7A360EE615141C3F5287C76865441E17A14DEE66151410AD7A35081865441D7A370EDE5615141E17A149E828654411F85EB21E4615141A4703D5A85865441B4A32174DC6151413C7D2D7D8F8654417B14AEB7D8615141666666C694865441A4703D2AD86151419A99999995865441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>955962 - 4027096
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000020000000D9D6F2C2FE6151414B808EA77B8654418DC9532BF8615141327DA4AF78865441B8562ADFF6615141D3AC784A788654419CA1746FF16151418A3E94A276865441620277ECF0615141F171AE7A76865441C80DB99BEE6151413538ED3F79865441FCEBEE6BEB61514174921BA07D865441C89E5B86E8615141DE27909B8186544188721980E5615141CC0CB6D985865441CF18729ADD6151411E0ABCED9086544107EBCE83D161514193C37D2EA28654411F85EBB1CE6151410AD7A340A6865441243BC359CB61514119D6F085AA86544132380F96C9615141F9350D28AD865441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000560000003B802ED795615141615C036F7A86544152B81E85996151411F85EB017A865441EC51B87EB06151413D0AD7C37786544154D72951BD615141ED75DC5D7786544114AE4711CD615141F6285C7F76865441463ED250D761514168431D43768654418FC2F5D8E061514185EB51D8758654410AD7A360EE615141C3F5287C76865441E17A14DEE66151410AD7A35081865441D7A370EDE5615141E17A149E828654411F85EB21E4615141A4703D5A85865441B4A32174DC6151413C7D2D7D8F8654417B14AEB7D8615141666666C694865441A4703D2AD86151419A99999995865441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>555101 - 253826
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000B000000EC51B8FE9EE1504152B81E854AF1544133333323A1E15041713D0AE75DF1544166666696AFE15041EC51B8EE5EF154413D0AD7B3BCE15041EC51B81E5EF154413D0AD7C3C2E150418FC2F5785DF15441EC51B87EC4E1504152B81E555CF15441CDCCCC5CC3E15041AE47E16A43F154417B14AE57AEE15041713D0AA73EF15441CDCCCCECA2E1504185EB51283CF15441C3F5284C9DE150410AD7A3303BF15441EC51B8FE9EE1504152B81E854AF15441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000A2009E4A9EE15041311F635C3BF15441FA4D9B0F9EE1504193EC3D523BF154419A8144F49DE150412A1F407B3BF1544119B14B519EE150412762D7F33DF1544154A7C374C3E150411B7775F245F1544182B0964FC3E15041DC97E26743F15441D2C13912C3E15041988DF95943F1544162EC1F02C3E15041E52D535643F15441233DF6799FE150418D0F8A903BF15441A2009E4A9EE15041311F635C3BF15441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>556230 - 1519334
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000015000000666666562AC150418FC2F5B808C854410AD7A3803CC15041CDCCCC5C07C85441C3F5289C44C1504152B81E6507C85441333333D343C15041713D0AE7FCC75441F6285C8F43C15041AE47E15AF9C7544114AE47D141C1504133333353FAC754417B14AE773FC150410AD7A340FAC75441F6285C4F3EC15041AE47E11AF8C754419A9999C93CC1504148E17A84F4C7544148E17A7438C15041713D0AF7F4C7544114AE47A131C15041D7A370BDF8C7544185EB51282FC150417B14AEE7F9C75441713D0A872DC15041713D0A97F9C75441C3F528AC2BC15041EC51B85EF7C75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000666666562AC150418FC2F5B808C854410AD7A3803CC15041CDCCCC5C07C85441C3F5289C44C1504152B81E6507C85441333333D343C15041713D0AE7FCC75441C446EBB343C1504149D44944FBC7544122F506B243C15041505AF62AFBC7544145D6443942C15041D3429E49FBC75441F85D3F083FC15041D3429E49FBC754416B93E4813DC15041D0663A1CFBC75441BE312DBA3CC150413575120AFBC75441DF7FC7D139C15041FE91C2E5FAC754412165BE2A36C1504163A09AD3FAC754417471820F31C1504191CB229DFAC75441D83698D32EC15041F6D9FA8AFAC75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>556230 - 3330806
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000015000000666666562AC150418FC2F5B808C854410AD7A3803CC15041CDCCCC5C07C85441C3F5289C44C1504152B81E6507C85441333333D343C15041713D0AE7FCC75441F6285C8F43C15041AE47E15AF9C7544114AE47D141C1504133333353FAC754417B14AE773FC150410AD7A340FAC75441F6285C4F3EC15041AE47E11AF8C754419A9999C93CC1504148E17A84F4C7544148E17A7438C15041713D0AF7F4C7544114AE47A131C15041D7A370BDF8C7544185EB51282FC150417B14AEE7F9C75441713D0A872DC15041713D0A97F9C75441C3F528AC2BC15041EC51B85EF7C75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000666666562AC150418FC2F5B808C854410AD7A3803CC15041CDCCCC5C07C85441C3F5289C44C1504152B81E6507C85441333333D343C15041713D0AE7FCC75441C446EBB343C1504149D44944FBC7544122F506B243C15041505AF62AFBC7544145D6443942C15041D3429E49FBC75441F85D3F083FC15041D3429E49FBC754416B93E4813DC15041D0663A1CFBC75441BE312DBA3CC150413575120AFBC75441DF7FC7D139C15041FE91C2E5FAC754412165BE2A36C1504163A09AD3FAC754417471820F31C1504191CB229DFAC75441D83698D32EC15041F6D9FA8AFAC75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>556339 - 2983001
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001E000000CDCCCCDCBAA35041EC51B82E96F254418FC2F518C0A35041CDCCCC0C92F254411F85EB01C8A3504185EB51488DF25441F6285C2FCEA35041EC51B80E8AF25441D7A370DDE4A35041CDCCCC3C7FF25441C3F528BCE8A35041B81E856B7DF254411F85EBB1CEA350419A99992971F254413D0AD7C3CDA35041B81E85CB70F2544100000020CEA35041CDCCCCDC6FF25441295C8F42D4A350418FC2F5F85FF2544185EB5188C0A3504148E17A5458F254411F85EBC1ACA35041AE47E1AA50F2544114AE47F1ABA350413D0AD7F351F25441AE47E13AABA3504114AE47E151F25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000B81E85CBEDA35041C3F5281C1BF254416B8D581AE8A3504113914A8119F25441A1F9A548D9A35041634E65E614F25441F21DA1E7D3A35041CB0D083512F254417D0049C5C8A3504153A5920B2FF25441E2E98F23B8A350414E29A61D5AF2544124541999D1A35041974A49F963F25441B68C33DCD2A350413E1A219963F25441353B5A6AEEA35041E545663B1CF25441B81E85CBEDA35041C3F5281C1BF25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>556339 - 3438611
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000001E000000CDCCCCDCBAA35041EC51B82E96F254418FC2F518C0A35041CDCCCC0C92F254411F85EB01C8A3504185EB51488DF25441F6285C2FCEA35041EC51B80E8AF25441D7A370DDE4A35041CDCCCC3C7FF25441C3F528BCE8A35041B81E856B7DF254411F85EBB1CEA350419A99992971F254413D0AD7C3CDA35041B81E85CB70F2544100000020CEA35041CDCCCCDC6FF25441295C8F42D4A350418FC2F5F85FF2544185EB5188C0A3504148E17A5458F254411F85EBC1ACA35041AE47E1AA50F2544114AE47F1ABA350413D0AD7F351F25441AE47E13AABA3504114AE47E151F25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000B81E85CBEDA35041C3F5281C1BF254416B8D581AE8A3504113914A8119F25441A1F9A548D9A35041634E65E614F25441F21DA1E7D3A35041CB0D083512F254417D0049C5C8A3504153A5920B2FF25441E2E98F23B8A350414E29A61D5AF2544124541999D1A35041974A49F963F25441B68C33DCD2A350413E1A219963F25441353B5A6AEEA35041E545663B1CF25441B81E85CBEDA35041C3F5281C1BF25441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>556625 - 2950907
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000120000005C8FC2650EAD5041295C8F42D2F754411F85EB7105AD5041B81E85BBDCF75441333333B304AD50419A999929DFF754419A99992910AD50418FC2F548E4F7544114AE477119AD5041D7A3702DCFF75441D7A3707D20AD504166666676C2F754417B14AEE725AD504152B81ED5BCF75441C3F5282C2CAD50415C8FC215B8F754417B14AE372FAD5041EC51B88EB6F75441295C8F9237AD50417B14AE97B3F75441EC51B86E38AD504133333373B0F754418FC2F5B837AD50415C8FC2B5AFF75441666666662DAD5041E17A141EB2F7544152B81E7527AD5041A4703DDAB4F75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000032B8620C13AD50417B44B991CCF754415945A41717AD5041DEC744AAC4F75441B609A6DD1AAD50415B14EC92BDF754414DC6ACF91BAD504156991871BBF75441D65F1FD119AD50418CF7499DBCF75441EE69320718AD504128537B4CC0F75441A8FA3C4217AD50419E2CCCE2C1F754413406DC7812AD50418D5401C6CBF75441E327B92712AD50415DEB3C40CCF75441DE7A874A10AD5041F8320D3CCFF75441D3A07C8B0EAD50414D70E8FDD1F75441893AD50C0EAD504110E795AAD2F75441300990B30CAD504199407A3ED4F754410F4D22BE0AAD50417C8F0A89D6F75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>556625 - 3621710
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000001000000010300000001000000120000005C8FC2650EAD5041295C8F42D2F754411F85EB7105AD5041B81E85BBDCF75441333333B304AD50419A999929DFF754419A99992910AD50418FC2F548E4F7544114AE477119AD5041D7A3702DCFF75441D7A3707D20AD504166666676C2F754417B14AEE725AD504152B81ED5BCF75441C3F5282C2CAD50415C8FC215B8F754417B14AE372FAD5041EC51B88EB6F75441295C8F9237AD50417B14AE97B3F75441EC51B86E38AD504133333373B0F754418FC2F5B837AD50415C8FC2B5AFF75441666666662DAD5041E17A141EB2F7544152B81E7527AD5041A4703DDAB4F75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000032B8620C13AD50417B44B991CCF754415945A41717AD5041DEC744AAC4F75441B609A6DD1AAD50415B14EC92BDF754414DC6ACF91BAD504156991871BBF75441D65F1FD119AD50418CF7499DBCF75441EE69320718AD504128537B4CC0F75441A8FA3C4217AD50419E2CCCE2C1F754413406DC7812AD50418D5401C6CBF75441E327B92712AD50415DEB3C40CCF75441DE7A874A10AD5041F8320D3CCFF75441D3A07C8B0EAD50414D70E8FDD1F75441893AD50C0EAD504110E795AAD2F75441300990B30CAD504199407A3ED4F754410F4D22BE0AAD50417C8F0A89D6F75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557093 - 243793
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000000A00000000000050B0AC5041333333E361CB544100000090A4AC5041713D0A673ECB54417B14AE879FAC5041B81E85EB3FCB5441C3F528AC97AC504185EB514842CB54417B14AE07A1AC5041B81E858B5ECB544100000030A1AC504152B81E055FCB5441000000B0A2AC5041A4703D0A63CB5441C3F5289CA4AC5041A4703D6A64CB5441EC51B8AEAAAC50417B14AE6762CB544100000050B0AC5041333333E361CB54410103000000010000000E0000007B14AEA7C7AC5041713D0AC758CB54417B14AEE7BCAC5041295C8FF237CB54413D0AD773B0AC50417B14AEC73BCB54410AD7A3 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000D1497257C4AC5041B49BEAF058CB54413CA59663C4AC50412DB301F258CB54419D98A768C4AC50416BCCDFE758CB544195FDC5C5C7AC504185FF422359CB5441FA41ACBFC7AC5041EE0A911059CB5441AF259FB6C7AC50415C38D4F458CB544196211471C7AC504176D98F5258CB54416AED50D7AFAC50418C4088BD5CCB54411E247F4FB0AC5041A31C7E2C5ECB54411B1EBE8FB1AC504146BD55FE61CB54417B074C4BB6AC50419C4B62F460CB544128165FEDB7AC5041ABEE2ED262CB5441192838FEBDAC504194D4CEFC63CB5441DFACB875BFAC504131920E4163CB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557093 - 362675
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000000A00000000000050B0AC5041333333E361CB544100000090A4AC5041713D0A673ECB54417B14AE879FAC5041B81E85EB3FCB5441C3F528AC97AC504185EB514842CB54417B14AE07A1AC5041B81E858B5ECB544100000030A1AC504152B81E055FCB5441000000B0A2AC5041A4703D0A63CB5441C3F5289CA4AC5041A4703D6A64CB5441EC51B8AEAAAC50417B14AE6762CB544100000050B0AC5041333333E361CB54410103000000010000000E0000007B14AEA7C7AC5041713D0AC758CB54417B14AEE7BCAC5041295C8FF237CB54413D0AD773B0AC50417B14AEC73BCB54410AD7A3 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000D1497257C4AC5041B49BEAF058CB54413CA59663C4AC50412DB301F258CB54419D98A768C4AC50416BCCDFE758CB544195FDC5C5C7AC504185FF422359CB5441FA41ACBFC7AC5041EE0A911059CB5441AF259FB6C7AC50415C38D4F458CB544196211471C7AC504176D98F5258CB54416AED50D7AFAC50418C4088BD5CCB54411E247F4FB0AC5041A31C7E2C5ECB54411B1EBE8FB1AC504146BD55FE61CB54417B074C4BB6AC50419C4B62F460CB544128165FEDB7AC5041ABEE2ED262CB5441192838FEBDAC504194D4CEFC63CB5441DFACB875BFAC504131920E4163CB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557249 - 145733
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000028000000713D0A0761B650413D0AD7F32BF354415C8FC2D567B65041C3F528EC33F35441A4703D1A6BB6504114AE472137F354411F85EB016CB65041666666C636F354413D0AD71373B65041EC51B87E2FF35441D7A3702D6AB65041CDCCCC8C2BF35441B81E850B5FB65041E17A14DE24F3544185EB51985AB65041A4703DBA1CF35441EC51B84E59B650417B14AE5715F35441A4703D5A55B65041A4703D8A0FF35441E17A141E4FB65041666666760FF354410AD7A3803EB65041E17A147E02F35441EC51B83E40B6504148E17A2402F3544114AE479142B650418FC2F51804F35441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000049000000A4703D1A6BB6504114AE472137F354411F85EB016CB65041666666C636F354413D0AD71373B65041EC51B87E2FF35441D7A3702D6AB65041CDCCCC8C2BF35441B81E850B5FB65041E17A14DE24F3544185EB51985AB65041A4703DBA1CF35441EC51B84E59B650417B14AE5715F35441A4703D5A55B65041A4703D8A0FF35441E17A141E4FB65041666666760FF354410AD7A3803EB65041E17A147E02F35441EC51B83E40B6504148E17A2402F3544114AE479142B650418FC2F51804F35441D7A3705D45B650410AD7A3A005F35441AE47E1CA47B65041CDCCCCBC07F35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557249 - 290252
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000028000000713D0A0761B650413D0AD7F32BF354415C8FC2D567B65041C3F528EC33F35441A4703D1A6BB6504114AE472137F354411F85EB016CB65041666666C636F354413D0AD71373B65041EC51B87E2FF35441D7A3702D6AB65041CDCCCC8C2BF35441B81E850B5FB65041E17A14DE24F3544185EB51985AB65041A4703DBA1CF35441EC51B84E59B650417B14AE5715F35441A4703D5A55B65041A4703D8A0FF35441E17A141E4FB65041666666760FF354410AD7A3803EB65041E17A147E02F35441EC51B83E40B6504148E17A2402F3544114AE479142B650418FC2F51804F35441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000049000000A4703D1A6BB6504114AE472137F354411F85EB016CB65041666666C636F354413D0AD71373B65041EC51B87E2FF35441D7A3702D6AB65041CDCCCC8C2BF35441B81E850B5FB65041E17A14DE24F3544185EB51985AB65041A4703DBA1CF35441EC51B84E59B650417B14AE5715F35441A4703D5A55B65041A4703D8A0FF35441E17A141E4FB65041666666760FF354410AD7A3803EB65041E17A147E02F35441EC51B83E40B6504148E17A2402F3544114AE479142B650418FC2F51804F35441D7A3705D45B650410AD7A3A005F35441AE47E1CA47B65041CDCCCCBC07F35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557731 - 359801
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+010600000002000000010300000001000000060000001F85EB2153EF504152B81EB540B95441A4703DCA5CEF50411F85EB2141B95441F6285CFF76EF50413D0AD74338B9544152B81E655DEF5041F6285C3F30B95441EC51B89E5CEF50413D0AD7333BB954411F85EB2153EF504152B81EB540B9544101030000000100000026000000A4703DAAA0EE504152B81E05A6B95441E17A14DEB3EE5041E17A147E8CB954417B14AE57CAEE50411F85EB816FB9544114AE47F1D5EE504185EB51D860B954413D0AD7A3DFEE50410AD7A3605BB95441A4703D4ADEEE504114AE478159B95441A4703DAAE2EE50413D0AD73356B95441A4703D [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000EC51B89E5CEF50413D0AD7333BB954414C78FA8853EF5041C4BB927940B95441D9AB02CC53EF50412CEF9ABC40B95441A5BBB01955EF5041C81F4ACB40B95441603846AB55EF50417140B2D140B954416928C3BB55EF5041164BB4C640B954418BC0DA8757EF5041164BB4C640B95441D28CE66D58EF5041164BB4C640B95441F0415FFF58EF5041CBDC31F740B95441CCB3451C5AEF5041B781BB0341B95441B5575BD35AEF5041164BB4C640B954417561BAEA5AEF50415B68D10C41B95441D5AE23D95BEF5041B9504F1741B954417101C7C95CEF5041DB4EE62141B95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557733 - 249297
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000040000000103000000010000004700000014AE4701BBEE5041713D0A27E8B85441713D0A17BCEE50418FC2F5D8E3B8544166666666ADEE50415C8FC225E0B85441C3F5283CA5EE5041295C8F52DEB854411F85EBB19EEE5041E17A14FEDDB85441333333839AEE5041666666D6DDB854413D0AD7138EEE5041666666C6DDB854415C8FC2457BEE5041713D0A97DEB8544185EB51C879EE5041CDCCCC5CDAB85441333333836FEE50411F85EB61DFB85441713D0AD76DEE504133333333E0B85441000000F05AEE5041AE47E15AE8B854417B14AEF75CEE5041E17A145EEBB85441295C8FA25DEE50418FC2F578EEB85441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000A4703D0AC8ED5041000000C005B95441E029339BCDED5041B717879406B954419C32D8F3D5ED5041C80F32D307B954416BC7FFAFDAED504147E6519807B95441327F3D8AE4ED50413B40EA6105B9544102A16907E8ED50416FBFCAF904B954411F85EB71EBED50413D0AD79304B954416E735D23EDED5041FEBEE5F603B95441F112B7CEEEED50413523285C03B95441BF66D6A3F2ED50419A4800B0FEB85441E409E07AF4ED5041282AAEE7FBB85441B3742F7DF1ED50413926E91BFCB854415A3C6726E6ED504161E8ECE1FCB85441E402B218E6ED50411464E4E2FCB85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>557733 - 359123
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000040000000103000000010000004700000014AE4701BBEE5041713D0A27E8B85441713D0A17BCEE50418FC2F5D8E3B8544166666666ADEE50415C8FC225E0B85441C3F5283CA5EE5041295C8F52DEB854411F85EBB19EEE5041E17A14FEDDB85441333333839AEE5041666666D6DDB854413D0AD7138EEE5041666666C6DDB854415C8FC2457BEE5041713D0A97DEB8544185EB51C879EE5041CDCCCC5CDAB85441333333836FEE50411F85EB61DFB85441713D0AD76DEE504133333333E0B85441000000F05AEE5041AE47E15AE8B854417B14AEF75CEE5041E17A145EEBB85441295C8FA25DEE50418FC2F578EEB85441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000A4703D0AC8ED5041000000C005B95441E029339BCDED5041B717879406B954419C32D8F3D5ED5041C80F32D307B954416BC7FFAFDAED504147E6519807B95441327F3D8AE4ED50413B40EA6105B9544102A16907E8ED50416FBFCAF904B954411F85EB71EBED50413D0AD79304B954416E735D23EDED5041FEBEE5F603B95441F112B7CEEEED50413523285C03B95441BF66D6A3F2ED50419A4800B0FEB85441E409E07AF4ED5041282AAEE7FBB85441B3742F7DF1ED50413926E91BFCB854415A3C6726E6ED504161E8ECE1FCB85441E402B218E6ED50411464E4E2FCB85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>558036 - 242068
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000B0000000103000000010000002A0000005C8FC26529F050411F85EB4168B8544114AE47012CF0504152B81E756BB85441713D0A9724F0504114AE47B174B854417B14AE072CF05041AE47E12A7BB85441295C8F922CF0504185EB511880B85441713D0A6731F050410000002075B854419A9999A933F05041AE47E1DA6FB8544185EB519834F050413D0AD7036BB85441C3F5284C34F05041EC51B80E66B85441000000A032F0504114AE47D15FB85441F6285C9F2FF050411F85EB115AB854413D0AD7832DF050418FC2F50857B854417B14AE672AF050413D0AD70355B85441A4703DBA26F050418FC2F54854B85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000FAB594A8A9EF504106D86AFD72B854410AD7A30096EF50418FC2F5687DB8544114AE470191EF5041D7A3700D80B854413EFE99E98EEF504174DFAD2781B85441CBF3428997EF50418F36760F89B85441335D51E898EF50419D2B47518AB85441E33D8EC399EF50417E49AE288AB85441295C8F229BEF50417B14AEE789B85441EB2672EDA4EF5041BB2D79897CB85441846D1F25A6EF5041CAB6FEDF7AB85441F97F0B4AA7EF50412AF90B8D79B85441DDE672B6A8EF5041ABFF61E777B85441191F8FF2A9EF504142E0997976B854416FB427ACA9EF5041164086FB72B85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>558036 - 362736
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000B0000000103000000010000002A0000005C8FC26529F050411F85EB4168B8544114AE47012CF0504152B81E756BB85441713D0A9724F0504114AE47B174B854417B14AE072CF05041AE47E12A7BB85441295C8F922CF0504185EB511880B85441713D0A6731F050410000002075B854419A9999A933F05041AE47E1DA6FB8544185EB519834F050413D0AD7036BB85441C3F5284C34F05041EC51B80E66B85441000000A032F0504114AE47D15FB85441F6285C9F2FF050411F85EB115AB854413D0AD7832DF050418FC2F50857B854417B14AE672AF050413D0AD70355B85441A4703DBA26F050418FC2F54854B85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000FAB594A8A9EF504106D86AFD72B854410AD7A30096EF50418FC2F5687DB8544114AE470191EF5041D7A3700D80B854413EFE99E98EEF504174DFAD2781B85441CBF3428997EF50418F36760F89B85441335D51E898EF50419D2B47518AB85441E33D8EC399EF50417E49AE288AB85441295C8F229BEF50417B14AEE789B85441EB2672EDA4EF5041BB2D79897CB85441846D1F25A6EF5041CAB6FEDF7AB85441F97F0B4AA7EF50412AF90B8D79B85441DDE672B6A8EF5041ABFF61E777B85441191F8FF2A9EF504142E0997976B854416FB427ACA9EF5041164086FB72B85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>558276 - 24299
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001800000085EB519818CE50417B14AEE7A2AF544185EB518807CE5041295C8FD29DAF5441CDCCCCBC05CE504185EB51289DAF54419A9999C901CE5041B81E859B9BAF544152B81ED5F6CD50417B14AE5797AF54415C8FC235F2CD50419A99998994AF544148E17AD4E6CD50417B14AE478FAF54418FC2F5A8E1CD5041C3F5284C8CAF5441713D0AA7DCCD50418FC2F52889AF54417B14AE07D9CD50415C8FC20588AF54411F85EB71D0CD50416666664687AF5441B81E854BCECD5041E17A140E8BAF5441AE47E17ADCCD5041EC51B8EE93AF5441AE47E1CAE2CD50410000009097AF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000004DDF08DEF2CD50410E9A465D9EAF5441D21605E1F2CD5041B51F495B9EAF5441943E7818F2CD504198092BF69DAF54417FFD0117EBCD50415D7A54DE9AAF5441C9B06BBFE6CD5041F858421E99AF5441E0B176BDE6CD5041E74A7D1D99AF5441E0C00BBAE6CD5041A527251C99AF5441FD4515B6E6CD50410522961A99AF5441C36F4E3BE6CD504129DE21279AAF54413250D3CEF1CD504118BFA8E69EAF54417A0A6B12F2CD5041111CE5CC9EAF54414DDF08DEF2CD50410E9A465D9EAF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>558276 - 64060
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001800000085EB519818CE50417B14AEE7A2AF544185EB518807CE5041295C8FD29DAF5441CDCCCCBC05CE504185EB51289DAF54419A9999C901CE5041B81E859B9BAF544152B81ED5F6CD50417B14AE5797AF54415C8FC235F2CD50419A99998994AF544148E17AD4E6CD50417B14AE478FAF54418FC2F5A8E1CD5041C3F5284C8CAF5441713D0AA7DCCD50418FC2F52889AF54417B14AE07D9CD50415C8FC20588AF54411F85EB71D0CD50416666664687AF5441B81E854BCECD5041E17A140E8BAF5441AE47E17ADCCD5041EC51B8EE93AF5441AE47E1CAE2CD50410000009097AF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000004DDF08DEF2CD50410E9A465D9EAF5441D21605E1F2CD5041B51F495B9EAF5441943E7818F2CD504198092BF69DAF54417FFD0117EBCD50415D7A54DE9AAF5441C9B06BBFE6CD5041F858421E99AF5441E0B176BDE6CD5041E74A7D1D99AF5441E0C00BBAE6CD5041A527251C99AF5441FD4515B6E6CD50410522961A99AF5441C36F4E3BE6CD504129DE21279AAF54413250D3CEF1CD504118BFA8E69EAF54417A0A6B12F2CD5041111CE5CC9EAF54414DDF08DEF2CD50410E9A465D9EAF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>559978 - 223323
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000280000003D0AD733B1CF50419A9999C985B05441A4703DBABFCF5041B81E85EB86B05441EC51B8AEC0CF50418FC2F56885B054415C8FC255CECF504152B81EB585B05441295C8FD2D8CF50417B14AE5782B0544166666616DDCF50413D0AD74382B0544152B81EE5DFCF5041EC51B8EE80B054418FC2F518EACF5041CDCCCC0C7BB054415C8FC2F5E9CF5041C3F5283C79B054418FC2F538E0CF5041D7A3700D77B054413D0AD7D3DACF50410000001075B05441D7A3703DD9CF504114AE47717DB054419A999969D3CF504185EB51387FB054419A9999B9BDCF504114AE47217EB05441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000007000000C62044DBDCCF5041B61EEA4482B05441B07E41D5DFCF504198D7F8DB80B05441A38A893FE0CF5041957ADCBE7DB054416290E8F1D7CF50418F9FB4FD7EB054416BC82CD0D9CF504191DD1C1181B05441D36AAF59DBCF504195C5EB4B82B05441C62044DBDCCF5041B61EEA4482B05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>559978 - 389882
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000280000003D0AD733B1CF50419A9999C985B05441A4703DBABFCF5041B81E85EB86B05441EC51B8AEC0CF50418FC2F56885B054415C8FC255CECF504152B81EB585B05441295C8FD2D8CF50417B14AE5782B0544166666616DDCF50413D0AD74382B0544152B81EE5DFCF5041EC51B8EE80B054418FC2F518EACF5041CDCCCC0C7BB054415C8FC2F5E9CF5041C3F5283C79B054418FC2F538E0CF5041D7A3700D77B054413D0AD7D3DACF50410000001075B05441D7A3703DD9CF504114AE47717DB054419A999969D3CF504185EB51387FB054419A9999B9BDCF504114AE47217EB05441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000007000000C62044DBDCCF5041B61EEA4482B05441B07E41D5DFCF504198D7F8DB80B05441A38A893FE0CF5041957ADCBE7DB054416290E8F1D7CF50418F9FB4FD7EB054416BC82CD0D9CF504191DD1C1181B05441D36AAF59DBCF504195C5EB4B82B05441C62044DBDCCF5041B61EEA4482B05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>629100 - 395993
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000011000000AE47E13AD90051410AD7A390FC025541C3F5280CD5005141295C8FB2FA02554166666696D00051413D0AD7D3F8025541C3F528ECCF005141E17A14AEF802554114AE4741CF005141295C8FB2F8025541CDCCCCBCCE0051411F85EBE1F8025541EC51B8AECD0051410AD7A340F902554114AE4701CD0051413D0AD753F902554100000020CA0051418FC2F568FE025541AE47E14AD90051410AD7A3000503554152B81E15D800514114AE47F10B03554114AE47E1E2005141000000F00C0355418FC2F548E40051417B14AEC704035541F6285C3FE40051417B14AE4704035541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000000000F0C9005141295C8F72FF02554166666666CC0051415C8FC2F5000355417B14AED7CC005141B81E853B01035541AE47E16ACC0051411F85EB810203554133333333CC005141B81E857B0303554133333343D1005141713D0A57060355413D0AD723D0005141B81E858B08035541CDCCCC8CCE0051419A9999B908035541755AD462CD005141B6C3D9510B035541ABD31E15D8005141DA0647F10B0355414165FC18D8005141F15B1BDB0B0355419F18E14AD9005141D1E4A400050355414048E5F6CE005141D20B718300035541C5750020CA005141BFF5F568FE025541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>564415 - 5219044
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000041000000EC51B80E40655141295C8F52F0A65441295C8F624165514185EB5188EFA654411F85EBF13F6551413D0AD7B3EAA654419A9999293F6551419A9999B9E6A65441AE47E10A3F65514133333323E5A65441713D0A273F65514148E17A54E3A654419A9999593F6551419A999939E2A65441333333F33F655141D7A370EDE0A654410AD7A3904065514114AE4711E0A65441D7A370AD41655141C3F5285CDFA6544114AE47314565514148E17A04DEA654411F85EB3146655141333333D3DCA65441333333C3466551413D0AD7F3DBA65441AE47E1FA466551413D0AD773DBA65441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000DCF532CB36655141D61B251CF0A654418816E4C0396551413F904B2AEFA6544129388CF13B655141020FB8FBECA65441E6713CDC3B6551410CDDAC58E9A65441E29316F53A6551416BC791A1E4A6544159A30BB7396551419375FB7FE2A65441D11005CC376551415695ABFEE3A6544130CEADFA346551414093DB30E6A6544161573EC7326551412FA1E694E7A65441C7BB61C02F65514192522467E9A65441B6E397582D6551411AC7AAD9EAA654417744C4662A6551414147409FECA65441370934752865514163ABF27BEDA65441CC785F7A24655141EA75ACF3EEA65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>564503 - 1262203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001D0000007B14AE17E26551417B14AE1760A75441C3F528ACF06551417B14AEA75EA7544152B81E35F1655141666666A65EA754410AD7A360F0655141295C8FC25DA75441E17A146EEE65514185EB51C85AA754415C8FC2B5ED6551410AD7A3F05AA754417B14AE17E4655141EC51B88E5CA7544152B81E25E36551410AD7A3705CA75441EC51B88EDC655141713D0A575DA75441295C8F72D8655141CDCCCC8C5DA754418FC2F508CB6551419A9999C95DA7544166666696C6655141333333B35DA754411F85EBA1BC655141B81E853B5EA754415C8FC2E5BA655141C3F5282C5EA75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000E17A146EEE65514185EB51C85AA75441C3F528FCEC655141B81E851B58A75441F6285C0FEC655141D7A370AD55A754417B14AE07EB65514185EB51E852A75441F6285C0FEA655141C3F528DC4FA754419A999949E8655141C3F5281C50A75441B81E856BE36551417B14AEC750A75441EC51B84ED9655141CDCCCC2C52A75441B81E85CBC565514152B81EF551A75441AE47E10AB8655141AE47E15A52A7544166666656B0655141D7A3705D52A754415C8FC285A065514148E17AE451A75441A4703D6A906551410000006050A75441295C8F8286655141E17A141E52A75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>564503 - 3667879
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001D0000007B14AE17E26551417B14AE1760A75441C3F528ACF06551417B14AEA75EA7544152B81E35F1655141666666A65EA754410AD7A360F0655141295C8FC25DA75441E17A146EEE65514185EB51C85AA754415C8FC2B5ED6551410AD7A3F05AA754417B14AE17E4655141EC51B88E5CA7544152B81E25E36551410AD7A3705CA75441EC51B88EDC655141713D0A575DA75441295C8F72D8655141CDCCCC8C5DA754418FC2F508CB6551419A9999C95DA7544166666696C6655141333333B35DA754411F85EBA1BC655141B81E853B5EA754415C8FC2E5BA655141C3F5282C5EA75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000E17A146EEE65514185EB51C85AA75441C3F528FCEC655141B81E851B58A75441F6285C0FEC655141D7A370AD55A754417B14AE07EB65514185EB51E852A75441F6285C0FEA655141C3F528DC4FA754419A999949E8655141C3F5281C50A75441B81E856BE36551417B14AEC750A75441EC51B84ED9655141CDCCCC2C52A75441B81E85CBC565514152B81EF551A75441AE47E10AB8655141AE47E15A52A7544166666656B0655141D7A3705D52A754415C8FC285A065514148E17AE451A75441A4703D6A906551410000006050A75441295C8F8286655141E17A141E52A75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>564509 - 1262203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002100000052B81E257F6551419A9999A955A754415C8FC2B5796551415C8FC2955CA754419A9999397C6551413D0AD7F35CA754418FC2F50888655141000000C05CA75441C3F5282C92655141B81E857B5AA7544100000010A76551411F85EBE15DA754418FC2F5F8B0655141D7A3703D5EA754415C8FC2E5BA655141C3F5282C5EA754411F85EBA1BC655141B81E853B5EA7544166666696C6655141333333B35DA754418FC2F508CB6551419A9999C95DA75441295C8F72D8655141CDCCCC8C5DA75441EC51B88EDC655141713D0A575DA7544152B81E25E36551410AD7A3705CA75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000E17A146EEE65514185EB51C85AA75441C3F528FCEC655141B81E851B58A75441F6285C0FEC655141D7A370AD55A754417B14AE07EB65514185EB51E852A75441F6285C0FEA655141C3F528DC4FA754419A999949E8655141C3F5281C50A75441B81E856BE36551417B14AEC750A75441EC51B84ED9655141CDCCCC2C52A75441B81E85CBC565514152B81EF551A75441AE47E10AB8655141AE47E15A52A7544166666656B0655141D7A3705D52A754415C8FC285A065514148E17AE451A75441A4703D6A906551410000006050A75441295C8F8286655141E17A141E52A75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>564509 - 3667879
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002100000052B81E257F6551419A9999A955A754415C8FC2B5796551415C8FC2955CA754419A9999397C6551413D0AD7F35CA754418FC2F50888655141000000C05CA75441C3F5282C92655141B81E857B5AA7544100000010A76551411F85EBE15DA754418FC2F5F8B0655141D7A3703D5EA754415C8FC2E5BA655141C3F5282C5EA754411F85EBA1BC655141B81E853B5EA7544166666696C6655141333333B35DA754418FC2F508CB6551419A9999C95DA75441295C8F72D8655141CDCCCC8C5DA75441EC51B88EDC655141713D0A575DA7544152B81E25E36551410AD7A3705CA75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000E17A146EEE65514185EB51C85AA75441C3F528FCEC655141B81E851B58A75441F6285C0FEC655141D7A370AD55A754417B14AE07EB65514185EB51E852A75441F6285C0FEA655141C3F528DC4FA754419A999949E8655141C3F5281C50A75441B81E856BE36551417B14AEC750A75441EC51B84ED9655141CDCCCC2C52A75441B81E85CBC565514152B81EF551A75441AE47E10AB8655141AE47E15A52A7544166666656B0655141D7A3705D52A754415C8FC285A065514148E17AE451A75441A4703D6A906551410000006050A75441295C8F8286655141E17A141E52A75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960606 - 130508
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000397FAA4FB7B1504174940310EF49554145AD41D8C1B150416A0089C5DD4955412E9E2166A9B150418DAB54ACCD49554194CE5D6699B15041CCFC8B49DB495541397FAA4FB7B1504174940310EF495541
+</a>
+
+<b>
+01060000000100000001030000000100000007000000018D1072A9B15041877430B4CD495541D7F3776F99B150411BD7FF45DB495541CED7F24FB7B15041CCD28C0FEF49554160257842BEB15041757017A8E34955418BB5ACCEC1B150413D9B38D2DD495541F39C61DFB6B1504179BDC98BD6495541018D1072A9B15041877430B4CD495541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960606 - 329675
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000397FAA4FB7B1504174940310EF49554145AD41D8C1B150416A0089C5DD4955412E9E2166A9B150418DAB54ACCD49554194CE5D6699B15041CCFC8B49DB495541397FAA4FB7B1504174940310EF495541
+</a>
+
+<b>
+01060000000100000001030000000100000007000000018D1072A9B15041877430B4CD495541D7F3776F99B150411BD7FF45DB495541CED7F24FB7B15041CCD28C0FEF49554160257842BEB15041757017A8E34955418BB5ACCEC1B150413D9B38D2DD495541F39C61DFB6B1504179BDC98BD6495541018D1072A9B15041877430B4CD495541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>565876 - 903813
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A0000003D0AD773846351411F85EB817DA5544152B81E0587635141333333237CA554417B14AE37796351418FC2F5985DA55441333333D369635141AE47E18A3BA55441B81E851B676351418FC2F5483CA55441EC51B8FE4E6351413D0AD7D345A554419A9999295F63514114AE47D169A55441295C8F526F635141B81E85CB8DA55441666666F6756351411F85EBB186A554413D0AD773846351411F85EB817DA55441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000072B7CCD51635141B8F3FDB5B6A5544189C1D85E5963514104D4E9B0ADA554418C36057061635141A42DA308A4A55441D5F564EA64635141069DC714A0A55441893F5394676351419DDBC64A9BA554417DDF28926A635141C18DEC7795A554412A2643336C63514142E5F24B92A554414DEF64466D6351415B30593490A55441D692FF4E6E635141D641CDE18EA554410A994B406F6351410954DBA28DA554419A6B256668635141D4878A617EA554419031B9EF5863514162A532F55BA55441A00DBCFB4E635141411F06D545A554418EBAF0364A635141EA3026B947A55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>566799 - 1183640
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000210000008FC2F5C87D21514166666686349E5441E17A14BE84215141D7A3705D459E54410000001089215141E17A14EE4D9E5441CDCCCC8C892151417B14AEA7509E54413D0AD7938B215141333333434F9E5441AE47E1EA8D2151417B14AE47519E5441AE47E1CA8D21514152B81E95529E5441295C8F52A721514114AE47916E9E5441EC51B88ED5215141A4703D2A5E9E544152B81E05D1215141F6285C0F4D9E5441713D0AF7D1215141A4703DBA4C9E54411F85EB81FE215141B81E850B3D9E5441C3F528BCFA21514185EB5198309E54410AD7A330F6215141000000501E9E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000024000000253F78619F215141C658AFDC659E5441BD80AA15B0215141149828835E9E5441E50FEC9DB7215141629461CB689E54411ACACE0DB9215141116DEB46689E5441EC51B88ED5215141A4703D2A5E9E544152B81E05D1215141F6285C0F4D9E5441713D0AF7D1215141A4703DBA4C9E54411F85EB81FE215141B81E850B3D9E5441C3F528BCFA21514185EB5198309E54410AD7A330F6215141000000501E9E54413D0AD793EB21514148E17A54229E5441E17A14CEE321514114AE47D10D9E5441EC51B8EEDB2151411F85EB11109E544152B81EB5CF215141C3F528BC169E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>566799 - 3366854
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000210000008FC2F5C87D21514166666686349E5441E17A14BE84215141D7A3705D459E54410000001089215141E17A14EE4D9E5441CDCCCC8C892151417B14AEA7509E54413D0AD7938B215141333333434F9E5441AE47E1EA8D2151417B14AE47519E5441AE47E1CA8D21514152B81E95529E5441295C8F52A721514114AE47916E9E5441EC51B88ED5215141A4703D2A5E9E544152B81E05D1215141F6285C0F4D9E5441713D0AF7D1215141A4703DBA4C9E54411F85EB81FE215141B81E850B3D9E5441C3F528BCFA21514185EB5198309E54410AD7A330F6215141000000501E9E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000024000000253F78619F215141C658AFDC659E5441BD80AA15B0215141149828835E9E5441E50FEC9DB7215141629461CB689E54411ACACE0DB9215141116DEB46689E5441EC51B88ED5215141A4703D2A5E9E544152B81E05D1215141F6285C0F4D9E5441713D0AF7D1215141A4703DBA4C9E54411F85EB81FE215141B81E850B3D9E5441C3F528BCFA21514185EB5198309E54410AD7A330F6215141000000501E9E54413D0AD793EB21514148E17A54229E5441E17A14CEE321514114AE47D10D9E5441EC51B8EEDB2151411F85EB11109E544152B81EB5CF215141C3F528BC169E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>567274 - 4557116
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002D0000008FC2F5789D175141713D0AE721A15441713D0AE79B1751415C8FC21521A15441333333D3981751415C8FC2B51FA154410000001095175141AE47E1FA1DA15441CDCCCCEC8E175141E17A146E1AA15441333333138B1751418FC2F54818A1544185EB51E885175141A4703D0A15A15441713D0AA7831751411F85EB7113A154411F85EB81811751419A99996911A154419A9999897E175141000000F00EA1544185EB51487C175141B81E853B0DA15441D7A3704D7A1751410AD7A3A00CA15441C3F5280C78175141666666760CA15441000000307517514114AE47110DA15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000009A999919731751418FC2F5F84BA15441333333D37E175141000000603FA1544148E17A3482175141D7A3700D49A154413D0AD7F386175141D7A370BD43A154413D0AD7F386175141D7A370BD43A1544130CBC9088917514106902F6441A154415E6ECBED721751414D6532F732A1544181E7B1035B1751410BDFF54E22A1544188173E265717514157C94DEC23A15441E17A147E56175141666666462FA15441295C8FC255175141713D0A7732A1544152B81E35551751413D0AD76333A154415C8FC27554175141A4703D5A34A15441295C8F1253175141D7A3706D34A15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>568100 - 1720
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000120000001F85EBF13A155141000000003A8D54419A999919361551417B14AE473C8D54418FC2F5C8391551411F85EBE14D8D5441B81E85CB391551419A9999B9598D5441666666663E1551410AD7A390688D544114AE4771421551415C8FC285788D5441F6285C2F4A155141000000108D8D5441F6285CFF531551413D0AD7238D8D5441C3F5284C54155141A4703DAA828D54417B14AE9754155141EC51B85E788D5441D7A370ED54155141AE47E1BA6C8D5441D7A3705D5515514185EB5148638D54417B14AEE750155141295C8F925F8D544152B81E154E155141AE47E1CA5C8D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000400000068DFFCD23E1551417E76483D6A8D544114AE4771421551415C8FC285788D5441F6285C2F4A155141000000108D8D544168DFFCD23E1551417E76483D6A8D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>568100 - 54106
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000120000001F85EBF13A155141000000003A8D54419A999919361551417B14AE473C8D54418FC2F5C8391551411F85EBE14D8D5441B81E85CB391551419A9999B9598D5441666666663E1551410AD7A390688D544114AE4771421551415C8FC285788D5441F6285C2F4A155141000000108D8D5441F6285CFF531551413D0AD7238D8D5441C3F5284C54155141A4703DAA828D54417B14AE9754155141EC51B85E788D5441D7A370ED54155141AE47E1BA6C8D5441D7A3705D5515514185EB5148638D54417B14AEE750155141295C8F925F8D544152B81E154E155141AE47E1CA5C8D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000400000068DFFCD23E1551417E76483D6A8D544114AE4771421551415C8FC285788D5441F6285C2F4A155141000000108D8D544168DFFCD23E1551417E76483D6A8D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>568867 - 3094834
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000013000000CDCCCC4CF6185141295C8F0256A75441A4703D2AEF185141B81E85CB58A754419A999909E81851418FC2F5485BA754418FC2F5F8E1185141E17A148E5CA754413D0AD723D61851419A9999895FA7544185EB5168CF1851410AD7A39061A75441A4703D0ACD1851416666667662A75441EC51B8DEC9185141AE47E1AA63A75441AE47E16AD0185141AE47E13A71A754415C8FC2A5DC18514152B81EE56DA754415C8FC2F5E4185141C3F5289C6BA754411F85EB51EE185141D7A370AD68A75441EC51B85E03195141AE47E1BA62A75441B81E85DB0519514114AE475162A75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D00000033333353FE1851415C8FC2054FA75441EC51B84EFD18514185EB51A84BA754415F04B2C5EA18514139D857B552A7544154D2169CE318514141E355DE54A75441EFEF4538DC185141A88DE89256A75441851E1683D518514160E8B08158A754416CFD1B08CF185141CF9D415F5CA7544158F8C064CB185141C9B9E0365FA75441295C8FF2C51851419A99992962A75441724A63D1BB185141EBE5D8DA67A75441BC29BE52B5185141C95763856CA754417B14AE57B51851411F85EB3170A75441AE47E15ABB185141AE47E1FA6BA75441C3F5284CBF1851410AD7A38069A75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>568867 - 3447009
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000013000000CDCCCC4CF6185141295C8F0256A75441A4703D2AEF185141B81E85CB58A754419A999909E81851418FC2F5485BA754418FC2F5F8E1185141E17A148E5CA754413D0AD723D61851419A9999895FA7544185EB5168CF1851410AD7A39061A75441A4703D0ACD1851416666667662A75441EC51B8DEC9185141AE47E1AA63A75441AE47E16AD0185141AE47E13A71A754415C8FC2A5DC18514152B81EE56DA754415C8FC2F5E4185141C3F5289C6BA754411F85EB51EE185141D7A370AD68A75441EC51B85E03195141AE47E1BA62A75441B81E85DB0519514114AE475162A75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D00000033333353FE1851415C8FC2054FA75441EC51B84EFD18514185EB51A84BA754415F04B2C5EA18514139D857B552A7544154D2169CE318514141E355DE54A75441EFEF4538DC185141A88DE89256A75441851E1683D518514160E8B08158A754416CFD1B08CF185141CF9D415F5CA7544158F8C064CB185141C9B9E0365FA75441295C8FF2C51851419A99992962A75441724A63D1BB185141EBE5D8DA67A75441BC29BE52B5185141C95763856CA754417B14AE57B51851411F85EB3170A75441AE47E15ABB185141AE47E1FA6BA75441C3F5284CBF1851410AD7A38069A75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>568867 - 52720
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000013000000CDCCCC4CF6185141295C8F0256A75441A4703D2AEF185141B81E85CB58A754419A999909E81851418FC2F5485BA754418FC2F5F8E1185141E17A148E5CA754413D0AD723D61851419A9999895FA7544185EB5168CF1851410AD7A39061A75441A4703D0ACD1851416666667662A75441EC51B8DEC9185141AE47E1AA63A75441AE47E16AD0185141AE47E13A71A754415C8FC2A5DC18514152B81EE56DA754415C8FC2F5E4185141C3F5289C6BA754411F85EB51EE185141D7A370AD68A75441EC51B85E03195141AE47E1BA62A75441B81E85DB0519514114AE475162A75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000033A810F4E51851413B66AEB85BA7544140319BD4E7185141888A0E545BA75441C13CD00DED1851411A91518859A7544101F0B362F2185141DD3AB58957A75441B615110CF918514163328F0055A75441EFE0E0F1F71851419D382D4954A75441C55ED90CF6185141011B4DBB54A754416E3572D1F2185141FCD09CD855A754418138DBEAEE1851415B690C6857A754415ADB2B77EC185141551F5C8558A75441CE9B5C91E918514150D5ABA259A754417872F555E618514185EB134D59A75441AFADB571E51851417FA1636A5AA7544133A810F4E51851413B66AEB85BA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>568867 - 81366
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000013000000CDCCCC4CF6185141295C8F0256A75441A4703D2AEF185141B81E85CB58A754419A999909E81851418FC2F5485BA754418FC2F5F8E1185141E17A148E5CA754413D0AD723D61851419A9999895FA7544185EB5168CF1851410AD7A39061A75441A4703D0ACD1851416666667662A75441EC51B8DEC9185141AE47E1AA63A75441AE47E16AD0185141AE47E13A71A754415C8FC2A5DC18514152B81EE56DA754415C8FC2F5E4185141C3F5289C6BA754411F85EB51EE185141D7A370AD68A75441EC51B85E03195141AE47E1BA62A75441B81E85DB0519514114AE475162A75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000033A810F4E51851413B66AEB85BA7544140319BD4E7185141888A0E545BA75441C13CD00DED1851411A91518859A7544101F0B362F2185141DD3AB58957A75441B615110CF918514163328F0055A75441EFE0E0F1F71851419D382D4954A75441C55ED90CF6185141011B4DBB54A754416E3572D1F2185141FCD09CD855A754418138DBEAEE1851415B690C6857A754415ADB2B77EC185141551F5C8558A75441CE9B5C91E918514150D5ABA259A754417872F555E618514185EB134D59A75441AFADB571E51851417FA1636A5AA7544133A810F4E51851413B66AEB85BA75441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569380 - 3061015
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000130000009A9999F9BD4B51411F85EB61AF865441713D0A57BF4B5141AE47E1BAAE86544185EB51F8C04B5141CDCCCC6CAD8654415C8FC265C24B5141295C8F62AC8654411F85EB01C44B5141EC51B83EAB865441333333B3C54B51417B14AE97AA8654413D0AD763C74B5141A4703D1AAA865441F6285C2FC94B51415C8FC205AA865441C3F528ACCA4B5141C3F5283CAA8654419A999939C94B5141AE47E1BAA1865441C3F5284CC74B5141EC51B87E9686544148E17A84C44B5141E17A14BE7A865441D7A3702DAE4B514152B81EF57B86544148E17AF4B04B5141666666B697865441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000007E98A6FFC44B514118E0AE8B7F865441B06FAC7DC44B5141EB4E46EB7B865441B06FAC7DC44B514134E85D607A865441B0E215B9AE4B5141EB4E46EB7B865441786B3CECAF4B51411E63792C8B86544137E3434BB14B5141F2CB190097865441EF492CD6B24B514100CD75249C8654415606DE17B64B51418DBDE006A48654419C7E1309BA4B51411AAE4BE9AB86544164073A3CBB4B514151044332B0865441DBE52926BE4B51417959DE56AF865441D9C447A2C34B514122BF6ABDAB86544160C57534C64B5141522525B6AA865441FFF80043C84B51417369A106AA865441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569380 - 3346136
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000130000009A9999F9BD4B51411F85EB61AF865441713D0A57BF4B5141AE47E1BAAE86544185EB51F8C04B5141CDCCCC6CAD8654415C8FC265C24B5141295C8F62AC8654411F85EB01C44B5141EC51B83EAB865441333333B3C54B51417B14AE97AA8654413D0AD763C74B5141A4703D1AAA865441F6285C2FC94B51415C8FC205AA865441C3F528ACCA4B5141C3F5283CAA8654419A999939C94B5141AE47E1BAA1865441C3F5284CC74B5141EC51B87E9686544148E17A84C44B5141E17A14BE7A865441D7A3702DAE4B514152B81EF57B86544148E17AF4B04B5141666666B697865441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000007E98A6FFC44B514118E0AE8B7F865441B06FAC7DC44B5141EB4E46EB7B865441B06FAC7DC44B514134E85D607A865441B0E215B9AE4B5141EB4E46EB7B865441786B3CECAF4B51411E63792C8B86544137E3434BB14B5141F2CB190097865441EF492CD6B24B514100CD75249C8654415606DE17B64B51418DBDE006A48654419C7E1309BA4B51411AAE4BE9AB86544164073A3CBB4B514151044332B0865441DBE52926BE4B51417959DE56AF865441D9C447A2C34B514122BF6ABDAB86544160C57534C64B5141522525B6AA865441FFF80043C84B51417369A106AA865441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569438 - 3041008
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000180000008FC2F508CE595141D7A3705DE18454415C8FC2F5CA595141A4703D2AE4845441713D0AC7C75951410AD7A310E784544185EB51C8C9595141713D0A27EB845441AE47E10ACF59514148E17AB4E8845441E17A141ED75951410AD7A3B0E584544185EB51E8DC59514133333323E4845441CDCCCCACE1595141C3F528DCE28454419A9999A9E25951417B14AED7E68454417B14AEE7E3595141A4703D0AEE8454410AD7A3B0E45951418FC2F568F3845441CDCCCC3CE5595141C3F528FCF9845441E17A14CEE6595141CDCCCC3C0A8554411F85EB61F3595141F6285CDF08855441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000051000000AB8DAB57D55951418B7CF8862A855441050A8D89D55951414C98AABD2A855441CCCC709FD5595141ACCD14F92A855441906579D1D5595141D99B87662B855441074EE796D7595141E551703C2F855441BE7D10E4DC595141E5732ABE3A8554413D479139E559514157F29A4E2C855441478F992FED595141AEDC91AE2F8554412D11838AEE595141947B6A3D308554414E552279F6595141EF7C2A68338554415B1A7108F55951419EA6476F258554414661DCEBF459514126D1F25C2485544178FB078DF3595141CA7F8B35178554417C2CC689F3595141D3CEE22617855441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569438 - 3279578
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000180000008FC2F508CE595141D7A3705DE18454415C8FC2F5CA595141A4703D2AE4845441713D0AC7C75951410AD7A310E784544185EB51C8C9595141713D0A27EB845441AE47E10ACF59514148E17AB4E8845441E17A141ED75951410AD7A3B0E584544185EB51E8DC59514133333323E4845441CDCCCCACE1595141C3F528DCE28454419A9999A9E25951417B14AED7E68454417B14AEE7E3595141A4703D0AEE8454410AD7A3B0E45951418FC2F568F3845441CDCCCC3CE5595141C3F528FCF9845441E17A14CEE6595141CDCCCC3C0A8554411F85EB61F3595141F6285CDF08855441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000051000000AB8DAB57D55951418B7CF8862A855441050A8D89D55951414C98AABD2A855441CCCC709FD5595141ACCD14F92A855441906579D1D5595141D99B87662B855441074EE796D7595141E551703C2F855441BE7D10E4DC595141E5732ABE3A8554413D479139E559514157F29A4E2C855441478F992FED595141AEDC91AE2F8554412D11838AEE595141947B6A3D308554414E552279F6595141EF7C2A68338554415B1A7108F55951419EA6476F258554414661DCEBF459514126D1F25C2485544178FB078DF3595141CA7F8B35178554417C2CC689F3595141D3CEE22617855441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569894 - 3002146
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000C0000000AD7A350645A5141C3F5287C1F9954410AD7A370245A51413D0AD7334A99544185EB51C8255A51410AD7A3605A995441B81E852B265A51419A9999095F9954415C8FC225275A5141C3F5284C68995441A4703D3A285A514185EB51F86B99544148E17AE4295A514148E17A54709954417B14AE67315A5141EC51B8AE7E9954417B14AE177E5A51415C8FC2654B995441D7A3708D735A51411F85EB71399954413D0AD7736B5A514152B81EA52B9954410AD7A350645A5141C3F5287C1F995441
+</a>
+
+<b>
+0106000000010000000103000000010000002B00000041609D69315A51415A136CB27E99544171C9AD1C7E5A5141457130654B995441186F2A047E5A5141189C85444B99544163BF9F6F7D5A5141B6C583474A995441D2CFCDBA7C5A5141F65C87134999544195338A917B5A5141D7EE3419479954416A68CD55795A51412DB2614B43995441FEBC94DD785A51413C9E9C7E4299544111C30275785A5141A30880CC41995441A6F94FDF775A514139DB85CD409954419ABB360F755A51418789FF023C9954414B37FF6B745A51417ACAFEEC3A995441EEF3988F735A51417C42987539995441BF0FF46D6F5A51412FF4E5353C995441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569894 - 3605733
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000C0000000AD7A350645A5141C3F5287C1F9954410AD7A370245A51413D0AD7334A99544185EB51C8255A51410AD7A3605A995441B81E852B265A51419A9999095F9954415C8FC225275A5141C3F5284C68995441A4703D3A285A514185EB51F86B99544148E17AE4295A514148E17A54709954417B14AE67315A5141EC51B8AE7E9954417B14AE177E5A51415C8FC2654B995441D7A3708D735A51411F85EB71399954413D0AD7736B5A514152B81EA52B9954410AD7A350645A5141C3F5287C1F995441
+</a>
+
+<b>
+0106000000010000000103000000010000002B00000041609D69315A51415A136CB27E99544171C9AD1C7E5A5141457130654B995441186F2A047E5A5141189C85444B99544163BF9F6F7D5A5141B6C583474A995441D2CFCDBA7C5A5141F65C87134999544195338A917B5A5141D7EE3419479954416A68CD55795A51412DB2614B43995441FEBC94DD785A51413C9E9C7E4299544111C30275785A5141A30880CC41995441A6F94FDF775A514139DB85CD409954419ABB360F755A51418789FF023C9954414B37FF6B745A51417ACAFEEC3A995441EEF3988F735A51417C42987539995441BF0FF46D6F5A51412FF4E5353C995441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569952 - 1275252
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002300000033333313885D51413D0AD7E37882544114AE47818B5D51417B14AE577C825441B81E850B8D5D51413D0AD7E37D82544152B81E85915D514185EB514879825441EC51B86E945D514185EB51887682544152B81E35995D514152B81E856E82544152B81E959A5D514148E17A946C825441EC51B87E9D5D5141B81E853B6A8254410AD7A310A05D51411F85EB8168825441E17A14BE9F5D51410AD7A3206782544152B81E859F5D5141EC51B82E66825441000000609F5D5141333333636382544185EB51289F5D51417B14AE775F8254418FC2F5489E5D5141E17A14CE59825441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004300000017BC2628B65D5141618D0E3044825441322317A5B75D51419EF8039B41825441289065C8B85D5141672A23A13E8254415687D84EB95D51417308C5D53C8254413942469DB95D51416156E4003C8254416739B923BA5D514147A732FF3A825441D76F60B5BA5D51412C404282398254419FE53B52BB5D51412E69D40E37825441D568E643B25D5141C8058A0038825441408D584AAA5D514185DB0EA33982544129C91B899C5D5141A4CBF4813C825441AC57CF948E5D51419A332C1B3E825441A0298505895D5141D62173C73D8254413E51E19C7B5D51414B915FB03C825441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569952 - 3455564
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002300000033333313885D51413D0AD7E37882544114AE47818B5D51417B14AE577C825441B81E850B8D5D51413D0AD7E37D82544152B81E85915D514185EB514879825441EC51B86E945D514185EB51887682544152B81E35995D514152B81E856E82544152B81E959A5D514148E17A946C825441EC51B87E9D5D5141B81E853B6A8254410AD7A310A05D51411F85EB8168825441E17A14BE9F5D51410AD7A3206782544152B81E859F5D5141EC51B82E66825441000000609F5D5141333333636382544185EB51289F5D51417B14AE775F8254418FC2F5489E5D5141E17A14CE59825441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004300000017BC2628B65D5141618D0E3044825441322317A5B75D51419EF8039B41825441289065C8B85D5141672A23A13E8254415687D84EB95D51417308C5D53C8254413942469DB95D51416156E4003C8254416739B923BA5D514147A732FF3A825441D76F60B5BA5D51412C404282398254419FE53B52BB5D51412E69D40E37825441D568E643B25D5141C8058A0038825441408D584AAA5D514185DB0EA33982544129C91B899C5D5141A4CBF4813C825441AC57CF948E5D51419A332C1B3E825441A0298505895D5141D62173C73D8254413E51E19C7B5D51414B915FB03C825441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>570499 - 52745
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000180000008FC2F5287F5051413D0AD7E33094544114AE4791855051415C8FC285339454416666660686505141A4703DCA3394544148E17A34915051419A999909389454417B14AEF797505141D7A3705D3B945441CDCCCC6C9E50514148E17AB43D9454419A9999B9A3505141713D0AA72F9454410AD7A350AA505141EC51B8AE1E945441713D0A57AC505141A4703D5A1994544185EB51D8AD505141C3F5289C149454415C8FC275A750514114AE4791139454418FC2F538A2505141EC51B8AE1394544185EB51F89E505141666666161494544152B81E65995051417B14AE3715945441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000F8096EF39E505141FE2464171494544181A7CDFE9E505141A09480AE13945441F675F7EA9E50514158298BB612945441FA4C8AD99A5051413C84EE0D129454416F1BB4C59A50514187299B4F10945441765DA4469B50514104D790610F945441D6BAEE4A995051413BA4BABD0D9454412D8B89C09850514114C068AF0D945441B3B3FB4A985051417342DDA30D9454410E906FF1985051414187C12C159454412F8F8AF398505141B45A5131159454411FE0BD4C9B50514182BB6CD114945441CE012B9C9C505141B11DDB9014945441F8096EF39E505141FE24641714945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>570499 - 65727
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000180000008FC2F5287F5051413D0AD7E33094544114AE4791855051415C8FC285339454416666660686505141A4703DCA3394544148E17A34915051419A999909389454417B14AEF797505141D7A3705D3B945441CDCCCC6C9E50514148E17AB43D9454419A9999B9A3505141713D0AA72F9454410AD7A350AA505141EC51B8AE1E945441713D0A57AC505141A4703D5A1994544185EB51D8AD505141C3F5289C149454415C8FC275A750514114AE4791139454418FC2F538A2505141EC51B8AE1394544185EB51F89E505141666666161494544152B81E65995051417B14AE3715945441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000F8096EF39E505141FE2464171494544181A7CDFE9E505141A09480AE13945441F675F7EA9E50514158298BB612945441FA4C8AD99A5051413C84EE0D129454416F1BB4C59A50514187299B4F10945441765DA4469B50514104D790610F945441D6BAEE4A995051413BA4BABD0D9454412D8B89C09850514114C068AF0D945441B3B3FB4A985051417342DDA30D9454410E906FF1985051414187C12C159454412F8F8AF398505141B45A5131159454411FE0BD4C9B50514182BB6CD114945441CE012B9C9C505141B11DDB9014945441F8096EF39E505141FE24641714945441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>570631 - 2951732
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000F6285C7F45445141A4703DAA7A985441295C8F2249445141EC51B8BE799854413333339354445141F6285C2F7798544152B81EB5544451410000005073985441C3F5287C524451418FC2F5186A9854417B14AEE74F44514114AE4731609854416666669640445141CDCCCC7C63985441F6285C7F45445141A4703DAA7A985441
+</a>
+
+<b>
+0106000000010000000103000000010000004600000048C6A1ACE74351415C4C7CFC7C985441D673ECFBE5435141E86CE4FD7D98544137C160E2E543514116B8160D7E985441E691F1F3DA43514166C2375685985441B9E87310DA43514129884EF08598544147B013D2DF43514168AF90C68E985441C0B67FE8E943514177FA5A3F9E985441C8BA4D63EA4351415FC237F69E985441020D5462EC435141555B65759F985441C369C59CEF435141F0501FBF9D985441D056B78AF44351411D75021F9B98544139456DB1F9435141F0976D6098985441D5152470FC4351410B1AC8F596985441834FADB90244514144D811BF93985441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>570631 - 3603347
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000F6285C7F45445141A4703DAA7A985441295C8F2249445141EC51B8BE799854413333339354445141F6285C2F7798544152B81EB5544451410000005073985441C3F5287C524451418FC2F5186A9854417B14AEE74F44514114AE4731609854416666669640445141CDCCCC7C63985441F6285C7F45445141A4703DAA7A985441
+</a>
+
+<b>
+0106000000010000000103000000010000004600000048C6A1ACE74351415C4C7CFC7C985441D673ECFBE5435141E86CE4FD7D98544137C160E2E543514116B8160D7E985441E691F1F3DA43514166C2375685985441B9E87310DA43514129884EF08598544147B013D2DF43514168AF90C68E985441C0B67FE8E943514177FA5A3F9E985441C8BA4D63EA4351415FC237F69E985441020D5462EC435141555B65759F985441C369C59CEF435141F0501FBF9D985441D056B78AF44351411D75021F9B98544139456DB1F9435141F0976D6098985441D5152470FC4351410B1AC8F596985441834FADB90244514144D811BF93985441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571410 - 3025436
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001100000052B81EA5536051415C8FC2254E8E5441A4703D8A4260514114AE4701518E544148E17A243B60514185EB51082F8E54410AD7A300366051419A999959318E5441295C8FF22D60514152B81E75328E5441295C8F721E6051415C8FC2D5328E5441E17A14AE0E6051417B14AE07338E5441C3F528AC0F6051417B14AEF7448E5441295C8FC20F605141D7A3704D648E54411F85EBC1106051415C8FC255648E5441B81E85FB1E605141000000D0648E54419A999959386051419A9999A9658E5441713D0AF750605141C3F5287C668E54418FC2F5F85160514152B81E85668E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000C74BF49B3E60514145C0FBF33E8E544192FDD8A73F605141FC65BFB0438E5441CD54DFD04B6051417B42D1DF428E54416815857A50605141F2F071E7438E5441AFDF3CEE4F605141F9889497428E54412F0942794E6051413E93A0CF3E8E5441B48BAFEB4C6051416F7374D4398E544176BD7CFE4B60514121F952C5368E5441D433D4E04B6051416AFEB54F358E54416E0D326A4B6051412C7B759B308E54415E571FC44A6051411CFC92922D8E5441ED469F034A605141603388072A8E54417BD2B65B486051410E8CAA292A8E5441CB494BD4476051411AD147AA288E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>571410 - 3817932
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001100000052B81EA5536051415C8FC2254E8E5441A4703D8A4260514114AE4701518E544148E17A243B60514185EB51082F8E54410AD7A300366051419A999959318E5441295C8FF22D60514152B81E75328E5441295C8F721E6051415C8FC2D5328E5441E17A14AE0E6051417B14AE07338E5441C3F528AC0F6051417B14AEF7448E5441295C8FC20F605141D7A3704D648E54411F85EBC1106051415C8FC255648E5441B81E85FB1E605141000000D0648E54419A999959386051419A9999A9658E5441713D0AF750605141C3F5287C668E54418FC2F5F85160514152B81E85668E5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000C74BF49B3E60514145C0FBF33E8E544192FDD8A73F605141FC65BFB0438E5441CD54DFD04B6051417B42D1DF428E54416815857A50605141F2F071E7438E5441AFDF3CEE4F605141F9889497428E54412F0942794E6051413E93A0CF3E8E5441B48BAFEB4C6051416F7374D4398E544176BD7CFE4B60514121F952C5368E5441D433D4E04B6051416AFEB54F358E54416E0D326A4B6051412C7B759B308E54415E571FC44A6051411CFC92922D8E5441ED469F034A605141603388072A8E54417BD2B65B486051410E8CAA292A8E5441CB494BD4476051411AD147AA288E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960495 - 1265963
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000042000000DD898464F2585141B656351A5ABB54411FFF4804F4585141EB75F4635BBB54418988F5D0F558514184FE91085DBB544187244FD1F65851416007A1F25DBB5441D3896F2EFA585141A86E532C60BB54413ECA7A3DFB585141E14F98D060BB5441705E3751FC585141D944B57761BB5441D9D98774FE5851414D01A21E63BB5441BDBA0294FF5851415AC6C6FC63BB5441355A94CBFF585141B0CD3C4264BB54412EE9A9FA0059514167C017BD65BB544173615A5B01595141BE56F43566BB54410498182A025951413AD1D9AD67BB54419A0FC0FC02595141EDC1DB2C69BB5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000F2E26BE003595141915309D274BB5441F2E26BE003595141AB28D85371BB544146F9956E03595141A725B5496CBB54419A0FC0FC02595141E8C1DB2C69BB544175615A5B01595141BF56F43566BB5441BBBA0294FF58514158C6C6FC63BB5441715E3751FC585141DB44B57761BB5441F753066DF7585141A8D9CD805EBB544122FF4804F4585141E975F4635BBB5441EBD6DFB7EF585141142137FB57BB5441A4703DDAEC5851410AD7A3905DBB54418FC2F568F258514148E17AD45FBB5441EC51B84EF55851413D0AD70364BB54415A27B250F858514105F63D2368BB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960495 - 4019863
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000042000000DD898464F2585141B656351A5ABB54411FFF4804F4585141EB75F4635BBB54418988F5D0F558514184FE91085DBB544187244FD1F65851416007A1F25DBB5441D3896F2EFA585141A86E532C60BB54413ECA7A3DFB585141E14F98D060BB5441705E3751FC585141D944B57761BB5441D9D98774FE5851414D01A21E63BB5441BDBA0294FF5851415AC6C6FC63BB5441355A94CBFF585141B0CD3C4264BB54412EE9A9FA0059514167C017BD65BB544173615A5B01595141BE56F43566BB54410498182A025951413AD1D9AD67BB54419A0FC0FC02595141EDC1DB2C69BB5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000F2E26BE003595141915309D274BB5441F2E26BE003595141AB28D85371BB544146F9956E03595141A725B5496CBB54419A0FC0FC02595141E8C1DB2C69BB544175615A5B01595141BF56F43566BB5441BBBA0294FF58514158C6C6FC63BB5441715E3751FC585141DB44B57761BB5441F753066DF7585141A8D9CD805EBB544122FF4804F4585141E975F4635BBB5441EBD6DFB7EF585141142137FB57BB5441A4703DDAEC5851410AD7A3905DBB54418FC2F568F258514148E17AD45FBB5441EC51B84EF55851413D0AD70364BB54415A27B250F858514105F63D2368BB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>572043 - 222901
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F82564D514100000070129B54415C8FC2055E4D514166666646219B54413D0AD753654D5141C3F5283C2E9B5441666666F66A4D51411F85EBD1369B5441EC51B80E714D5141D7A3705D3F9B5441CDCCCC8C714D5141EC51B85E409B54415C8FC2758E4D51410AD7A310249B544185EB51888D4D51411F85EBE1239B5441713D0AE7864D5141F6285C3F239B54418FC2F548804D5141666666A6219B5441713D0A577C4D51418FC2F548209B5441C3F5287C764D5141A4703D1A1D9B54411F85EBF1704D5141AE47E12A1B9B544100000060704D5141AE47E1CA1A9B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000AB46AB97564D5141F9B3AB6E129B544149425E62584D51418322A423169B5441C3CCFCA5784D51415AFD7662239B5441A0A6B7BF834D5141A26ACC8B2E9B5441B410AE958A4D51418C349ABB279B5441E753BB328C4D5141F9088D47269B54413895DA738E4D5141EE9A8112249B54416BFB73588C4D5141040DD1C4239B5441713D0AE7864D5141F6285C3F239B54418FC2F548804D5141666666A6219B5441713D0A577C4D51418FC2F548209B5441D88C938B764D5141799E9E221D9B54412636E8AA754D51414B0E27D11C9B54411F85EBF1704D5141AE47E12A1B9B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>572043 - 395123
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000013000000295C8F82564D514100000070129B54415C8FC2055E4D514166666646219B54413D0AD753654D5141C3F5283C2E9B5441666666F66A4D51411F85EBD1369B5441EC51B80E714D5141D7A3705D3F9B5441CDCCCC8C714D5141EC51B85E409B54415C8FC2758E4D51410AD7A310249B544185EB51888D4D51411F85EBE1239B5441713D0AE7864D5141F6285C3F239B54418FC2F548804D5141666666A6219B5441713D0A577C4D51418FC2F548209B5441C3F5287C764D5141A4703D1A1D9B54411F85EBF1704D5141AE47E12A1B9B544100000060704D5141AE47E1CA1A9B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000AB46AB97564D5141F9B3AB6E129B544149425E62584D51418322A423169B5441C3CCFCA5784D51415AFD7662239B5441A0A6B7BF834D5141A26ACC8B2E9B5441B410AE958A4D51418C349ABB279B5441E753BB328C4D5141F9088D47269B54413895DA738E4D5141EE9A8112249B54416BFB73588C4D5141040DD1C4239B5441713D0AE7864D5141F6285C3F239B54418FC2F548804D5141666666A6219B5441713D0A577C4D51418FC2F548209B5441D88C938B764D5141799E9E221D9B54412636E8AA754D51414B0E27D11C9B54411F85EBF1704D5141AE47E12A1B9B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>572056 - 3143182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002A0000007B14AE37464D5141CDCCCC2CD986544114AE4741324D51417B14AE27D686544114AE47D1314D51415C8FC245D4865441C3F5289C2D4D51415C8FC225D5865441C3F5283C274D51419A999909D686544185EB51D8164D5141A4703DBAD7865441D7A370FD044D5141666666D6D986544166666626024D514185EB51F8D98654410AD7A3B0FD4C5141B81E85BBD986544152B81E55F74C51411F85EB01D88654415C8FC2C5F24C5141E17A140ED9865441EC51B86EE74C5141713D0AF7DB865441713D0AE7E34C51415C8FC295EF865441D7A3709DFA4C514114AE4741EE865441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000440000000167670EC24C51410870EC9FBE86544185EB5128C24C51411F85EB51BE865441666666F6C24C5141AE47E12ABD8654410A28DD55C34C51419D92C3F0BC86544148E17A54C44C51415C8FC255BC8654416EBC8291C44C51413196CC3FBC865441D7A370EDC44C5141EC51B81EBC8654418D3CB876C54C5141EC51B81EBC86544148E17AB4C54C5141EC51B81EBC8654410A8E126AC64C51410AF85E5EBC8654413882E1B4C64C5141099D98E2BA865441F6285C0FC54C514148E17A14B98654417F6F8400C44C514182C4ED13BA8654413044F1AFC14C514198012D5ABB865441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>572056 - 3517863
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002A0000007B14AE37464D5141CDCCCC2CD986544114AE4741324D51417B14AE27D686544114AE47D1314D51415C8FC245D4865441C3F5289C2D4D51415C8FC225D5865441C3F5283C274D51419A999909D686544185EB51D8164D5141A4703DBAD7865441D7A370FD044D5141666666D6D986544166666626024D514185EB51F8D98654410AD7A3B0FD4C5141B81E85BBD986544152B81E55F74C51411F85EB01D88654415C8FC2C5F24C5141E17A140ED9865441EC51B86EE74C5141713D0AF7DB865441713D0AE7E34C51415C8FC295EF865441D7A3709DFA4C514114AE4741EE865441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000440000000167670EC24C51410870EC9FBE86544185EB5128C24C51411F85EB51BE865441666666F6C24C5141AE47E12ABD8654410A28DD55C34C51419D92C3F0BC86544148E17A54C44C51415C8FC255BC8654416EBC8291C44C51413196CC3FBC865441D7A370EDC44C5141EC51B81EBC8654418D3CB876C54C5141EC51B81EBC86544148E17AB4C54C5141EC51B81EBC8654410A8E126AC64C51410AF85E5EBC8654413882E1B4C64C5141099D98E2BA865441F6285C0FC54C514148E17A14B98654417F6F8400C44C514182C4ED13BA8654413044F1AFC14C514198012D5ABB865441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574270 - 239787
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000009F000000666666E656B950413D0AD7A3A33F54410AD7A3E051B95041E17A148EA23F5441A4703D9A46B95041295C8FF29E3F5441713D0AE73FB95041C3F5284C9C3F544114AE47B13EB95041C3F528DC9B3F5441EC51B81E3DB95041713D0A47A13F5441295C8FE23EB95041B81E855BA33F54413D0AD7533FB950410AD7A350AC3F5441F6285C9F36B950418FC2F5F8A83F5441A4703D8A2DB95041713D0A37A13F544185EB51C82CB95041E17A143EA43F5441333333C323B9504185EB51E8A13F5441AE47E13A20B95041295C8F829F3F5441D7A3708D1AB950413D0AD7E39F3F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000D7A370FD5EB950417B14AEF7DA3F5441D0AF35AC60B95041DD5AC9DBDA3F5441D9FF4AA761B95041289833CADA3F544158B7113667B9504107FE436FDA3F54414414D3E667B9504170A4BF8FDA3F5441A1C9BF316BB95041C504B528DB3F54412F6AF1D96BB95041C74FE646DB3F54412947390C6CB95041FCF1EC4FDB3F5441BFBED0386CB950410024EE57DB3F5441A91F6BDA6CB95041BA375A5FD93F5441E146E7076EB950410A26C4B5D53F544192D0488A6EB950417166D01ED43F544152B81E556EB95041E17A14EED33F5441A0E2725F6EB9504159CEB8CDD33F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574270 - 239793
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000009F000000666666E656B950413D0AD7A3A33F54410AD7A3E051B95041E17A148EA23F5441A4703D9A46B95041295C8FF29E3F5441713D0AE73FB95041C3F5284C9C3F544114AE47B13EB95041C3F528DC9B3F5441EC51B81E3DB95041713D0A47A13F5441295C8FE23EB95041B81E855BA33F54413D0AD7533FB950410AD7A350AC3F5441F6285C9F36B950418FC2F5F8A83F5441A4703D8A2DB95041713D0A37A13F544185EB51C82CB95041E17A143EA43F5441333333C323B9504185EB51E8A13F5441AE47E13A20B95041295C8F829F3F5441D7A3708D1AB950413D0AD7E39F3F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000024000000422F94B820B95041FB8D1D97DD3F5441CDCCCCCC20B9504114AE4781DD3F5441CE5BEB8322B9504188EDB4A6DB3F5441E85A781A23B950416231C501DB3F54410ABDD68723B950418140CD8DDA3F54414994EF5926B950415C546781D73F5441259077612AB95041BA256225D33F54410103D8122BB95041B2E1E366D23F5441B63853132BB950415EB95E66D23F544168077D072DB950414300D349D03F54413EEAAD1F2DB95041890E9E2FD03F544191ECF6F22DB95041623C374ACF3F544143B74BC22DB950412D231425CF3F5441CDF20C802DB950411304B6EECE3F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574270 - 342076
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000009F000000666666E656B950413D0AD7A3A33F54410AD7A3E051B95041E17A148EA23F5441A4703D9A46B95041295C8FF29E3F5441713D0AE73FB95041C3F5284C9C3F544114AE47B13EB95041C3F528DC9B3F5441EC51B81E3DB95041713D0A47A13F5441295C8FE23EB95041B81E855BA33F54413D0AD7533FB950410AD7A350AC3F5441F6285C9F36B950418FC2F5F8A83F5441A4703D8A2DB95041713D0A37A13F544185EB51C82CB95041E17A143EA43F5441333333C323B9504185EB51E8A13F5441AE47E13A20B95041295C8F829F3F5441D7A3708D1AB950413D0AD7E39F3F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000230000003D2F94B820B95041008E1D97DD3F5441CDCCCCCC20B9504114AE4781DD3F5441D15BEB8322B9504184EDB4A6DB3F544181063A3723B95041D73340E1DA3F544109417FAF23B9504132380C5FDA3F5441259077612AB95041BA256225D33F54410403D8122BB95041B2E1E366D23F54416B9846F02CB950417C42E962D03F544168077D072DB950414300D349D03F54413EEAAD1F2DB95041890E9E2FD03F544191ECF6F22DB95041623C374ACF3F544143B74BC22DB950412D231425CF3F5441CDF20C802DB950411304B6EECE3F54418DC0F1422BB95041A4B3E558CD3F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574382 - 245065
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000030000005B000000B81E850B6ABC5041F6285C5F6C2654418FC2F54866BC504114AE47516C26544185EB51E861BC504114AE47C16B26544185EB51285FBC504185EB51686A2654411F85EB115CBC5041713D0A276726544114AE470159BC50415C8FC2E55F2654410AD7A3404EBC5041713D0AE75B265441333333A34DBC5041A4703DAA5B2654411F85EB2143BC5041D7A370ED562654418FC2F54842BC5041EC51B85E532654410000004041BC50413D0AD7034F265441F6285C8F38BC5041713D0AC74F265441A4703DCA36BC50415C8FC245502654415C8FC27537BC5041B81E85EB55265441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000295C8F329ABC50417B14AE777D26544187DA5FAD9EBC504142EEB0EA7B265441520548629FBC5041B3175DA97B2654412288B3C5A2BC5041EED8407E7A265441E9E543F4A2BC5041A0BBB36F7A265441CC46D12DACBC50410182673E77265441BE6A0058ADBC50410C1035D7762654414B35B792AEBC50414D8A8B2B76265441634F121BAEBC504137463CF373265441C1B77E3CACBC5041B77F2511742654411F20EB5DAABC5041ABF2F74C742654412069C9E9A7BC50419F65CA8874265441A178BE57A5BC504193D89CC47426544196346F1FA3BC504193D89CC474265441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574382 - 352255
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000030000005B000000B81E850B6ABC5041F6285C5F6C2654418FC2F54866BC504114AE47516C26544185EB51E861BC504114AE47C16B26544185EB51285FBC504185EB51686A2654411F85EB115CBC5041713D0A276726544114AE470159BC50415C8FC2E55F2654410AD7A3404EBC5041713D0AE75B265441333333A34DBC5041A4703DAA5B2654411F85EB2143BC5041D7A370ED562654418FC2F54842BC5041EC51B85E532654410000004041BC50413D0AD7034F265441F6285C8F38BC5041713D0AC74F265441A4703DCA36BC50415C8FC245502654415C8FC27537BC5041B81E85EB55265441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000295C8F329ABC50417B14AE777D26544187DA5FAD9EBC504142EEB0EA7B265441520548629FBC5041B3175DA97B2654412288B3C5A2BC5041EED8407E7A265441E9E543F4A2BC5041A0BBB36F7A265441CC46D12DACBC50410182673E77265441BE6A0058ADBC50410C1035D7762654414B35B792AEBC50414D8A8B2B76265441634F121BAEBC504137463CF373265441C1B77E3CACBC5041B77F2511742654411F20EB5DAABC5041ABF2F74C742654412069C9E9A7BC50419F65CA8874265441A178BE57A5BC504193D89CC47426544196346F1FA3BC504193D89CC474265441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574660 - 24548
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000081000000E17A14EECDB75041B81E854B223754417B14AEF7CCB750410AD7A3D0203754419A999989CBB75041333333E31F375441CDCCCC7CCCB75041EC51B8BE1337544152B81EB5CBB750413D0AD7530F37544152B81E45C9B75041F6285C4FFE365441CDCCCC1CC0B75041B81E85BB03375441A4703DFAB7B75041713D0AB705375441E17A148EB2B750417B14AE77FE365441295C8F12AFB7504114AE47F1FE365441AE47E12AAAB750415C8FC2D5FD3654418FC2F598A3B750410000009004375441EC51B83E9FB75041B81E853B093754418FC2F53896B750416666667611375441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001200000041A2EB32EBB75041C68413BF443754419EE746E2EAB75041AF74219543375441A6802384E8B750417F66C0B83B3754413510EB2BE8B7504185E0AE9F3A375441B54C6A0FE7B750419C146925373754415C2047B5E6B750418287806137375441360EF5E2E5B750418287806137375441DB5EBCE1E7B7504158ECED993D375441742A1AD2E8B7504149DE4396433754414E18C8FFE7B750419502E83A4537544154A36B2BE8B750419D6617754537544148E17A34E8B75041A4703D7A453754419A999989E9B75041295C8F424737544108DA8BADE9B75041E104ED7747375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574660 - 68296
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000081000000E17A14EECDB75041B81E854B223754417B14AEF7CCB750410AD7A3D0203754419A999989CBB75041333333E31F375441CDCCCC7CCCB75041EC51B8BE1337544152B81EB5CBB750413D0AD7530F37544152B81E45C9B75041F6285C4FFE365441CDCCCC1CC0B75041B81E85BB03375441A4703DFAB7B75041713D0AB705375441E17A148EB2B750417B14AE77FE365441295C8F12AFB7504114AE47F1FE365441AE47E12AAAB750415C8FC2D5FD3654418FC2F598A3B750410000009004375441EC51B83E9FB75041B81E853B093754418FC2F53896B750416666667611375441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001200000041A2EB32EBB75041C68413BF443754419EE746E2EAB75041AF74219543375441A6802384E8B750417F66C0B83B3754413510EB2BE8B7504185E0AE9F3A375441B54C6A0FE7B750419C146925373754415C2047B5E6B750418287806137375441360EF5E2E5B750418287806137375441DB5EBCE1E7B7504158ECED993D375441742A1AD2E8B7504149DE4396433754414E18C8FFE7B750419502E83A4537544154A36B2BE8B750419D6617754537544148E17A34E8B75041A4703D7A453754419A999989E9B75041295C8F424737544108DA8BADE9B75041E104ED7747375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574797 - 3168369
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001500000000000070F4B8504185EB5188713B5441CDCCCC1CF1B850410AD7A3B0723B5441295C8F92EFB850410AD7A360733B5441C3F5283CEDB8504114AE4791743B5441AE47E18AF8B850417B14AE777F3B54410AD7A30004B950419A999939893B54415C8FC2B50DB95041EC51B8BE913B5441EC51B87E1BB9504185EB51089E3B54410000003023B95041000000D0A33B5441AE47E15A25B95041F6285C5F9F3B5441EC51B85E27B950417B14AE479A3B5441E17A142E1EB95041713D0A97913B54417B14AE071BB950410AD7A3708E3B544148E17AE411B95041AE47E13A863B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000F0A9AEAE1BB950410CA35B2C9E3B5441EC51B87E1BB9504185EB51089E3B54417D909A5D1BB95041F21FCDEA9D3B5441A8794C261BB95041BB7C15BE9D3B54412CF7FE5316B950418C70496D993B54418E80FD0D0CB950416808CA4A903B54418F05719705B95041A063A39E8A3B5441C8C5D49B02B95041527ACC09883B5441B75A997E01B95041F3D6F016873B5441458A37AE00B95041A63837D6883B54418C64E57802B9504182BFADA2893B5441A4703DBA00B950411F85EBA18D3B544185EB512801B95041C3F528DC8D3B5441716F7562FFB85041DD2A5D3F913B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>574797 - 3560307
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001500000000000070F4B8504185EB5188713B5441CDCCCC1CF1B850410AD7A3B0723B5441295C8F92EFB850410AD7A360733B5441C3F5283CEDB8504114AE4791743B5441AE47E18AF8B850417B14AE777F3B54410AD7A30004B950419A999939893B54415C8FC2B50DB95041EC51B8BE913B5441EC51B87E1BB9504185EB51089E3B54410000003023B95041000000D0A33B5441AE47E15A25B95041F6285C5F9F3B5441EC51B85E27B950417B14AE479A3B5441E17A142E1EB95041713D0A97913B54417B14AE071BB950410AD7A3708E3B544148E17AE411B95041AE47E13A863B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000F0A9AEAE1BB950410CA35B2C9E3B5441EC51B87E1BB9504185EB51089E3B54417D909A5D1BB95041F21FCDEA9D3B5441A8794C261BB95041BB7C15BE9D3B54412CF7FE5316B950418C70496D993B54418E80FD0D0CB950416808CA4A903B54418F05719705B95041A063A39E8A3B5441C8C5D49B02B95041527ACC09883B5441B75A997E01B95041F3D6F016873B5441458A37AE00B95041A63837D6883B54418C64E57802B9504182BFADA2893B5441A4703DBA00B950411F85EBA18D3B544185EB512801B95041C3F528DC8D3B5441716F7562FFB85041DD2A5D3F913B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>629719 - 2951025
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D000000CDCCCC4C05FE50418FC2F5F82D1555417B14AEA703FE50411F85EB3126155541295C8F12FFFD5041E17A14EE2A1555419A9999A9F8FD5041A4703DDA30155541295C8F52F6FD5041F6285C5F2E155541F6285C6FF3FD50415C8FC20531155541F6285C0FF1FD5041713D0AB73315554148E17AF4EEFD50417B14AE9735155541E17A142EECFD504185EB51C837155541A4703DFAE9FD5041E17A14FE38155541EC51B86EE8FD50413333339339155541AE47E12AE7FD50415C8FC2A539155541CDCCCC0CE6FD5041A4703D2A401555410AD7A3C0E6FD5041713D0AB746155541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000FB0A4AE10DFE5041440E4A9C51155541345D39600EFE5041FE67605353155541D431B2C80EFE5041921F97D45315554127C919610FFE5041FEA9C332541555410454DB0410FE5041EB00DA5F54155541C278449D10FE5041CD386758541555413BB8D24212FE504170C4CAB253155541F7D7991513FE504172FB583A53155541F5A00B8E13FE50411587BC9452155541D567FD7E13FE50415967F5C1511555416584848613FE50414C9DC3055115554194BE52D913FE5041DEF0D894501555413FA6CBE014FE5041FF60752B501555417BAACBEF15FE50411099C3F64F155541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>629719 - 3535395
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D000000CDCCCC4C05FE50418FC2F5F82D1555417B14AEA703FE50411F85EB3126155541295C8F12FFFD5041E17A14EE2A1555419A9999A9F8FD5041A4703DDA30155541295C8F52F6FD5041F6285C5F2E155541F6285C6FF3FD50415C8FC20531155541F6285C0FF1FD5041713D0AB73315554148E17AF4EEFD50417B14AE9735155541E17A142EECFD504185EB51C837155541A4703DFAE9FD5041E17A14FE38155541EC51B86EE8FD50413333339339155541AE47E12AE7FD50415C8FC2A539155541CDCCCC0CE6FD5041A4703D2A401555410AD7A3C0E6FD5041713D0AB746155541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000FB0A4AE10DFE5041440E4A9C51155541345D39600EFE5041FE67605353155541D431B2C80EFE5041921F97D45315554127C919610FFE5041FEA9C332541555410454DB0410FE5041EB00DA5F54155541C278449D10FE5041CD386758541555413BB8D24212FE504170C4CAB253155541F7D7991513FE504172FB583A53155541F5A00B8E13FE50411587BC9452155541D567FD7E13FE50415967F5C1511555416584848613FE50414C9DC3055115554194BE52D913FE5041DEF0D894501555413FA6CBE014FE5041FF60752B501555417BAACBEF15FE50411099C3F64F155541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>581644 - 1096466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000E000000CDCCCCECCD0151410AD7A360674754419A9999E9CC01514185EB51386A475441C3F5280CCF0151419A9999096D47544114AE4741D10151413D0AD7E36E475441666666C6DA01514114AE479157475441F6285CAFDB01514148E17A2455475441C3F528ECDE0151415C8FC2554C47544185EB5138E20151418FC2F52844475441713D0AD7E001514148E17AD441475441D7A3705DDE0151417B14AE274047544114AE47F1DC0151411F85EB313F475441EC51B88ED701514148E17A644D4754415C8FC295D2015141F6285C6F5B475441CDCCCCECCD0151410AD7A36067475441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000DF43B5CFD1015141DC74136D4E47544151079FEFD0015141AEC5E11351475441A4703DDACC015141295C8F725D4754414B5A560FCA0151413D1785F364475441C8120786CD01514121F6298168475441CDCCCCECCD0151410AD7A360674754415C8FC295D2015141F6285C6F5B475441EC51B88ED701514148E17A644D475441D021D7E0DA0151419F5D25A34447544144E1DFDCD5015141B83E82524B475441DF43B5CFD1015141DC74136D4E475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>581644 - 3481827
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000000E000000CDCCCCECCD0151410AD7A360674754419A9999E9CC01514185EB51386A475441C3F5280CCF0151419A9999096D47544114AE4741D10151413D0AD7E36E475441666666C6DA01514114AE479157475441F6285CAFDB01514148E17A2455475441C3F528ECDE0151415C8FC2554C47544185EB5138E20151418FC2F52844475441713D0AD7E001514148E17AD441475441D7A3705DDE0151417B14AE274047544114AE47F1DC0151411F85EB313F475441EC51B88ED701514148E17A644D4754415C8FC295D2015141F6285C6F5B475441CDCCCCECCD0151410AD7A36067475441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000DF43B5CFD1015141DC74136D4E47544151079FEFD0015141AEC5E11351475441A4703DDACC015141295C8F725D4754414B5A560FCA0151413D1785F364475441C8120786CD01514121F6298168475441CDCCCCECCD0151410AD7A360674754415C8FC295D2015141F6285C6F5B475441EC51B88ED701514148E17A644D475441D021D7E0DA0151419F5D25A34447544144E1DFDCD5015141B83E82524B475441DF43B5CFD1015141DC74136D4E475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>629824 - 224464
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001E000000666666C6C8FC504152B81EC5FC1B5541AE47E1AAB1FC5041F6285C7F141C55410AD7A3E0A2FC5041E17A148E1F1C5541666666E6A7FC5041295C8F921F1C5541295C8F12ABFC5041A4703DBA201C5541295C8FF2ACFC50417B14AEC7241C5541EC51B85EADFC5041A4703D3A2F1C5541333333F3AEFC5041D7A3700D341C55411F85EB51B1FC50411F85EBF1371C55419A999969B1FC5041E17A149E391C554148E17A44B1FC50411F85EB613E1C55415C8FC205B4FC5041295C8F82441C5541D7A3704DB5FC5041AE47E15A481C5541A4703DDAB7FC5041C3F528BC4A1C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003900000033333363CDFC5041666666C6FB1B5541B747E1DACCFC50417FE17A94F81B5541E5C2F578C9FC504181A3700DFC1B55419C6666C6C8FC504127B81EC5FC1B5541345783F3C6FC504163B788A4FE1B5541AE47E1AAB1FC5041F6285C7F141C55410AD7A3E0A2FC5041E17A148E1F1C5541666666E6A7FC5041295C8F921F1C5541295C8F12ABFC5041A4703DBA201C5541295C8FF2ACFC50417B14AEC7241C5541199C9A48ADFC5041B1BD5B172D1C55418E6BEA5FADFC5041E23516982E1C554141068A58ADFC504108BC66A12E1C5541EC51B85EADFC5041A4703D3A2F1C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>629824 - 375900
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001E000000666666C6C8FC504152B81EC5FC1B5541AE47E1AAB1FC5041F6285C7F141C55410AD7A3E0A2FC5041E17A148E1F1C5541666666E6A7FC5041295C8F921F1C5541295C8F12ABFC5041A4703DBA201C5541295C8FF2ACFC50417B14AEC7241C5541EC51B85EADFC5041A4703D3A2F1C5541333333F3AEFC5041D7A3700D341C55411F85EB51B1FC50411F85EBF1371C55419A999969B1FC5041E17A149E391C554148E17A44B1FC50411F85EB613E1C55415C8FC205B4FC5041295C8F82441C5541D7A3704DB5FC5041AE47E15A481C5541A4703DDAB7FC5041C3F528BC4A1C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003900000033333363CDFC5041666666C6FB1B5541B747E1DACCFC50417FE17A94F81B5541E5C2F578C9FC504181A3700DFC1B55419C6666C6C8FC504127B81EC5FC1B5541345783F3C6FC504163B788A4FE1B5541AE47E1AAB1FC5041F6285C7F141C55410AD7A3E0A2FC5041E17A148E1F1C5541666666E6A7FC5041295C8F921F1C5541295C8F12ABFC5041A4703DBA201C5541295C8FF2ACFC50417B14AEC7241C5541199C9A48ADFC5041B1BD5B172D1C55418E6BEA5FADFC5041E23516982E1C554141068A58ADFC504108BC66A12E1C5541EC51B85EADFC5041A4703D3A2F1C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>576045 - 3859241
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000030000000103000000010000000B000000713D0A67F82951411F85EB313F77544148E17A74F529514148E17A643E775441EC51B81EF4295141A4703D5A42775441F6285C5F002A5141666666C647775441AE47E18A032A51419A9999C94877544166666656152A51417B14AE174D7754413D0AD7131C2A514185EB51F84D775441EC51B8BE1C2A51410AD7A31049775441D7A3700D0B2A5141CDCCCC0C457754411F85EBD1002A5141A4703DCA41775441713D0A67F82951411F85EB313F77544101030000000100000037000000C3F5287CD1295141295C8F623A775441E17A149ED4295141F6285C8F3A7754418FC2F5 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000004300000048E17A74F529514148E17A643E775441EC51B81EF4295141A4703D5A42775441F6285C5F002A5141666666C647775441AE47E18A032A51419A9999C94877544166666656152A51417B14AE174D7754413D0AD7131C2A514185EB51F84D77544130F34CC41C2A5141B0B7F5BB48775441E6B604120B2A51413F167ADA44775441808E46CB002A51411D21BEB741775441F27F1791F82951413FBEA4CC3E7754417B97994DF72951416C387D343E775441B4752EADF5295141BBD611C63D775441D833654FF3295141FFBDD4093D775441B81E856BEC295141295C8F123B775441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>576566 - 3068718
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000170000003D0AD7B32B3C51410AD7A310AB6B5441295C8F32283C51410AD7A380AC6B54411F85EB71263C5141AE47E12AAD6B5441EC51B8CE263C5141A4703D2AAE6B5441E17A145E273C51417B14AE17B06B544114AE4761283C514185EB5108B06B5441295C8FC2293C5141A4703DBAAF6B54411F85EBD1293C51415C8FC2E5AE6B5441A4703D2A2A3C51418FC2F568AE6B544114AE47B12A3C514100000020AE6B5441713D0A672B3C514166666606AE6B5441E17A14FE2B3C5141AE47E12AAE6B5441B81E855B2C3C5141D7A3708DAE6B5441EC51B8AE2C3C5141AE47E1EAAE6B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000B81E85ABDF3B5141F6285CAFC56B5441C3F528ACDC3B51411F85EBA1C76B5441333333B3D93B51415C8FC285CA6B544185EB51B8D63B5141E17A141ECD6B54416C21BC86CD3B514177ED356DD66B5441516D7EB2D13B51413A8CF664D46B5441F1C0C042DA3B51418FF02CACCC6B54417F2264BDDD3B5141B47783B4C96B54417D2E05B9DD3B51414A8C06ACC96B5441CF710294E93B5141730B0F60BF6B544103F52343E93B5141FE28AFDDBD6B5441549ED54AE93B5141E8E36DD6BD6B5441E95F096EE53B514113ED2E90AE6B5441B81E85ABDF3B5141F6285CAFC56B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>576566 - 3316765
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000170000003D0AD7B32B3C51410AD7A310AB6B5441295C8F32283C51410AD7A380AC6B54411F85EB71263C5141AE47E12AAD6B5441EC51B8CE263C5141A4703D2AAE6B5441E17A145E273C51417B14AE17B06B544114AE4761283C514185EB5108B06B5441295C8FC2293C5141A4703DBAAF6B54411F85EBD1293C51415C8FC2E5AE6B5441A4703D2A2A3C51418FC2F568AE6B544114AE47B12A3C514100000020AE6B5441713D0A672B3C514166666606AE6B5441E17A14FE2B3C5141AE47E12AAE6B5441B81E855B2C3C5141D7A3708DAE6B5441EC51B8AE2C3C5141AE47E1EAAE6B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000B81E85ABDF3B5141F6285CAFC56B5441C3F528ACDC3B51411F85EBA1C76B5441333333B3D93B51415C8FC285CA6B544185EB51B8D63B5141E17A141ECD6B54416C21BC86CD3B514177ED356DD66B5441516D7EB2D13B51413A8CF664D46B5441F1C0C042DA3B51418FF02CACCC6B54417F2264BDDD3B5141B47783B4C96B54417D2E05B9DD3B51414A8C06ACC96B5441CF710294E93B5141730B0F60BF6B544103F52343E93B5141FE28AFDDBD6B5441549ED54AE93B5141E8E36DD6BD6B5441E95F096EE53B514113ED2E90AE6B5441B81E85ABDF3B5141F6285CAFC56B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>577113 - 3085621
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F0000009A9999B92C2B5141C3F528BC0A6B544148E17AA41E2B51411F85EBE10E6B54413D0AD7D31F2B514185EB5168196B544148E17A34212B5141B81E852B1B6B5441F6285CBF232B5141A4703DEA1F6B54411F85EB11322B5141333333B31B6B54415C8FC2753E2B5141D7A3700D186B544185EB51284E2B5141E17A146E136B5441EC51B8EE492B5141D7A3704D126B5441F6285CFF442B514185EB51C8106B544152B81E15412B51415C8FC2950D6B54419A9999D93D2B5141A4703DBA096B544114AE47013D2B51418FC2F5C8076B54418FC2F5A83C2B5141B81E850B066B5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000090000000CCAFB82142B51413FC8F510116B5441A857CA821A2B514175A2E770146B5441010CFE9B1D2B5141F4E5F7BC166B5441A7DEEA1A1F2B51419BB8E43B186B5441CECBDCBF1F2B514185F0E1B6186B544107D003AD1E2B514123C7B92D0F6B54418749C7941E2B5141A50987980E6B5441CE6DC74D1E2B5141F375E8AB0E6B54410CCAFB82142B51413FC8F510116B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>577113 - 3195543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F0000009A9999B92C2B5141C3F528BC0A6B544148E17AA41E2B51411F85EBE10E6B54413D0AD7D31F2B514185EB5168196B544148E17A34212B5141B81E852B1B6B5441F6285CBF232B5141A4703DEA1F6B54411F85EB11322B5141333333B31B6B54415C8FC2753E2B5141D7A3700D186B544185EB51284E2B5141E17A146E136B5441EC51B8EE492B5141D7A3704D126B5441F6285CFF442B514185EB51C8106B544152B81E15412B51415C8FC2950D6B54419A9999D93D2B5141A4703DBA096B544114AE47013D2B51418FC2F5C8076B54418FC2F5A83C2B5141B81E850B066B5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000090000000CCAFB82142B51413FC8F510116B5441A857CA821A2B514175A2E770146B5441010CFE9B1D2B5141F4E5F7BC166B5441A7DEEA1A1F2B51419BB8E43B186B5441CECBDCBF1F2B514185F0E1B6186B544107D003AD1E2B514123C7B92D0F6B54418749C7941E2B5141A50987980E6B5441CE6DC74D1E2B5141F375E8AB0E6B54410CCAFB82142B51413FC8F510116B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>577639 - 5173685
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000001000000010300000001000000290000000000004042315141A4703DFAF7755441333333133E31514114AE4781F6755441CDCCCCEC323151411F85EB91F2755441E17A14CE2E315141B81E850BFC755441F6285C7F27315141A4703D3AF97554410AD7A3B0213151411F85EB41067654419A9999C922315141A4703DCA067654418FC2F5C821315141B81E851B097654415C8FC245213151417B14AE870A765441295C8FD21D3151417B14AEB7127654415C8FC2F51B315141713D0A7711765441295C8F8215315141C3F528AC0D7654418FC2F5C80E315141EC51B87E09765441000000700A315141E17A14BE06765441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000041000000071697D9E4305141C4BA4A52EB755441D2A39068E13051414E396E88E7755441A7C611EADF3051413B61B618EA7554416A6CEF53DE30514145B4E18FEC7554417B14AEE7DC3051413D0AD703EF7554413D0AD743DC3051417B14AE77EF755441E93BAA70DC305141171F4FB8EB75544119CF7BA8DC305141DB23CAAAE97554414CE6B5B4DC3051412C430113E975544199B9A1A8DC3051419E3D3E9EE8755441E0C35F46DC30514138C02B57E4755441535CF239DC30514117C50272E27554419A2B5C31DC305141FEADECE4E075544102576428DC305141DD453346DF755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>577908 - 42280
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000080000008FC2F5C8132D514148E17A243E5954419A999969182D514185EB5168435954410AD7A3A0232D5141A4703D2A5059544114AE4781312D5141EC51B84E445954411F85EB31282D514185EB51183A595441D7A3706D212D5141AE47E1AA3259544185EB51081A2D514166666606395954418FC2F5C8132D514148E17A243E595441
+</a>
+
+<b>
+0106000000010000000103000000010000000B00000057A1D1301F2D514115F0299734595441D7A3706D212D5141AE47E1AA32595441295C8F421E2D514114AE47312F59544152B81E151B2D5141666666B628595441713D0A87222D51418FC2F59824595441713D0AC7182D51415C8FC2E519595441F6285CAF092D51415C8FC25509595441D7A370ED012D5141A4703D1A1059544170AF9351FE2C51419266463C135954414B2085F71C2D5141EE6997803659544157A1D1301F2D514115F0299734595441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>578965 - 3135088
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000010000000AE47E17A35525141E17A14DECF7254417B14AE473F525141B81E858BD27254413D0AD7C341525141C3F5288CD27254419A9999B941525141CDCCCC0CD27254418FC2F5D8385251410AD7A350D07254418FC2F59832525141713D0A27CE7254419A9999992E52514133333343CD725441B81E85DB2B52514114AE4751CD725441666666D62B5251415C8FC245CE7254419A9999C92A52514114AE4731CE7254413D0AD7D32A525141CDCCCC2CCD725441C3F528FC18525141AE47E10ACD725441000000B0185251410AD7A390CE725441713D0A2724525141D7A3707DCE725441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000EC51B83E0F5251411F85EBD1BC72544135A8B5F10F525141E230ECF4BF7254419E0ACBC110525141531A739AC372544176131A7F11525141A53EBFEBC672544125A6B3CF125251416FDCA82AC7725441DA39CDB51452514157580953C772544114AE47611552514114AE4761C7725441A9C2E35716525141D3AA4637C9725441ED7C3FE9165251410CE14D4CCA725441A45021FA165251419A15E8FFCA725441B5CCACCE1B52514113912FF1CA725441F96CFC1821525141A61E591DCB7254418464CFDE25525141BF303B58CB72544163BC963D2A525141BF303B58CB725441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>578965 - 3522192
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000200000001030000000100000010000000AE47E17A35525141E17A14DECF7254417B14AE473F525141B81E858BD27254413D0AD7C341525141C3F5288CD27254419A9999B941525141CDCCCC0CD27254418FC2F5D8385251410AD7A350D07254418FC2F59832525141713D0A27CE7254419A9999992E52514133333343CD725441B81E85DB2B52514114AE4751CD725441666666D62B5251415C8FC245CE7254419A9999C92A52514114AE4731CE7254413D0AD7D32A525141CDCCCC2CCD725441C3F528FC18525141AE47E10ACD725441000000B0185251410AD7A390CE725441713D0A2724525141D7A3707DCE725441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000025000000EC51B83E0F5251411F85EBD1BC72544135A8B5F10F525141E230ECF4BF7254419E0ACBC110525141531A739AC372544176131A7F11525141A53EBFEBC672544125A6B3CF125251416FDCA82AC7725441DA39CDB51452514157580953C772544114AE47611552514114AE4761C7725441A9C2E35716525141D3AA4637C9725441ED7C3FE9165251410CE14D4CCA725441A45021FA165251419A15E8FFCA725441B5CCACCE1B52514113912FF1CA725441F96CFC1821525141A61E591DCB7254418464CFDE25525141BF303B58CB72544163BC963D2A525141BF303B58CB725441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>579259 - 3895529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002700000033333353145251410AD7A370B05F5441B81E85BB15525141CDCCCC9CB15F544152B81EE518525141EC51B87EB15F5441B81E856B1A525141AE47E1BAB15F5441F6285C1F1B5251410AD7A320B55F5441F6285C1F1B52514152B81EB5B75F5441B81E85BB15525141CDCCCCFCBA5F5441713D0A1714525141CDCCCCBCBE5F54418FC2F5E8135251417B14AE07C45F54413D0AD7E318525141F6285C5FCD5F5441B81E856B1A52514152B81E45CD5F5441000000C01E52514148E17A24C95F544185EB5128235251410AD7A320C45F544114AE476124525141AE47E19AC25F5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000C57748AC42525141275FDE24975F5441359E826E1552514142397838A25F544176B0A827155251411A929848A15F5441B81E85BB15525141B81E856BA35F5441CDCCCC1C175251419A9999F9A75F54417B14AE0717525141EC51B84EA95F5441A4703D4A1752514185EB5148AB5F5441EC51B8BE18525141D7A3702DAF5F54410AD7A3A0195251417B14AE97AF5F5441295C8F821A5251417B14AEE7AF5F5441B81E857B28525141C3F528BCAC5F5441295C8FE22D525141000000C0AB5F5441EC51B87E4352514114AE4741A95F54413D0AD7B34352514133333313A75F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>777252 - 955962
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000560000003A802ED795615141665C036F7A86544152B81E85996151411F85EB017A865441EC51B87EB06151413D0AD7C37786544156D72951BD615141F075DC5D7786544114AE4711CD615141F6285C7F76865441433ED250D76151416A431D43768654418FC2F5D8E061514185EB51D8758654410AD7A360EE615141C3F5287C76865441E17A14DEE66151410AD7A35081865441D7A370EDE5615141E17A149E828654411F85EB21E4615141A4703D5A85865441B0A32174DC615141407D2D7D8F8654417B14AEB7D8615141666666C694865441A4703D2AD86151419A99999995865441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000D9D6F2C2FE6151414B808EA77B8654418DC9532BF8615141327DA4AF78865441B8562ADFF6615141D3AC784A788654419CA1746FF16151418A3E94A276865441620277ECF0615141F171AE7A76865441C80DB99BEE6151413538ED3F79865441FCEBEE6BEB61514174921BA07D865441C89E5B86E8615141DE27909B8186544188721980E5615141CC0CB6D985865441CF18729ADD6151411E0ABCED9086544107EBCE83D161514193C37D2EA28654411F85EBB1CE6151410AD7A340A6865441243BC359CB61514119D6F085AA86544132380F96C9615141F9350D28AD865441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>581674 - 3088192
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000028000000AE47E1CA3B03514152B81ED5064A54415C8FC2553B0351413D0AD7F3084A544114AE47D13D035141E17A14CE084A54411F85EB414803514148E17AB4074A544152B81E554C0351410AD7A3A0054A5441333333D34E035141F6285CAF044A5441D7A3703D5703514133333343024A54419A9999A9590351417B14AEA7014A5441C3F5284C5D035141CDCCCC2C004A54415C8FC2755C0351417B14AE47F2495441C3F528EC590351413D0AD7C3F1495441EC51B8DE58035141000000B0F1495441B81E851B5803514114AE47A1F14954411F85EBC153035141295C8F12F1495441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000DA53A81B460351416E3575EE074A5441C90B55B23B0351414F412C3E094A54417B14AEA73B035141A4703D8A094A5441F68B8F363A035141AC2424E40A4A5441BBBDA84B3A0351412A1D2D450E4A544169AFA41E3B0351411FB2037C114A5441CD840DA03A0351412A87F7F4134A5441E3C42AE239035141355CEB6D164A54416536EC303C035141E34DE740174A5441FD51957143035141D18682EC164A5441D4B4DD8A49035141ABF8B843164A54417E2D21704B035141D4FF3ADA154A5441599F57C74A035141C92A4761134A5441D03B259D4A035141BE5553E8104A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>581674 - 3432341
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000028000000AE47E1CA3B03514152B81ED5064A54415C8FC2553B0351413D0AD7F3084A544114AE47D13D035141E17A14CE084A54411F85EB414803514148E17AB4074A544152B81E554C0351410AD7A3A0054A5441333333D34E035141F6285CAF044A5441D7A3703D5703514133333343024A54419A9999A9590351417B14AEA7014A5441C3F5284C5D035141CDCCCC2C004A54415C8FC2755C0351417B14AE47F2495441C3F528EC590351413D0AD7C3F1495441EC51B8DE58035141000000B0F1495441B81E851B5803514114AE47A1F14954411F85EBC153035141295C8F12F1495441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000DA53A81B460351416E3575EE074A5441C90B55B23B0351414F412C3E094A54417B14AEA73B035141A4703D8A094A5441F68B8F363A035141AC2424E40A4A5441BBBDA84B3A0351412A1D2D450E4A544169AFA41E3B0351411FB2037C114A5441CD840DA03A0351412A87F7F4134A5441E3C42AE239035141355CEB6D164A54416536EC303C035141E34DE740174A5441FD51957143035141D18682EC164A5441D4B4DD8A49035141ABF8B843164A54417E2D21704B035141D4FF3ADA154A5441599F57C74A035141C92A4761134A5441D03B259D4A035141BE5553E8104A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>967065 - 970040
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000713D0A37335E5141295C8F32BB98544152B81E95355E5141EC51B8CE929854418FC2F5E8375E51415C8FC2056B985441EC51B87E2A5E5141713D0AE767985441295C8F42285E5141295C8F829098544152B81E25265E5141713D0A17B7985441713D0A37335E5141295C8F32BB985441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000F5100F52265E5141F8E84DE3B398544128D5347E2A5E5141FC2A20E867985441A5123F35155E5141CC49A5F3629854416CBD245C105E51413DFFD4A7B39854417D3AAB8E145E5141CE608DC9B398544166DEB54E1C5E5141B7B39A84B4985441F36C53A5225E5141298BC113B698544113E1BF25265E51416D838E0BB7985441F5100F52265E5141F8E84DE3B3985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>967065 - 1275782
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000007000000713D0A37335E5141295C8F32BB98544152B81E95355E5141EC51B8CE929854418FC2F5E8375E51415C8FC2056B985441EC51B87E2A5E5141713D0AE767985441295C8F42285E5141295C8F829098544152B81E25265E5141713D0A17B7985441713D0A37335E5141295C8F32BB985441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000F5100F52265E5141F7E84DE3B39854412AD5347E2A5E5141F82A20E867985441A5123F35155E5141D149A5F3629854416FBD245C105E514141FFD4A7B3985441813AAB8E145E5141D1608DC9B398544169DEB54E1C5E5141B5B39A84B4985441EF6C53A5225E5141258BC113B698544117E1BF25265E514171838E0BB7985441F5100F52265E5141F7E84DE3B3985441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>581742 - 1096466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B0000003D0AD703D30151417B14AEC74A475441A4703DDACC015141295C8F725D475441C3F528ECC80151411F85EB01684754419A9999E9CC01514185EB51386A475441CDCCCCECCD0151410AD7A360674754415C8FC295D2015141F6285C6F5B475441EC51B88ED701514148E17A644D47544114AE47F1DC0151411F85EB313F475441CDCCCCCCD90151419A9999893D475441333333B3D50151415C8FC285434754413D0AD703D30151417B14AEC74A475441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000DF43B5CFD1015141DC74136D4E47544151079FEFD0015141AEC5E11351475441A4703DDACC015141295C8F725D4754414B5A560FCA0151413D1785F364475441C8120786CD01514121F6298168475441CDCCCCECCD0151410AD7A360674754415C8FC295D2015141F6285C6F5B475441EC51B88ED701514148E17A644D475441D021D7E0DA0151419F5D25A34447544144E1DFDCD5015141B83E82524B475441DF43B5CFD1015141DC74136D4E475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>581742 - 3481827
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B0000003D0AD703D30151417B14AEC74A475441A4703DDACC015141295C8F725D475441C3F528ECC80151411F85EB01684754419A9999E9CC01514185EB51386A475441CDCCCCECCD0151410AD7A360674754415C8FC295D2015141F6285C6F5B475441EC51B88ED701514148E17A644D47544114AE47F1DC0151411F85EB313F475441CDCCCCCCD90151419A9999893D475441333333B3D50151415C8FC285434754413D0AD703D30151417B14AEC74A475441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000DF43B5CFD1015141DC74136D4E47544151079FEFD0015141AEC5E11351475441A4703DDACC015141295C8F725D4754414B5A560FCA0151413D1785F364475441C8120786CD01514121F6298168475441CDCCCCECCD0151410AD7A360674754415C8FC295D2015141F6285C6F5B475441EC51B88ED701514148E17A644D475441D021D7E0DA0151419F5D25A34447544144E1DFDCD5015141B83E82524B475441DF43B5CFD1015141DC74136D4E475441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>582074 - 903305
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000190000003D0AD7134FE35041B81E858B26EF5441CDCCCC8C4EE35041EC51B87E24EF5441CDCCCC7C4DE35041333333831CEF5441B81E85EB4CE35041AE47E13A1BEF5441CDCCCCEC41E35041EC51B83E23EF5441EC51B87E3AE3504114AE47A128EF5441C3F5281C37E35041CDCCCCFC23EF544185EB512832E350413D0AD72322EF5441D7A370ED28E35041295C8FB21EEF5441EC51B81E23E35041EC51B8FE27EF54410AD7A3601FE3504152B81E852DEF5441000000701BE35041E17A146E33EF544114AE47911FE35041CDCCCCBC3BEF54413D0AD7E323E35041295C8F6243EF5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000AEB507AA31E350411D9B976958EF5441A2553F8A37E35041D4DF2DFC55EF544138C12F423BE350417285427054EF544123A4214341E3504159FD6EEB51EF5441962D5C2645E3504148C84D2750EF5441BC63944649E350418D943FEA4DEF5441CA3587424AE35041AD25935E4DEF54415C2D14024CE35041E7EF76664CEF5441C12C4F194EE350418899131B4BEF544103BA65FA4EE35041C8B0CF994AEF5441A4C7288F4FE35041DE45823D4AEF54412F97921253E35041A104730F48EF54411B616CC057E350419905842745EF54419A2E5BB757E3504159631A8344EF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>580120 - 2610719
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001D0000009A9999A9EF82504133333373C8135541000000C0E7825041F6285CDFC01355415C8FC2F5DF8250415C8FC265B81355410AD7A330DB82504152B81EF5B3135541E17A143ED5825041F6285CEFAE13554185EB5188D4825041CDCCCCDCAF1355419A999959D38250418FC2F568B1135541B81E85FBD282504148E17AE4B1135541295C8F02D2825041A4703D2AB3135541D7A3707DD08250417B14AE27B5135541F6285C4FD0825041295C8F62B5135541D7A370EDCF825041F6285CDFB51355413D0AD783CE825041B81E85ABB71355415C8FC265CD8250417B14AE17B9135541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000350000009A9999A9EF82504133333373C813554114AE4701F2825041E17A140EC6135541713D0A37F5825041666666C6C2135541666666C6F7825041EC51B81EC0135541E17A145EF282504185EB5148BA135541C3F5282CFF825041713D0AE7AB13554166666626FC825041C3F5288CAA13554133333303F78250415C8FC245A71355419A9999E9F482504148E17AE4A51355413D0AD713F48250417B14AE57A5135541C3F528DCEF8250411F85EB61A3135541C3F5288CEF825041295C8F52A3135541000000E0EE82504148E17A24A31355415C8FC2E5ED825041295C8FF2A2135541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>580120 - 2610845
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D0000009A9999A9EF82504133333373C8135541000000C0E7825041F6285CDFC01355415C8FC2F5DF8250415C8FC265B81355410AD7A330DB82504152B81EF5B3135541E17A143ED5825041F6285CEFAE13554185EB5188D4825041CDCCCCDCAF1355419A999959D38250418FC2F568B1135541B81E85FBD282504148E17AE4B1135541295C8F02D2825041A4703D2AB3135541D7A3707DD08250417B14AE27B5135541F6285C4FD0825041295C8F62B5135541D7A370EDCF825041F6285CDFB51355413D0AD783CE825041B81E85ABB71355415C8FC265CD8250417B14AE17B9135541 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000029000000B44FC311E7825041783CCD21C0135541190E44BFE3825041E2838484BC13554162DBEC14E182504136352D9EB9135541D7FFC4C5DB82504137B1EE7FB4135541EAAD0EB2D582504184693152AF1355419C37A2DCCF8250417001C321B7135541AFBA2740CE8250418E638A21B913554177A0AB3ACC82504153F6895DBB135541AE47E1BAD0825041B81E852BBF135541A83CC0EDD8825041696C0872C41355411F75E554DE825041E2EEC320CB1355417B14AEB7E4825041D7A370DDD0135541CDCCCCBCE28250419A999959D21355410AD7A3C0E0825041666666D6D3135541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>580120 - 3538372
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001D0000009A9999A9EF82504133333373C8135541000000C0E7825041F6285CDFC01355415C8FC2F5DF8250415C8FC265B81355410AD7A330DB82504152B81EF5B3135541E17A143ED5825041F6285CEFAE13554185EB5188D4825041CDCCCCDCAF1355419A999959D38250418FC2F568B1135541B81E85FBD282504148E17AE4B1135541295C8F02D2825041A4703D2AB3135541D7A3707DD08250417B14AE27B5135541F6285C4FD0825041295C8F62B5135541D7A370EDCF825041F6285CDFB51355413D0AD783CE825041B81E85ABB71355415C8FC265CD8250417B14AE17B9135541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000350000009A9999A9EF82504133333373C813554114AE4701F2825041E17A140EC6135541713D0A37F5825041666666C6C2135541666666C6F7825041EC51B81EC0135541E17A145EF282504185EB5148BA135541C3F5282CFF825041713D0AE7AB13554166666626FC825041C3F5288CAA13554133333303F78250415C8FC245A71355419A9999E9F482504148E17AE4A51355413D0AD713F48250417B14AE57A5135541C3F528DCEF8250411F85EB61A3135541C3F5288CEF825041295C8F52A3135541000000E0EE82504148E17A24A31355415C8FC2E5ED825041295C8FF2A2135541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>580120 - 3538878
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001D0000009A9999A9EF82504133333373C8135541000000C0E7825041F6285CDFC01355415C8FC2F5DF8250415C8FC265B81355410AD7A330DB82504152B81EF5B3135541E17A143ED5825041F6285CEFAE13554185EB5188D4825041CDCCCCDCAF1355419A999959D38250418FC2F568B1135541B81E85FBD282504148E17AE4B1135541295C8F02D2825041A4703D2AB3135541D7A3707DD08250417B14AE27B5135541F6285C4FD0825041295C8F62B5135541D7A370EDCF825041F6285CDFB51355413D0AD783CE825041B81E85ABB71355415C8FC265CD8250417B14AE17B9135541 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000029000000B44FC311E7825041783CCD21C0135541190E44BFE3825041E2838484BC13554162DBEC14E182504136352D9EB9135541D7FFC4C5DB82504137B1EE7FB4135541EAAD0EB2D582504184693152AF1355419C37A2DCCF8250417001C321B7135541AFBA2740CE8250418E638A21B913554177A0AB3ACC82504153F6895DBB135541AE47E1BAD0825041B81E852BBF135541A83CC0EDD8825041696C0872C41355411F75E554DE825041E2EEC320CB1355417B14AEB7E4825041D7A370DDD0135541CDCCCCBCE28250419A999959D21355410AD7A3C0E0825041666666D6D3135541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585170 - 146327
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000005200000052B81ED588E25041AE47E17A95E9544148E17A848BE25041F6285C9F94E954419A9999E990E25041666666E692E954410AD7A3A094E25041333333C391E95441000000E096E250415C8FC21591E95441333333339BE25041000000A08FE95441000000909EE25041CDCCCC6C8EE95441F6285C8FA2E25041D7A370CD8CE95441EC51B85EA2E25041AE47E13A89E95441000000409EE25041B81E85CB87E954417B14AE079EE25041E17A14EE85E95441713D0A77A3E25041713D0AD781E954415C8FC2A5AEE25041D7A3700D76E95441F6285C0FB4E250417B14AEF765E95441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000880000005CAF7FF594E25041EE77A3A337E9544127C842F394E250411BC7C0C237E954414E76DCF294E25041035F4FC837E9544124FDE8D694E2504185DEEC4C39E95441D32943BC94E25041069155613CE95441D89668C794E25041031EE4433EE95441369DD15795E25041AE8C9B1142E95441DA1B3E1F95E250419F67FFD242E95441BC1AA41293E25041D124CCF649E954413D0AD71393E25041295C8FF24BE9544114AE47B192E25041E17A145E4FE9544139F21B9B92E25041886A88B44FE954413333337391E250416666663654E954413D0AD7E38FE250410AD7A3E05AE95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585170 - 258049
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000005200000052B81ED588E25041AE47E17A95E9544148E17A848BE25041F6285C9F94E954419A9999E990E25041666666E692E954410AD7A3A094E25041333333C391E95441000000E096E250415C8FC21591E95441333333339BE25041000000A08FE95441000000909EE25041CDCCCC6C8EE95441F6285C8FA2E25041D7A370CD8CE95441EC51B85EA2E25041AE47E13A89E95441000000409EE25041B81E85CB87E954417B14AE079EE25041E17A14EE85E95441713D0A77A3E25041713D0AD781E954415C8FC2A5AEE25041D7A3700D76E95441F6285C0FB4E250417B14AEF765E95441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000880000005CAF7FF594E25041EE77A3A337E9544127C842F394E250411BC7C0C237E954414E76DCF294E25041035F4FC837E9544124FDE8D694E2504185DEEC4C39E95441D32943BC94E25041069155613CE95441D89668C794E25041031EE4433EE95441369DD15795E25041AE8C9B1142E95441DA1B3E1F95E250419F67FFD242E95441BC1AA41293E25041D124CCF649E954413D0AD71393E25041295C8FF24BE9544114AE47B192E25041E17A145E4FE9544139F21B9B92E25041886A88B44FE954413333337391E250416666663654E954413D0AD7E38FE250410AD7A3E05AE95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585571 - 56373
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000AE47E1DA13E050415C8FC2B55DEB54410AD7A38010E050415C8FC2D577EB544152B81EF519E05041B81E858B79EB5441E17A144E1DE05041A4703DEA60EB5441AE47E1DA13E050415C8FC2B55DEB5441
+</a>
+
+<b>
+01060000000100000001030000000100000015000000E17A144E1DE05041A4703DEA60EB54418AFDE07F1CE05041A1614EA460EB5441E591CF0B1CE05041FDF8F07C60EB5441B9FEB9EA14E050412C2BF5115EEB5441AE47E1DA13E050415C8FC2B55DEB5441FD2008C012E050413AC6E85166EB54410AD7A38010E050415C8FC2D577EB5441169D222D15E05041347727AE78EB5441BA96F90D16E050412F64D1D678EB5441BEC4312017E050413F90690879EB544158BB2CF017E05041D8E8062E79EB5441E02217EE19E05041E0BA338979EB54416948CD3F1AE050413AE7076677EB5441A53922771AE050414F16EACE75EB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585584 - 56382
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001E000000F6285C7F69E250418FC2F52877E85441EC51B8FE6BE250417B14AE4778E854415C8FC2356CE25041C3F528CC6BE85441295C8F326BE250411F85EBF162E85441CDCCCC2C69E25041295C8F1258E85441AE47E1AA68E25041B81E855B50E854415C8FC2E566E2504152B81EA548E8544185EB515862E25041AE47E1CA3FE8544185EB513862E25041CDCCCCDC3AE85441AE47E11A63E2504185EB510834E854418FC2F53870E2504148E17A8423E854418FC2F53866E25041B81E855B22E8544152B81E255BE250411F85EB1121E85441B81E856B59E25041EC51B8DE20E85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000EC51B8FE6BE250417B14AE4778E85441FF4DE0056CE25041627534A876E85441B5DDEB0C6CE25041630A2D0F75E854414E60A8246CE250418C2A16AD6FE85441F5B3272C6CE2504106A0CDF96DE85441F81C292F6CE250419F194F4B6DE854418E1780306CE25041D36286FD6CE85441E48666336CE2504125FF25556CE8544187A1A8346CE250412E3C190C6CE854416B2985356CE2504139A015DA6BE8544121E759AA6BE25041548A470967E85441382FD57E6BE25041B5E6C98C65E8544154D1BA466BE25041DCB644A263E854411D40033C6BE250414A21914463E85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>585595 - 888719
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001500000052B81EF5C5DF50417B14AE779EED5441EC51B8CECBDF50410AD7A390ABED544133333303E4DF5041A4703DCAA5ED5441D7A3703DE7DF5041CDCCCC3CAEED5441E17A146EF4DF504114AE4721ABED5441A4703DEAFFDF5041F6285CBFA8ED5441295C8F7205E0504148E17A54A8ED544185EB518805E050418FC2F548A7ED5441E17A142E08E05041A4703DDA86ED5441AE47E12A07E050413D0AD72387ED54410AD7A3B0FCDF504114AE47C18AED544133333363F6DF5041A4703DBA8BED5441AE47E17AF3DF5041CDCCCC1C8DED5441E17A149EEEDF504114AE475190ED5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000280000005224AB7F02E050412F4E728DA8ED5441902EFC1501E050415283BDA8A8ED5441C46EA5F1FEDF5041D6EDEDF2A8ED54414578FF6AFDDF5041849DF743A9ED54411360EC1CF8DF5041483DB15DAAED5441F7D03276EFDF504123DAED4CACED5441E0D48CEBEBDF504119F48722ADED54410E963056E9DF5041952758BEADED544168ECB47CE7DF5041C208E52DAEED5441D7A3703DE7DF5041CDCCCC3CAEED54413A15C287E5DF5041DFA43BC3A9ED5441829F385BE5DF5041E105AA4EA9ED5441326D2A71E4DF5041F0130FEAA6ED5441D183131CE4DF5041008E590BA6ED5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586464 - 3142423
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000024000000C3F5286CFA4C51418FC2F5E8E975544152B81E55F94C514152B81EB5E9755441000000F0F64C51413D0AD783EA755441E17A14FEF54C514185EB5168EB75544100000000F44C5141666666C6ED7554413D0AD773F34C51411F85EB51FB75544148E17A74F34C514114AE47A10076544148E17A04F44C51411F85EB11057654418FC2F5E8F54C5141EC51B88E0A7654413D0AD7E3F74C5141C3F528EC0D765441B81E858BFA4C5141295C8F42107654411F85EB11FD4C51413D0AD753117654419A9999C9014D51417B14AE1712765441E17A142E0B4D514114AE474112765441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000400000005176AC6E254D5141EF817335E87554415C8FC2F5294D5141D7A3706DE775544100000070304D514152B81E75E6755441F6285C9F304D51415C8FC285E4755441D7A3706D314D514114AE4701DF7554411F85EB91314D514166666646D7755441A4703D5A334D51418FC2F528CD755441B81E85EB324D51410AD7A380C87554419A999919344D51413D0AD703C8755441512DB85A324D514165AE946CC675544148E17AB42E4D51417B14AEE7C2755441FE65D92B2C4D5141F837033EC17554417B14AE572A4D51411F85EBA1C17554411F85EB91294D51417B14AE67C2755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586464 - 3456841
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000024000000C3F5286CFA4C51418FC2F5E8E975544152B81E55F94C514152B81EB5E9755441000000F0F64C51413D0AD783EA755441E17A14FEF54C514185EB5168EB75544100000000F44C5141666666C6ED7554413D0AD773F34C51411F85EB51FB75544148E17A74F34C514114AE47A10076544148E17A04F44C51411F85EB11057654418FC2F5E8F54C5141EC51B88E0A7654413D0AD7E3F74C5141C3F528EC0D765441B81E858BFA4C5141295C8F42107654411F85EB11FD4C51413D0AD753117654419A9999C9014D51417B14AE1712765441E17A142E0B4D514114AE474112765441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000400000005176AC6E254D5141EF817335E87554415C8FC2F5294D5141D7A3706DE775544100000070304D514152B81E75E6755441F6285C9F304D51415C8FC285E4755441D7A3706D314D514114AE4701DF7554411F85EB91314D514166666646D7755441A4703D5A334D51418FC2F528CD755441B81E85EB324D51410AD7A380C87554419A999919344D51413D0AD703C8755441512DB85A324D514165AE946CC675544148E17AB42E4D51417B14AEE7C2755441FE65D92B2C4D5141F837033EC17554417B14AE572A4D51411F85EBA1C17554411F85EB91294D51417B14AE67C2755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586478 - 3027870
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F00000014AE4771C651514148E17A945A67544148E17AB4C251514114AE4741716754413D0AD773D6515141D7A370BD6C6754418FC2F528D651514152B81E856E67544148E17AD4D35151417B14AEA77C675441713D0A27CF5151413333330399675441C3F5285CCB51514152B81E05B06754410AD7A390D1515141295C8F42AE675441F6285CEFD3515141B81E85ABAC675441B81E853BDE515141333333839F6754418FC2F5B8E5515141B81E85FB956754415C8FC275E9515141C3F528DC91675441D7A3708DED515141295C8F328E67544100000020F25151415C8FC2C58A675441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000DB400F24D55151411930360A6D6754414930F1DBD551514168CE9BA66C675441BFB2D5CCE1515141E10479D36967544100000010DD515141D7A370AD64675441AE47E17ADA515141713D0A076367544100000030D85151418FC2F53862675441D7A370DDCD5151418FC2F5985E6754417B14AE77C75151419A9999595B67544114AE4771C651514148E17A945A67544148E17AB4C251514114AE474171675441DB400F24D55151411930360A6D675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586478 - 3435937
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F00000014AE4771C651514148E17A945A67544148E17AB4C251514114AE4741716754413D0AD773D6515141D7A370BD6C6754418FC2F528D651514152B81E856E67544148E17AD4D35151417B14AEA77C675441713D0A27CF5151413333330399675441C3F5285CCB51514152B81E05B06754410AD7A390D1515141295C8F42AE675441F6285CEFD3515141B81E85ABAC675441B81E853BDE515141333333839F6754418FC2F5B8E5515141B81E85FB956754415C8FC275E9515141C3F528DC91675441D7A3708DED515141295C8F328E67544100000020F25151415C8FC2C58A675441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000DB400F24D55151411930360A6D6754414930F1DBD551514168CE9BA66C675441BFB2D5CCE1515141E10479D36967544100000010DD515141D7A370AD64675441AE47E17ADA515141713D0A076367544100000030D85151418FC2F53862675441D7A370DDCD5151418FC2F5985E6754417B14AE77C75151419A9999595B67544114AE4771C651514148E17A945A67544148E17AB4C251514114AE474171675441DB400F24D55151411930360A6D675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586545 - 2987573
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000150000009A9999195B515141AE47E1EA22755441AE47E19A5C515141713D0AD719755441713D0A475E5151413D0AD7131075544148E17A245D515141295C8FF20F7554413D0AD7A357515141713D0A870F755441713D0A37435151415C8FC205107554413D0AD7A34051514152B81E0519755441A4703D2A3E515141333333C328755441000000E0365151415C8FC225407554415C8FC2C53251514185EB51A84A7554418FC2F5982F5151419A9999D951755441713D0AA72D515141295C8FF2567554417B14AE0749515141000000505E755441C3F5281C4C515141EC51B87E56755441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000243CECB74851514120438B3A5E755441AE131F234B5151417332D1F658755441859E2BDB4C515141DDC6709454755441D635B9FD4E515141AAF648EF4E755441A5E0DE2E505151414094756A4B7554416298687851515141E920CF314775544188507C57535151411CA425E44075544115B6D106545151416ADDF0C53E755441A197D29C55515141FC13D49139755441595301CC56515141D460C086357554418B93345C57515141E4CF40D83275544173F9D70458515141A5E153F52F7554418E358707565151412FD875802F755441282CDDBC535151417DE0C0F92E755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586545 - 3284794
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000150000009A9999195B515141AE47E1EA22755441AE47E19A5C515141713D0AD719755441713D0A475E5151413D0AD7131075544148E17A245D515141295C8FF20F7554413D0AD7A357515141713D0A870F755441713D0A37435151415C8FC205107554413D0AD7A34051514152B81E0519755441A4703D2A3E515141333333C328755441000000E0365151415C8FC225407554415C8FC2C53251514185EB51A84A7554418FC2F5982F5151419A9999D951755441713D0AA72D515141295C8FF2567554417B14AE0749515141000000505E755441C3F5281C4C515141EC51B87E56755441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000243CECB74851514120438B3A5E755441AE131F234B5151417332D1F658755441859E2BDB4C515141DDC6709454755441D635B9FD4E515141AAF648EF4E755441A5E0DE2E505151414094756A4B7554416298687851515141E920CF314775544188507C57535151411CA425E44075544115B6D106545151416ADDF0C53E755441A197D29C55515141FC13D49139755441595301CC56515141D460C086357554418B93345C57515141E4CF40D83275544173F9D70458515141A5E153F52F7554418E358707565151412FD875802F755441282CDDBC535151417DE0C0F92E755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586863 - 3027870
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C00000048E17AD4D35151417B14AEA77C6754418FC2F528D651514152B81E856E6754413D0AD773D6515141D7A370BD6C67544148E17AB4C251514114AE474171675441EC51B82EC2515141E17A146E74675441A4703D6ABD515141CDCCCC5C91675441713D0AC7B851514100000080AD6754410AD7A300C651514148E17AC4B067544152B81EE5C851514185EB51B8B0675441C3F5285CCB51514152B81E05B0675441713D0A27CF515141333333039967544148E17AD4D35151417B14AEA77C675441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000DB400F24D55151411930360A6D6754414930F1DBD551514168CE9BA66C675441BFB2D5CCE1515141E10479D36967544100000010DD515141D7A370AD64675441AE47E17ADA515141713D0A076367544100000030D85151418FC2F53862675441D7A370DDCD5151418FC2F5985E6754417B14AE77C75151419A9999595B67544114AE4771C651514148E17A945A67544148E17AB4C251514114AE474171675441DB400F24D55151411930360A6D675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>586863 - 3435937
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C00000048E17AD4D35151417B14AEA77C6754418FC2F528D651514152B81E856E6754413D0AD773D6515141D7A370BD6C67544148E17AB4C251514114AE474171675441EC51B82EC2515141E17A146E74675441A4703D6ABD515141CDCCCC5C91675441713D0AC7B851514100000080AD6754410AD7A300C651514148E17AC4B067544152B81EE5C851514185EB51B8B0675441C3F5285CCB51514152B81E05B0675441713D0A27CF515141333333039967544148E17AD4D35151417B14AEA77C675441
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000DB400F24D55151411930360A6D6754414930F1DBD551514168CE9BA66C675441BFB2D5CCE1515141E10479D36967544100000010DD515141D7A370AD64675441AE47E17ADA515141713D0A076367544100000030D85151418FC2F53862675441D7A370DDCD5151418FC2F5985E6754417B14AE77C75151419A9999595B67544114AE4771C651514148E17A945A67544148E17AB4C251514114AE474171675441DB400F24D55151411930360A6D675441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587497 - 409926
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81E457B3C51410AD7A3F04967544148E17A047A3C51416666665626675441A4703D8A773C5141A4703D1A2567544152B81E95733C51413D0AD79321675441000000F0743C5141E17A14DE46675441AE47E19A753C5141B81E851B5967544152B81E35783C5141AE47E1DA58675441713D0AC7783C51419A9999A96B67544152B81E857C3C5141AE47E18A6D67544152B81E457B3C51410AD7A3F049675441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C2DD97B2733C514113B1F3BE24675441FECDBCF2703C514192B37A8E21675441491ADF3F6F3C5141B86C9815206754418F63E1226F3C51411F6C98152067544157AEF33A6E3C514198DCB3B91E675441537C342F6D3C514120D49C221E675441458C0A196D3C5141D594C10B1E67544153A4A14F683C5141E51737911D67544168F79A09693C51411FD40A1741675441A1F938B6693C5141D133374A6367544110AD838A6F3C514179EC79676367544101E6B76D6F3C51419D8376C7636754410199958B6F3C51412B60D8ED6667544152B81EE56F3C5141B81E851B67675441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587512 - 1089196
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000002D000000295C8FE222565141EC51B84E06715441E17A14EE22565141C3F528AC087154419A9999F922565141713D0A470F7154413333335322565141713D0A671471544185EB51A821565141E17A146E197154410AD7A3E020565141C3F528CC1E715441A4703D6A2056514152B81E05227154410AD7A350205651410AD7A3F02371544148E17A4421565141F6285CCF25715441CDCCCC4C23565141AE47E18A2671544152B81EF52D565141B81E852B28715441EC51B82E395651410AD7A3E02971544114AE478140565141295C8F422B715441295C8F62455651417B14AEF72C715441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000038000000A75ECB1F65565141DEF27825F1705441BB5B3E9663565141BEC2E8DEEC7054415C8FC265615651410AD7A3C0E170544148E17A145F565141A4703D2AD970544136AFFA3C5E56514158C44BF7BA705441CDCCCC2C37565141A4703D6AC070544114AE4781365651413D0AD7F3BB70544114AE47F13556514152B81E35B870544113684D663356514154702212B87054414B8FFCD22C565141478D9205B8705441004D2AEB1F5651414A4AD000B9705441000000501B565141EC51B87EBA70544152B81EE51C565141D7A370CDC67054416D11806A1D56514176B1979ECA705441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587512 - 1089203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002D000000295C8FE222565141EC51B84E06715441E17A14EE22565141C3F528AC087154419A9999F922565141713D0A470F7154413333335322565141713D0A671471544185EB51A821565141E17A146E197154410AD7A3E020565141C3F528CC1E715441A4703D6A2056514152B81E05227154410AD7A350205651410AD7A3F02371544148E17A4421565141F6285CCF25715441CDCCCC4C23565141AE47E18A2671544152B81EF52D565141B81E852B28715441EC51B82E395651410AD7A3E02971544114AE478140565141295C8F422B715441295C8F62455651417B14AEF72C715441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000230000005B47A7F54A565141230A52F02E715441A4703D3A4E565141666666763071544169CEF0EF4F5651411A94C49D31715441E35F09F85156514181B001563371544141036B3553565141E3F94AE53471544138D81500555651410F057CF337715441B81E85BB5556514185EB51183971544148E17A445656514114AE47013A715441E9A1FDD456565141A0DE63743A715441FBEDCC7857565141C1784B453A7154410E5F9AF05A565141052F93EA37715441FE82DEA55C5651416B3E29E036715441D7A3705D615651419A999929347154414178C463635651411CF2CB0133715441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587512 - 3351734
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002D000000295C8FE222565141EC51B84E06715441E17A14EE22565141C3F528AC087154419A9999F922565141713D0A470F7154413333335322565141713D0A671471544185EB51A821565141E17A146E197154410AD7A3E020565141C3F528CC1E715441A4703D6A2056514152B81E05227154410AD7A350205651410AD7A3F02371544148E17A4421565141F6285CCF25715441CDCCCC4C23565141AE47E18A2671544152B81EF52D565141B81E852B28715441EC51B82E395651410AD7A3E02971544114AE478140565141295C8F422B715441295C8F62455651417B14AEF72C715441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000230000005B47A7F54A565141230A52F02E715441A4703D3A4E565141666666763071544169CEF0EF4F5651411A94C49D31715441E35F09F85156514181B001563371544141036B3553565141E3F94AE53471544138D81500555651410F057CF337715441B81E85BB5556514185EB51183971544148E17A445656514114AE47013A715441E9A1FDD456565141A0DE63743A715441FBEDCC7857565141C1784B453A7154410E5F9AF05A565141052F93EA37715441FE82DEA55C5651416B3E29E036715441D7A3705D615651419A999929347154414178C463635651411CF2CB0133715441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587512 - 3535943
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000002D000000295C8FE222565141EC51B84E06715441E17A14EE22565141C3F528AC087154419A9999F922565141713D0A470F7154413333335322565141713D0A671471544185EB51A821565141E17A146E197154410AD7A3E020565141C3F528CC1E715441A4703D6A2056514152B81E05227154410AD7A350205651410AD7A3F02371544148E17A4421565141F6285CCF25715441CDCCCC4C23565141AE47E18A2671544152B81EF52D565141B81E852B28715441EC51B82E395651410AD7A3E02971544114AE478140565141295C8F422B715441295C8F62455651417B14AEF72C715441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000038000000A75ECB1F65565141DEF27825F1705441BB5B3E9663565141BEC2E8DEEC7054415C8FC265615651410AD7A3C0E170544148E17A145F565141A4703D2AD970544136AFFA3C5E56514158C44BF7BA705441CDCCCC2C37565141A4703D6AC070544114AE4781365651413D0AD7F3BB70544114AE47F13556514152B81E35B870544113684D663356514154702212B87054414B8FFCD22C565141478D9205B8705441004D2AEB1F5651414A4AD000B9705441000000501B565141EC51B87EBA70544152B81EE51C565141D7A370CDC67054416D11806A1D56514176B1979ECA705441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587529 - 982150
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000015000000E17A149E9B435141C3F5287C406C5441CDCCCC3C9C435141666666D6426C5441A4703D3AA543514148E17AC4416C544148E17AF4A3435141EC51B85E3D6C54419A9999099F4351410AD7A3602C6C5441713D0AF79C435141EC51B81E1E6C5441B81E853B9B4351415C8FC205166C5441EC51B87EAF43514148E17AF4126C5441713D0A67AC435141AE47E18A096C5441B81E859BA943514114AE47210A6C54419A9999E9A74351419A999999056C5441EC51B89EA6435141000000C0036C5441B81E85BB97435141EC51B81E056C5441AE47E15A90435141C3F528EC046C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F000000D75056029D435141BDFC6F6C1E6C5441E9B4484D9D435141B294AAEA1F6C544128C1BD6D9F43514161D6EF522B6C544176EB97C6A6435141FBB40D86256C54410CFB897BA9435141F6AA96C8236C5441BF0BFB61AC43514135B70BE9256C5441D7B17046B7435141B32BC174326C5441F1915F0BB943514137EDC2F3306C5441B5325826B343514105C9FB00296C5441EA2ADFCBB1435141DEB38E54256C5441803AD180B44351410EA29E3C226C5441F6B463C5C94351411C4A6DF6126C5441A90020EBD6435141C9151CE0096C5441D9EE2FD3D3435141BEC6E225FC6B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>588173 - 1212468
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000010000000B81E859B0C865141CDCCCC8C586F544185EB51480D8651417B14AE97576F5441A4703D8A1186514152B81EE5556F54411F85EB7112865141CDCCCC2C586F54418FC2F568148651415C8FC2D5576F5441000000501C86514114AE4741556F54411F85EB511786514114AE4751566F544152B81EA51586514185EB5128566F54418FC2F50813865141D7A3707D546F5441C3F5283C0E865141CDCCCCCC4E6F5441C3F5285C048651410AD7A3F0436F5441B81E859B01865141713D0AC74B6F5441F6285C3FFE855141AE47E1CA556F5441E17A148E07865141295C8FC2596F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000170000009918A21F1386514141F7EC8B546F54418FC2F50813865141D7A3707D546F54410AF80607138651413D1B267B546F5441F04818A41186514167F767D6526F5441869999BB108651416686CDC2516F544132DCBE6510865141908F075D516F5441C3F5283C0E865141CDCCCCCC4E6F5441C3F5285C048651410AD7A3F0436F5441B81E859B01865141713D0AC74B6F5441F6285C3FFE855141AE47E1CA556F5441120CE1A707865141F78AFBD8596F5441849898440786514123865D915A6F5441906B581908865141A1E5D4025B6F544120303E170B8651419A53264B596F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>588173 - 3490913
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000010000000B81E859B0C865141CDCCCC8C586F544185EB51480D8651417B14AE97576F5441A4703D8A1186514152B81EE5556F54411F85EB7112865141CDCCCC2C586F54418FC2F568148651415C8FC2D5576F5441000000501C86514114AE4741556F54411F85EB511786514114AE4751566F544152B81EA51586514185EB5128566F54418FC2F50813865141D7A3707D546F5441C3F5283C0E865141CDCCCCCC4E6F5441C3F5285C048651410AD7A3F0436F5441B81E859B01865141713D0AC74B6F5441F6285C3FFE855141AE47E1CA556F5441E17A148E07865141295C8FC2596F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000170000009918A21F1386514141F7EC8B546F54418FC2F50813865141D7A3707D546F54410AF80607138651413D1B267B546F5441F04818A41186514167F767D6526F5441869999BB108651416686CDC2516F544132DCBE6510865141908F075D516F5441C3F5283C0E865141CDCCCCCC4E6F5441C3F5285C048651410AD7A3F0436F5441B81E859B01865141713D0AC74B6F5441F6285C3FFE855141AE47E1CA556F5441120CE1A707865141F78AFBD8596F5441849898440786514123865D915A6F5441906B581908865141A1E5D4025B6F544120303E170B8651419A53264B596F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>588333 - 3077220
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000120000008FC2F5D8F9345141AE47E12A164254417B14AE77F8345141E17A14DE13425441295C8FE2C0345141E17A14CE16425441666666B6C134514166666616204254411F85EB41C8345141A4703D3A1E4254417B14AE47CA345141A4703D4A1E4254411F85EB71CB3451415C8FC2351F425441B81E85BBCC345141666666562242544114AE47D1CE34514114AE47A1264254418FC2F598D0345141713D0AB7284254411F85EB11D2345141D7A3708D2A425441B81E855BD3345141E17A146E3342544114AE47E1EC34514185EB511832425441713D0A37EC3451418FC2F5C829425441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000006000000750964A1D2345141D30673AD2E425441940E4756D3345141F620A66E33425441D046AFE0EC3451415E73E11032425441F6F5A280EC345141A7F0A3602D425441D1B73580EC345141FCD04E5B2D425441750964A1D2345141D30673AD2E425441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>588333 - 3381191
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000120000008FC2F5D8F9345141AE47E12A164254417B14AE77F8345141E17A14DE13425441295C8FE2C0345141E17A14CE16425441666666B6C134514166666616204254411F85EB41C8345141A4703D3A1E4254417B14AE47CA345141A4703D4A1E4254411F85EB71CB3451415C8FC2351F425441B81E85BBCC345141666666562242544114AE47D1CE34514114AE47A1264254418FC2F598D0345141713D0AB7284254411F85EB11D2345141D7A3708D2A425441B81E855BD3345141E17A146E3342544114AE47E1EC34514185EB511832425441713D0A37EC3451418FC2F5C829425441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000006000000750964A1D2345141D30673AD2E425441940E4756D3345141F620A66E33425441D046AFE0EC3451415E73E11032425441F6F5A280EC345141A7F0A3602D425441D1B73580EC345141FCD04E5B2D425441750964A1D2345141D30673AD2E425441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589179 - 3090951
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000440000007B14AE67134751413D0AD733A8545441E17A14CE134751417B14AE27A8545441E17A141E1447514133333303A8545441AE47E18A144751417B14AE97A7545441B81E85CB144751419A999969A7545441B81E851B15475141AE47E13AA75454415C8FC255154751415C8FC245A754544114AE4701164751418FC2F578A754544152B81EC5164751411F85EBE1A7545441713D0A9717475141333333B3A854544148E17AA418475141B81E853BAA54544185EB51681947514185EB5198AB5454411F85EBD11A475141333333A3AC5454417B14AE871C4751417B14AEB7AD545441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006D0000008FC2F5A81A47514148E17AB4A8545441CDCCCCCC1D47514100000020AA5454411F85EBF11E475141F6285CFFAA545441EC51B85E1F475141D7A370ADAA545441A4703DAA204751413D0AD7B3A95454419A9999592247514166666616A7545441713D0A3725475141000000C0A7545441713D0A97284751419A9999C9A7545441AE47E1BA3047514114AE47A1A6545441B81E853B364751410AD7A390A65454417B14AE2738475141B81E85DBA6545441D63805793A475141F71E2836A7545441F7E67D413F475141ABB70C72A7545441207111F643475141D683BD10A7545441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589179 - 3432857
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000440000007B14AE67134751413D0AD733A8545441E17A14CE134751417B14AE27A8545441E17A141E1447514133333303A8545441AE47E18A144751417B14AE97A7545441B81E85CB144751419A999969A7545441B81E851B15475141AE47E13AA75454415C8FC255154751415C8FC245A754544114AE4701164751418FC2F578A754544152B81EC5164751411F85EBE1A7545441713D0A9717475141333333B3A854544148E17AA418475141B81E853BAA54544185EB51681947514185EB5198AB5454411F85EBD11A475141333333A3AC5454417B14AE871C4751417B14AEB7AD545441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006D0000008FC2F5A81A47514148E17AB4A8545441CDCCCCCC1D47514100000020AA5454411F85EBF11E475141F6285CFFAA545441EC51B85E1F475141D7A370ADAA545441A4703DAA204751413D0AD7B3A95454419A9999592247514166666616A7545441713D0A3725475141000000C0A7545441713D0A97284751419A9999C9A7545441AE47E1BA3047514114AE47A1A6545441B81E853B364751410AD7A390A65454417B14AE2738475141B81E85DBA6545441D63805793A475141F71E2836A7545441F7E67D413F475141ABB70C72A7545441207111F643475141D683BD10A7545441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589424 - 55001
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002D0000007B14AE973FBE5041CDCCCC9CF3005541B81E858B3EBE50415C8FC2A5EF0055411F85EBB13EBE504114AE4781EC005541AE47E14A3FBE5041C3F5281CEA0055413D0AD7D33FBE5041295C8FF2E8005541AE47E1EA3ABE5041295C8F52E5005541333333A33EBE5041B81E85ABDF0055417B14AEC743BE504166666696D9005541C3F528BC49BE50411F85EB91D4005541713D0AE74FBE5041295C8FD2D0005541AE47E16A53BE50417B14AEE7CD005541713D0AA756BE5041A4703D2ACB0055419A9999F959BE504185EB5148C800554185EB514858BE5041713D0AE7C6005541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005E00000029111BA53FBE5041E77C0ED0E8005541F515A8C83ABE5041BBA46046E5005541CCC91E173CBE5041E91F598AE3005541333333A33EBE5041B81E85ABDF005541D0C76C0342BE5041C8AF52ADDB0055417B14AEC743BE504166666696D9005541B37AB7DA43BE504138395C86D90055413180959449BE5041388DF5A0D4005541F39EAFF94FBE5041CE6215C3D0005541AE47E16A53BE50417B14AEE7CD005541713D0AA756BE5041A4703D2ACB0055410B16EDD759BE5041D9D08865C8005541A6C60D3958BE5041661D3CE9C6005541F8316DAF58BE504107E1E971C4005541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589532 - 180791
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A0000009A99992914B650417B14AE478D0655417B14AED714B65041E17A145E730655411F85EBE113B650413D0AD753720655419A99992901B65041C3F5289C71065541666666F6FFB55041CDCCCC8C7206554185EB5178FAB55041B81E857B8D065541713D0A07F9B550410000009099065541B81E858BF9B550418FC2F5589B065541666666B613B650419A9999599C0655419A99992914B650417B14AE478D065541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000E8A65A2606B65041543695D49B065541C96D66B613B650412EA298599C0655419A99992914B650417B14AE478D0655417B14AED714B65041E17A145E730655411F85EBE113B650413D0AD753720655415B290A0408B65041597667DF71065541587F992901B650413C83299C71065541FC521B4000B650418B24105372065541DB7A67F6FFB550413EF4CB8C72065541D3035378FAB5504147E8847B8D065541713D0A07F9B550410000009099065541CB83858BF9B550416EC6F5589B065541E8A65A2606B65041543695D49B065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589532 - 388083
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A0000009A99992914B650417B14AE478D0655417B14AED714B65041E17A145E730655411F85EBE113B650413D0AD753720655419A99992901B65041C3F5289C71065541666666F6FFB55041CDCCCC8C7206554185EB5178FAB55041B81E857B8D065541713D0A07F9B550410000009099065541B81E858BF9B550418FC2F5589B065541666666B613B650419A9999599C0655419A99992914B650417B14AE478D065541
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000E8A65A2606B65041543695D49B065541C96D66B613B650412EA298599C0655419A99992914B650417B14AE478D0655417B14AED714B65041E17A145E730655411F85EBE113B650413D0AD753720655415B290A0408B65041597667DF71065541587F992901B650413C83299C71065541FC521B4000B650418B24105372065541DB7A67F6FFB550413EF4CB8C72065541D3035378FAB5504147E8847B8D065541713D0A07F9B550410000009099065541CB83858BF9B550416EC6F5589B065541E8A65A2606B65041543695D49B065541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589978 - 39794
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000016000000AE47E1EAED9C50411F85EBF1E37B5441B81E85FBF79C5041B81E85DBE17B5441713D0AB7059D50417B14AE47E07B54411F85EB110C9D504148E17A24E07B54418FC2F598209D5041713D0AA7E17B544148E17A44239D50418FC2F5A8DB7B5441C3F528EC259D504185EB5198D77B54413D0AD7C32B9D5041B81E855BD17B544185EB51D8309D5041CDCCCC0CCC7B5441A4703D0A309D50410AD7A320CC7B5441EC51B85E209D5041AE47E1FACE7B5441333333431A9D5041713D0A17D07B54418FC2F538089D5041D7A3705DD27B54415C8FC255FF9C5041A4703D2AD47B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000001DDB3460E49C5041C2798DDDE87B5441DD941617ED9C50411F0292D8E57B54411E67F240ED9C50412E1782C8E57B54413E1C4A86F19C5041F950DAC2E47B544100583A97F49C50415EFBD202E47B544102D115CEF49C5041BF1FE0F9E37B544110ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B5441DACEA3E1FD9C504166C9D77EE27B544174047CECFD9C504110EA127DE27B54413E3B4637059D5041016CC096E17B54410A1E724E069D504143653E74E17B5441FCACB282099D5041AAABD870E17B5441691C90890C9D50414B8B2156E17B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589978 - 79078
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000016000000AE47E1EAED9C50411F85EBF1E37B5441B81E85FBF79C5041B81E85DBE17B5441713D0AB7059D50417B14AE47E07B54411F85EB110C9D504148E17A24E07B54418FC2F598209D5041713D0AA7E17B544148E17A44239D50418FC2F5A8DB7B5441C3F528EC259D504185EB5198D77B54413D0AD7C32B9D5041B81E855BD17B544185EB51D8309D5041CDCCCC0CCC7B5441A4703D0A309D50410AD7A320CC7B5441EC51B85E209D5041AE47E1FACE7B5441333333431A9D5041713D0A17D07B54418FC2F538089D5041D7A3705DD27B54415C8FC255FF9C5041A4703D2AD47B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000001DDB3460E49C5041C2798DDDE87B5441DD941617ED9C50411F0292D8E57B54411E67F240ED9C50412E1782C8E57B54413E1C4A86F19C5041F950DAC2E47B544100583A97F49C50415EFBD202E47B544102D115CEF49C5041BF1FE0F9E37B544110ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B5441DACEA3E1FD9C504166C9D77EE27B544174047CECFD9C504110EA127DE27B54413E3B4637059D5041016CC096E17B54410A1E724E069D504143653E74E17B5441FCACB282099D5041AAABD870E17B5441691C90890C9D50414B8B2156E17B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589981 - 39807
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001D000000F6285CBF5D9D5041D7A3707DC47A54410AD7A3105D9D5041E17A140EBA7A54411F85EBB15A9D5041AE47E16AB17A5441A4703D6A569D504114AE4741A97A54410AD7A3B0529D5041D7A3707DA27A54413D0AD7534F9D5041EC51B85E9C7A5441000000C0499D5041666666E6957A54418FC2F528449D5041CDCCCC1C917A5441EC51B8CE3F9D504152B81E158E7A5441F6285C6F3B9D5041B81E858B8B7A54418FC2F568349D5041C3F5282C887A5441C3F5287C2F9D5041C3F5281C927A5441E17A143E369D5041D7A370FD947A5441333333033A9D5041D7A370FD967A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000077CF24405F9D5041B039ED15D77A544186FC79BB5F9D50419ABECEE5D67A5441AD21AEED5E9D5041B03590F2CB7A5441727E14CD5E9D504154223DD5C57A5441D0CB669A5E9D504104D06299C07A54415A21A3505E9D504179086ADBB97A544186C1F6485E9D50418AEF059AB97A5441A9DD2AE05B9D5041EAD45B08B27A54418B80CE7B5B9D5041135613CDB07A54415F51FF4C589D50410A56A8BEA87A5441A544217D569D50415C147E39A97A5441D7EA9092599D50418F1DDC46AF7A5441F88D54C85A9D5041B9FC8DBCB17A544148F9A4EB5B9D504129D940E2B57A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589981 - 70855
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001D000000F6285CBF5D9D5041D7A3707DC47A54410AD7A3105D9D5041E17A140EBA7A54411F85EBB15A9D5041AE47E16AB17A5441A4703D6A569D504114AE4741A97A54410AD7A3B0529D5041D7A3707DA27A54413D0AD7534F9D5041EC51B85E9C7A5441000000C0499D5041666666E6957A54418FC2F528449D5041CDCCCC1C917A5441EC51B8CE3F9D504152B81E158E7A5441F6285C6F3B9D5041B81E858B8B7A54418FC2F568349D5041C3F5282C887A5441C3F5287C2F9D5041C3F5281C927A5441E17A143E369D5041D7A370FD947A5441333333033A9D5041D7A370FD967A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001400000077CF24405F9D5041B039ED15D77A544186FC79BB5F9D50419ABECEE5D67A5441AD21AEED5E9D5041B03590F2CB7A5441727E14CD5E9D504154223DD5C57A5441D0CB669A5E9D504104D06299C07A54415A21A3505E9D504179086ADBB97A544186C1F6485E9D50418AEF059AB97A5441A9DD2AE05B9D5041EAD45B08B27A54418B80CE7B5B9D5041135613CDB07A54415F51FF4C589D50410A56A8BEA87A5441A544217D569D50415C147E39A97A5441D7EA9092599D50418F1DDC46AF7A5441F88D54C85A9D5041B9FC8DBCB17A544148F9A4EB5B9D504129D940E2B57A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>590067 - 39630
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001600000014AE47B1779E5041F6285C5F087B5441CDCCCCFC849E5041000000C0117B5441F6285CDF839E5041EC51B83E137B544185EB5108889E5041EC51B83E167B5441A4703D5A9B9E50413D0AD7A3227B5441EC51B84EA69E5041AE47E1CA287B5441333333D3AD9E504152B81EF52D7B54417B14AE17B19E5041333333F3307B5441AE47E11AB39E50413D0AD7C3307B54410AD7A320B89E5041CDCCCC1C2A7B5441713D0A37B39E504100000050257B5441EC51B86EAF9E504152B81ED5227B544100000080A59E50415C8FC2051E7B5441A4703D9AA19E5041EC51B8AE1B7B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000333333037D9E5041295C8FA2097B5441890EA06A7F9E5041E502DF640B7B54410695635D819E50412AFBD1D10C7B54419F0BDB4B839E50415899E1FA0D7B544178437951899E5041DDEF1086117B54414071784D8C9E5041542D351B137B54412F8D3A1D8F9E5041570956D1147B5441E10E5061949E5041D4B5571A187B54411169C283979E50419599F30E1A7B5441DE06311A989E50415592CC6C1A7B544137A9A8049C9E50414C4595201D7B5441196D7A8AA09E504176E7C33F207B544126D209C1A59E50411539464D237B544148E17A64A99E5041EC51B86E257B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>590067 - 85032
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000001600000014AE47B1779E5041F6285C5F087B5441CDCCCCFC849E5041000000C0117B5441F6285CDF839E5041EC51B83E137B544185EB5108889E5041EC51B83E167B5441A4703D5A9B9E50413D0AD7A3227B5441EC51B84EA69E5041AE47E1CA287B5441333333D3AD9E504152B81EF52D7B54417B14AE17B19E5041333333F3307B5441AE47E11AB39E50413D0AD7C3307B54410AD7A320B89E5041CDCCCC1C2A7B5441713D0A37B39E504100000050257B5441EC51B86EAF9E504152B81ED5227B544100000080A59E50415C8FC2051E7B5441A4703D9AA19E5041EC51B8AE1B7B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D000000333333037D9E5041295C8FA2097B5441890EA06A7F9E5041E502DF640B7B54410695635D819E50412AFBD1D10C7B54419F0BDB4B839E50415899E1FA0D7B544178437951899E5041DDEF1086117B54414071784D8C9E5041542D351B137B54412F8D3A1D8F9E5041570956D1147B5441E10E5061949E5041D4B5571A187B54411169C283979E50419599F30E1A7B5441DE06311A989E50415592CC6C1A7B544137A9A8049C9E50414C4595201D7B5441196D7A8AA09E504176E7C33F207B544126D209C1A59E50411539464D237B544148E17A64A99E5041EC51B86E257B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>590126 - 151528
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000047000000F6285C5F70105141C3F5281CF02F54410AD7A3607610514114AE47F1F82F5441CDCCCC8C7B105141333333D3FB2F544148E17A7491105141CDCCCC3C09305441666666D6A0105141E17A148E123054419A999929A2105141295C8FD21230544148E17A04A410514152B81EF511305441C3F5288CC0105141CDCCCCDCEE2F5441CDCCCC9CCA1051411F85EB31F12F54419A999959D1105141EC51B8BEF22F5441000000C0D21051413D0AD713F22F54415C8FC255DC105141295C8F52DE2F544114AE47B1D810514152B81E25DD2F544152B81E15D9105141E17A140EDC2F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B0000007E3FB9A27D10514128F2053EB82F5441CDCCCCDC7B105141333333D3B72F54419B468BBD79105141F3171553B72F54412CB41A536E10514186BEA6C9B42F5441ABB4058C6F1051415DA433C8B62F54413C65D6157310514170541919B92F544146AA58447710514166E9B5F6BA2F5441A06843A47B1051418204FF69BB2F544195FEB5F37F105141A2B30E49BB2F5441FD94137C851051410E041431BA2F54417E3FB9A27D10514128F2053EB82F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>651053 - 56147
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000020000000CDCCCC3C1C58514152B81E05F2EB5441E17A14BE1C58514100000020F1EB5441A4703D4A1D5851419A9999B9EFEB544148E17AA41D58514148E17A74EEEB54410AD7A3A01D5851418FC2F5C8EDEB5441295C8F521E58514133333303ECEB5441C3F528EC1E585141D7A370CDEAEB5441C3F5286C1F5851415C8FC235EAEB5441E17A147E1F585141A4703D2AEAEB5441295C8F121F58514114AE47D1E9EB544152B81E951B585141A4703DEAE6EB5441295C8F3218585141EC51B8DEE5EB54413D0AD753145851417B14AEB7E4EB5441AE47E15A0F58514133333313E3EB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002200000009FBD1EFFF575141485719A8E5EB5441D0F6677FFF575141FAE349A5E5EB5441D091F071FD575141FEAE8EF3E4EB5441CDB3D034FA5751411823E308E4EB5441D1C821DCF9575141B372C9EFE3EB5441FA4105D0F8575141FCA57C47E4EB54415C8FC2D5F1575141295C8FB2E6EB5441C3F528ACED57514185EB51F8E9EB544185EB5188EE57514166666606ECEB5441EC51B88EF0575141C3F528CCEEEB5441A4703D8AF3575141713D0A87F2EB5441CDCCCC0CF2575141AE47E10AF6EB5441EC51B8BEEE5751418FC2F528FBEB54418FC2F5C8ED5751415C8FC295FBEB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>630746 - 3111917
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F00000014AE47B1BEF550419A99998999155541B81E85ABB5F55041CDCCCC1C90155541A4703D8AB4F55041713D0A779115554148E17A74B3F55041295C8F1295155541E17A141EB3F55041AE47E1BA971555413D0AD713B3F55041D7A3700D9A1555417B14AE27B3F5504185EB51789D155541AE47E13AB6F550413D0AD7B3A0155541CDCCCC2CB9F55041E17A142EA3155541AE47E11ABDF550410AD7A330A6155541A4703DEABFF55041333333E3A7155541333333A3C3F5504152B81E15A9155541B81E856BCAF550411F85EB91AA1555413D0AD7B3D1F55041B81E85ABAB155541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000200000007B14AE07E7F550418FC2F5D8B2155541B81E85CBE9F55041C3F5287CAB1555412A5495D1E6F550411D40BC22AA155541C40E36D3E0F550414B4B5A31A9155541711D4CBCDEF55041B334E933A71555412B5B4D27DBF55041896D3851A4155541E6984E92D7F5504121E731A0A2155541DEC90667D2F550413D4EA3B59F155541A1C9C44BCEF55041DA5400099F155541C3F5281CCCF5504185EB51C89E155541A4703D9AC9F550419A9999B99E1555415C8FC255C7F55041A4703D7A9E15554114AE4781C3F55041AE47E12A9D155541D7A3700DC1F55041AE47E1AA9B155541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>630746 - 3488129
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001F00000014AE47B1BEF550419A99998999155541B81E85ABB5F55041CDCCCC1C90155541A4703D8AB4F55041713D0A779115554148E17A74B3F55041295C8F1295155541E17A141EB3F55041AE47E1BA971555413D0AD713B3F55041D7A3700D9A1555417B14AE27B3F5504185EB51789D155541AE47E13AB6F550413D0AD7B3A0155541CDCCCC2CB9F55041E17A142EA3155541AE47E11ABDF550410AD7A330A6155541A4703DEABFF55041333333E3A7155541333333A3C3F5504152B81E15A9155541B81E856BCAF550411F85EB91AA1555413D0AD7B3D1F55041B81E85ABAB155541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000200000007B14AE07E7F550418FC2F5D8B2155541B81E85CBE9F55041C3F5287CAB1555412A5495D1E6F550411D40BC22AA155541C40E36D3E0F550414B4B5A31A9155541711D4CBCDEF55041B334E933A71555412B5B4D27DBF55041896D3851A4155541E6984E92D7F5504121E731A0A2155541DEC90667D2F550413D4EA3B59F155541A1C9C44BCEF55041DA5400099F155541C3F5281CCCF5504185EB51C89E155541A4703D9AC9F550419A9999B99E1555415C8FC255C7F55041A4703D7A9E15554114AE4781C3F55041AE47E12A9D155541D7A3700DC1F55041AE47E1AA9B155541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>890061 - 1537851
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001B0000005C8FC25522005141A4703DBACBDE5441333333A324005141295C8FE2CADE5441333333A3250051419A999929CCDE5441C3F528EC2B0051418FC2F598C9DE54415C8FC2D5300051411F85EB11C8DE54413D0AD77333005141000000A0C7DE544148E17AF43200514185EB5188C6DE5441E17A144E35005141AE47E1CAC5DE544114AE47813E005141B81E859BC2DE544185EB51283F00514133333333C1DE5441AE47E1AA3E0051411F85EB61C0DE5441E17A147E3E005141713D0A17C0DE5441EC51B8BE3D0051417B14AED7BEDE5441A4703DAA3C005141A4703D0ABDDE5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000BA7D074325005141E7F17A1CC5DE54413427408B2D0051417BE64241C2DE544134A1799733005141C5D54F2BC0DE5441A4703DAA3C005141A4703D0ABDDE5441D7A370CD3B005141A4703D9ABBDE5441666666D63A005141EC51B8FEB9DE5441276C120A3A00514130B957A9B8DE544114AE47913900514152B81ED5B8DE544155C0AFEE33005141B289D7D3BADE5441194574E12F00514130C10D43BCDE5441D20EA8BC2B005141CFBD9BBABDDE5441ACE4E5B428005141F61C40CDBEDE5441E343FB671E005141FF17C172C2DE5441A4703D0A20005141EC51B83EC5DE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>890061 - 3808699
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001B0000005C8FC25522005141A4703DBACBDE5441333333A324005141295C8FE2CADE5441333333A3250051419A999929CCDE5441C3F528EC2B0051418FC2F598C9DE54415C8FC2D5300051411F85EB11C8DE54413D0AD77333005141000000A0C7DE544148E17AF43200514185EB5188C6DE5441E17A144E35005141AE47E1CAC5DE544114AE47813E005141B81E859BC2DE544185EB51283F00514133333333C1DE5441AE47E1AA3E0051411F85EB61C0DE5441E17A147E3E005141713D0A17C0DE5441EC51B8BE3D0051417B14AED7BEDE5441A4703DAA3C005141A4703D0ABDDE5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000BA7D074325005141E7F17A1CC5DE54413427408B2D0051417BE64241C2DE544134A1799733005141C5D54F2BC0DE5441A4703DAA3C005141A4703D0ABDDE5441D7A370CD3B005141A4703D9ABBDE5441666666D63A005141EC51B8FEB9DE5441276C120A3A00514130B957A9B8DE544114AE47913900514152B81ED5B8DE544155C0AFEE33005141B289D7D3BADE5441194574E12F00514130C10D43BCDE5441D20EA8BC2B005141CFBD9BBABDDE5441ACE4E5B428005141F61C40CDBEDE5441E343FB671E005141FF17C172C2DE5441A4703D0A20005141EC51B83EC5DE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>592713 - 228128
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000100000001030000000100000017000000D7A370DD64AC51419A99994939965441EC51B8FE61AC5141F6285C5F3A965441D7A370FD62AC5141000000403D965441EC51B85E62AC51415C8FC2D53F965441D7A3707D5DAC5141E17A149E41965441295C8F325DAC5141EC51B8FE44965441C3F528EC5FAC5141333333A3489654418FC2F5E862AC5141CDCCCC6C51965441E17A146E63AC5141CDCCCC4C629654413333337368AC5141F6285C0F5E9654417B14AE876CAC5141A4703D1A5B965441EC51B8FE70AC5141EC51B82E5896544114AE47E175AC5141CDCCCC0C569654417B14AE777AAC514152B81E6554965441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000260000009F4B139A84AC514122B12B9040965441288C67E182AC5141F0CBBEF6349654415CD866C07FAC51415AC8AD8F36965441FEDCA7B87EAC5141B17FC5113A96544179C006467DAC5141ECD914B33C9654416040AD517BAC5141CADE33E53E9654413753A1AD79AC51414FFBD457409654414987A2C577AC514126EDDD9241965441D431E10876AC51419F89B65E42965441E1F82F7174AC514106B94B2D42965441D9863CF46FAC5141B4C2F8434596544177C459D56FAC51415D39580A489654417FF85AED6DAC5141EED5C1234A965441E76E767D6BAC514173F262964B965441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>593161 - 5243158
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000290000009A999979A5895141B81E85FBEE995441CDCCCCBCA98951413D0AD743F6995441E17A148EB4895141B81E856BEA995441AE47E1CAB5895141AE47E15AE8995441B81E85BBB5895141AE47E11AE799544100000030B589514148E17A64E5995441E17A14AEB5895141E17A14BEE3995441CDCCCC3CB7895141CDCCCCACE2995441E17A142EB9895141D7A3705DE2995441EC51B8CEBA8951413D0AD7A3E1995441A4703D9ABC8951410AD7A330E19954415C8FC2D5BE89514185EB5128E0995441F6285C2FC18951419A999949DF99544152B81E25C2895141000000A0DE995441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000045000000689C8A08A7895141102C3EB2EA995441D4844B91AC8951419463872AF3995441E17A148EB4895141B81E856BEA995441AE47E1CAB5895141AE47E15AE8995441B81E85BBB5895141AE47E11AE799544100000030B589514148E17A64E5995441E17A14AEB5895141E17A14BEE3995441CDCCCC3CB7895141CDCCCCACE2995441E17A142EB9895141D7A3705DE2995441EC51B8CEBA8951413D0AD7A3E1995441A4703D9ABC8951410AD7A330E19954415C8FC2D5BE89514185EB5128E0995441F6285C2FC18951419A999949DF99544152B81E25C2895141000000A0DE995441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>593614 - 3004331
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001C000000AE47E1FABC8A5141713D0A977096544114AE47E1B98A514148E17AC47296544185EB5198B58A5141666666C6769654415C8FC255B48A51413D0AD7037896544166666686B48A5141CDCCCC3C7A9654415C8FC2B5B38A514185EB51287D9654419A9999B9C38A514148E17A947A9654415C8FC2F5C58A51415C8FC2E58D965441CDCCCCECD88A514152B81ED58C9654410AD7A380DB8A51418FC2F5389496544114AE4751DE8A51415C8FC2059296544185EB51A8E18A5141713D0AC78E965441F6285CDFE68A5141EC51B83E8896544185EB5188EE8A5141295C8F0281965441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001100000013E2FCB2BA8A514197465B087C9654419B330BC3B38A5141CBC5F12E7D965441F3EC2BD9B58A5141516CB2E088965441B6AAB112B78A5141F6E709C5909654412559874EBA8A5141EE716CDF929654415E12DBCBC38A5141A53DA76097965441B3C9BD6EC88A51419D082DCA9896544143625937CC8A514127B4071C9996544194082909D58A5141FD3C4323979654417E3214F7D98A5141C9FE50319596544151885D69DB8A5141AEC1965194965441247995EAD88A51412F943ED58C9654418592F8D2D48A5141F20313108D965441905455F3C58A5141F59108148E965441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>593614 - 3819986
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001C000000AE47E1FABC8A5141713D0A977096544114AE47E1B98A514148E17AC47296544185EB5198B58A5141666666C6769654415C8FC255B48A51413D0AD7037896544166666686B48A5141CDCCCC3C7A9654415C8FC2B5B38A514185EB51287D9654419A9999B9C38A514148E17A947A9654415C8FC2F5C58A51415C8FC2E58D965441CDCCCCECD88A514152B81ED58C9654410AD7A380DB8A51418FC2F5389496544114AE4751DE8A51415C8FC2059296544185EB51A8E18A5141713D0AC78E965441F6285CDFE68A5141EC51B83E8896544185EB5188EE8A5141295C8F0281965441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001100000013E2FCB2BA8A514197465B087C9654419B330BC3B38A5141CBC5F12E7D965441F3EC2BD9B58A5141516CB2E088965441B6AAB112B78A5141F6E709C5909654412559874EBA8A5141EE716CDF929654415E12DBCBC38A5141A53DA76097965441B3C9BD6EC88A51419D082DCA9896544143625937CC8A514127B4071C9996544194082909D58A5141FD3C4323979654417E3214F7D98A5141C9FE50319596544151885D69DB8A5141AEC1965194965441247995EAD88A51412F943ED58C9654418592F8D2D48A5141F20313108D965441905455F3C58A5141F59108148E965441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>638561 - 56464
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000020000000B000000AE47E1FAABE55041000000B06A2C55411F85EB21A8E5504185EB51D8672C5541CDCCCCBC98E55041AE47E15A7C2C554152B81EF599E550413D0AD7737D2C55419A9999699CE5504148E17AC47F2C5541333333139EE55041AE47E11A812C5541EC51B8EEA6E55041C3F5283C882C55411F85EB31AEE55041B81E854B7E2C5541D7A3706DB6E550418FC2F538722C55411F85EB01ADE55041E17A146E6B2C5541AE47E1FAABE55041000000B06A2C55410B000000E17A143EAEE5504100000080752C55415C8FC265ADE550417B14AE47782C55413D0AD7D3AAE5504114AE4791 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000000E000000FA1D598C9FE550418C680948732C5541B2DDB1C598E55041C7B4E1627C2C554152B81EF599E550413D0AD7737D2C5541793D99C29BE550415C8900277F2C554140CB48209EE55041D13CE307812C55412696BBDBA2E55041EBD096F4842C55418B6DD5F7A6E55041BBB1AF2F882C5541B3E50B2EAEE550413654D2507E2C554147159166B6E55041340D0A43722C554143CDB4DFAFE55041575F317F6D2C55411F85EB01ADE55041E17A146E6B2C5541AE47E1FAABE55041000000B06A2C55416EFA3325A8E55041E5D7BEDA672C5541FA1D598C9FE550418C680948732C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>595692 - 3121495
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000CDCCCC9C944F5141AE47E14AFD7B5441C3F5286C934F51417B14AEE7087C544166666656AD4F514166666646097C5441713D0A47B34F51418FC2F558E97B54418FC2F5B8B34F514114AE47D1E47B54410AD7A3B0964F5141713D0AF7E47B5441CDCCCC3C964F51418FC2F568ED7B5441CDCCCC9C944F5141AE47E14AFD7B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D4909A48964F5141BA36001EED7B544104443E8D964F51415140A68BE77B54415C7460AD964F51416F06F133E57B5441432B3494964F514146CA5F63E37B54410265DB43964F514143F65D6CE37B544128845E72944F51411A8F77A0E37B5441D698A873924F514146ECA0D9E37B544186D5A949904F51414384A217E47B5441525E99B78D4F514144553865E47B54413B7CC1B38D4F514189716320E57B5441A6CB9EA38D4F5141E5083032E87B5441A1018AA28D4F5141BA36001EED7B5441D4909A48964F5141BA36001EED7B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>595692 - 3508837
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000CDCCCC9C944F5141AE47E14AFD7B5441C3F5286C934F51417B14AEE7087C544166666656AD4F514166666646097C5441713D0A47B34F51418FC2F558E97B54418FC2F5B8B34F514114AE47D1E47B54410AD7A3B0964F5141713D0AF7E47B5441CDCCCC3C964F51418FC2F568ED7B5441CDCCCC9C944F5141AE47E14AFD7B5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D4909A48964F5141BA36001EED7B544104443E8D964F51415140A68BE77B54415C7460AD964F51416F06F133E57B5441432B3494964F514146CA5F63E37B54410265DB43964F514143F65D6CE37B544128845E72944F51411A8F77A0E37B5441D698A873924F514146ECA0D9E37B544186D5A949904F51414384A217E47B5441525E99B78D4F514144553865E47B54413B7CC1B38D4F514189716320E57B5441A6CB9EA38D4F5141E5083032E87B5441A1018AA28D4F5141BA36001EED7B5441D4909A48964F5141BA36001EED7B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>596208 - 3077230
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000180000000AD7A3604B4F5141D7A370DD767C544152B81EA54E4F514148E17A14767C544152B81E75504F51418FC2F518727C544185EB5138514F51410AD7A3006F7C5441AE47E16A514F51413D0AD7436B7C544152B81EE5504F514152B81ED5667C5441E17A141E4F4F514148E17A745C7C5441CDCCCC5C4D4F5141C3F5284C517C54413D0AD7634C4F51417B14AE67487C5441CDCCCCBC4B4F51417B14AE873C7C5441EC51B8DE3A4F51413D0AD7433B7C5441D7A3706D3B4F5141666666D6437C544114AE47E13B4F514185EB5198467C5441D7A3706D3C4F51415C8FC2B54C7C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000076DD3892404F5141671E69318A7C5441AFE7F158414F514153E5D29F897C544114F91FA1424F5141A82338F6867C544187E62111474F51414EA90DD9807C5441153EF09D4A4F51411B7E8E367C7C5441A495BE2A4E4F5141C8F14DAD777C544156EDD6A24E4F51411C220715767C5441050D17634C4F51413245599F767C5441ADD482214A4F5141278A0F2A777C5441AA59665C454F514112A0364F787C5441A00E038E404F5141891A775A797C54415259A78E404F5141E2AF9BEE7A7C5441ABA59691404F5141DF584886827C544176DD3892404F5141671E69318A7C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>596208 - 3384068
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000180000000AD7A3604B4F5141D7A370DD767C544152B81EA54E4F514148E17A14767C544152B81E75504F51418FC2F518727C544185EB5138514F51410AD7A3006F7C5441AE47E16A514F51413D0AD7436B7C544152B81EE5504F514152B81ED5667C5441E17A141E4F4F514148E17A745C7C5441CDCCCC5C4D4F5141C3F5284C517C54413D0AD7634C4F51417B14AE67487C5441CDCCCCBC4B4F51417B14AE873C7C5441EC51B8DE3A4F51413D0AD7433B7C5441D7A3706D3B4F5141666666D6437C544114AE47E13B4F514185EB5198467C5441D7A3706D3C4F51415C8FC2B54C7C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000076DD3892404F5141671E69318A7C5441AFE7F158414F514153E5D29F897C544114F91FA1424F5141A82338F6867C544187E62111474F51414EA90DD9807C5441153EF09D4A4F51411B7E8E367C7C5441A495BE2A4E4F5141C8F14DAD777C544156EDD6A24E4F51411C220715767C5441050D17634C4F51413245599F767C5441ADD482214A4F5141278A0F2A777C5441AA59665C454F514112A0364F787C5441A00E038E404F5141891A775A797C54415259A78E404F5141E2AF9BEE7A7C5441ABA59691404F5141DF584886827C544176DD3892404F5141671E69318A7C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>597055 - 1770378
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000713D0A6758D05041295C8FD2027D5441000000A058D0504114AE4781027D5441D7A370DD5AD05041AE47E1DA037D54411F85EBB15BD0504148E17A14037D5441CDCCCCEC91D050417B14AE77D67C544114AE476189D05041295C8F62D17C54415C8FC21550D05041D7A3707DFD7C5441713D0A6758D05041295C8FD2027D5441
+</a>
+
+<b>
+010600000001000000010300000001000000060000002CF06AC55BD0504114F78CE6007D5441AE6EAE2359D05041363CA4D0027D54418FC2F5A861D050413D0AD713087D54419A9999199BD05041C3F528DCDB7C5441CDCCCCEC91D050417B14AE77D67C54412CF06AC55BD0504114F78CE6007D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>597055 - 3544560
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000713D0A6758D05041295C8FD2027D5441000000A058D0504114AE4781027D5441D7A370DD5AD05041AE47E1DA037D54411F85EBB15BD0504148E17A14037D5441CDCCCCEC91D050417B14AE77D67C544114AE476189D05041295C8F62D17C54415C8FC21550D05041D7A3707DFD7C5441713D0A6758D05041295C8FD2027D5441
+</a>
+
+<b>
+010600000001000000010300000001000000060000002CF06AC55BD0504114F78CE6007D5441AE6EAE2359D05041363CA4D0027D54418FC2F5A861D050413D0AD713087D54419A9999199BD05041C3F528DCDB7C5441CDCCCCEC91D050417B14AE77D67C54412CF06AC55BD0504114F78CE6007D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976208 - 80426
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000018000000C22F8F86179050410D8EFBCE0512554152B81EF5159050413D0AD78304125541EC51B8AE1390504100000030031255418FC2F5C8119050415C8FC25502125541666666460E9050410AD7A3A00012554114AE47C10C905041E17A14DEFF115541E17A149E0B90504133333303FF115541B81E85DB0A9050417B14AEC7FD115541D7A370DDFF8F5041A4703D7AEA1155413FE92B84F68F5041DB559FA3F41155417B14AED7F68F50417B14AE47F5115541295C8F52F78F504152B81EA5F6115541F6285C2FF78F50418FC2F548F8115541AE47E12AEB8F50413333334308125541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000019000000F9A4C45C01905041364B5A1BED115541515907A2FF8F50412EEF39BBEA115541D31E6E5DF38F504105E48533F8115541F362C54CE88F504181F4074104125541A984C0DFE18F50411491C9A10B12554173F037D9E18F50419978728C0C12554113CACEAC06905041E258755D1E125541C99F1D9E089050419F0434C91D1255414C64112009905041C66C31F81C1255417F5A869007905041B6DE97711C125541BF2A4CFFFF8F50413B900ED71812554169F2BF36F78F5041D8F29D55141255410ED09BEAF28F504194C3462112125541D4A66C7BF08F5041591704CF10125541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>597735 - 976502
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000EC51B88E6729514114AE4731C93354416666668666295141A4703D0ACB335441333333A364295141D7A370CDCB3354413333337364295141295C8F32CC3354419A9999095D295141E17A140EDC3354415C8FC2855A2951419A999989E13354410AD7A3C05C2951415C8FC2A5E1335441E17A149E8629514152B81E85E33354413D0AD7338629514114AE4751CA335441EC51B85E86295141F6285C4FB93354418FC2F508872951415C8FC255B93354419A99990987295141AE47E10AB5335441B81E851B8629514114AE4751B43354418FC2F5B87D2951413D0AD713B4335441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000F6B1749359295141CEEFBB4AF8335441D13595385D2951414FCA09F9F83354418CE12B9E66295141C67AEB76F9335441EA835E2470295141080282F6F93354418B5978A886295141887CBAFFFA335441EC51B8FE862951418FC2F558FA335441280475C086295141953BF96CE3335441204A19825D2951418FB069AEE133544145F8A4A15D29514135E4D2AFE1335441256008C25B29514178D70F97E63354410E49C4475B295141B2AA0FAFE73354416C880EF15629514142AE3AF7F2335441E0A8D45E56295141811D8E2DF533544158965B0F5729514189284500F7335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>598186 - 2956201
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002500000048E17AE4D4715141295C8F629FB25441AE47E11AD77151413D0AD713A5B254415C8FC2E5D871514114AE4711ABB25441A4703D5ADC715141CDCCCC5CB3B2544166666686DE715141A4703D2AB9B2544185EB51E8E1715141EC51B8DEC0B25441D7A370FDE77151418FC2F578CBB25441E17A144EE9715141C3F528ECC9B254413D0AD7F3EE715141A4703D3AC4B25441EC51B8FEED715141D7A3702DC2B2544166666636EC7151410AD7A3D0BEB25441295C8FC2EA715141A4703D5ABBB254411F85EB91E8715141C3F528ACB5B254417B14AE67E6715141000000B0AFB25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001300000054478CECE7715141C1F8FFE2B3B2544151FD8D20E6715141713411E0AEB25441AB1DD1B2DC7151416EF26049B4B25441A9DDD5A3DD715141FA9E1CCDB6B254417B9EE236DE715141D977DD55B8B2544196F1992ADF715141D33E46A0BAB2544185EB51E8E1715141EC51B8DEC0B25441D7A370FDE77151418FC2F578CBB25441E17A144EE9715141C3F528ECC9B254413D0AD7F3EE715141A4703D3AC4B2544102FE0D70EE71514158AF1620C3B2544140BF69FEED7151419D6BDC2CC2B25441AB61116BEC7151416913FE33BFB2544162301435EC715141029B7DCDBEB25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>598186 - 3610660
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002500000048E17AE4D4715141295C8F629FB25441AE47E11AD77151413D0AD713A5B254415C8FC2E5D871514114AE4711ABB25441A4703D5ADC715141CDCCCC5CB3B2544166666686DE715141A4703D2AB9B2544185EB51E8E1715141EC51B8DEC0B25441D7A370FDE77151418FC2F578CBB25441E17A144EE9715141C3F528ECC9B254413D0AD7F3EE715141A4703D3AC4B25441EC51B8FEED715141D7A3702DC2B2544166666636EC7151410AD7A3D0BEB25441295C8FC2EA715141A4703D5ABBB254411F85EB91E8715141C3F528ACB5B254417B14AE67E6715141000000B0AFB25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001300000054478CECE7715141C1F8FFE2B3B2544151FD8D20E6715141713411E0AEB25441AB1DD1B2DC7151416EF26049B4B25441A9DDD5A3DD715141FA9E1CCDB6B254417B9EE236DE715141D977DD55B8B2544196F1992ADF715141D33E46A0BAB2544185EB51E8E1715141EC51B8DEC0B25441D7A370FDE77151418FC2F578CBB25441E17A144EE9715141C3F528ECC9B254413D0AD7F3EE715141A4703D3AC4B2544102FE0D70EE71514158AF1620C3B2544140BF69FEED7151419D6BDC2CC2B25441AB61116BEC7151416913FE33BFB2544162301435EC715141029B7DCDBEB25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287655 - 3096463
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001500000094716B9D96A851411B7128CCCAA05441C3F5288C95A85141713D0AF7CBA0544114AE47119FA8514133333383CCA0544148E17A74A6A85141D7A3706DC4A05441713D0A67AAA851417B14AE17C0A054411F85EB41AFA851410AD7A360BAA05441D7A3701DB0A851410AD7A300B9A05441295C8F92A8A8514166666686B8A05441295C8F22A7A85141EC51B8BEB8A05441713D0AA79FA851419A9999E9C0A05441394C8E0F97A851414EDE514FCAA054411F85EB219DA85141AE47E1AAC3A054410AD7A33097A85141E17A14DEBEA05441C3F528DC9EA8514148E17AB4B5A05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000188237DA9EA851412E34BA68B6A05441172DC02B98A85141B03FC5CEB4A054417A6394D694A851410792FB22B4A0544152B81EB590A85141CDCCCC0CB3A054413DDD6FC28FA85141CE60DD13B4A05441AE409B578EA8514130CC936FB5A05441AC95854580A85141040B79E1C3A05441361870DD7FA85141D19E24B4C6A05441BF94056F81A85141DBB5902BC7A05441AE47E1DA84A8514114AE4781C8A054411F85EB0189A851418FC2F5D8C9A05441A4703D8A8CA8514133333383CAA05441EF8256F993A85141E511B7CFCBA0544134BDA3159FA8514100A5677CCCA05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>287655 - 3440262
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001500000094716B9D96A851411B7128CCCAA05441C3F5288C95A85141713D0AF7CBA0544114AE47119FA8514133333383CCA0544148E17A74A6A85141D7A3706DC4A05441713D0A67AAA851417B14AE17C0A054411F85EB41AFA851410AD7A360BAA05441D7A3701DB0A851410AD7A300B9A05441295C8F92A8A8514166666686B8A05441295C8F22A7A85141EC51B8BEB8A05441713D0AA79FA851419A9999E9C0A05441394C8E0F97A851414EDE514FCAA054411F85EB219DA85141AE47E1AAC3A054410AD7A33097A85141E17A14DEBEA05441C3F528DC9EA8514148E17AB4B5A05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000188237DA9EA851412E34BA68B6A05441172DC02B98A85141B03FC5CEB4A054417A6394D694A851410792FB22B4A0544152B81EB590A85141CDCCCC0CB3A054413DDD6FC28FA85141CE60DD13B4A05441AE409B578EA8514130CC936FB5A05441AC95854580A85141040B79E1C3A05441361870DD7FA85141D19E24B4C6A05441BF94056F81A85141DBB5902BC7A05441AE47E1DA84A8514114AE4781C8A054411F85EB0189A851418FC2F5D8C9A05441A4703D8A8CA8514133333383CAA05441EF8256F993A85141E511B7CFCBA0544134BDA3159FA8514100A5677CCCA05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>590735 - 590731
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000FB6E9BD3E33D5141798F6319384E544112105DC4D03D5141701C93EC604E5441784DD2FFCF3D5141770B2534624E5441FB09AD74E63D5141357A83396B4E54414F2E10F2F83D51419B980A95724E544177C87B9F003E51412C6EF7C7754E5441A361ED71063E51411693C1C9784E544175AC7B500E3E51411F72DF337D4E5441E7B7A03D133E514178B14825804E5441E029E5AF293E51411ED4B52D564E5441B81E854B093E5141B81E853B484E544166666626E93D51413D0AD7633A4E5441FB6E9BD3E33D5141798F6319384E5441
+</a>
+
+<b>
+0106000000010000000103000000010000003400000077C87B9F003E51412C6EF7C7754E54417BBA5914F73D5141B2B6F2D6714E54411226617EF43D51411AB688CF704E5441FB09AD74E63D5141357A83396B4E5441784DD2FFCF3D5141770B2534624E5441BA0D80D5D23D51418B971E2F5C4E5441FBC82870D53D5141001C6DA7564E5441FB6E9BD3E33D5141798F6319384E5441333333D3E03D5141EC51B8CE364E544185EB5198DB3D5141E17A148E344E5441D7A370EDDA3D5141E17A14BE354E54411F85EB61D43D5141B81E851B3D4E54413D0AD7E3D23D5141F6285C7F3F4E5441DB8A473BCF3D5141F55BD00B434E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976502 - 597735
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000F6B1749359295141CEEFBB4AF8335441D13595385D2951414FCA09F9F83354418CE12B9E66295141C67AEB76F9335441EA835E2470295141080282F6F93354418B5978A886295141887CBAFFFA335441EC51B8FE862951418FC2F558FA335441280475C086295141953BF96CE3335441204A19825D2951418FB069AEE133544145F8A4A15D29514135E4D2AFE1335441256008C25B29514178D70F97E63354410E49C4475B295141B2AA0FAFE73354416C880EF15629514142AE3AF7F2335441E0A8D45E56295141811D8E2DF533544158965B0F5729514189284500F7335441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000EC51B88E6729514114AE4731C93354416666668666295141A4703D0ACB335441333333A364295141D7A370CDCB3354413333337364295141295C8F32CC3354419A9999095D295141E17A140EDC3354415C8FC2855A2951419A999989E13354410AD7A3C05C2951415C8FC2A5E1335441E17A149E8629514152B81E85E33354413D0AD7338629514114AE4751CA335441EC51B85E86295141F6285C4FB93354418FC2F508872951415C8FC255B93354419A99990987295141AE47E10AB5335441B81E851B8629514114AE4751B43354418FC2F5B87D2951413D0AD713B4335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976502 - 1125918
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000F6B1749359295141CEEFBB4AF8335441D13595385D2951414FCA09F9F83354418CE12B9E66295141C67AEB76F9335441EA835E2470295141080282F6F93354418B5978A886295141887CBAFFFA335441EC51B8FE862951418FC2F558FA335441280475C086295141953BF96CE3335441204A19825D2951418FB069AEE133544145F8A4A15D29514135E4D2AFE1335441256008C25B29514178D70F97E63354410E49C4475B295141B2AA0FAFE73354416C880EF15629514142AE3AF7F2335441E0A8D45E56295141811D8E2DF533544158965B0F5729514189284500F7335441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000EC51B88E6729514114AE4731C93354416666668666295141A4703D0ACB335441333333A364295141D7A370CDCB3354413333337364295141295C8F32CC3354419A9999095D295141E17A140EDC3354415C8FC2855A2951419A999989E13354410AD7A3C05C2951415C8FC2A5E1335441E17A149E8629514152B81E85E33354413D0AD7338629514114AE4751CA335441EC51B85E86295141F6285C4FB93354418FC2F508872951415C8FC255B93354419A99990987295141AE47E10AB5335441B81E851B8629514114AE4751B43354418FC2F5B87D2951413D0AD713B4335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>976502 - 3924423
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000F6B1749359295141CEEFBB4AF8335441D13595385D2951414FCA09F9F83354418CE12B9E66295141C67AEB76F9335441EA835E2470295141080282F6F93354418B5978A886295141887CBAFFFA335441EC51B8FE862951418FC2F558FA335441280475C086295141953BF96CE3335441204A19825D2951418FB069AEE133544145F8A4A15D29514135E4D2AFE1335441256008C25B29514178D70F97E63354410E49C4475B295141B2AA0FAFE73354416C880EF15629514142AE3AF7F2335441E0A8D45E56295141811D8E2DF533544158965B0F5729514189284500F7335441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000013000000EC51B88E6729514114AE4731C93354416666668666295141A4703D0ACB335441333333A364295141D7A370CDCB3354413333337364295141295C8F32CC3354419A9999095D295141E17A140EDC3354415C8FC2855A2951419A999989E13354410AD7A3C05C2951415C8FC2A5E1335441E17A149E8629514152B81E85E33354413D0AD7338629514114AE4751CA335441EC51B85E86295141F6285C4FB93354418FC2F508872951415C8FC255B93354419A99990987295141AE47E10AB5335441B81E851B8629514114AE4751B43354418FC2F5B87D2951413D0AD713B4335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>915339 - 979852
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000008000000AE47E18A67E15041AE47E17A017254411F85EB6168E1504133333373FB71544148E17AD468E15041F6285C4FF5715441295C8F2252E15041666666E6F5715441EC51B81E40E1504185EB5158F671544152B81E7540E1504148E17A7402725441E17A144E52E150413333330302725441AE47E18A67E15041AE47E17A01725441
+</a>
+
+<b>
+0106000000010000000103000000010000000900000074987DA242E150415A30A96602725441FF0DEE7340E1504186FDFF7F027254414B50B9DD40E15041AADED1281372544195F87B6B64E15041C508E43A12725441D7D7210465E150417981896F0E72544166335EEA65E1504179CE64550A72544100DFAF8B66E1504119FEC62007725441A08ABB7967E1504155F8808C0172544174987DA242E150415A30A96602725441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>915711 - 3134113
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000011000000D7A3708D71E150419A999909AC6454411F85EB8182E1504166666626A4645441EC51B80E8EE150413D0AD7739164544114AE47C18AE15041E17A14FE92645441D7A3702D88E150411F85EB31946454410000007080E15041E17A14CE97645441295C8F227DE1504185EB51589964544185EB51B87CE150419A99998999645441A4703D0A77E15041000000309C645441295C8F626CE1504185EB5128A1645441F6285C8F55E15041D7A370CDAB645441295C8F6250E15041713D0A37AE645441C3F528AC4BE150418FC2F568B0645441295C8F9247E15041295C8F52B2645441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000AE47E15A74E150410AD7A3B0976454418BF437516FE150410C51EE069B645441725D23996CE15041F1B5DC0EA1645441295C8F227DE1504185EB5158996454419B03044180E15041BA6B092394645441981760D57FE15041041C42D792645441AA7D3A3C7EE15041AA9A205E92645441D105F5FF7CE15041842A359B926454413E7D62AC7BE1504132489B5893645441AE47E15A74E150410AD7A3B097645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>915711 - 3517523
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000011000000D7A3708D71E150419A999909AC6454411F85EB8182E1504166666626A4645441EC51B80E8EE150413D0AD7739164544114AE47C18AE15041E17A14FE92645441D7A3702D88E150411F85EB31946454410000007080E15041E17A14CE97645441295C8F227DE1504185EB51589964544185EB51B87CE150419A99998999645441A4703D0A77E15041000000309C645441295C8F626CE1504185EB5128A1645441F6285C8F55E15041D7A370CDAB645441295C8F6250E15041713D0A37AE645441C3F528AC4BE150418FC2F568B0645441295C8F9247E15041295C8F52B2645441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000AE47E15A74E150410AD7A3B0976454418BF437516FE150410C51EE069B645441725D23996CE15041F1B5DC0EA1645441295C8F227DE1504185EB5158996454419B03044180E15041BA6B092394645441981760D57FE15041041C42D792645441AA7D3A3C7EE15041AA9A205E92645441D105F5FF7CE15041842A359B926454413E7D62AC7BE1504132489B5893645441AE47E15A74E150410AD7A3B097645441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956628 - 372571
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001400000040BF2F507EB7504121235CA0D5DF5441F41882AB7CB75041AB939413F8DF54417B14AEB77CB75041713D0A17F8DF54411F85EBE196B75041F6285C7FFFDF5441AE47E19A97B750413D0AD7B3FFDF54411F85EB919FB750417B14AEB701E05441B81E85BBA0B75041EC51B89EFFDF54418D254F0FA0B750410C3CDA99FEDF544152B81E859DB75041CDCCCC7CFDDF5441C3F5285C9BB750411F85EBD1FBDF5441C34CB81297B750418195C33CF4DF544185EB516896B75041F6285C0FF3DF544114AE471196B75041CDCCCCFCEEDF54411F85EB0197B7504100000070EDDF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000098EB516896B750412B295C0FF3DF544125814D4796B75041C39FE183F1DF5441FDAD471196B75041EECCCCFCEEDF54413D85FC3096B75041EEA584C8EEDF54411F85EB0197B7504100000070EDDF54411DE17A5499B75041668FC2E5ECDF5441BE51B8EE9BB75041C6C2F5D8E3DF54419647E1BA9CB75041D451B87EDFDF5441649B1C179DB750418EDE6931DEDF5441D3D1B9469CB7504195FB48F5DDDF5441A9AB09C99AB7504111B6338BDDDF5441FF0A603A93B7504104A27F71DBDF54418FC2F5587EB750413D0AD7A3D5DF54419D14AEB77CB750417B3D0A17F8DF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956628 - 427296
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001400000040BF2F507EB7504121235CA0D5DF5441F41882AB7CB75041AB939413F8DF54417B14AEB77CB75041713D0A17F8DF54411F85EBE196B75041F6285C7FFFDF5441AE47E19A97B750413D0AD7B3FFDF54411F85EB919FB750417B14AEB701E05441B81E85BBA0B75041EC51B89EFFDF54418D254F0FA0B750410C3CDA99FEDF544152B81E859DB75041CDCCCC7CFDDF5441C3F5285C9BB750411F85EBD1FBDF5441C34CB81297B750418195C33CF4DF544185EB516896B75041F6285C0FF3DF544114AE471196B75041CDCCCCFCEEDF54411F85EB0197B7504100000070EDDF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B0000008FC2F5587EB750413D0AD7A3D5DF54416A68C2587EB75041B2ABC2A3D5DF54416C3EAEB77CB7504163C90617F8DF54411F85EBE196B75041F6285C7FFFDF5441832CA84D97B750410AD0ED9DFFDF54416E47E19A97B75041FC09D7B3FFDF54412285EB919FB750417614AEB701E05441AE1E85BBA0B75041FE51B89EFFDF54416F254F0FA0B75041FF3BDA99FEDF544172B81E859DB7504103CDCC7CFDDF544186F5285C9BB750411C85EBD1FBDF544185EB516896B75041F6285C0FF3DF5441AF34DD4896B7504112399596F1DF5441FDAD471196B75041EECCCCFCEEDF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>903305 - 582074
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000AEB507AA31E350411D9B976958EF5441A2553F8A37E35041D4DF2DFC55EF544138C12F423BE350417285427054EF544123A4214341E3504159FD6EEB51EF5441962D5C2645E3504148C84D2750EF5441BC63944649E350418D943FEA4DEF5441CA3587424AE35041AD25935E4DEF54415C2D14024CE35041E7EF76664CEF5441C12C4F194EE350418899131B4BEF544103BA65FA4EE35041C8B0CF994AEF5441A4C7288F4FE35041DE45823D4AEF54412F97921253E35041A104730F48EF54411B616CC057E350419905842745EF54419A2E5BB757E3504159631A8344EF5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000190000003D0AD7134FE35041B81E858B26EF5441CDCCCC8C4EE35041EC51B87E24EF5441CDCCCC7C4DE35041333333831CEF5441B81E85EB4CE35041AE47E13A1BEF5441CDCCCCEC41E35041EC51B83E23EF5441EC51B87E3AE3504114AE47A128EF5441C3F5281C37E35041CDCCCCFC23EF544185EB512832E350413D0AD72322EF5441D7A370ED28E35041295C8FB21EEF5441EC51B81E23E35041EC51B8FE27EF54410AD7A3601FE3504152B81E852DEF5441000000701BE35041E17A146E33EF544114AE47911FE35041CDCCCCBC3BEF54413D0AD7E323E35041295C8F6243EF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>729732 - 197797
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000002000000550000002EABC30E94A250414DD8608C4D455541EBFA980D95A25041F29C91434D455541E12DA8D496A25041A71330D54D455541329C86E498A250413B3239E64E455541BEE1588899A250418CA017F6504555415BCD52D298A250412798577452455541C0D5125497A25041702DFF16544555419E7D7DD397A250419091DACB5545554120F65E3E9AA2504123B0E3DC56455541AA4777169DA250414FD569965445554155F1246F9FA25041CB68CE5F5445554163AFD87DA2A25041374AC54E53455541ED00F155A5A2504158A25ACF5245554124F07052A8A250412798577452455541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000380000001AEBA4028CA25041266B6F00484555415E680B208AA2504194C5797B4845554143AF7B8D89A25041A8D9CB934845554165DEAE1089A25041A759E08148455541D6992F7E88A25041506BBD2948455541DAA7046488A2504170328124484555410676E50D88A25041E6ADBCDC47455541B39AECEA87A250410BCC6FC447455541D5490B8087A250417120E07147455541FB130B8086A25041C1A3F46F47455541D72E905B85A250413A3B5B86474555418B5E9DA584A250419F313EA6474555417B8BA27D84A250410305810248455541A565667684A25041B151331348455541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>729732 - 334866
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000002000000550000002EABC30E94A250414DD8608C4D455541EBFA980D95A25041F29C91434D455541E12DA8D496A25041A71330D54D455541329C86E498A250413B3239E64E455541BEE1588899A250418CA017F6504555415BCD52D298A250412798577452455541C0D5125497A25041702DFF16544555419E7D7DD397A250419091DACB5545554120F65E3E9AA2504123B0E3DC56455541AA4777169DA250414FD569965445554155F1246F9FA25041CB68CE5F5445554163AFD87DA2A25041374AC54E53455541ED00F155A5A2504158A25ACF5245554124F07052A8A250412798577452455541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000380000001AEBA4028CA25041266B6F00484555415E680B208AA2504194C5797B4845554143AF7B8D89A25041A8D9CB934845554165DEAE1089A25041A759E08148455541D6992F7E88A25041506BBD2948455541DAA7046488A2504170328124484555410676E50D88A25041E6ADBCDC47455541B39AECEA87A250410BCC6FC447455541D5490B8087A250417120E07147455541FB130B8086A25041C1A3F46F47455541D72E905B85A250413A3B5B86474555418B5E9DA584A250419F313EA6474555417B8BA27D84A250410305810248455541A565667684A25041B151331348455541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>916345 - 3129643
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000007000000C3F5288C2DE7504114AE47C1AF745441666666762AE75041F6285C8FAE745441A4703D7A25E75041333333A3AD7454415C8FC285FCE65041000000D0DB745441EC51B8DE00E75041F6285C1FE2745441F6285C6F18E75041EC51B88EC7745441C3F5288C2DE7504114AE47C1AF745441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000001AFC12A900E75041A586516FE27454419E31440304E750418DC2A4AEE67454417DCDFBA124E7504119A7D561C37454416BF8A4C129E75041738068D6BD7454411D8CC5E62BE75041440CC05FBB74544149C13F0C27E7504151BD3115B77454412221891625E75041C812D54AB97454416B37D3D31FE7504139832139BF745441EC51B8DE00E75041F6285C1FE27454411AFC12A900E75041A586516FE2745441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>791544 - 184540
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000200000047000000594948453CC250414DF993501E6154416C0E62FE3BC2504167C192201E61544194B839133BC25041F90B96D41C615441B6B8C8613AC25041BFA214DA1B615441F02B146F39C25041EC4766DC19615441728B089E38C25041914E869D176154416F8E2B7E37C2504163D0CB3515615441E176436D37C25041F837C315156154415B2B1D6037C25041B7F9D8FC146154411E55800D36C25041FDDFF4F51261544126BDA48934C250416B2D7ABB1161544114D5AEFC32C2504178099E7910615441812E164834C25041A52EA70E0E6154416357523435C2504178926F550C615441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000005700000041B3B37E46C25041CA437F1A296154414A1A2DA746C250419758F8F02861544198BC831B47C25041DBA69979286154413560ECE147C250410065137E27615441FF67C38D48C25041222D1FA42661544155CA9F3045C25041B0956D6224615441F5B5F64842C2504112D9CB0C23615441CDD87B153EC25041722A6298206154415C08BA9A3AC25041B96300221E615441C3CDC7433AC250410973C5B11D61544115D0BEA839C25041A78AF3C11C615441E2F4F99138C250412A20B14B1B6154410210C62838C25041A4BB04571A615441A95B2FBE37C25041B80E033E19615441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>791544 - 422567
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000200000047000000594948453CC250414DF993501E6154416C0E62FE3BC2504167C192201E61544194B839133BC25041F90B96D41C615441B6B8C8613AC25041BFA214DA1B615441F02B146F39C25041EC4766DC19615441728B089E38C25041914E869D176154416F8E2B7E37C2504163D0CB3515615441E176436D37C25041F837C315156154415B2B1D6037C25041B7F9D8FC146154411E55800D36C25041FDDFF4F51261544126BDA48934C250416B2D7ABB1161544114D5AEFC32C2504178099E7910615441812E164834C25041A52EA70E0E6154416357523435C2504178926F550C615441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000005700000041B3B37E46C25041CA437F1A296154414A1A2DA746C250419758F8F02861544198BC831B47C25041DBA69979286154413560ECE147C250410065137E27615441FF67C38D48C25041222D1FA42661544155CA9F3045C25041B0956D6224615441F5B5F64842C2504112D9CB0C23615441CDD87B153EC25041722A6298206154415C08BA9A3AC25041B96300221E615441C3CDC7433AC250410973C5B11D61544115D0BEA839C25041A78AF3C11C615441E2F4F99138C250412A20B14B1B6154410210C62838C25041A4BB04571A615441A95B2FBE37C25041B80E033E19615441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>954146 - 1400298
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000015000000C091EAC32AD6504114FD5AA2851B55417A101F0826D65041671B9DEA871B5541687F5E9027D650416AB7889B8D1B55412DFEA65029D6504132D2BC0C951B55412EE5E1BC2AD6504197C691319A1B55417E9345252DD65041EBF71BB7A31B5541CF0F1F6632D65041EA10E14AA21B5541D547F6C73DD6504124AB5D1E9F1B5541D2AB0A1738D65041CA5AC1CA881B5541A651B2C52FD65041315196D5681B554126D18B0727D65041AD5F49416A1B55415A982C5A27D65041BF6CB11E6C1B554151EFD0D027D65041038551FA6E1B55415362F55828D6504167A1130E731B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000081E743FF25D650414C6307A3871B5541F637B04B2CD65041E9A7CFFD841B554105C47FAD2BD65041A172A3FA811B55411FBF92492AD65041848A41A67C1B5541AF02844829D650414BE1E404791B5541C471C78228D65041206DB34E741B554151EFD0D027D65041038551FA6E1B55415A982C5A27D65041BF6CB11E6C1B5541E1651F0027D65041CB2C65166A1B5541D7A370ED22D6504148E17AC46A1B5541713D0AB71ED650413D0AD7836B1B5541C3F528FC25D65041713D0A97871B554181E743FF25D650414C6307A3871B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>954146 - 3204561
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000015000000C091EAC32AD6504114FD5AA2851B55417A101F0826D65041671B9DEA871B5541687F5E9027D650416AB7889B8D1B55412DFEA65029D6504132D2BC0C951B55412EE5E1BC2AD6504197C691319A1B55417E9345252DD65041EBF71BB7A31B5541CF0F1F6632D65041EA10E14AA21B5541D547F6C73DD6504124AB5D1E9F1B5541D2AB0A1738D65041CA5AC1CA881B5541A651B2C52FD65041315196D5681B554126D18B0727D65041AD5F49416A1B55415A982C5A27D65041BF6CB11E6C1B554151EFD0D027D65041038551FA6E1B55415362F55828D6504167A1130E731B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000081E743FF25D650414C6307A3871B5541F637B04B2CD65041E9A7CFFD841B554105C47FAD2BD65041A172A3FA811B55411FBF92492AD65041848A41A67C1B5541AF02844829D650414BE1E404791B5541C471C78228D65041206DB34E741B554151EFD0D027D65041038551FA6E1B55415A982C5A27D65041BF6CB11E6C1B5541E1651F0027D65041CB2C65166A1B5541D7A370ED22D6504148E17AC46A1B5541713D0AB71ED650413D0AD7836B1B5541C3F528FC25D65041713D0A97871B554181E743FF25D650414C6307A3871B5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>873795 - 1465203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000002C00000048E17AD40B055141E17A145EDA2955411F85EBE110055141A4703DFAD029554152B81EA511055141B81E856BCF2955417B14AED70F05514166666676CD2955419A9999490D055141AE47E16ACB295541D7A370BD0605514114AE47C1C629554185EB5148F9045141B81E859BBF295541E17A14FEEC0451410AD7A3B0B7295541F6285CFFEB045141CDCCCC0CB72955411F85EBE1E6045141CDCCCCCCB2295541000000E0E50451413D0AD7D3B1295541713D0A07E0045141F6285C2FAC2955410AD7A3C0DC045141E17A144EB129554166666666D8045141EC51B8FEB6295541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C4067127EC04514119C19426B729554184EE7B21DF045141904EC091CF29554110916B6BDE045141083EC79CD02955411F85EB51DF0451413D0AD7B3CF29554152B81EA5D5045141000000A0E22955419A9999A9D304514152B81E75E92955415C8FC2A5DD0451419A999999F42955410AD7A320DE04514152B81E15F12955418FC2F548E0045141B81E859BEA295541666666F6E3045141C3F5282CE1295541D7A370CDE504514185EB5118DD295541B81E857BE70451413D0AD793DB295541C3F5285CEA045141713D0AC7DA295541F6285CFFEE0451419A999989DA295541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>873795 - 3372336
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000002C00000048E17AD40B055141E17A145EDA2955411F85EBE110055141A4703DFAD029554152B81EA511055141B81E856BCF2955417B14AED70F05514166666676CD2955419A9999490D055141AE47E16ACB295541D7A370BD0605514114AE47C1C629554185EB5148F9045141B81E859BBF295541E17A14FEEC0451410AD7A3B0B7295541F6285CFFEB045141CDCCCC0CB72955411F85EBE1E6045141CDCCCCCCB2295541000000E0E50451413D0AD7D3B1295541713D0A07E0045141F6285C2FAC2955410AD7A3C0DC045141E17A144EB129554166666666D8045141EC51B8FEB6295541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C4067127EC04514119C19426B729554184EE7B21DF045141904EC091CF29554110916B6BDE045141083EC79CD02955411F85EB51DF0451413D0AD7B3CF29554152B81EA5D5045141000000A0E22955419A9999A9D304514152B81E75E92955415C8FC2A5DD0451419A999999F42955410AD7A320DE04514152B81E15F12955418FC2F548E0045141B81E859BEA295541666666F6E3045141C3F5282CE1295541D7A370CDE504514185EB5118DD295541B81E857BE70451413D0AD793DB295541C3F5285CEA045141713D0AC7DA295541F6285CFFEE0451419A999989DA295541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>916837 - 987242
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B000000B81E852B83E65041333333F35E7554413333333389E650419A9999995C755441AE47E1DA94E65041666666265A7554413D0AD7D3A3E65041000000F057755441B81E855BABE650410000002056755441B81E850BC4E650413D0AD7D35175544114AE4701BFE65041CDCCCCEC40755441C3F528BCBDE650413D0AD723407554415C8FC2257BE650411F85EBD14B7554413D0AD7D37AE65041C3F528DC4C755441B81E852B83E65041333333F35E755441
+</a>
+
+<b>
+010600000001000000010300000001000000180000008B828EE183E6504121BD9A6C60755441E2902C3089E65041CCC06DE35E755441BAF4C18790E6504120164C9C5D755441194C6C4D97E6504140CF29895C755441D53562DBA1E65041B37680105B75544119AEA12CA7E65041AE7E5F2E5A755441B5E64072ACE65041D4E1233159755441A6847CE5ACE65041FD33B5515B755441122F7B16B3E65041D91F07A85A75544189FE9C0CB6E650411F97E5505A755441A1A1973EBCE65041B6D8563859755441E726470BC4E6504104BA92D257755441345860E1C4E65041864E4EBC54755441E726470BC4E65041837BFDC551755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>916837 - 3128655
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B000000B81E852B83E65041333333F35E7554413333333389E650419A9999995C755441AE47E1DA94E65041666666265A7554413D0AD7D3A3E65041000000F057755441B81E855BABE650410000002056755441B81E850BC4E650413D0AD7D35175544114AE4701BFE65041CDCCCCEC40755441C3F528BCBDE650413D0AD723407554415C8FC2257BE650411F85EBD14B7554413D0AD7D37AE65041C3F528DC4C755441B81E852B83E65041333333F35E755441
+</a>
+
+<b>
+010600000001000000010300000001000000180000008F828EE183E6504125BD9A6C60755441E2902C3089E65041CEC06DE35E755441B7F4C18790E6504123164C9C5D755441194C6C4D97E650413CCF29895C755441D53562DBA1E65041B37680105B7554411BAEA12CA7E65041AB7E5F2E5A755441B0E64072ACE65041D2E1233159755441AB847CE5ACE65041FF33B5515B755441162F7B16B3E65041DA1F07A85A75544189FE9C0CB6E650411E97E5505A7554419DA1973EBCE65041B5D8563859755441E626470BC4E6504101BA92D2577554412F5860E1C4E65041824E4EBC54755441E626470BC4E65041817BFDC551755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>916837 - 3513745
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B000000B81E852B83E65041333333F35E7554413333333389E650419A9999995C755441AE47E1DA94E65041666666265A7554413D0AD7D3A3E65041000000F057755441B81E855BABE650410000002056755441B81E850BC4E650413D0AD7D35175544114AE4701BFE65041CDCCCCEC40755441C3F528BCBDE650413D0AD723407554415C8FC2257BE650411F85EBD14B7554413D0AD7D37AE65041C3F528DC4C755441B81E852B83E65041333333F35E755441
+</a>
+
+<b>
+010600000001000000010300000001000000180000008F828EE183E6504125BD9A6C60755441E2902C3089E65041CEC06DE35E755441B7F4C18790E6504123164C9C5D755441194C6C4D97E650413CCF29895C755441D53562DBA1E65041B37680105B7554411BAEA12CA7E65041AB7E5F2E5A755441B0E64072ACE65041D2E1233159755441AB847CE5ACE65041FF33B5515B755441162F7B16B3E65041DA1F07A85A75544189FE9C0CB6E650411E97E5505A7554419DA1973EBCE65041B5D8563859755441E626470BC4E6504101BA92D2577554412F5860E1C4E65041824E4EBC54755441E626470BC4E65041817BFDC551755441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942379 - 153798
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000F000000A4703D4A87F25041C3F5283CBC675441A4703DEA8FF250418FC2F5D8BA6754411F85EB0191F25041D7A3705DBA675441333333D391F2504166666676B9675441C3F5283C94F25041295C8F52B36754417B14AE9796F25041CDCCCC6CB16754419A999929A0F25041666666B6AD675441000000D0A3F25041CDCCCC3CAC67544152B81E55A8F2504133333383AC675441E17A142EA7F25041E17A14AE9A675441E17A145EA5F25041EC51B84E9767544133333303A5F250418FC2F528A267544114AE476197F2504148E17A24A3675441C3F528AC87F250418FC2F5B8A3675441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000F9C6A7AA87F250412B106219A4675441E7703D4A87F25041B8F5283CBC675441A4703DEA8FF250418FC2F5D8BA6754419DF14EA890F25041554A0485BA6754414D85EB0191F25041A5A3705DBA675441EE496D1F91F25041CD76DD3CBA675441EB03493D91F250411BFAE61BBA675441083333D391F2504166666676B9675441A066724693F250410B5591C4B5675441C3F5283C94F25041295C8F52B36754416AFB7F8594F25041C2C18717B36754415B14AE9796F2504177CCCC6CB167544179999929A0F250413B6666B6AD675441D5FFFFCFA3F2504182CCCC3CAC675441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942379 - 290785
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000F000000A4703D4A87F25041C3F5283CBC675441A4703DEA8FF250418FC2F5D8BA6754411F85EB0191F25041D7A3705DBA675441333333D391F2504166666676B9675441C3F5283C94F25041295C8F52B36754417B14AE9796F25041CDCCCC6CB16754419A999929A0F25041666666B6AD675441000000D0A3F25041CDCCCC3CAC67544152B81E55A8F2504133333383AC675441E17A142EA7F25041E17A14AE9A675441E17A145EA5F25041EC51B84E9767544133333303A5F250418FC2F528A267544114AE476197F2504148E17A24A3675441C3F528AC87F250418FC2F5B8A3675441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000F9C6A7AA87F250412B106219A4675441E7703D4A87F25041B8F5283CBC675441A4703DEA8FF250418FC2F5D8BA6754419DF14EA890F25041554A0485BA6754414D85EB0191F25041A5A3705DBA675441EE496D1F91F25041CD76DD3CBA675441EB03493D91F250411BFAE61BBA675441083333D391F2504166666676B9675441A066724693F250410B5591C4B5675441C3F5283C94F25041295C8F52B36754416AFB7F8594F25041C2C18717B36754415B14AE9796F2504177CCCC6CB167544179999929A0F250413B6666B6AD675441D5FFFFCFA3F2504182CCCC3CAC675441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>917502 - 1351151
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000005C8FC285B2475141EC51B80EC6BC5441E17A149EAF47514185EB51B8C5BC5441A4703DBAAB4751419A999999C5BC5441AE47E19AA7475141F6285C8FC6BC54413D0AD7D3A9475141F6285C3FC9BC544166666636AD47514152B81E15C9BC5441B81E850BB4475141E17A146ECBBC5441A4703D1ABF47514114AE47D1D2BC544152B81E95C24751417B14AE37CFBC5441EC51B89EC1475141295C8F72CEBC544100000030BA475141AE47E19AC9BC54410AD7A360B6475141AE47E17AC7BC54415C8FC285B2475141EC51B80EC6BC5441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000053FC4659B2475141AF528D09C6BC5441E17A149EAF47514185EB51B8C5BC5441A4703DBAAB4751419A999999C5BC54413ECD0993AB4751414795BAA2C5BC5441AE47E19AA7475141F6285C8FC6BC54413D0AD7D3A9475141F6285C3FC9BC544166666636AD47514152B81E15C9BC5441B81E850BB4475141E17A146ECBBC54413572C459BF475141A0353D14D3BC544184DD4904C3475141F0ECDF97CFBC5441C4A3601DC1475141A6174A1ECEBC54411742B56EC0475141F91CEF82CEBC5441498A5CECBA475141E0B4B8BFCABC544157370503BB4751412EBF5D24CABC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>917502 - 252781
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000005C8FC285B2475141EC51B80EC6BC5441E17A149EAF47514185EB51B8C5BC5441A4703DBAAB4751419A999999C5BC5441AE47E19AA7475141F6285C8FC6BC54413D0AD7D3A9475141F6285C3FC9BC544166666636AD47514152B81E15C9BC5441B81E850BB4475141E17A146ECBBC5441A4703D1ABF47514114AE47D1D2BC544152B81E95C24751417B14AE37CFBC5441EC51B89EC1475141295C8F72CEBC544100000030BA475141AE47E19AC9BC54410AD7A360B6475141AE47E17AC7BC54415C8FC285B2475141EC51B80EC6BC5441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000053FC4659B2475141AF528D09C6BC5441E17A149EAF47514185EB51B8C5BC5441A4703DBAAB4751419A999999C5BC54413ECD0993AB4751414795BAA2C5BC5441AE47E19AA7475141F6285C8FC6BC54413D0AD7D3A9475141F6285C3FC9BC544166666636AD47514152B81E15C9BC5441B81E850BB4475141E17A146ECBBC54413572C459BF475141A0353D14D3BC544184DD4904C3475141F0ECDF97CFBC5441C4A3601DC1475141A6174A1ECEBC54411742B56EC0475141F91CEF82CEBC5441498A5CECBA475141E0B4B8BFCABC544157370503BB4751412EBF5D24CABC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>917502 - 410625
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D0000005C8FC285B2475141EC51B80EC6BC5441E17A149EAF47514185EB51B8C5BC5441A4703DBAAB4751419A999999C5BC5441AE47E19AA7475141F6285C8FC6BC54413D0AD7D3A9475141F6285C3FC9BC544166666636AD47514152B81E15C9BC5441B81E850BB4475141E17A146ECBBC5441A4703D1ABF47514114AE47D1D2BC544152B81E95C24751417B14AE37CFBC5441EC51B89EC1475141295C8F72CEBC544100000030BA475141AE47E19AC9BC54410AD7A360B6475141AE47E17AC7BC54415C8FC285B2475141EC51B80EC6BC5441
+</a>
+
+<b>
+0106000000010000000103000000010000001000000053FC4659B2475141AF528D09C6BC5441E17A149EAF47514185EB51B8C5BC5441A4703DBAAB4751419A999999C5BC54413ECD0993AB4751414795BAA2C5BC5441AE47E19AA7475141F6285C8FC6BC54413D0AD7D3A9475141F6285C3FC9BC544166666636AD47514152B81E15C9BC5441B81E850BB4475141E17A146ECBBC54413572C459BF475141A0353D14D3BC544184DD4904C3475141F0ECDF97CFBC5441C4A3601DC1475141A6174A1ECEBC54411742B56EC0475141F91CEF82CEBC5441FFC53BE7BA47514150A055C1CABC544157370503BB4751412EBF5D24CABC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>398480 - 398477
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003D000000E956F3D0391E51416D2410A522685441BE17A1F9601E5141FFCEB25B1E6854417B14AE37661E5141713D0A371D685441A4703DAA6C1E5141295C8F121B685441D7A3703D6F1E5141A4703DEAE9675441AE47E1EA701E51418FC2F5B8C2675441F6285CAF811E514166666636B9675441713D0AF77E1E5141A4703D4AB76754417B14AE87731E514133333343AD675441EC51B82E751E514148E17A94AA67544114AE47D1781E5141C3F528ACA4675441D7A3701D7C1E5141000000209F6754418FC2F5587E1E51410AD7A370A06754417B14AEF78A1E5141713D0A67AA675441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000048E17A04351E5141A4703D1A26685441B81E85EB341E5141000000502F6854417B14AE27301E5141713D0A57406854419A9999795D1E5141F6285C5F3C6854413D0AD7535E1E5141E17A14BE2E6854411F85EB115F1E51410AD7A3F022685441666666465F1E514185EB51E81F685441CDCCCCFC601E514152B81EC51E685441295C8F22371E51418FC2F5E8226854419A999929351E5141CDCCCC1C2468544114AE47F1341E514152B81E352568544148E17A04351E5141A4703D1A26685441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>398480 - 1046856
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003D000000E956F3D0391E51416D2410A522685441BE17A1F9601E5141FFCEB25B1E6854417B14AE37661E5141713D0A371D685441A4703DAA6C1E5141295C8F121B685441D7A3703D6F1E5141A4703DEAE9675441AE47E1EA701E51418FC2F5B8C2675441F6285CAF811E514166666636B9675441713D0AF77E1E5141A4703D4AB76754417B14AE87731E514133333343AD675441EC51B82E751E514148E17A94AA67544114AE47D1781E5141C3F528ACA4675441D7A3701D7C1E5141000000209F6754418FC2F5587E1E51410AD7A370A06754417B14AEF78A1E5141713D0A67AA675441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000048E17A04351E5141A4703D1A26685441B81E85EB341E5141000000502F6854417B14AE27301E5141713D0A57406854419A9999795D1E5141F6285C5F3C6854413D0AD7535E1E5141E17A14BE2E6854411F85EB115F1E51410AD7A3F022685441666666465F1E514185EB51E81F685441CDCCCCFC601E514152B81EC51E685441295C8F22371E51418FC2F5E8226854419A999929351E5141CDCCCC1C2468544114AE47F1341E514152B81E352568544148E17A04351E5141A4703D1A26685441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>398480 - 3859620
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003D000000E956F3D0391E51416D2410A522685441BE17A1F9601E5141FFCEB25B1E6854417B14AE37661E5141713D0A371D685441A4703DAA6C1E5141295C8F121B685441D7A3703D6F1E5141A4703DEAE9675441AE47E1EA701E51418FC2F5B8C2675441F6285CAF811E514166666636B9675441713D0AF77E1E5141A4703D4AB76754417B14AE87731E514133333343AD675441EC51B82E751E514148E17A94AA67544114AE47D1781E5141C3F528ACA4675441D7A3701D7C1E5141000000209F6754418FC2F5587E1E51410AD7A370A06754417B14AEF78A1E5141713D0A67AA675441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C00000048E17A04351E5141A4703D1A26685441B81E85EB341E5141000000502F6854417B14AE27301E5141713D0A57406854419A9999795D1E5141F6285C5F3C6854413D0AD7535E1E5141E17A14BE2E6854411F85EB115F1E51410AD7A3F022685441666666465F1E514185EB51E81F685441CDCCCCFC601E514152B81EC51E685441295C8F22371E51418FC2F5E8226854419A999929351E5141CDCCCC1C2468544114AE47F1341E514152B81E352568544148E17A04351E5141A4703D1A26685441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569368 - 3015649
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001F00000096C77B4EBC5E51412AB3A548148B5441CD938A3FC65E51415D12271A168B5441095082AFE95E5141E86877951C8B54411A18EB89165F514137DFA9C9248B5441AB873C91165F51418EBC09C4248B544152B81EA51B5F5141CDCCCCDC208B54419A9999E9215F5141F6285CBF1A8B54415C8FC2B5275F5141713D0A47148B54415C8FC2652D5F51410AD7A3E00C8B54413D0AD743365F5141EC51B8EE008B54417B14AE97395F5141F6285C9FFC8A5441F6285C2F315F51415C8FC2C5F88A54415C8FC2C5295F514100000060F58A544114AE47011B5F514114AE4761EF8A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000002774A9E6AD5E5141550620FE3C8B544114B2FDB4D15E514150DC5A4D438B544172D97AA9D25E51415C0620FE3C8B54410D65EF2DE35E51419C1287BB3F8B5441BD2AFE21E85E5141F99CCC9A3C8B544145EB944DEA5E51417D2136353B8B544147386811EC5E5141C5A444503A8B5441030E2DF9EF5E51416AC15684388B5441C6A5304EF35E5141B0AB476F378B5441E8C8BA39F65E51419EC565A3368B54413C0703FAFD5E5141478638A0348B5441CEBB32C6025F5141BE7516E2328B544101658984075F51416E5AAA5F308B544106D319EC0A5F5141B92320002E8B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>569368 - 3412718
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001F00000096C77B4EBC5E51412AB3A548148B5441CD938A3FC65E51415D12271A168B5441095082AFE95E5141E86877951C8B54411A18EB89165F514137DFA9C9248B5441AB873C91165F51418EBC09C4248B544152B81EA51B5F5141CDCCCCDC208B54419A9999E9215F5141F6285CBF1A8B54415C8FC2B5275F5141713D0A47148B54415C8FC2652D5F51410AD7A3E00C8B54413D0AD743365F5141EC51B8EE008B54417B14AE97395F5141F6285C9FFC8A5441F6285C2F315F51415C8FC2C5F88A54415C8FC2C5295F514100000060F58A544114AE47011B5F514114AE4761EF8A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000002774A9E6AD5E5141550620FE3C8B544114B2FDB4D15E514150DC5A4D438B544172D97AA9D25E51415C0620FE3C8B54410D65EF2DE35E51419C1287BB3F8B5441BD2AFE21E85E5141F99CCC9A3C8B544145EB944DEA5E51417D2136353B8B544147386811EC5E5141C5A444503A8B5441030E2DF9EF5E51416AC15684388B5441C6A5304EF35E5141B0AB476F378B5441E8C8BA39F65E51419EC565A3368B54413C0703FAFD5E5141478638A0348B5441CEBB32C6025F5141BE7516E2328B544101658984075F51416E5AAA5F308B544106D319EC0A5F5141B92320002E8B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>187933 - 203515
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000290000005C8FC2D508BB50410AD7A3E06440554185EB51F808BB5041E17A141E67405541549AE40714BB50415A75C8367A40554118DF40FC14BB50419CAFABDC7B4055410CCE6F7716BB50416863546B7E405541DDD751DF18BB504197F24B547C405541B4D8DC5118BB50412546A680794055417B14AE771DBB5041A4703D8A77405541AE47E17A29BB504185EB51788140554114AE47F12FBB5041295C8F328D405541C3F528CC35BB5041A4703D8A9B40554114AE47F137BB5041C3F528CCA0405541EC51B8BE53BB50417B14AEC79A4055416666664650BB504185EB518896405541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000009CD571BC51BB504186A42C52984055419BEA54B951BB50411F2A5D4E98405541E3746F7050BB5041F773E924994055419DD19C554DBB5041098CD471994055413F411A884BBB5041AE2B283E984055417D8F1D264BBB5041D2BD33E796405541C3F528CC35BB50418E703D8A9B4055412AAE47F137BB5041B8F528CCA0405541D651B8BE53BB50416514AEC79A4055415D1761C952BB5041D10C5E9B99405541E66D537852BB5041F425273899405541A5362D6152BB50419C15D11B9940554110FC980352BB5041372445A998405541CBA0F7DC51BB504128F1FB7998405541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>187933 - 417087
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000290000005C8FC2D508BB50410AD7A3E06440554185EB51F808BB5041E17A141E67405541549AE40714BB50415A75C8367A40554118DF40FC14BB50419CAFABDC7B4055410CCE6F7716BB50416863546B7E405541DDD751DF18BB504197F24B547C405541B4D8DC5118BB50412546A680794055417B14AE771DBB5041A4703D8A77405541AE47E17A29BB504185EB51788140554114AE47F12FBB5041295C8F328D405541C3F528CC35BB5041A4703D8A9B40554114AE47F137BB5041C3F528CCA0405541EC51B8BE53BB50417B14AEC79A4055416666664650BB504185EB518896405541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000160000009CD571BC51BB504186A42C52984055419BEA54B951BB50411F2A5D4E98405541E3746F7050BB5041F773E924994055419DD19C554DBB5041098CD471994055413F411A884BBB5041AE2B283E984055417D8F1D264BBB5041D2BD33E796405541C3F528CC35BB50418E703D8A9B4055412AAE47F137BB5041B8F528CCA0405541D651B8BE53BB50416514AEC79A4055415D1761C952BB5041D10C5E9B99405541E66D537852BB5041F425273899405541A5362D6152BB50419C15D11B9940554110FC980352BB5041372445A998405541CBA0F7DC51BB504128F1FB7998405541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>377247 - 376994
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000019000000A03FA7EB0C3151413472230BB4E65441E46A7E4C0D315141EAFD9BB4B4E65441EEC73CA80D31514199BA9C52B5E65441D2E177BB0E315141ADB39FCAB7E65441ED98BEA4143151414A8167F2C4E654419DE5644523315141E7933CE6E4E654418FC2F5B82831514148E17AF4D8E654415C8FC2E5243151411F85EB01D2E65441000000401F315141A4703D5AC7E65441B81E859B1B315141C3F528ECBDE6544185EB517818315141B81E852BB4E65441333333F315315141666666D6A8E6544114AE47E114315141E17A14AEA2E65441AE47E14A103151417B14AE37A6E65441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000006C5FD7E406315141141EEB53B4E654411F85EBE106315141E17A144EB4E6544103484F55FB305141D6A6FE92C5E65441D7A3700DF230514114AE4771D0E654411F85EB91003151411F85EBA1EEE65441295C8F220F315141C3F528EC0CE754415C8FC27511315141295C8F1208E75441E17A140E16315141CDCCCC1CFFE65441333333931B31514148E17AD4F5E65441A53FDA5023315141E33444FFE4E654410BF7AA01103151410B0659D1BAE65441817AA9C50E31514100AF97FDB7E65441F7FDA7890D3151414CBFA41FB5E6544110AE01950C31514178B38173B3E65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942402 - 3158009
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002F0000003237EE808BE95041CCB6BF3EC87D5441F1CAF84E9FE95041B90B4999C87D54413A5C3B3CB5E950417F0AE5A8C97D5441D19958BFC9E95041CE5E3C8BCA7D5441163325C7D8E95041440981B8CA7D5441DC31C1D6D9E950416B5F6E03CA7D54417BDA6F9BDBE95041CCB6BF3EC87D544194E4E0D4DEE95041FA1C6373C07D54413EC3FB2AB4E95041B6C9B9B7BF7D5441AF57B8B997E9504127FE2047BF7D54412CF5BF3C8AE95041973288D6BE7D5441AA73B3BE87E95041D47FFF99B57D5441FC10E96C86E950419973C9D4AD7D5441FED2C06A9CE950419973C9D4AD7D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000280000003265F76286E950412B4F3D32BE7D5441968E3FBC89E95041B80B4999C87D54413537EE808BE95041CFB6BF3EC87D5441EDCAF84E9FE95041B80B4999C87D5441375C3B3CB5E950417C0AE5A8C97D5441D59958BFC9E95041CB5E3C8BCA7D5441153325C7D8E950413F0981B8CA7D5441D931C1D6D9E950416F5F6E03CA7D544179DA6F9BDBE95041CFB6BF3EC87D544192E4E0D4DEE95041FB1C6373C07D54413AC3FB2AB4E95041BBC9B9B7BF7D5441AB57B8B997E9504127FE2047BF7D5441BF03C99888E9504120D82D42BE7D5441FE46D88383E95041A346BACCAD7D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942402 - 3562724
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002F0000003237EE808BE95041CCB6BF3EC87D5441F1CAF84E9FE95041B90B4999C87D54413A5C3B3CB5E950417F0AE5A8C97D5441D19958BFC9E95041CE5E3C8BCA7D5441163325C7D8E95041440981B8CA7D5441DC31C1D6D9E950416B5F6E03CA7D54417BDA6F9BDBE95041CCB6BF3EC87D544194E4E0D4DEE95041FA1C6373C07D54413EC3FB2AB4E95041B6C9B9B7BF7D5441AF57B8B997E9504127FE2047BF7D54412CF5BF3C8AE95041973288D6BE7D5441AA73B3BE87E95041D47FFF99B57D5441FC10E96C86E950419973C9D4AD7D5441FED2C06A9CE950419973C9D4AD7D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000280000003265F76286E950412B4F3D32BE7D5441968E3FBC89E95041B80B4999C87D54413537EE808BE95041CFB6BF3EC87D5441EDCAF84E9FE95041B80B4999C87D5441375C3B3CB5E950417C0AE5A8C97D5441D59958BFC9E95041CB5E3C8BCA7D5441153325C7D8E950413F0981B8CA7D5441D931C1D6D9E950416F5F6E03CA7D544179DA6F9BDBE95041CFB6BF3EC87D544192E4E0D4DEE95041FB1C6373C07D54413AC3FB2AB4E95041BBC9B9B7BF7D5441AB57B8B997E9504127FE2047BF7D5441BF03C99888E9504120D82D42BE7D5441FE46D88383E95041A346BACCAD7D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200407 - 1082478
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000600000001030000000100000049010000F3998770F3245141A4E4950A282454412093F120F42451412D8ED071272454415427D626F5245141B21292972624544126B26885F5245141C13A8C47262454415C8FC225F8245141B81E85FB23245441D7A370BDF82451413333330323245441A4703D9AF82451413D0AD75321245441E17A149EF8245141A4703DEA1F245441000000F0F824514185EB51881E24544152B81E45F9245141E17A14BE1D245441F6285CDFF9245141B81E85DB1C245441C3F5288CFA245141D7A3703D1C24544100000090FB24514148E17AD41B24544133333353FD245141B81E856B1B245441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000B9010000B17746BFD7235141E82680258A24544166666656D72351417B14AEE7882454413D0AD733D52351411F85EB218524544114AE47F1D1235141F6285C6F8224544185EB5198CB2351417B14AE678824544152B81E65C5235141F6285CDF8C24544152B81E75C9235141CDCCCCAC8D245441E17A145ECE235141C3F528BC90245441C3F5286CD3235141B81E853B91245441D7A3707DD4235141E17A145E93245441B81E850BD9235141713D0A279424544114AE47C1DA235141295C8F829324544114AE47C1DA235141B81E85BB91245441713D0A67D92351411F85EB618F245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200407 - 3350693
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000600000001030000000100000049010000F3998770F3245141A4E4950A282454412093F120F42451412D8ED071272454415427D626F5245141B21292972624544126B26885F5245141C13A8C47262454415C8FC225F8245141B81E85FB23245441D7A370BDF82451413333330323245441A4703D9AF82451413D0AD75321245441E17A149EF8245141A4703DEA1F245441000000F0F824514185EB51881E24544152B81E45F9245141E17A14BE1D245441F6285CDFF9245141B81E85DB1C245441C3F5288CFA245141D7A3703D1C24544100000090FB24514148E17AD41B24544133333353FD245141B81E856B1B245441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000B9010000B17746BFD7235141E82680258A24544166666656D72351417B14AEE7882454413D0AD733D52351411F85EB218524544114AE47F1D1235141F6285C6F8224544185EB5198CB2351417B14AE678824544152B81E65C5235141F6285CDF8C24544152B81E75C9235141CDCCCCAC8D245441E17A145ECE235141C3F528BC90245441C3F5286CD3235141B81E853B91245441D7A3707DD4235141E17A145E93245441B81E850BD9235141713D0A279424544114AE47C1DA235141295C8F829324544114AE47C1DA235141B81E85BB91245441713D0A67D92351411F85EB618F245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200407 - 252459
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000600000001030000000100000049010000F3998770F3245141A4E4950A282454412093F120F42451412D8ED071272454415427D626F5245141B21292972624544126B26885F5245141C13A8C47262454415C8FC225F8245141B81E85FB23245441D7A370BDF82451413333330323245441A4703D9AF82451413D0AD75321245441E17A149EF8245141A4703DEA1F245441000000F0F824514185EB51881E24544152B81E45F9245141E17A14BE1D245441F6285CDFF9245141B81E85DB1C245441C3F5288CFA245141D7A3703D1C24544100000090FB24514148E17AD41B24544133333353FD245141B81E856B1B245441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000B9010000B17746BFD7235141E82680258A24544166666656D72351417B14AEE7882454413D0AD733D52351411F85EB218524544114AE47F1D1235141F6285C6F8224544185EB5198CB2351417B14AE678824544152B81E65C5235141F6285CDF8C24544152B81E75C9235141CDCCCCAC8D245441E17A145ECE235141C3F528BC90245441C3F5286CD3235141B81E853B91245441D7A3707DD4235141E17A145E93245441B81E850BD9235141713D0A279424544114AE47C1DA235141295C8F829324544114AE47C1DA235141B81E85BB91245441713D0A67D92351411F85EB618F245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>200407 - 259366
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000600000001030000000100000049010000F3998770F3245141A4E4950A282454412093F120F42451412D8ED071272454415427D626F5245141B21292972624544126B26885F5245141C13A8C47262454415C8FC225F8245141B81E85FB23245441D7A370BDF82451413333330323245441A4703D9AF82451413D0AD75321245441E17A149EF8245141A4703DEA1F245441000000F0F824514185EB51881E24544152B81E45F9245141E17A14BE1D245441F6285CDFF9245141B81E85DB1C245441C3F5288CFA245141D7A3703D1C24544100000090FB24514148E17AD41B24544133333353FD245141B81E856B1B245441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000B9010000B17746BFD7235141E82680258A24544166666656D72351417B14AEE7882454413D0AD733D52351411F85EB218524544114AE47F1D1235141F6285C6F8224544185EB5198CB2351417B14AE678824544152B81E65C5235141F6285CDF8C24544152B81E75C9235141CDCCCCAC8D245441E17A145ECE235141C3F528BC90245441C3F5286CD3235141B81E853B91245441D7A3707DD4235141E17A145E93245441B81E850BD9235141713D0A279424544114AE47C1DA235141295C8F829324544114AE47C1DA235141B81E85BB91245441713D0A67D92351411F85EB618F245441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>289168 - 151316
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000330000000B82234EAC0051418BA122A1B833544183CCA8E6AB00514112579D08B93354418BFE5996AA00514134C660FEB933544119E685ADA90051415ACEFC4BBA335441FFA87367A7005141302D88A6BA335441D7A370BDA6005141EC51B82EBA3354413D0AD7F3A5005141EC51B80EBA3354411F85EB51A30051410AD7A390B833544185EB5128A200514148E17A14B8335441713D0A07A0005141A4703D7AB73354418A1784D09E00514110579D08B933544114AE47219E0051410AD7A360BA3354418FC2F5B89E0051418FC2F558BB33544148E17AF49E005141E17A14BEBB335441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000005600000067CE71BDA60051414B74B82EBA3354413D0AD7F3A5005141EC51B80EBA3354411F85EB51A30051410AD7A390B833544185EB5128A200514148E17A14B8335441713D0A07A0005141A4703D7AB7335441871784D09E00514113579D08B933544114AE47219E0051410AD7A360BA3354418FC2F5B89E0051418FC2F558BB33544148E17AF49E005141E17A14BEBB335441B01F201E9F005141600ED4DABF3354414CDD36D39F005141413F7CACC13354412C6E73DD9E005141CB5B1EBCC2335441B5EAA9259D005141BC575095C2335441388EF83A9C0051416B9D40C4C2335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>289168 - 396114
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000330000000B82234EAC0051418BA122A1B833544183CCA8E6AB00514112579D08B93354418BFE5996AA00514134C660FEB933544119E685ADA90051415ACEFC4BBA335441FFA87367A7005141302D88A6BA335441D7A370BDA6005141EC51B82EBA3354413D0AD7F3A5005141EC51B80EBA3354411F85EB51A30051410AD7A390B833544185EB5128A200514148E17A14B8335441713D0A07A0005141A4703D7AB73354418A1784D09E00514110579D08B933544114AE47219E0051410AD7A360BA3354418FC2F5B89E0051418FC2F558BB33544148E17AF49E005141E17A14BEBB335441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000005600000067CE71BDA60051414B74B82EBA3354413D0AD7F3A5005141EC51B80EBA3354411F85EB51A30051410AD7A390B833544185EB5128A200514148E17A14B8335441713D0A07A0005141A4703D7AB7335441871784D09E00514113579D08B933544114AE47219E0051410AD7A360BA3354418FC2F5B89E0051418FC2F558BB33544148E17AF49E005141E17A14BEBB335441B01F201E9F005141600ED4DABF3354414CDD36D39F005141413F7CACC13354412C6E73DD9E005141CB5B1EBCC2335441B5EAA9259D005141BC575095C2335441388EF83A9C0051416B9D40C4C2335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918244 - 3187103
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000400000001030000000100000029000000C3F5285C5DE450410AD7A3F0952A5441666666B660E4504185EB51D8972A544152B81E1562E45041CDCCCCBC9A2A54410005AEBE63E450413F1775B89C2A54413D0AD7C36AE4504185EB5118A52A5441DEEF94A56AE45041C547835AA52A54417B3E852B6BE450418C258AE6A52A5441D4680F2B6BE45041686F92DAA52A5441FD9E6A626BE450418C488627A62A544159B6B4536CE450417696A70BA52A5441363CBC096CE45041248BB91CA52A5441C9DA27D46CE45041FE4DE287A32A544123612ED16DE45041562970C0A12A5441A548C9036EE450410217B7DCA02A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000046D8EF0862E450419FABDF388D2A54412BF8CE3D63E45041F0F51C648D2A5441EBBBACCF65E45041174C59C68E2A5441DA526C5669E45041A5CF1A07912A54418AA3FC286AE450412AEAC4908F2A5441FAD3C6C369E450414C45F8B58B2A5441D003C8F169E45041A3B111AF8B2A54412166259468E4504118C59DA2892A5441D107735567E4504133971E6E892A54410151E32565E45041D7C187B48A2A5441EE7D7A1C63E45041FED28CD08B2A54415349547061E450412A5FB3B98C2A544146D8EF0862E450419FABDF388D2A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918244 - 3598400
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000400000001030000000100000029000000C3F5285C5DE450410AD7A3F0952A5441666666B660E4504185EB51D8972A544152B81E1562E45041CDCCCCBC9A2A54410005AEBE63E450413F1775B89C2A54413D0AD7C36AE4504185EB5118A52A5441DEEF94A56AE45041C547835AA52A54417B3E852B6BE450418C258AE6A52A5441D4680F2B6BE45041686F92DAA52A5441FD9E6A626BE450418C488627A62A544159B6B4536CE450417696A70BA52A5441363CBC096CE45041248BB91CA52A5441C9DA27D46CE45041FE4DE287A32A544123612ED16DE45041562970C0A12A5441A548C9036EE450410217B7DCA02A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000046D8EF0862E450419FABDF388D2A54412BF8CE3D63E45041F0F51C648D2A5441EBBBACCF65E45041174C59C68E2A5441DA526C5669E45041A5CF1A07912A54418AA3FC286AE450412AEAC4908F2A5441FAD3C6C369E450414C45F8B58B2A5441D003C8F169E45041A3B111AF8B2A54412166259468E4504118C59DA2892A5441D107735567E4504133971E6E892A54410151E32565E45041D7C187B48A2A5441EE7D7A1C63E45041FED28CD08B2A54415349547061E450412A5FB3B98C2A544146D8EF0862E450419FABDF388D2A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918244 - 256904
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000400000001030000000100000029000000C3F5285C5DE450410AD7A3F0952A5441666666B660E4504185EB51D8972A544152B81E1562E45041CDCCCCBC9A2A54410005AEBE63E450413F1775B89C2A54413D0AD7C36AE4504185EB5118A52A5441DEEF94A56AE45041C547835AA52A54417B3E852B6BE450418C258AE6A52A5441D4680F2B6BE45041686F92DAA52A5441FD9E6A626BE450418C488627A62A544159B6B4536CE450417696A70BA52A5441363CBC096CE45041248BB91CA52A5441C9DA27D46CE45041FE4DE287A32A544123612ED16DE45041562970C0A12A5441A548C9036EE450410217B7DCA02A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D003C8F169E45041A3B111AF8B2A54412166259468E4504118C59DA2892A5441D107735567E4504133971E6E892A54410151E32565E45041D7C187B48A2A5441EE7D7A1C63E45041FED28CD08B2A54415349547061E450412A5FB3B98C2A544146D8EF0862E450419FABDF388D2A54412BF8CE3D63E45041F0F51C648D2A5441EBBBACCF65E45041174C59C68E2A5441DA526C5669E45041A5CF1A07912A54418AA3FC286AE450412AEAC4908F2A5441FAD3C6C369E450414C45F8B58B2A5441D003C8F169E45041A3B111AF8B2A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918244 - 345333
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000400000001030000000100000029000000C3F5285C5DE450410AD7A3F0952A5441666666B660E4504185EB51D8972A544152B81E1562E45041CDCCCCBC9A2A54410005AEBE63E450413F1775B89C2A54413D0AD7C36AE4504185EB5118A52A5441DEEF94A56AE45041C547835AA52A54417B3E852B6BE450418C258AE6A52A5441D4680F2B6BE45041686F92DAA52A5441FD9E6A626BE450418C488627A62A544159B6B4536CE450417696A70BA52A5441363CBC096CE45041248BB91CA52A5441C9DA27D46CE45041FE4DE287A32A544123612ED16DE45041562970C0A12A5441A548C9036EE450410217B7DCA02A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D003C8F169E45041A3B111AF8B2A54412166259468E4504118C59DA2892A5441D107735567E4504133971E6E892A54410151E32565E45041D7C187B48A2A5441EE7D7A1C63E45041FED28CD08B2A54415349547061E450412A5FB3B98C2A544146D8EF0862E450419FABDF388D2A54412BF8CE3D63E45041F0F51C648D2A5441EBBBACCF65E45041174C59C68E2A5441DA526C5669E45041A5CF1A07912A54418AA3FC286AE450412AEAC4908F2A5441FAD3C6C369E450414C45F8B58B2A5441D003C8F169E45041A3B111AF8B2A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956065 - 3112591
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000F6285CAF6D595141CDCCCCAC288A5441713D0A7763595141E17A144E3B8A5441666666566659514152B81E253D8A5441713D0A976C5951419A999949408A5441713D0A9773595141B81E85CB318A544148E17A4480595141D7A370FD1A8A54419A99990978595141E17A14CE158A5441F6285CAF6D595141CDCCCCAC288A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000048E17A4480595141D7A370FD1A8A5441737BB2FD7B595141BFA2AD4B188A54415450990978595141700015CE158A5441CBE3E70E725951414C6326B4208A54414DE630326A5951411855F4082F8A5441000E4533655951417E954B24388A5441BE287BE2635951417ADD398A3A8A5441D6523678635951415DB3D44E3B8A54411496ED1266595141867FE6F93C8A544142DA9A986C5951415E305C46408A5441713D0A9773595141B81E85CB318A5441122C9AB57E595141CBB8F6CA1D8A544148E17A4480595141D7A370FD1A8A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956065 - 3439863
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000008000000F6285CAF6D595141CDCCCCAC288A5441713D0A7763595141E17A144E3B8A5441666666566659514152B81E253D8A5441713D0A976C5951419A999949408A5441713D0A9773595141B81E85CB318A544148E17A4480595141D7A370FD1A8A54419A99990978595141E17A14CE158A5441F6285CAF6D595141CDCCCCAC288A5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D00000048E17A4480595141D7A370FD1A8A5441737BB2FD7B595141BFA2AD4B188A54415450990978595141700015CE158A5441CBE3E70E725951414C6326B4208A54414DE630326A5951411855F4082F8A5441000E4533655951417E954B24388A5441BE287BE2635951417ADD398A3A8A5441D6523678635951415DB3D44E3B8A54411496ED1266595141867FE6F93C8A544142DA9A986C5951415E305C46408A5441713D0A9773595141B81E85CB318A5441122C9AB57E595141CBB8F6CA1D8A544148E17A4480595141D7A370FD1A8A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918201 - 3084673
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F00000053ACF5F3E85A5141863DB38E5985544189459AB6DC5A5141DCF8D10141855441240EA5AED85A5141492B9B9D428554411258E3C0D55A5141FA67869743855441ECEB5FE5CF5A5141E36FCA6744855441FF4A35E0C95A5141ABA471914485544153504428C55A51411B3B233E44855441ABEE39A5C55A51418F6ABB1F4985544124B7B8BBCF5A514173DEDD935F8554417CCA0444DB5A514110B3A9815E8554415F9E81CAE05A5141B54BC3FD5D855441925AD934E55A514124F35B945D855441F76E5BA7E75A51412F5A8E595B8554410890CC55E85A5141901ECCB55A855441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000014AE47A1F55A5141713D0AE798855441713D0AD7FC5A5141E17A14DE9885544100000010FC5A5141666666D6978554415C8FC245FA5A5141295C8F9294855441AE47E12AF95A5141295C8F929185544148E17A24F85A5141AE47E19A8B85544152B81E35F75A514185EB51787B8554419A999939F65A5141713D0AF775855441B81E85EBF45A5141EC51B8DE71855441F6285C2FF35A5141A4703DAA6D855441713D0AF7E85A5141333333335985544148E17A54E85A51418FC2F5B85A85544114AE4741E55A5141333333935D855441E17A145ED75A5141EC51B8DE5E855441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918201 - 3413148
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F00000053ACF5F3E85A5141863DB38E5985544189459AB6DC5A5141DCF8D10141855441240EA5AED85A5141492B9B9D428554411258E3C0D55A5141FA67869743855441ECEB5FE5CF5A5141E36FCA6744855441FF4A35E0C95A5141ABA471914485544153504428C55A51411B3B233E44855441ABEE39A5C55A51418F6ABB1F4985544124B7B8BBCF5A514173DEDD935F8554417CCA0444DB5A514110B3A9815E8554415F9E81CAE05A5141B54BC3FD5D855441925AD934E55A514124F35B945D855441F76E5BA7E75A51412F5A8E595B8554410890CC55E85A5141901ECCB55A855441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B00000014AE47A1F55A5141713D0AE798855441713D0AD7FC5A5141E17A14DE9885544100000010FC5A5141666666D6978554415C8FC245FA5A5141295C8F9294855441AE47E12AF95A5141295C8F929185544148E17A24F85A5141AE47E19A8B85544152B81E35F75A514185EB51787B8554419A999939F65A5141713D0AF775855441B81E85EBF45A5141EC51B8DE71855441F6285C2FF35A5141A4703DAA6D855441713D0AF7E85A5141333333335985544148E17A54E85A51418FC2F5B85A85544114AE4741E55A5141333333935D855441E17A145ED75A5141EC51B8DE5E855441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>515925 - 462878
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000FD161F38CFF55041F4BA6AB13011554185EB5108D3F5504152B81ED52D115541AE47E1FAD6F55041F6285C8F2A115541F6285CFFDCF55041713D0A9726115541A83F2E23DEF550417B49421321115541D506B046DFF55041501817F01A1155417B14AE67E0F55041CDCCCC9C15115541E6F2BBCAE0F5504170B3256B1311554132B5DE43E1F550414D059949111155415E4D3169E1F55041D7F63CA710115541A806FC74E1F550417866D61D10115541248ACB3BE0F55041A141D7530F115541713D0AA7DAF55041CDCCCC1C0C11554114AE4701D6F550416666664609115541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000005C8FC275F0F550418FC2F5B81E11554114AE4741F2F550410AD7A3C01B115541EC51B8BEF0F5504152B81E851A1155415C8FC265EDF55041EC51B84E181155411F85EBA1EAF55041D7A3700D161155411F85EBA1E8F550413D0AD77314115541B81E85CBE3F55041C3F528AC101155417B14AE77E1F55041CDCCCC4C0F1155418FC2F568E1F55041CDCCCCAC101155411F85EBE1E0F550417B14AEE7121155417B14AE67E0F55041CDCCCC9C151155413D0AD723DFF5504148E17A941B1155411F85EBE1DDF550418FC2F57822115541F6285CFFDCF55041713D0A9726115541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>515925 - 1444620
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000FD161F38CFF55041F4BA6AB13011554185EB5108D3F5504152B81ED52D115541AE47E1FAD6F55041F6285C8F2A115541F6285CFFDCF55041713D0A9726115541A83F2E23DEF550417B49421321115541D506B046DFF55041501817F01A1155417B14AE67E0F55041CDCCCC9C15115541E6F2BBCAE0F5504170B3256B1311554132B5DE43E1F550414D059949111155415E4D3169E1F55041D7F63CA710115541A806FC74E1F550417866D61D10115541248ACB3BE0F55041A141D7530F115541713D0AA7DAF55041CDCCCC1C0C11554114AE4701D6F550416666664609115541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000005C8FC275F0F550418FC2F5B81E11554114AE4741F2F550410AD7A3C01B115541EC51B8BEF0F5504152B81E851A1155415C8FC265EDF55041EC51B84E181155411F85EBA1EAF55041D7A3700D161155411F85EBA1E8F550413D0AD77314115541B81E85CBE3F55041C3F528AC101155417B14AE77E1F55041CDCCCC4C0F1155418FC2F568E1F55041CDCCCCAC101155411F85EBE1E0F550417B14AEE7121155417B14AE67E0F55041CDCCCC9C151155413D0AD723DFF5504148E17A941B1155411F85EBE1DDF550418FC2F57822115541F6285CFFDCF55041713D0A9726115541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>515925 - 4131281
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001C000000FD161F38CFF55041F4BA6AB13011554185EB5108D3F5504152B81ED52D115541AE47E1FAD6F55041F6285C8F2A115541F6285CFFDCF55041713D0A9726115541A83F2E23DEF550417B49421321115541D506B046DFF55041501817F01A1155417B14AE67E0F55041CDCCCC9C15115541E6F2BBCAE0F5504170B3256B1311554132B5DE43E1F550414D059949111155415E4D3169E1F55041D7F63CA710115541A806FC74E1F550417866D61D10115541248ACB3BE0F55041A141D7530F115541713D0AA7DAF55041CDCCCC1C0C11554114AE4701D6F550416666664609115541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000005C8FC275F0F550418FC2F5B81E11554114AE4741F2F550410AD7A3C01B115541EC51B8BEF0F5504152B81E851A1155415C8FC265EDF55041EC51B84E181155411F85EBA1EAF55041D7A3700D161155411F85EBA1E8F550413D0AD77314115541B81E85CBE3F55041C3F528AC101155417B14AE77E1F55041CDCCCC4C0F1155418FC2F568E1F55041CDCCCCAC101155411F85EBE1E0F550417B14AEE7121155417B14AE67E0F55041CDCCCC9C151155413D0AD723DFF5504148E17A941B1155411F85EBE1DDF550418FC2F57822115541F6285CFFDCF55041713D0A9726115541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>26758 - 39472
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000ED000000BD417A51DAFA50412DC9DA774C5C544120452074DAFA50419728B6E44A5C5441740D23AEDAFA5041AB90FB25465C5441414609D3DAFA50419A7FB4A1435C54415D1435DEDAFA50410EB4D827435C54411A8341EDDAFA5041A0B32799425C5441BB29BEF3DAFA5041026C890A425C54419DF754FADAFA50414E75DE87415C544199721926DBFA5041377C04A63F5C544116814641CFFA504120BD95504B5C544168E8CAD2CEFA5041490424B14B5C5441DF39DD6CCEFA50410F05C5104C5C544188611406CEFA504145E667704C5C5441FCB926A0CDFA50419FE708D04C5C5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000780100009CCD26ED9FFA50419A6B5B277F5C544153AD54DF9FFA5041122E239F7F5C54415451F50DA0FA50416FFB81AC7F5C54412F956980A0FA5041C0C253CD7F5C54414086330DA1FA5041A12D17A37F5C544194A81F88A2FA504121F069317F5C54416857851AA4FA504147D5B1B87E5C54417556458BA5FA50418FD5114A7E5C5441940346A0A6FA50410508F8F67D5C544175E2756EA7FA5041C1DE1CB97D5C544121768CF9A7FA5041A7E5628F7D5C544129F40262A8FA50413E260C707D5C5441A67FC5FBA8FA5041CB62EB417D5C54419E543C5BA9FA504181BC47257D5C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>26758 - 53795
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000ED000000BD417A51DAFA50412DC9DA774C5C544120452074DAFA50419728B6E44A5C5441740D23AEDAFA5041AB90FB25465C5441414609D3DAFA50419A7FB4A1435C54415D1435DEDAFA50410EB4D827435C54411A8341EDDAFA5041A0B32799425C5441BB29BEF3DAFA5041026C890A425C54419DF754FADAFA50414E75DE87415C544199721926DBFA5041377C04A63F5C544116814641CFFA504120BD95504B5C544168E8CAD2CEFA5041490424B14B5C5441DF39DD6CCEFA50410F05C5104C5C544188611406CEFA504145E667704C5C5441FCB926A0CDFA50419FE708D04C5C5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000780100009CCD26ED9FFA50419A6B5B277F5C544153AD54DF9FFA5041122E239F7F5C54415451F50DA0FA50416FFB81AC7F5C54412F956980A0FA5041C0C253CD7F5C54414086330DA1FA5041A12D17A37F5C544194A81F88A2FA504121F069317F5C54416857851AA4FA504147D5B1B87E5C54417556458BA5FA50418FD5114A7E5C5441940346A0A6FA50410508F8F67D5C544175E2756EA7FA5041C1DE1CB97D5C544121768CF9A7FA5041A7E5628F7D5C544129F40262A8FA50413E260C707D5C5441A67FC5FBA8FA5041CB62EB417D5C54419E543C5BA9FA504181BC47257D5C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>26758 - 247545
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000ED000000BD417A51DAFA50412DC9DA774C5C544120452074DAFA50419728B6E44A5C5441740D23AEDAFA5041AB90FB25465C5441414609D3DAFA50419A7FB4A1435C54415D1435DEDAFA50410EB4D827435C54411A8341EDDAFA5041A0B32799425C5441BB29BEF3DAFA5041026C890A425C54419DF754FADAFA50414E75DE87415C544199721926DBFA5041377C04A63F5C544116814641CFFA504120BD95504B5C544168E8CAD2CEFA5041490424B14B5C5441DF39DD6CCEFA50410F05C5104C5C544188611406CEFA504145E667704C5C5441FCB926A0CDFA50419FE708D04C5C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000009A0100007B65837F9FFA50412978A9837F5C544156AD54DF9FFA50410D2E239F7F5C54419FCD26ED9FFA5041966B5B277F5C5441A1EE0B30A0FA5041ADB609EF7E5C544149D8357FA0FA504121C563AC7E5C54418DB9C8A3A0FA5041D920998D7E5C5441AD885CE0A0FA5041810C995A7E5C54413D7E10E4A0FA50416AF57A577E5C54410A9D19BFA1FA5041895EE9E77D5C5441B135DB07A2FA50416FDC9ED57D5C5441FA2FE92BA2FA50410FDB8ECE7D5C544131ED383AA2FA5041CCE52DC97D5C5441E306B255A2FA5041BF9A64C27D5C5441DE2A9F7AA2FA504106E6B4BA7D5C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>26758 - 259987
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000ED000000BD417A51DAFA50412DC9DA774C5C544120452074DAFA50419728B6E44A5C5441740D23AEDAFA5041AB90FB25465C5441414609D3DAFA50419A7FB4A1435C54415D1435DEDAFA50410EB4D827435C54411A8341EDDAFA5041A0B32799425C5441BB29BEF3DAFA5041026C890A425C54419DF754FADAFA50414E75DE87415C544199721926DBFA5041377C04A63F5C544116814641CFFA504120BD95504B5C544168E8CAD2CEFA5041490424B14B5C5441DF39DD6CCEFA50410F05C5104C5C544188611406CEFA504145E667704C5C5441FCB926A0CDFA50419FE708D04C5C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000009A0100007B65837F9FFA50412978A9837F5C544156AD54DF9FFA50410D2E239F7F5C54419FCD26ED9FFA5041966B5B277F5C5441A1EE0B30A0FA5041ADB609EF7E5C544149D8357FA0FA504121C563AC7E5C54418DB9C8A3A0FA5041D920998D7E5C5441AD885CE0A0FA5041810C995A7E5C54413D7E10E4A0FA50416AF57A577E5C54410A9D19BFA1FA5041895EE9E77D5C5441B135DB07A2FA50416FDC9ED57D5C5441FA2FE92BA2FA50410FDB8ECE7D5C544131ED383AA2FA5041CCE52DC97D5C5441E306B255A2FA5041BF9A64C27D5C5441DE2A9F7AA2FA504106E6B4BA7D5C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942530 - 3821931
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000028000000D7A3709D5D3E514148E17AA4A1FE54410AD7A390693E5141E17A146EA8FE54417B14AEE7713E514185EB51F8AAFE5441F6285C7F7A3E5141A4703D9AADFE5441C3F5283C803E51411F85EB01B1FE544100000080853E51415C8FC275B4FE544152B81EA5873E51418FC2F518B7FE5441E17A147E883E5141D7A370FDB6FE5441B81E854B923E51413333333397FE54410AD7A3B0953E5141EC51B85E86FE5441295C8F62663E5141295C8F2289FE54413D0AD753663E5141295C8F2288FE544152B81EE5953E5141AE47E15A85FE544161765451973E5141299EC4AB7AFE5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000290000000DF28459683E51419B110EA97DFE5441E001145C683E51419D36DDA87DFE54412A147149683E5141FCC31AFF7DFE54412E201344673E51418239FA7583FE54412F89B34B663E5141CCAF8D6C87FE5441C9DDEF40643E514121EDFBC38FFE54410FB2F27C613E51415DDA953B99FE544111214BC95F3E51411760A10B9FFE544145ECD9005F3E51412B8245B8A1FE5441CAC14FA25E3E5141C6EE0A66A2FE54410CA3AC5A673E5141571B6DC9A7FE5441297A5C86693E5141A94CD0BAA8FE5441FEBF83096D3E5141A476B9F6A9FE5441CFBF5BE26F3E5141CD9C07E5AAFE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>570873 - 1271990
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002C0000001EF625A562585141402F7359928D544162DE250F5D585141A4B926D98F8D5441CDCCCC4C5C585141A4703D9A908D544114AE47F14D585141EC51B8EEA18D5441666666B6515851415C8FC285A58D544152B81E4554585141D7A370CDA88D54411F85EB5156585141A4703D1AAC8D5441A4703DFA5658514148E17A14AD8D544148E17A1458585141666666B6AE8D54413D0AD7D358585141295C8FA2AF8D54417B14AE975C585141CDCCCC3CB48D54410AD7A3506058514185EB51D8B88D54413D0AD7F361585141000000B0BA8D54418FC2F5186958514185EB51B8C28D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000300000001EF625A562585141422F7359928D544161DE250F5D585141A8B926D98F8D5441CDCCCC4C5C585141A4703D9A908D54411064F4B04F585141F87941D89F8D54419B4DD145525851411FB9D2ACA18D54414ABCD3E6545851415E3440D0A68D5441D3D9F95D5858514120275079AB8D54412B117BAE595851411449C662AD8D544156993A165B585141BCB46C74AF8D54413C89984D5E58514155780696B38D54414F8023DA61585141F86EFF1AB88D544126D763E763585141ED15E5E7BA8D54415F1CDC876A5851418DBED96AC28D544198A804A070585141BA6C786CCA8D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>570873 - 3407946
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002C0000001EF625A562585141402F7359928D544162DE250F5D585141A4B926D98F8D5441CDCCCC4C5C585141A4703D9A908D544114AE47F14D585141EC51B8EEA18D5441666666B6515851415C8FC285A58D544152B81E4554585141D7A370CDA88D54411F85EB5156585141A4703D1AAC8D5441A4703DFA5658514148E17A14AD8D544148E17A1458585141666666B6AE8D54413D0AD7D358585141295C8FA2AF8D54417B14AE975C585141CDCCCC3CB48D54410AD7A3506058514185EB51D8B88D54413D0AD7F361585141000000B0BA8D54418FC2F5186958514185EB51B8C28D5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000300000001EF625A562585141422F7359928D544161DE250F5D585141A8B926D98F8D5441CDCCCC4C5C585141A4703D9A908D54411064F4B04F585141F87941D89F8D54419B4DD145525851411FB9D2ACA18D54414ABCD3E6545851415E3440D0A68D5441D3D9F95D5858514120275079AB8D54412B117BAE595851411449C662AD8D544156993A165B585141BCB46C74AF8D54413C89984D5E58514155780696B38D54414F8023DA61585141F86EFF1AB88D544126D763E763585141ED15E5E7BA8D54415F1CDC876A5851418DBED96AC28D544198A804A070585141BA6C786CCA8D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>690814 - 3566902
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000020000000103000000010000002900000066666606105A514152B81EF591865441C3F5282C115A5141AE47E16A89865441333333B3115A5141A4703D2A8386544185EB51A8115A5141B81E859B7986544185EB5148115A5141295C8F626D8654410AD7A300115A5141295C8F826B865441AE47E13A105A5141295C8F526886544148E17A04115A5141333333735D865441713D0AF70C5A5141713D0A975E86544148E17A84025A5141AE47E1AA618654415C8FC215F959514114AE475164865441713D0AA7F259514114AE47A16686544185EB5188EE59514152B81EB568865441C3F528ECEA595141666666166B865441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000510000000D62DEA7115A5141C524E6D1A3865441D32ACC08105A51416044331DA08654419266EA42115A5141B5E281529F86544180E901AC155A5141AD9341C89C865441453B422A185A5141465D4F3B9F865441E991719D195A5141A72705629E8654410139B8F01B5A5141AB9E42C99C865441A469B7251D5A5141FDB419F59B865441461522521D5A5141E1CDF2A99B865441BE608B341C5A5141CEB896F299865441DA9CDD2B1D5A5141A1D6962198865441EBA27F331E5A51419A26FA669786544132425920205A51419759C72E96865441514AA439225A5141C92F0B2B96865441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>752130 - 1715906
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000100000002CA7A87514AB5041817BFBF04B1B5541713D0AD712AB50410AD7A340501B55410AD7A37013AB50419A999979551B55418FC2F5680DAB5041D7A370AD671B5541C3F528EC09AB50417B14AE77731B5541CDCCCCAC23AB5041E17A14AE751B5541C3F528BC2DAB504152B81E85761B554185EB51E82FAB5041333333D3771B55411F85EBC12FAB5041EC51B86E751B5541B81E854B2FAB504166666606721B5541AE47E10A2FAB5041AE47E19A6C1B55417B14AE172FAB5041D7A370DD681B5541295C8FC22FAB504148E17A64611B5541D7A370CD32AB50417B14AEA7511B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000019000000F73CA2E513AB5041DA674C704D1B5541713D0AD712AB50410AD7A340501B55410AD7A37013AB50419A999979551B55418FC2F5680DAB5041D7A370AD671B5541C3F528EC09AB50417B14AE77731B554183FE73C809AB5041B05D2F30741B5541376DBBAD1CAB50412AA59FFD751B5541CB317B791CAB504111D38B4E731B5541E5D1012A1DAB5041532EEE1F721B5541A3769F581EAB5041532EEE1F721B5541EF56336A20AB5041E169E402731B55413860616621AB5041431399AF741B554177C1D06621AB5041E4F0F570761B5541B0465BFF23AB50418D4C5AB0761B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>752130 - 3767451
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000100000002CA7A87514AB5041817BFBF04B1B5541713D0AD712AB50410AD7A340501B55410AD7A37013AB50419A999979551B55418FC2F5680DAB5041D7A370AD671B5541C3F528EC09AB50417B14AE77731B5541CDCCCCAC23AB5041E17A14AE751B5541C3F528BC2DAB504152B81E85761B554185EB51E82FAB5041333333D3771B55411F85EBC12FAB5041EC51B86E751B5541B81E854B2FAB504166666606721B5541AE47E10A2FAB5041AE47E19A6C1B55417B14AE172FAB5041D7A370DD681B5541295C8FC22FAB504148E17A64611B5541D7A370CD32AB50417B14AEA7511B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000019000000F73CA2E513AB5041DA674C704D1B5541713D0AD712AB50410AD7A340501B55410AD7A37013AB50419A999979551B55418FC2F5680DAB5041D7A370AD671B5541C3F528EC09AB50417B14AE77731B554183FE73C809AB5041B05D2F30741B5541376DBBAD1CAB50412AA59FFD751B5541CB317B791CAB504111D38B4E731B5541E5D1012A1DAB5041532EEE1F721B5541A3769F581EAB5041532EEE1F721B5541EF56336A20AB5041E169E402731B55413860616621AB5041431399AF741B554177C1D06621AB5041E4F0F570761B5541B0465BFF23AB50418D4C5AB0761B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918747 - 317614
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001800000066666676B6A0504100000080501B544185EB5148BBA050418FC2F548571B54415C8FC215BCA050419A999969581B544114AE4741BCA05041B81E858B581B54410AD7A3C0BDA050419A9999195A1B544100000070BEA0504185EB51385B1B54419A999999C2A0504185EB5108621B5441333333E3C2A0504185EB5188611B5441B81E850BCDA05041333333B34F1B5441CDCCCC7CC8A0504152B81E85471B544152B81E95C6A05041B81E857B431B5441B81E855BC5A05041000000A0401B5441F6285C2FC2A05041F6285C4F391B544114AE4761BEA050411F85EBE12D1B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000008000000C26CFF6FBEA05041C6FA50385B1B544100000070BEA0504185EB51385B1B5441E8619999C2A050415E905108621B5441C44634E3C2A050414C6E5288611B5441D52E7B0BCDA050415D5D21B34F1B54412DCC6756C8A05041AD5C5CBF471B5441866BFF6FBEA05041C1F850385B1B5441C26CFF6FBEA05041C6FA50385B1B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>450750 - 1482543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000014000000AAC5DD8A84365141EBF9A441D1285541F9D86A389636514118B541D6CC285541EB3B80809E3651419C1D6A63CA2855417B14AE379B365141713D0AF7C528554148E17A3496365141E17A14CEBC285541295C8F2295365141B81E85ABBB285541E17A149E9336514166666656BB285541897FB33A90365141954A9938BC285541FFA2CE958B3651410144CE6DBD28554152B81E25893651410AD7A320BE2855413333339380365141295C8FE2C02855417B14AE676E365141D7A3702DC32855418BA73FFC6C3651413D7A87F7C4285541E7EE0A266C365141E01D114FD1285541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000C3C1563C85365141E5BA4615D1285541AEC5DD8A84365141EAF9A441D12855410B02127D7E365141B4C8B6EDD1285541C40BA0117E36514180D7C806D22855412F27F0567136514177E6F575D3285541F6285CEF7E365141F6285C2FD2285541B81E852B7F365141F6285C6FD3285541F6285CCF7B365141F6285C0FD4285541AE47E19A763651413D0AD7E3D4285541F6285CEF6F365141F6285CEFD5285541CDCCCCEC6836514133333373D62855410AD7A3406536514114AE47D1D6285541295C8F8263365141F6285C2FD72855418FC2F5D8603651413D0AD7D3D7285541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>450750 - 4162907
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000014000000AAC5DD8A84365141EBF9A441D1285541F9D86A389636514118B541D6CC285541EB3B80809E3651419C1D6A63CA2855417B14AE379B365141713D0AF7C528554148E17A3496365141E17A14CEBC285541295C8F2295365141B81E85ABBB285541E17A149E9336514166666656BB285541897FB33A90365141954A9938BC285541FFA2CE958B3651410144CE6DBD28554152B81E25893651410AD7A320BE2855413333339380365141295C8FE2C02855417B14AE676E365141D7A3702DC32855418BA73FFC6C3651413D7A87F7C4285541E7EE0A266C365141E01D114FD1285541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A000000C3C1563C85365141E5BA4615D1285541AEC5DD8A84365141EAF9A441D12855410B02127D7E365141B4C8B6EDD1285541C40BA0117E36514180D7C806D22855412F27F0567136514177E6F575D3285541F6285CEF7E365141F6285C2FD2285541B81E852B7F365141F6285C6FD3285541F6285CCF7B365141F6285C0FD4285541AE47E19A763651413D0AD7E3D4285541F6285CEF6F365141F6285CEFD5285541CDCCCCEC6836514133333373D62855410AD7A3406536514114AE47D1D6285541295C8F8263365141F6285C2FD72855418FC2F5D8603651413D0AD7D3D7285541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>869229 - 98972
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000031000000B81E856B4E745141C3F5288C537954415C8FC2455074514148E17AC45A795441CDCCCC1C65745141B81E85DB567954419A999959657451411F85EBB15179544152B81EB5787451419A9999B94B7954418FC2F59878745141B81E859B4A7954411F85EB617D745141A4703D8A45795441666666268074514152B81EE542795441666666C68174514114AE47C1417954416666669681745141A4703DCA4079544148E17A44837451415C8FC2D53F795441CDCCCC6C8374514114AE47013E7954419A99998989745141666666C63C7954419A9999898E7451415C8FC2353C795441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000026AF488C4B745141FDF6565148795441B81E856B4E745141C3F5288C53795441FA47DB714E745141993ADBA453795441B5DE4E1265745141806542224E795441F578CA4E65745141066F80AD51795441589B128F77745141305349144C795441A640C9E07774514113DB15FB4B79544182309EF5777451412F23A9F44B7954411005735778745141251F7DD64B7954411A13249078745141752F01C54B7954411A13249078745141BBC1885A4A795441B2753E2577745141A70FF2414179544149D858BA75745141D9350C6A3C79544126AF488C4B745141FDF6565148795441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>869229 - 300686
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000200000031000000B81E856B4E745141C3F5288C537954415C8FC2455074514148E17AC45A795441CDCCCC1C65745141B81E85DB567954419A999959657451411F85EBB15179544152B81EB5787451419A9999B94B7954418FC2F59878745141B81E859B4A7954411F85EB617D745141A4703D8A45795441666666268074514152B81EE542795441666666C68174514114AE47C1417954416666669681745141A4703DCA4079544148E17A44837451415C8FC2D53F795441CDCCCC6C8374514114AE47013E7954419A99998989745141666666C63C7954419A9999898E7451415C8FC2353C795441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E00000026AF488C4B745141FDF6565148795441B81E856B4E745141C3F5288C53795441FA47DB714E745141993ADBA453795441B5DE4E1265745141806542224E795441F578CA4E65745141066F80AD51795441589B128F77745141305349144C795441A640C9E07774514113DB15FB4B79544182309EF5777451412F23A9F44B7954411005735778745141251F7DD64B7954411A13249078745141752F01C54B7954411A13249078745141BBC1885A4A795441B2753E2577745141A70FF2414179544149D858BA75745141D9350C6A3C79544126AF488C4B745141FDF6565148795441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>342979 - 1035908
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000BC0B4D382EEB50417018862036AF5441E5BCBBE539EB504161CB2EE410AF54418BD997F422EB5041E3736F6800AF54418FA0F128F7EA50412ECA676D0DAF5441BC0B4D382EEB50417018862036AF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000007F1732E539EB50412FB4E5E510AF544113658EE739EB50411A259AE710AF544132EB5E4D41EB50416D1CEF02F9AE544119DAA9DB40EB50412E008B81F8AE54417E7F77F53EEB5041F02C47C0F8AE544109A1E87A38EB5041EC9DD7C5FAAE5441060425EE22EB50410A1DE86000AF54419ABC77B337EB50418E7234500FAF5441E5BCBBE539EB504165CB2EE410AF54417F1732E539EB50412FB4E5E510AF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>342979 - 3850514
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000005000000BC0B4D382EEB50417018862036AF5441E5BCBBE539EB504161CB2EE410AF54418BD997F422EB5041E3736F6800AF54418FA0F128F7EA50412ECA676D0DAF5441BC0B4D382EEB50417018862036AF5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000007F1732E539EB50412FB4E5E510AF544113658EE739EB50411A259AE710AF544132EB5E4D41EB50416D1CEF02F9AE544119DAA9DB40EB50412E008B81F8AE54417E7F77F53EEB5041F02C47C0F8AE544109A1E87A38EB5041EC9DD7C5FAAE5441060425EE22EB50410A1DE86000AF54419ABC77B337EB50418E7234500FAF5441E5BCBBE539EB504165CB2EE410AF54417F1732E539EB50412FB4E5E510AF5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>632138 - 225779
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000170000007B14AE4766B450419A9999890E2755410AD7A31068B45041AE47E1CA0F2755419A9999E969B450410AD7A3D00F2755417B14AE076BB45041E17A148E10275541C3F528BC6CB45041E17A14AE1127554185EB51086FB4504185EB51F812275541CDCCCC7C71B45041A4703D5A1427554114AE47F172B45041295C8F1215275541A4703DDA75B450413333338316275541AE47E13A7AB45041E17A14AE182755419A9999F97DB45041EC51B8CE19275541F6285C9F83B450418FC2F5E80B2755413D0AD76387B450415C8FC2A5022755419A9999298DB4504114AE4771F4265541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000C0000007B14AE076BB45041E17A148E10275541D7A370AD70B4504185EB51A802275541F63AB90971B45041303B4FC5012755419CB1ABD370B45041BC4E81B401275541389A74466FB450419E0304390127554126DB41136DB45041566146C70027554148E17A846CB450415C8FC2B50127554152B81EC566B45041A4703D9A0D2755417B14AE4766B450419A9999890E2755410AD7A31068B45041AE47E1CA0F2755419A9999E969B450410AD7A3D00F2755417B14AE076BB45041E17A148E10275541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>600127 - 2921066
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000009000000E17A14CE96225141B81E854BB5675441EC51B84E9622514100000050BE67544185EB5128C0225141F6285CCFC16754419A999949C2225141AE47E18ABB6754411F85EB11C422514114AE47A1B767544100000080C6225141B81E857BB6675441CDCCCC4CC72251413D0AD7F3A46754410AD7A3F09722514114AE47D1A0675441E17A14CE96225141B81E854BB5675441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000F2B694EDBA225141489C3027C067544120C8F353962251419A6D9318BD6754415498136096225141F9475152BC675441D486363E96225141EF21EC54BC675441CE15F24C96225141F2EA0F70BE6754412AD76206A4225141DF5A7A75BF675441A7F93246BB2251417475EA61C1675441B7D7BC25C022514155A889D1C1675441687C7A50C2225141AEEA136FBB67544106500826C4225141ED259388B7675441A71407DEC6225141DE20F953B667544140EA4026C722514123C25CFDA4675441BAEA2AFDBD2251415205671EA46754414120C2FABD2251417BBC3139A4675441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>600127 - 3805258
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000009000000E17A14CE96225141B81E854BB5675441EC51B84E9622514100000050BE67544185EB5128C0225141F6285CCFC16754419A999949C2225141AE47E18ABB6754411F85EB11C422514114AE47A1B767544100000080C6225141B81E857BB6675441CDCCCC4CC72251413D0AD7F3A46754410AD7A3F09722514114AE47D1A0675441E17A14CE96225141B81E854BB5675441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000F2B694EDBA225141489C3027C067544120C8F353962251419A6D9318BD6754415498136096225141F9475152BC675441D486363E96225141EF21EC54BC675441CE15F24C96225141F2EA0F70BE6754412AD76206A4225141DF5A7A75BF675441A7F93246BB2251417475EA61C1675441B7D7BC25C022514155A889D1C1675441687C7A50C2225141AEEA136FBB67544106500826C4225141ED259388B7675441A71407DEC6225141DE20F953B667544140EA4026C722514123C25CFDA4675441BAEA2AFDBD2251415205671EA46754414120C2FABD2251417BBC3139A4675441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>600322 - 1040786
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000D7A370CD73235141713D0A574C6C5441333333A378235141A4703D2A4D6C5441D7A370ED792351415C8FC2F54C6C5441A4703D1A7B235141000000304B6C5441A4703D8A7D2351417B14AE57446C5441713D0AC75C235141295C8FE2416C5441E17A148E5A235141E17A14BE406C544152B81EE55923514166666616466C54415C8FC20558235141295C8FF2456C5441EC51B8CE54235141B81E857B456C5441B81E852B55235141713D0AF7426C5441000000105023514148E17A84426C5441295C8FD24F235141F6285C0F456C54418FC2F5284F235141333333134C6C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000A4703D8A7D2351417B14AE57446C5441C462996566235141B3AC729C426C5441B02661536223514142A37475426C54417CC36CB060235141AEB4E746426C544148A0DDC85E23514192111A09426C54411456D5FC5C235141D65298E6416C5441CF7212C95C2351413CA10DD0416C5441D16DEBC95C235141298255C8416C544122B5BA625C235141F2E840BB416C544101D5A5845B235141D5EAE043416C5441413121D95A2351419AB81C8C436C5441DBFCB03D5A235141B76C8B3F466C54415C8FC20558235141295C8FF2456C5441EC51B8CE54235141B81E857B456C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>600322 - 3561284
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000D7A370CD73235141713D0A574C6C5441333333A378235141A4703D2A4D6C5441D7A370ED792351415C8FC2F54C6C5441A4703D1A7B235141000000304B6C5441A4703D8A7D2351417B14AE57446C5441713D0AC75C235141295C8FE2416C5441E17A148E5A235141E17A14BE406C544152B81EE55923514166666616466C54415C8FC20558235141295C8FF2456C5441EC51B8CE54235141B81E857B456C5441B81E852B55235141713D0AF7426C5441000000105023514148E17A84426C5441295C8FD24F235141F6285C0F456C54418FC2F5284F235141333333134C6C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000A4703D8A7D2351417B14AE57446C5441C462996566235141B3AC729C426C5441B02661536223514142A37475426C54417CC36CB060235141AEB4E746426C544148A0DDC85E23514192111A09426C54411456D5FC5C235141D65298E6416C5441CF7212C95C2351413CA10DD0416C5441D16DEBC95C235141298255C8416C544122B5BA625C235141F2E840BB416C544101D5A5845B235141D5EAE043416C5441413121D95A2351419AB81C8C436C5441DBFCB03D5A235141B76C8B3F466C54415C8FC20558235141295C8FF2456C5441EC51B8CE54235141B81E857B456C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335205 - 1485919
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002D0000008FC2F588BE3451415C8FC2158E39554148E17A64BF345141A4703D8A9439554166666626C0345141A4703DBA98395541AE47E13AC13451413D0AD7D39C3955418FC2F5D8C234514166666686A1395541EC51B86EC63451419A999949AA3955410AD7A3A0C8345141295C8F32AF39554185EB5108CB345141A4703DCAB339554152B81E25CE345141E17A14CEB8395541295C8F72D03451415C8FC2B5BB39554148E17A54DB3451415C8FC265B439554185EB5118D9345141713D0AC7B13955410AD7A320D734514185EB5198AE3955419A9999A9D43451413D0AD7B3AA395541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000000AD7A3F0C83451419A999969603955413AB8DCA7CD345141497DDE245F395541E612EAC0D0345141F77B1C805E395541DB545768D33451419A2BBD1F5E395541BE9FEFF6D6345141FBBD07265E395541AE47E14ADB345141CDCCCC9C5E39554130D140C9DA34514126158A0B5C395541C4CF2042DA345141DD3E27F8593955411F85EB11D93451415C8FC2B5543955410AD7A330D734514185EB51584F39554185EB51C8D43451418FC2F5D8493955410AD7A3E0CF345141000000903F3955414A8294F7CA3451414D446E9F4039554134D34577C73451416BF8799E41395541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335205 - 3298693
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000002D0000008FC2F588BE3451415C8FC2158E39554148E17A64BF345141A4703D8A9439554166666626C0345141A4703DBA98395541AE47E13AC13451413D0AD7D39C3955418FC2F5D8C234514166666686A1395541EC51B86EC63451419A999949AA3955410AD7A3A0C8345141295C8F32AF39554185EB5108CB345141A4703DCAB339554152B81E25CE345141E17A14CEB8395541295C8F72D03451415C8FC2B5BB39554148E17A54DB3451415C8FC265B439554185EB5118D9345141713D0AC7B13955410AD7A320D734514185EB5198AE3955419A9999A9D43451413D0AD7B3AA395541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000170000000AD7A3F0C83451419A999969603955413AB8DCA7CD345141497DDE245F395541E612EAC0D0345141F77B1C805E395541DB545768D33451419A2BBD1F5E395541BE9FEFF6D6345141FBBD07265E395541AE47E14ADB345141CDCCCC9C5E39554130D140C9DA34514126158A0B5C395541C4CF2042DA345141DD3E27F8593955411F85EB11D93451415C8FC2B5543955410AD7A330D734514185EB51584F39554185EB51C8D43451418FC2F5D8493955410AD7A3E0CF345141000000903F3955414A8294F7CA3451414D446E9F4039554134D34577C73451416BF8799E41395541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942679 - 3058678
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81E1520A35041D7A3708D39165541EC51B86E22A35041295C8F923B1655418FC2F5582AA35041A4703D4AFE155541F6285C0F30A3504133333313D215554148E17AA40CA350411F85EBB1D21555419A9999D906A3504152B81E85FF155541295C8FB201A35041713D0A6727165541295C8F920AA350415C8FC2852B1655419A9999E915A350410AD7A3A03116554152B81E1520A35041D7A3708D39165541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000EC51B86E22A35041295C8F923B1655419C54E4AA23A35041AF1093023216554158FD3F4826A350413A9D04C41D1655413148F0F627A35041230D82BD101655414D233BAB2AA3504131C8D1CDFB155541DC2B5CA32DA35041C7DB06D2E4155541F6285C0F30A3504133333313D21555418CC8E71A24A350419452C648D215554146A5751B1BA350415EFC1871D215554148E17AA40CA350411F85EBB1D21555419542239907A35041F7F3E9BAF91555412D8CEA0105A35041884026C80D165541295C8FB201A35041713D0A6727165541760C18960BA350411A8E7B112C165541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942679 - 3338158
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81E1520A35041D7A3708D39165541EC51B86E22A35041295C8F923B1655418FC2F5582AA35041A4703D4AFE155541F6285C0F30A3504133333313D215554148E17AA40CA350411F85EBB1D21555419A9999D906A3504152B81E85FF155541295C8FB201A35041713D0A6727165541295C8F920AA350415C8FC2852B1655419A9999E915A350410AD7A3A03116554152B81E1520A35041D7A3708D39165541
+</a>
+
+<b>
+01060000000100000001030000000100000013000000EC51B86E22A35041295C8F923B1655419C54E4AA23A35041AF1093023216554158FD3F4826A350413A9D04C41D1655413148F0F627A35041230D82BD101655414D233BAB2AA3504131C8D1CDFB155541DC2B5CA32DA35041C7DB06D2E4155541F6285C0F30A3504133333313D21555418CC8E71A24A350419452C648D215554146A5751B1BA350415EFC1871D215554148E17AA40CA350411F85EBB1D21555419542239907A35041F7F3E9BAF91555412D8CEA0105A35041884026C80D165541295C8FB201A35041713D0A6727165541760C18960BA350411A8E7B112C165541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>472558 - 1021105
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000065000000A4703D2A86EB5041E17A14AEBF5754419A99993968EB50419A9999B9C1575441057C5B3968EB5041BB3BD1B7C157544114AE47F166EB5041E17A14CEC1575441295C8F8252EB504152B81E35C3575441333333D310EB50411F85EBB1C7575441AE47E19A10EB5041E17A142ECB575441666666B60EEB504114AE4781E6575441C3F528BC0EEB5041F6285C6FEA5754415C8FC2250FEB504133333333EE57544114AE476110EB5041A4703DDAF157544114AE471112EB504185EB5158F5575441B81E854B14EB504185EB5148F85754415C8FC2B516EB50411F85EBB1FA575441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006C00000066DA1F6D2FEB50411926C9651C5854413C5B766B2FEB50415989FB651C5854410AD7A31032EB504114AE476121585441B511576032EB5041160D21CA2158544197DAD8D634EB5041F7EC9607255854418E0EC06737EB5041A907B5FC27585441C0C1E6EB39EB5041972B4DCC2A585441ACA79C3C3DEB504154C469802E5854412AB8EDC041EB5041426A288C33585441CB2220A846EB5041F51E5D0639585441FF81AC524CEB5041D23D48513F58544197A8835351EB50417A3220C24458544189D8F70C57EB5041E14C63084B585441F79BC3FA5BEB50411098458850585441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>472558 - 3828086
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000065000000A4703D2A86EB5041E17A14AEBF5754419A99993968EB50419A9999B9C1575441057C5B3968EB5041BB3BD1B7C157544114AE47F166EB5041E17A14CEC1575441295C8F8252EB504152B81E35C3575441333333D310EB50411F85EBB1C7575441AE47E19A10EB5041E17A142ECB575441666666B60EEB504114AE4781E6575441C3F528BC0EEB5041F6285C6FEA5754415C8FC2250FEB504133333333EE57544114AE476110EB5041A4703DDAF157544114AE471112EB504185EB5158F5575441B81E854B14EB504185EB5148F85754415C8FC2B516EB50411F85EBB1FA575441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006C00000066DA1F6D2FEB50411926C9651C5854413C5B766B2FEB50415989FB651C5854410AD7A31032EB504114AE476121585441B511576032EB5041160D21CA2158544197DAD8D634EB5041F7EC9607255854418E0EC06737EB5041A907B5FC27585441C0C1E6EB39EB5041972B4DCC2A585441ACA79C3C3DEB504154C469802E5854412AB8EDC041EB5041426A288C33585441CB2220A846EB5041F51E5D0639585441FF81AC524CEB5041D23D48513F58544197A8835351EB50417A3220C24458544189D8F70C57EB5041E14C63084B585441F79BC3FA5BEB50411098458850585441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942753 - 2964745
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000002D000000AA4B05D2F02F5141341BB34F026E5441FF2C7576F82F5141D56AED9C026E54413621BF1D02305141EC9F69D0026E5441C6E9F9920C3051414A502F83026E5441A016D2421C305141098D8FCD006E544115CEBB9F27305141B49473E4FE6D5441231D36803530514134325F94FC6D5441E52B3E413F305141DF3943ABFA6D5441AB161BE747305141B6AB1F29F96D5441861FC87B56305141AB2E4DBFF66D5441A6C7E9AA65305141877CFE21F46D5441718E9B356D3051415FEEDA9FF26D54410FEB5459743051413660B71DF16D5441A3A610F8773051410ED2939BEF6D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000AF4B05D2F02F5141351BB34F026E5441FE2C7576F82F5141D26AED9C026E54413321BF1D02305141EC9F69D0026E5441C6E9F9920C30514145502F83026E5441A316D2421C305141068D8FCD006E544117CEBB9F27305141B89473E4FE6D5441281D36803530514135325F94FC6D5441E02B3E413F305141DC3943ABFA6D5441A7161BE747305141B7AB1F29F96D5441891FC87B56305141A72E4DBFF66D5441A5C7E9AA65305141887CFE21F46D5441718E9B356D30514163EEDA9FF26D544114EB5459743051413460B71DF16D5441A1A610F8773051410FD2939BEF6D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>942753 - 3625676
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000002D000000AA4B05D2F02F5141341BB34F026E5441FF2C7576F82F5141D56AED9C026E54413621BF1D02305141EC9F69D0026E5441C6E9F9920C3051414A502F83026E5441A016D2421C305141098D8FCD006E544115CEBB9F27305141B49473E4FE6D5441231D36803530514134325F94FC6D5441E52B3E413F305141DF3943ABFA6D5441AB161BE747305141B6AB1F29F96D5441861FC87B56305141AB2E4DBFF66D5441A6C7E9AA65305141877CFE21F46D5441718E9B356D3051415FEEDA9FF26D54410FEB5459743051413660B71DF16D5441A3A610F8773051410ED2939BEF6D5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000AF4B05D2F02F5141351BB34F026E5441FE2C7576F82F5141D26AED9C026E54413321BF1D02305141EC9F69D0026E5441C6E9F9920C30514145502F83026E5441A316D2421C305141068D8FCD006E544117CEBB9F27305141B89473E4FE6D5441281D36803530514135325F94FC6D5441E02B3E413F305141DC3943ABFA6D5441A7161BE747305141B7AB1F29F96D5441891FC87B56305141A72E4DBFF66D5441A5C7E9AA65305141887CFE21F46D5441718E9B356D30514163EEDA9FF26D544114EB5459743051413460B71DF16D5441A1A610F8773051410FD2939BEF6D5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893417 - 1683799
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002E000000666666B6446D50410AD7A370A61755410AD7A380436D50411F85EB21AC17554148E17A44486D50413D0AD7C3AC175541EC51B8BE4D6D5041713D0AB7A317554133333303556D50419A9999899B175541000000E0586D5041000000209717554114AE4741636D5041713D0A578B17554114AE47C1666D50417B14AE57871755419B380D57686D5041E331377E8517554184754950656D504136D6DDC18417554108039AA8616D5041EA7C7B39831755419A1DE6B45C6D50417030EA928117554197D1A9B2586D50417EBDE54680175541C0789CCE546D50414EA498277E175541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000035000000A4703DEA346D50417B14AEE785175541FDE81C80336D50418F7DD5CC84175541C76CA472336D5041CCB2A2C284175541684647FF326D504190A14B6B84175541B2DADB38326D5041963E13D583175541FB739833316D5041D3E8460F8317554185EB51782C6D5041A4703D7A7F17554120A32C54296D50419D28CCCD7C1755417B14AE07256D504152B81E257917554114AE47E1236D50413D0AD753781755415C8FC2C5236D50410000007078175541E31A2362236D5041158461D578175541295C8F12226D5041AE47E12A7A17554100000070216D50411F85EBB17A175541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>893417 - 3522280
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002E000000666666B6446D50410AD7A370A61755410AD7A380436D50411F85EB21AC17554148E17A44486D50413D0AD7C3AC175541EC51B8BE4D6D5041713D0AB7A317554133333303556D50419A9999899B175541000000E0586D5041000000209717554114AE4741636D5041713D0A578B17554114AE47C1666D50417B14AE57871755419B380D57686D5041E331377E8517554184754950656D504136D6DDC18417554108039AA8616D5041EA7C7B39831755419A1DE6B45C6D50417030EA928117554197D1A9B2586D50417EBDE54680175541C0789CCE546D50414EA498277E175541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000035000000A4703DEA346D50417B14AEE785175541FDE81C80336D50418F7DD5CC84175541C76CA472336D5041CCB2A2C284175541684647FF326D504190A14B6B84175541B2DADB38326D5041963E13D583175541FB739833316D5041D3E8460F8317554185EB51782C6D5041A4703D7A7F17554120A32C54296D50419D28CCCD7C1755417B14AE07256D504152B81E257917554114AE47E1236D50413D0AD753781755415C8FC2C5236D50410000007078175541E31A2362236D5041158461D578175541295C8F12226D5041AE47E12A7A17554100000070216D50411F85EBB17A175541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>412123 - 1339967
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B0000008FC2F578903151417B14AEC705F35441D7A3705D8331514152B81E55FCF25441D243FCB77A31514149B3405409F35441000000B07631514152B81EF50FF35441F924EF3269315141A6C548F224F35441713D0A2763315141333333332EF35441AE47E12A6831514185EB51182FF35441B4D7AD9D763151410800AF502EF354417FD960938B3151411FB7C6D50EF3544102C02BEC8D315141911B0F770AF354418FC2F578903151417B14AEC705F35441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000002C02BEC8D315141911B0F770AF35441B2D525A98B315141C16E3DAD0EF354417FD960938B3151411FB7C6D50EF354419817FF52893151414F34763712F35441B4D7AD9D763151410800AF502EF35441295C8F22903151410AD7A3002DF354413333336391315141000000B02BF3544152B81E65913151419A9999F929F35441D7A370BD90315141CDCCCC1C25F354411F85EBB18F315141D7A370ED1FF35441000000408F315141AE47E1FA17F3544114AE47318F315141C3F5283C13F35441839E13618F315141FA5CB3910CF35441AEE860DD8F3151417F6E055509F35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>412123 - 4063776
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000B0000008FC2F578903151417B14AEC705F35441D7A3705D8331514152B81E55FCF25441D243FCB77A31514149B3405409F35441000000B07631514152B81EF50FF35441F924EF3269315141A6C548F224F35441713D0A2763315141333333332EF35441AE47E12A6831514185EB51182FF35441B4D7AD9D763151410800AF502EF354417FD960938B3151411FB7C6D50EF3544102C02BEC8D315141911B0F770AF354418FC2F578903151417B14AEC705F35441
+</a>
+
+<b>
+0106000000010000000103000000010000001200000002C02BEC8D315141911B0F770AF35441B2D525A98B315141C16E3DAD0EF354417FD960938B3151411FB7C6D50EF354419817FF52893151414F34763712F35441B4D7AD9D763151410800AF502EF35441295C8F22903151410AD7A3002DF354413333336391315141000000B02BF3544152B81E65913151419A9999F929F35441D7A370BD90315141CDCCCC1C25F354411F85EBB18F315141D7A370ED1FF35441000000408F315141AE47E1FA17F3544114AE47318F315141C3F5283C13F35441839E13618F315141FA5CB3910CF35441AEE860DD8F3151417F6E055509F35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>963555 - 963539
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+01060000000100000001030000000100000060000000508D97BECA865041D34D62E0692E55418195435BC98650410C022BF7632E5541E17A148EC9865041A69BC418622E5541D122DB19C386504146B6F3E5602E55419318046EC1865041560E2D02612E5541508D97B6B9865041A245B64B622E55414260E5F0B7865041C74B3779622E5541E7FBA9C9B586504183C0CAD1622E5541C74B37B1AD8650413F355E7A632E55411058395CA68650412DB29DEF632E554179E926099D8650410AD7A3D0642E55414C37896996865041DBF97E92652E554148E17A949186504160E5D03A662E55416ABC749B8986504179E926D9662E5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003E000000D3EF2C4E83865041E37132FA5E2E5541FCA9F16A83865041333333F35E2E55415EBA49749186504108AC1C825B2E554179948EE6978650418A4BF0C1592E554114AE47319C86504191ED7C87582E5541DB2E11339C86504152268FA0582E5541FA7E6AD4A68650415839B4E8552E554189416095A8865041CFF75393552E5541D7A37045B08650412506818D532E55414260E5C8AF865041CFF75363522E5541A69BC420AD86504175931884502E5541E3A59BBCAB865041666666C64F2E5541560E2D9AA78650419A9999214E2E554179E92659A2865041736891DD4C2E5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>468418 - 2352426
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000070000009A9999F974A65041D7A3705D251C5541E17A143E75A65041C3F5284C271C55411F85EB9175A6504152B81E45291C5541B80EB179A2A65041B33A452C1F1C5541AB205663A3A650417B3C3AFA131C5541512CB03B74A650415200D0CE1E1C55419A9999F974A65041D7A3705D251C5541
+</a>
+
+<b>
+01060000000100000001030000000100000008000000E04B8BBF8BA65041AA013068191C5541A9205663A3A650417C3C3AFA131C55419A999969A4A650418FC2F5B8091C5541E17A146E8BA6504148E17A540F1C55419A99999972A650417B14AEE7141C554152B81E5573A65041F6285C9F191C55414D2CB03B74A650415300D0CE1E1C5541E04B8BBF8BA65041AA013068191C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>468418 - 3361519
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000070000009A9999F974A65041D7A3705D251C5541E17A143E75A65041C3F5284C271C55411F85EB9175A6504152B81E45291C5541B80EB179A2A65041B33A452C1F1C5541AB205663A3A650417B3C3AFA131C5541512CB03B74A650415200D0CE1E1C55419A9999F974A65041D7A3705D251C5541
+</a>
+
+<b>
+01060000000100000001030000000100000008000000E04B8BBF8BA65041AA013068191C5541A9205663A3A650417C3C3AFA131C55419A999969A4A650418FC2F5B8091C5541E17A146E8BA6504148E17A540F1C55419A99999972A650417B14AEE7141C554152B81E5573A65041F6285C9F191C55414D2CB03B74A650415300D0CE1E1C5541E04B8BBF8BA65041AA013068191C5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>605796 - 3433963
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000011000000666666E6292651411F85EB0180515441666666862D26514114AE47B182515441EC51B86E31265141D7A370FD8151544100000080322651413D0AD72380515441B81E859B33265141CDCCCC9C7D5154417B14AE3734265141E17A14FE7B515441295C8FC234265141295C8F627951544114AE47813526514152B81E15775154419A99995934265141713D0A87765154418FC2F5D83426514148E17A84755154413D0AD7F330265141AE47E19A735154411F85EBB12F265141E17A14FE72515441E17A141E1F26514148E17AB482515441295C8FE21E26514114AE472183515441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000435AB0432F265141EC318F66735154419636E5012F2651413979EBA473515441E0EA43072F2651411FF15CA8735154416CC766012F2651417E4F63A573515441E17A141E1F26514148E17AB482515441295C8FE21E26514114AE472183515441AE47E17A222651417B14AE07855154419A99993923265141AE47E17A85515441666666E6292651411F85EB0180515441666666862D26514114AE47B182515441EC51B86E31265141D7A370FD8151544100000080322651413D0AD72380515441B81E859B33265141CDCCCC9C7D5154417B14AE3734265141E17A14FE7B515441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>605802 - 3433963
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000D00000048E17A24072651419A99999975515441E17A141E1F26514148E17AB4825154411F85EBB12F265141E17A14FE72515441E17A14EE2D2651411F85EB2172515441E17A148E2A265141CDCCCC7C70515441EC51B8EE25265141D7A3703D6E515441000000301D265141666666F6695154410AD7A31016265141AE47E17A66515441B81E850B0826514114AE47A15F515441A4703D9A04265141F6285C1F6651544148E17AF401265141D7A3701D6B515441EC51B87EFE255141713D0A077151544148E17A24072651419A99999975515441
+</a>
+
+<b>
+01060000000100000001030000000100000016000000435AB0432F265141EC318F66735154419636E5012F2651413979EBA473515441E0EA43072F2651411FF15CA8735154416CC766012F2651417E4F63A573515441E17A141E1F26514148E17AB482515441295C8FE21E26514114AE472183515441AE47E17A222651417B14AE07855154419A99993923265141AE47E17A85515441666666E6292651411F85EB0180515441666666862D26514114AE47B182515441EC51B86E31265141D7A370FD8151544100000080322651413D0AD72380515441B81E859B33265141CDCCCC9C7D5154417B14AE3734265141E17A14FE7B515441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>605934 - 2165626
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000333333832C955041F6285CDF5B3355411F85EB1126955041B81E855B633355411F85EB6123955041E17A14CE69335541EC51B8EE29955041AE47E18A733355411F85EB112F9550410AD7A3507B335541CDCCCCEC36955041A4703D2A6933554185EB51F834955041E17A143E66335541333333832C955041F6285CDF5B335541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BCC669CF35955041E73B839667335541F6285C6F38955041B81E853B663355419A9999C93C955041A4703D0A6333554114AE471141955041295C8F026133554114AE479144955041AE47E10A603355418FC2F5D8439550411F85EBD15E335541D7A3703D3D9550418FC2F5A8533355410AD7A3B0349550418FC2F588563355413D0AD7132F9550419A9999D958335541333333832C955041F6285CDF5B3355411F85EB1126955041B81E855B633355411F85EB6123955041E17A14CE69335541E59DC3232A955041AA0627DB73335541B2541F192F9550419E79FF3F7B335541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>605934 - 4663406
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000008000000333333832C955041F6285CDF5B3355411F85EB1126955041B81E855B633355411F85EB6123955041E17A14CE69335541EC51B8EE29955041AE47E18A733355411F85EB112F9550410AD7A3507B335541CDCCCCEC36955041A4703D2A6933554185EB51F834955041E17A143E66335541333333832C955041F6285CDF5B335541
+</a>
+
+<b>
+01060000000100000001030000000100000012000000BCC669CF35955041E73B839667335541F6285C6F38955041B81E853B663355419A9999C93C955041A4703D0A6333554114AE471141955041295C8F026133554114AE479144955041AE47E10A603355418FC2F5D8439550411F85EBD15E335541D7A3703D3D9550418FC2F5A8533355410AD7A3B0349550418FC2F588563355413D0AD7132F9550419A9999D958335541333333832C955041F6285CDF5B3355411F85EB1126955041B81E855B633355411F85EB6123955041E17A14CE69335541E59DC3232A955041AA0627DB73335541B2541F192F9550419E79FF3F7B335541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>76238 - 1083120
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003800000023C810EFE71551419F030E807430544116D00D7EE81551415710D66475305441FCDF079CE9155141781B052D76305441EC51B85EEA15514185EB51C876305441C3F528CCEB155141EC51B8FE763054410AD7A360ED155141C3F5282C773054415C8FC2E5EE15514152B81E3577305441C3F5283CF0155141AE47E12A77305441A4703D8AF115514148E17A0477305441EC51B8AEF21551413D0AD7D376305441E17A145EF4155141EC51B82E7630544185EB51C8F51551411F85EBC17530544100000090F71551419A9999397530544114AE47A1F9155141A4703DCA74305441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003800000024C810EFE7155141A4030E807430544118D00D7EE81551415810D66475305441FEDF079CE9155141731B052D76305441EC51B85EEA15514185EB51C876305441C3F528CCEB155141EC51B8FE763054410AD7A360ED155141C3F5282C773054415C8FC2E5EE15514152B81E3577305441C3F5283CF0155141AE47E12A77305441A4703D8AF115514148E17A0477305441EC51B8AEF21551413D0AD7D376305441E17A145EF4155141EC51B82E7630544185EB51C8F51551411F85EBC17530544100000090F71551419A9999397530544114AE47A1F9155141A4703DCA74305441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>76238 - 3446319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000003800000023C810EFE71551419F030E807430544116D00D7EE81551415710D66475305441FCDF079CE9155141781B052D76305441EC51B85EEA15514185EB51C876305441C3F528CCEB155141EC51B8FE763054410AD7A360ED155141C3F5282C773054415C8FC2E5EE15514152B81E3577305441C3F5283CF0155141AE47E12A77305441A4703D8AF115514148E17A0477305441EC51B8AEF21551413D0AD7D376305441E17A145EF4155141EC51B82E7630544185EB51C8F51551411F85EBC17530544100000090F71551419A9999397530544114AE47A1F9155141A4703DCA74305441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003800000024C810EFE7155141A4030E807430544118D00D7EE81551415810D66475305441FEDF079CE9155141731B052D76305441EC51B85EEA15514185EB51C876305441C3F528CCEB155141EC51B8FE763054410AD7A360ED155141C3F5282C773054415C8FC2E5EE15514152B81E3577305441C3F5283CF0155141AE47E12A77305441A4703D8AF115514148E17A0477305441EC51B8AEF21551413D0AD7D376305441E17A145EF4155141EC51B82E7630544185EB51C8F51551411F85EBC17530544100000090F71551419A9999397530544114AE47A1F9155141A4703DCA74305441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>671968 - 1396084
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000200000043000000773AEE5C36C35041952DEA16AA15554101B3DB5336C350412E0E5D19AA15554118980D6736C35041ED2F7355AA15554106864A7936C35041698089A0AA155541C6BE947C36C3504196DEE3AFAA1555414785F57A36C350416A659EB0AA155541105DEE8936C35041364D56EDAA1555411A34929A36C35041D9BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE4155541 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000041000000F8994F264CC35041534848BC8C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A155541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>671968 - 3522121
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000200000043000000773AEE5C36C35041952DEA16AA15554101B3DB5336C350412E0E5D19AA15554118980D6736C35041ED2F7355AA15554106864A7936C35041698089A0AA155541C6BE947C36C3504196DEE3AFAA1555414785F57A36C350416A659EB0AA155541105DEE8936C35041364D56EDAA1555411A34929A36C35041D9BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE4155541 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000041000000F8994F264CC35041534848BC8C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A155541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607631 - 379591
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A0000006666661663A45041AE47E18ADB5655417B14AE9764A450411F85EB41DB565541E17A140E67A45041AE47E1CADA56554185EB515864A4504133333383D0565541E17A147E62A45041F6285CCFC9565541EC51B85E60A45041295C8FA2C25655418FC2F5785DA45041713D0AA7BA565541000000D05AA4504152B81E35B3565541333333F357A4504148E17AD4AB5655413333333357A45041EC51B81EAA5655419A99994956A45041F6285CFFAA5655415C8FC22554A4504133333303AD565541333333D358A45041F6285CEFB8565541EC51B85E5AA45041E17A14BEBC565541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E0000009612C4FA58A45041B436C47BAE565541000000D05AA4504152B81E35B3565541B29CE3745BA450416FA09F02B5565541BAC2F5785DA450419C3D0AA7BA565541ED672FDC5DA45041C3C966B8BB565541EC51B85E60A45041295C8FA2C2565541E17A147E62A45041F6285CCFC956554185EB515864A4504133333383D0565541BF07162B65A45041E809B6A2D3565541167B140E67A45041A947E1CADA5655419A9999F969A4504148E17A84DA565541330AD7D36CA45041666666A6DA565541FB4871F56BA45041D1B781D7D8565541AE47E16A69A45041D7A3708DD3565541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607639 - 201074
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001400000085EB51A8DFA05041A4703DBAB9555541B81E85EBD6A0504185EB51E8C0555541A4703D8ACBA05041AE47E1FAC55555418FC2F528B0A05041D7A370DDCD5555417B14AEC7B4A0504100000030DD5555418FC2F528B8A050419A999949DC5555413D0AD773B5A0504148E17AD4D0555541D7A3709DD0A05041EC51B82ECA555541AE47E1CAD5A050417B14AE37C7555541AE47E15AD6A050419A9999B9CB555541295C8F72D9A05041295C8FE2CC55554133333333DEA05041713D0AB7CB55554166666616E0A050418FC2F5C8C855554152B81E45E0A050413D0AD713C5555541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000C83BEF6AB6A05041752320EAD45555419464ABFBB5A0504106424713D355554147CBDE7CB5A0504157ADB1FAD05555413D0AD773B5A0504148E17AD4D05555417C4F7A00B7A0504127186973D055554122CB4D4DBEA050412D1E0DAACE555541AF3A7731CFA0504179B3CB87CA5555413C91ECF3D0A05041787131FDC9555541AE47E1CAD5A050417B14AE37C75555417EA577FCD5A05041FD440AC5C85555414D40BC9FDDA0504109B1693EC5555541F906AE5CDFA050416B4FA2D6C35555415C8FC275DEA050410AD7A340C255554100000050E3A0504114AE47C1BD555541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607639 - 419342
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001400000085EB51A8DFA05041A4703DBAB9555541B81E85EBD6A0504185EB51E8C0555541A4703D8ACBA05041AE47E1FAC55555418FC2F528B0A05041D7A370DDCD5555417B14AEC7B4A0504100000030DD5555418FC2F528B8A050419A999949DC5555413D0AD773B5A0504148E17AD4D0555541D7A3709DD0A05041EC51B82ECA555541AE47E1CAD5A050417B14AE37C7555541AE47E15AD6A050419A9999B9CB555541295C8F72D9A05041295C8FE2CC55554133333333DEA05041713D0AB7CB55554166666616E0A050418FC2F5C8C855554152B81E45E0A050413D0AD713C5555541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000C83BEF6AB6A05041752320EAD45555419464ABFBB5A0504106424713D355554147CBDE7CB5A0504157ADB1FAD05555413D0AD773B5A0504148E17AD4D05555417C4F7A00B7A0504127186973D055554122CB4D4DBEA050412D1E0DAACE555541AF3A7731CFA0504179B3CB87CA5555413C91ECF3D0A05041787131FDC9555541AE47E1CAD5A050417B14AE37C75555417EA577FCD5A05041FD440AC5C85555414D40BC9FDDA0504109B1693EC5555541F906AE5CDFA050416B4FA2D6C35555415C8FC275DEA050410AD7A340C255554100000050E3A0504114AE47C1BD555541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607824 - 255193
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000013000000CDCCCCFCEEA25041C3F528FCD65655417B14AEC7F2A25041713D0A37DC565541CDCCCC7CF6A25041B81E854BE15655411F85EB51F9A250413D0AD763E55655413D0AD773FCA2504152B81E75E9565541A4703DBAFDA2504114AE4721EB565541713D0A17FEA2504148E17AC4EB56554100000080FEA250410AD7A3E0EC56554100000010FFA25041CDCCCC7CEE565541666666A6FFA250415C8FC2B5F05655410000000000A35041713D0A07F2565541E17A14EE01A350417B14AEB7F15655417B14AEF700A35041C3F528CCEC5655419A9999A9FEA25041EC51B8CEE7565541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000007B14AEB7F5A25041D7A3708DD956554103D30413F5A25041A3635499D856554193A0470CF2A2504113BFFB7CD45655413FE304E9F0A2504169D8FB6CD2565541C3F5285CF0A25041C3F5289CD156554164F8B5A0EDA25041BABDDFEAD25655412D243F8CECA25041D3E7DB71D3565541837A440DF1A25041B855D285D95655418FCDA738F6A25041ED274493E056554185462ABCFAA25041BF8919E7E65655416C46E13EFEA25041691FC6A4EB565541CCC20A89FEA250413C3385FAEC56554100000010FFA25041CDCCCC7CEE5655419A80E48CFFA250419D184455F0565541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607988 - 401474
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000009C0000007B14AE074CAE50419A999979954F554148E17A3450AE5041713D0A07934F5541000000C053AE50411F85EBF1904F55410000003055AE5041B81E851B904F5541CDCCCC5C5BAE5041CDCCCC7C8C4F55410AD7A3905DAE50411F85EB318B4F55411F85EB3160AE504152B81EA5894F55411F85EBA166AE50417B14AED7854F554148E17AC46CAE5041000000508F4F554114AE47B16FAE504185EB51C8934F55413333336372AE5041C3F528BC974F554148E17A748AAE5041EC51B8AEAB4F55410000002096AE504166666616B94F5541EC51B88E97AE5041295C8F52B64F5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000F271EB937EAE50411E925ABF254F554157AEDA5F8FAE5041ECB75DBD1F4F55411392B3D190AE5041C8BAF2F8214F554144D3C0A094AE5041EE68128A284F5541E6BB6B5699AE5041258757FA264F554198A116DC92AE5041FDC5C5C31E4F554180ABC6D792AE50411FDEED9E1E4F554172BB00C69DAE50414425A054154F554146A49CD997AE50412CDF6D140E4F5541A7BD989690AE50418B9C6E9D054F554152B81ED58BAE5041A4703DCA124F5541E74BD4B78AAE5041F75FDF4D144F5541D12CC19A86AE50417703B7E4194F554105E0DBDF82AE504168503E131F4F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>607988 - 419798
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000009C0000007B14AE074CAE50419A999979954F554148E17A3450AE5041713D0A07934F5541000000C053AE50411F85EBF1904F55410000003055AE5041B81E851B904F5541CDCCCC5C5BAE5041CDCCCC7C8C4F55410AD7A3905DAE50411F85EB318B4F55411F85EB3160AE504152B81EA5894F55411F85EBA166AE50417B14AED7854F554148E17AC46CAE5041000000508F4F554114AE47B16FAE504185EB51C8934F55413333336372AE5041C3F528BC974F554148E17A748AAE5041EC51B8AEAB4F55410000002096AE504166666616B94F5541EC51B88E97AE5041295C8F52B64F5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000F271EB937EAE50411E925ABF254F554157AEDA5F8FAE5041ECB75DBD1F4F55411392B3D190AE5041C8BAF2F8214F554144D3C0A094AE5041EE68128A284F5541E6BB6B5699AE5041258757FA264F554198A116DC92AE5041FDC5C5C31E4F554180ABC6D792AE50411FDEED9E1E4F554172BB00C69DAE50414425A054154F554146A49CD997AE50412CDF6D140E4F5541A7BD989690AE50418B9C6E9D054F554152B81ED58BAE5041A4703DCA124F5541E74BD4B78AAE5041F75FDF4D144F5541D12CC19A86AE50417703B7E4194F554105E0DBDF82AE504168503E131F4F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608020 - 201007
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000020000002D000000295C8FF28CA1504148E17A44F8565541AE47E1AA89A15041AE47E12AF4565541EC51B8AE85A15041AE47E10AF65655418FC2F53883A15041AE47E14AF2565541D7A370AD7CA150410AD7A340F6565541F6285CBF85A1504152B81E2507575541333333338DA15041EC51B80E15575541CDCCCC0C91A150418FC2F558205755418FC2F53892A1504148E17A3426575541AE47E11A92A15041666666E628575541AE47E1DA95A1504148E17A84305755410AD7A35098A15041CDCCCCFC30575541AE47E19A99A15041295C8F8232575541CDCCCC7C99A15041AE47E1CA35575541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000040000000295C8FF28CA1504148E17A44F8565541AE47E1AA89A15041AE47E12AF4565541EC51B8AE85A15041AE47E10AF6565541C4A68F8B85A15041A7BF48D5F55655418FC2F53883A15041AE47E14AF2565541D7A370AD7CA150410AD7A340F6565541F6285CBF85A1504152B81E2507575541333333338DA15041EC51B80E15575541CDCCCC0C91A150418FC2F558205755418FC2F53892A1504148E17A3426575541AE47E11A92A15041666666E628575541AE47E1DA95A1504148E17A84305755410AD7A35098A15041CDCCCCFC30575541C9D6C67C98A150411A3FE43031575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608020 - 419170
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000020000002D000000295C8FF28CA1504148E17A44F8565541AE47E1AA89A15041AE47E12AF4565541EC51B8AE85A15041AE47E10AF65655418FC2F53883A15041AE47E14AF2565541D7A370AD7CA150410AD7A340F6565541F6285CBF85A1504152B81E2507575541333333338DA15041EC51B80E15575541CDCCCC0C91A150418FC2F558205755418FC2F53892A1504148E17A3426575541AE47E11A92A15041666666E628575541AE47E1DA95A1504148E17A84305755410AD7A35098A15041CDCCCCFC30575541AE47E19A99A15041295C8F8232575541CDCCCC7C99A15041AE47E1CA35575541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000040000000295C8FF28CA1504148E17A44F8565541AE47E1AA89A15041AE47E12AF4565541EC51B8AE85A15041AE47E10AF6565541C4A68F8B85A15041A7BF48D5F55655418FC2F53883A15041AE47E14AF2565541D7A370AD7CA150410AD7A340F6565541F6285CBF85A1504152B81E2507575541333333338DA15041EC51B80E15575541CDCCCC0C91A150418FC2F558205755418FC2F53892A1504148E17A3426575541AE47E11A92A15041666666E628575541AE47E1DA95A1504148E17A84305755410AD7A35098A15041CDCCCCFC30575541C9D6C67C98A150411A3FE43031575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608026 - 201002
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000020000000EC51B83E46A350417B14AE177C5755411F85EBE145A350413D0AD7637D5755417B14AE9745A35041CDCCCC6C7E57554114AE479147A35041C3F528BC81575541713D0A574BA35041295C8F4288575541D7A3709D4EA35041D7A3703D885755413333333350A35041713D0A178B57554148E17AF44DA350417B14AEC78C575541333333034FA35041B81E859B8E575541F6285CAF53A35041666666E6965755410AD7A31051A35041EC51B88E985755418FC2F53852A3504114AE47319A575541295C8FF254A35041AE47E10A9E575541295C8F5258A350419A999909A2575541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002500000018FECE3946A35041F3BAAEF47B575541B6E871FA44A3504110ACA82D7D575541B534F52545A350415C2FFA857D5755415EAA489147A35041E6BB27BC81575541D2105FFA4EA35041FF4E438C8E575541333333034FA35041B81E859B8E5755411971058953A35041F8C45BA296575541A1F35CAF53A350419DBC67E6965755410966A41051A35041E91BB98E985755418FC2F53852A3504114AE47319A575541295C8FF254A35041AE47E10A9E575541295C8F5258A350419A999909A25755410AD7A3305BA35041713D0A17A5575541411514CA5DA3504121930ADCA7575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608026 - 419174
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000020000000EC51B83E46A350417B14AE177C5755411F85EBE145A350413D0AD7637D5755417B14AE9745A35041CDCCCC6C7E57554114AE479147A35041C3F528BC81575541713D0A574BA35041295C8F4288575541D7A3709D4EA35041D7A3703D885755413333333350A35041713D0A178B57554148E17AF44DA350417B14AEC78C575541333333034FA35041B81E859B8E575541F6285CAF53A35041666666E6965755410AD7A31051A35041EC51B88E985755418FC2F53852A3504114AE47319A575541295C8FF254A35041AE47E10A9E575541295C8F5258A350419A999909A2575541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002500000018FECE3946A35041F3BAAEF47B575541B6E871FA44A3504110ACA82D7D575541B534F52545A350415C2FFA857D5755415EAA489147A35041E6BB27BC81575541D2105FFA4EA35041FF4E438C8E575541333333034FA35041B81E859B8E5755411971058953A35041F8C45BA296575541A1F35CAF53A350419DBC67E6965755410966A41051A35041E91BB98E985755418FC2F53852A3504114AE47319A575541295C8FF254A35041AE47E10A9E575541295C8F5258A350419A999909A25755410AD7A3305BA35041713D0A17A5575541411514CA5DA3504121930ADCA7575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 201119
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D575541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001800000065F48415C4A250411510A73F05575541AE47E1BAC2A250419A999959095755418998C328C2A25041A23CF8A30B575541B81E85CBC2A250418FC2F5F80B57554180D0C9DEC2A25041F2FA936B0D575541F00AA2F0C2A25041825BBC7A0D5755415DE17AB4C3A25041A347E11A0E57554152E17A74C5A250412F48E13A095755414CF528ECC7A25041EC51B84E02575541345C8FF2C8A25041EEF52834FF5655415AC2F5F8C9A25041AF999919FC56554108333373CAA250411CB81E65F9565541C71570E5CBA25041B24514EDEE5655413F6EE01EC8A250417969F31FEF565541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 253665
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D575541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000EC51B8CE5DA35041CDCCCC4C625755413CE17AC466A350411D0AD7236157554108E590BE66A35041626D6E1361575541D18D25B866A35041BAE99E01615755411E33332365A35041EC7A149E5C5755416C8A0BD063A35041D005B3E45C57554152B81ED55BA35041E17A148E5E57554129A84A8757A35041E31453695F5755417EC2F56857A35041FB285C6F5F5755418ABE3DFA55A35041F43411D65F575541DF55249954A35041D1C1F53860575541981E852B53A3504100295C9F605755411AD7A30053A350418DB81EA560575541E4ADA0B153A3504110DF972463575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 253760
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D575541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B556575541360AD79379A350415B3D0A175A575541FEB7A5497DA35041E49EFF355A575541A34DC74D7DA35041961722365A575541909999697DA35041713D0A375A57554115DB3D8B7DA35041E31B98345A5755419CF5283C7FA3504155B81E155A575541C0784D937DA350414271E0A9545755411F85EBF17BA35041713D0A574F5755416AC722FD7AA350417F50B41F4C57554184703D0A7AA350410152B8EE485755418FC2F51876A35041295C8FB23A575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 253821
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D575541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000666666A689A3504148E17A9458575541B97FF09E8AA35041336F6B6B58575541B5668BD385A3504108356F4E49575541589CC5C981A3504116380BF63C575541100473627EA350416952FD4433575541B633DFC77DA35041CDF0D00D335755412B4087657CA35041F943B1DF325755416F88A6DE7CA350417345CD6B34575541CE9698F17CA35041968CC2A9345755413CA2F4D97EA350411431DBE63A575541CCB4ADF981A35041AB8E361E45575541DB5AF6C383A35041F39B63784A575541097AB1C084A350414C0C37644D575541E17A146E88A350415C8FC24558575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 253850
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D575541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000DA874215A3A35041CD6FFB49895755414FC2F5C8A2A350411D0AD7A38857554129AAD0F0A1A3504197ACE101875755412D33FA1EA1A350412C831E6C85575541922211A29FA3504189F4D711855755412B8DF3D49EA35041BC4134F884575541C52C47A19DA3504109720A9285575541F931E2A09CA350414BEAA112875755412B2DC87A9CA35041B29CC452885755415485EB61A0A350413E3333538E575541176DAB54A4A35041AC806FEC935755417B14AE77A4A35041E17A141E94575541AE1E85CBA7A35041300AD79398575541F3D6A3D0AAA350410185EB2195575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 419400
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D575541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001800000065F48415C4A250411510A73F05575541AE47E1BAC2A250419A999959095755418998C328C2A25041A23CF8A30B575541B81E85CBC2A250418FC2F5F80B57554180D0C9DEC2A25041F2FA936B0D575541F00AA2F0C2A25041825BBC7A0D5755415DE17AB4C3A25041A347E11A0E57554152E17A74C5A250412F48E13A095755414CF528ECC7A25041EC51B84E02575541345C8FF2C8A25041EEF52834FF5655415AC2F5F8C9A25041AF999919FC56554108333373CAA250411CB81E65F9565541C71570E5CBA25041B24514EDEE5655413F6EE01EC8A250417969F31FEF565541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 419409
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D575541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000F000000AE47E16A73A35041713D0A37475755410000005076A35041CDCCCCBC4F57554185EB518878A350415C8FC2B556575541360AD79379A350415B3D0A175A575541FEB7A5497DA35041E49EFF355A575541A34DC74D7DA35041961722365A575541909999697DA35041713D0A375A57554115DB3D8B7DA35041E31B98345A5755419CF5283C7FA3504155B81E155A575541C0784D937DA350414271E0A9545755411F85EBF17BA35041713D0A574F5755416AC722FD7AA350417F50B41F4C57554184703D0A7AA350410152B8EE485755418FC2F51876A35041295C8FB23A575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 419417
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D575541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000012000000EC51B8CE5DA35041CDCCCC4C625755413CE17AC466A350411D0AD7236157554108E590BE66A35041626D6E1361575541D18D25B866A35041BAE99E01615755411E33332365A35041EC7A149E5C5755416C8A0BD063A35041D005B3E45C57554152B81ED55BA35041E17A148E5E57554129A84A8757A35041E31453695F5755417EC2F56857A35041FB285C6F5F5755418ABE3DFA55A35041F43411D65F575541DF55249954A35041D1C1F53860575541981E852B53A3504100295C9F605755411AD7A30053A350418DB81EA560575541E4ADA0B153A3504110DF972463575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 419419
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D575541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000666666A689A3504148E17A9458575541B97FF09E8AA35041336F6B6B58575541B5668BD385A3504108356F4E49575541589CC5C981A3504116380BF63C575541100473627EA350416952FD4433575541B633DFC77DA35041CDF0D00D335755412B4087657CA35041F943B1DF325755416F88A6DE7CA350417345CD6B34575541CE9698F17CA35041968CC2A9345755413CA2F4D97EA350411431DBE63A575541CCB4ADF981A35041AB8E361E45575541DB5AF6C383A35041F39B63784A575541097AB1C084A350414C0C37644D575541E17A146E88A350415C8FC24558575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608091 - 419424
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000150000000103000000010000000F0000005C8FC275B7A250418FC2F5587F57554100000010ACA250417B14AEE7885755415C8FC225A2A25041C3F5282C91575541C3F528BC98A250417B14AE2799575541D7A3707D99A25041D7A3705D9A575541000000809AA25041AE47E1FA9B57554114AE4721A5A250416666666693575541C3F5285CB3A25041333333038857554166666686D3A250415C8FC2D56E575541C3F528FCD1A25041E17A146E6F5755419A9999E9CDA25041AE47E15A6F575541666666D6CDA250413D0AD7A36C5755415C8FC235C1A250419A99992977575541C3F5283CBAA25041A4703D0A7D575541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000DA874215A3A35041CD6FFB49895755414FC2F5C8A2A350411D0AD7A38857554129AAD0F0A1A3504197ACE101875755412D33FA1EA1A350412C831E6C85575541922211A29FA3504189F4D711855755412B8DF3D49EA35041BC4134F884575541C52C47A19DA3504109720A9285575541F931E2A09CA350414BEAA112875755412B2DC87A9CA35041B29CC452885755415485EB61A0A350413E3333538E575541176DAB54A4A35041AC806FEC935755417B14AE77A4A35041E17A141E94575541AE1E85CBA7A35041300AD79398575541F3D6A3D0AAA350410185EB2195575541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608179 - 407664
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000050000001500000085EB518800A4504114AE47B11C56554166666676FEA35041C3F528EC1F565541EC51B80EF3A35041AE47E1DA21565541E17A146EECA35041D7A3709D2F56554152B81EE5E9A35041CDCCCC1C3856554148E17A44E9A350419A9999193B56554185EB5138EFA35041B81E85DB3A5655410AD7A3D0F8A35041B81E85CB395655417B14AE97FFA35041295C8F2239565541A4703D2A05A45041EC51B83E38565541EC51B8CE0CA4504152B81E9537565541A4703DCA0EA45041F6285C3F335655416666660610A4504114AE470131565541A4703D7A10A450418FC2F54830565541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006F010000EF94229BF5A35041872744F9A8565541C5FF82ABF5A3504102585A98A9565541A4446FBAF5A3504168C4A81EAA565541D331BACEF5A35041D31B4BD5AA565541CE05D7DBF5A3504189453B52AB565541CF6154EBF5A350417FE45C04AC565541EDE250F9F5A3504185AE34A5AC5655419658400AF6A350413074F667AD56554113639A16F6A350417159D0FBAD565541285B0D29F6A350418C0B2CCAAE56554151E401F1F6A35041E0A2307AAE56554193BA7B03F7A35041A6513ED1AC56554139AB1C0FF7A35041D3A7C8C5AB56554109527018F7A3504173C1DA09AB565541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608285 - 200822
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000CDCCCC3C51A15041666666F6A85455418FC2F5485CA15041EC51B89EA85455410AD7A33065A15041EC51B81EA95455411F85EB21A5A1504114AE47B1B5545541C3F528ECA7A150413D0AD773B35455416666660666A1504148E17A94A7545541333333035FA150418FC2F508A7545541295C8F125CA15041CDCCCCDCA65455413D0AD7A342A15041F6285C3FA95455418FC2F5482FA15041713D0A97AD545541295C8F522EA15041A4703D4AAF5455411F85EB5144A150413D0AD7A3AA545541CDCCCC3C51A15041666666F6A8545541
+</a>
+
+<b>
+0106000000010000000103000000010000001000000016B4E95144A150418A6CD7A3AA545541F844889A4CA15041D7A87390A954554182CCCC3C51A15041316666F6A854554185C2F5485CA150416B51B89EA854554120D7A33065A15041B651B81EA9545541D184EB21A5A1504153AE47B1B554554155F528ECA7A15041950AD773B35455418766660666A15041D3E17A94A75455411E3333035FA15041A5C2F508A754554108145CBF5CA150415D52F0E6A6545541725C8F125CA15041D1CCCCDCA6545541E6AD691459A1504149C1A524A75455413D0AD7A342A15041F6285C3FA95455419792C2472FA1504102CE2899AD545541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608285 - 322967
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000CDCCCC3C51A15041666666F6A85455418FC2F5485CA15041EC51B89EA85455410AD7A33065A15041EC51B81EA95455411F85EB21A5A1504114AE47B1B5545541C3F528ECA7A150413D0AD773B35455416666660666A1504148E17A94A7545541333333035FA150418FC2F508A7545541295C8F125CA15041CDCCCCDCA65455413D0AD7A342A15041F6285C3FA95455418FC2F5482FA15041713D0A97AD545541295C8F522EA15041A4703D4AAF5455411F85EB5144A150413D0AD7A3AA545541CDCCCC3C51A15041666666F6A8545541
+</a>
+
+<b>
+0106000000010000000103000000010000001000000016B4E95144A150418A6CD7A3AA545541F844889A4CA15041D7A87390A954554182CCCC3C51A15041316666F6A854554185C2F5485CA150416B51B89EA854554120D7A33065A15041B651B81EA9545541D184EB21A5A1504153AE47B1B554554155F528ECA7A15041950AD773B35455418766660666A15041D3E17A94A75455411E3333035FA15041A5C2F508A754554108145CBF5CA150415D52F0E6A6545541725C8F125CA15041D1CCCCDCA6545541E6AD691459A1504149C1A524A75455413D0AD7A342A15041F6285C3FA95455419792C2472FA1504102CE2899AD545541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608347 - 200893
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000013000000666666C6AAAF5041333333635F495541000000A0A3AF504114AE47216B49554152B81E75A1AF50419A9999A971495541D7A3702D9DAF5041713D0AF783495541333333B3ABAF5041A4703D5A8649554185EB51D8C2AF5041000000908B495541E17A146EC8AF5041F6285CAF7D4955411F85EB81D2AF50410000009086495541F6285C0FD8AF5041AE47E16A8949554152B81EA5DFAF5041E17A14BE8649554185EB51C8D7AF50413333339381495541333333F3D2AF504148E17AB47D495541F6285CDFCFAF5041295C8FF27949554133333323CCAF504114AE476174495541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002600000004AF94C1CDAF5041DAD5F7CA76495541408853D8CDAF50411A8BDFEC76495541C4995B90CEAF504193EF86DC7749554151A0F21AD0AF504190ED255A774955419D0ACEE7D1AF5041274C57047949554189CE4464D3AF5041643546C97A495541777661AAD4AF50410D4882ED7A495541B9279C02D6AF50416719EC927A495541FAEE79B4D6AF50411AA6363579495541C16AD154D8AF5041B190944677495541CE789522DAAF5041A7D508D875495541BE243BD0DBAF5041F6F2FF657649554158C33904DDAF5041A8B12DE7754955414DDF6717DEAF5041B40A131975495541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608407 - 201058
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000001F85EB2194A2504152B81EF5975255418FC2F5F889A250410AD7A3C0905255410AD7A3C089A250419A999909925255410AD7A31089A250413D0AD7D39552554185EB516889A25041D7A3703D97525541CDCCCC3C88A25041333333239952554185EB51E884A25041EC51B89E99525541EC51B8FE85A250415C8FC2B59B525541C3F5280C87A25041666666769D525541C3F5288C88A25041666666F69C525541CDCCCC3C89A25041C3F528DC9A525541D7A3709D8BA25041000000609D52554152B81E658BA25041C3F5282CA152554185EB51E88BA25041CDCCCCACA2525541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000F54AF5F889A250419D91A6C0905255410AD7A3C089A250419A999909925255410AD7A31089A250413D0AD7D39552554185EB516889A25041D7A3703D97525541CDCCCC3C88A25041333333239952554185EB51E884A25041EC51B89E995255412E971D3785A25041570627369A525541D5E2B8FE85A250419E0BC2B59B5255411AC1140186A250414DFEB0B99B525541C3F5280C87A25041666666769D525541C3F5288C88A25041666666F69C525541CDCCCC3C89A25041C3F528DC9A525541D7A3709D8BA25041000000609D52554152B81E658BA25041C3F5282CA1525541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>608407 - 419296
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000001F85EB2194A2504152B81EF5975255418FC2F5F889A250410AD7A3C0905255410AD7A3C089A250419A999909925255410AD7A31089A250413D0AD7D39552554185EB516889A25041D7A3703D97525541CDCCCC3C88A25041333333239952554185EB51E884A25041EC51B89E99525541EC51B8FE85A250415C8FC2B59B525541C3F5280C87A25041666666769D525541C3F5288C88A25041666666F69C525541CDCCCC3C89A25041C3F528DC9A525541D7A3709D8BA25041000000609D52554152B81E658BA25041C3F5282CA152554185EB51E88BA25041CDCCCCACA2525541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000016000000F54AF5F889A250419D91A6C0905255410AD7A3C089A250419A999909925255410AD7A31089A250413D0AD7D39552554185EB516889A25041D7A3703D97525541CDCCCC3C88A25041333333239952554185EB51E884A25041EC51B89E995255412E971D3785A25041570627369A525541D5E2B8FE85A250419E0BC2B59B5255411AC1140186A250414DFEB0B99B525541C3F5280C87A25041666666769D525541C3F5288C88A25041666666F69C525541CDCCCC3C89A25041C3F528DC9A525541D7A3709D8BA25041000000609D52554152B81E658BA25041C3F5282CA1525541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>100085 - 389877
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003400000052B81E55B08550410AD7A310011F54413D0AD7C3B485504148E17A54071F5441CDCCCCBCB7855041AE47E1BA0A1F5441CDCCCC4CBC8550411F85EB010F1F54415C8FC2E5BE855041AE47E10A111F544185EB5198C185504185EB51B8121F544148E17A84C485504114AE4731141F544133333393C7855041D7A3703D151F54418FC2F5C8C7855041000000C0141F544114AE47A1CB855041E17A141E051F5441F6285CAFCF8550419A999979031F5441666666C6D585504148E17AB4081F54419A999999D7855041B81E855B0C1F54413D0AD773DE855041295C8F12141F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000120000004061D673DE855041E79D8E12141F54416995F498EB855041B1B09899051F5441713D0A47E3855041A4703D2AFF1E54410064D51BD0855041952E3B56F01E54413F7670FDCF8550414C78B83EF01E5441419D91A2CE85504100529D62F11E5441BE83E14AC88550417979F6B8F61E544188E8E3ECC28550410DA5193FFB1E5441865390FAC785504146DB69A6021F5441F1719CD3CB855041646FB109051F5441DDFB310FD0855041019E79F4021F5441A8ED5596D4855041A3A85AAF071F5441979967C6D58550411E247AB4081F54412FB99999D7855041B5BD845B0C1F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>653709 - 3067940
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000A00000001030000000100000052000000F6285CEF82A8504185EB51D80CE1544152B81E9580A850413D0AD73308E154418FC2F5D87CA850410AD7A33009E1544114AE47F17AA85041D7A3704D07E154410AD7A35076A85041A4703DFA0AE15441EC51B88E78A85041713D0A3711E15441CDCCCC6C78A850413D0AD76313E15441F6285C5F7BA850413D0AD75318E15441AE47E15A7BA85041666666561AE154417B14AE077AA85041000000101CE15441C3F528EC7BA850419A99991920E15441666666E67CA85041EC51B84E22E154418FC2F52889A850418FC2F5B81CE15441F6285CCF90A8504114AE47D11AE15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000280000003895C46787A85041B582908D1DE1544138957E2288A85041D1BBD83D1DE15441357726DE8AA85041D73079431CE15441996219898EA85041A10E4A8D1BE1544122CBE12694A850418EE7455A1AE15441A6FED22E97A85041784A38A519E15441C86FE64397A850411EC668A419E1544149CDAE399CA850415E4C927319E15441CB12DE37B0A85041F76E2E8719E15441485EFB41B5A8504184AC804D19E1544184D5CC88B5A850416B4B658C19E1544188308AF3B1A85041BD72972F0CE1544135982A2DA9A8504110A8FD5D07E154410238CA62A3A850414053323A03E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>653709 - 3154733
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000A00000001030000000100000052000000F6285CEF82A8504185EB51D80CE1544152B81E9580A850413D0AD73308E154418FC2F5D87CA850410AD7A33009E1544114AE47F17AA85041D7A3704D07E154410AD7A35076A85041A4703DFA0AE15441EC51B88E78A85041713D0A3711E15441CDCCCC6C78A850413D0AD76313E15441F6285C5F7BA850413D0AD75318E15441AE47E15A7BA85041666666561AE154417B14AE077AA85041000000101CE15441C3F528EC7BA850419A99991920E15441666666E67CA85041EC51B84E22E154418FC2F52889A850418FC2F5B81CE15441F6285CCF90A8504114AE47D11AE15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000008466B753B9A850416456C5C424E15441069E0FD6C4A850416B1F79A821E154410533E040C5A85041EFA405231FE1544156BE36C9C7A8504145DB7C041DE15441BEBE4B27CEA8504100552AD516E15441B14AA0D0D5A850418CFF61300EE15441E20B5CBDDAA85041B592AFD809E15441C1B82806DFA850419E8F511105E154417DAF1488E1A8504104789DF3FDE054415C8FC255DCA850418FC2F558FFE054416FF3445CD6A85041439759C801E15441C6428A69D3A85041C2BD062204E154416BAC4849CEA85041872E7A0709E15441CB8BDFDEC5A850414DC1B8AE0FE15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>653709 - 3281774
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000A00000001030000000100000052000000F6285CEF82A8504185EB51D80CE1544152B81E9580A850413D0AD73308E154418FC2F5D87CA850410AD7A33009E1544114AE47F17AA85041D7A3704D07E154410AD7A35076A85041A4703DFA0AE15441EC51B88E78A85041713D0A3711E15441CDCCCC6C78A850413D0AD76313E15441F6285C5F7BA850413D0AD75318E15441AE47E15A7BA85041666666561AE154417B14AE077AA85041000000101CE15441C3F528EC7BA850419A99991920E15441666666E67CA85041EC51B84E22E154418FC2F52889A850418FC2F5B81CE15441F6285CCF90A8504114AE47D11AE15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000008466B753B9A850416456C5C424E15441069E0FD6C4A850416B1F79A821E154410533E040C5A85041EFA405231FE1544156BE36C9C7A8504145DB7C041DE15441BEBE4B27CEA8504100552AD516E15441B14AA0D0D5A850418CFF61300EE15441E20B5CBDDAA85041B592AFD809E15441C1B82806DFA850419E8F511105E154417DAF1488E1A8504104789DF3FDE054415C8FC255DCA850418FC2F558FFE054416FF3445CD6A85041439759C801E15441C6428A69D3A85041C2BD062204E154416BAC4849CEA85041872E7A0709E15441CB8BDFDEC5A850414DC1B8AE0FE15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>653709 - 3360849
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000A00000001030000000100000052000000F6285CEF82A8504185EB51D80CE1544152B81E9580A850413D0AD73308E154418FC2F5D87CA850410AD7A33009E1544114AE47F17AA85041D7A3704D07E154410AD7A35076A85041A4703DFA0AE15441EC51B88E78A85041713D0A3711E15441CDCCCC6C78A850413D0AD76313E15441F6285C5F7BA850413D0AD75318E15441AE47E15A7BA85041666666561AE154417B14AE077AA85041000000101CE15441C3F528EC7BA850419A99991920E15441666666E67CA85041EC51B84E22E154418FC2F52889A850418FC2F5B81CE15441F6285CCF90A8504114AE47D11AE15441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000280000003895C46787A85041B582908D1DE1544138957E2288A85041D1BBD83D1DE15441357726DE8AA85041D73079431CE15441996219898EA85041A10E4A8D1BE1544122CBE12694A850418EE7455A1AE15441A6FED22E97A85041784A38A519E15441C86FE64397A850411EC668A419E1544149CDAE399CA850415E4C927319E15441CB12DE37B0A85041F76E2E8719E15441485EFB41B5A8504184AC804D19E1544184D5CC88B5A850416B4B658C19E1544188308AF3B1A85041BD72972F0CE1544135982A2DA9A8504110A8FD5D07E154410238CA62A3A850414053323A03E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>633209 - 3014300
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F000000713D0A8792EC504185EB51B896DA5441B81E859B8BEC5041D7A3703D98DA54415C8FC2558FEC5041CDCCCCFCA0DA5441C3F528FC90EC50410AD7A300A4DA5441AE47E10A94EC504166666696A9DA54415C8FC28595EC5041CDCCCCECAADA5441A4703DBA96EC5041A4703D6AADDA5441D7A370BD9AEC5041AE47E13AB3DA5441C3F528CC9BEC504152B81ED5B6DA544100000040A2EC504114AE4741B5DA544166666686AAEC504133333303ACDA5441C3F5288CB1EC50415C8FC245A3DA5441D7A3703D9DEC504152B81E6595DA54417B14AE8796EC50417B14AE3796DA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002000000037720A2E83EC5041BECEEABB8BDA54410623BEED7EEC504181C65ED18ADA5441F7E8A9E17FEC504121BA26DC86DA5441333333C37DEC5041A4703D0A86DA54410AD7A3007CEC5041713D0A9785DA544114AE47F178EC50410AD7A39085DA5441D9F8E36979EC5041B05847D48CDA54417CDB570C7BEC504194B94ACEA3DA54416448E4537CEC50417BB3CB91B1DA5441DD193B467DEC5041CCDB0BDAB7DA5441D5CF994E7EEC5041A3FB045CBDDA5441C8A9370780EC504120722CCABDDA544106023A6683EC504193AA2745BEDA5441C3F528CC9BEC504152B81ED5B6DA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>633209 - 3375397
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F000000713D0A8792EC504185EB51B896DA5441B81E859B8BEC5041D7A3703D98DA54415C8FC2558FEC5041CDCCCCFCA0DA5441C3F528FC90EC50410AD7A300A4DA5441AE47E10A94EC504166666696A9DA54415C8FC28595EC5041CDCCCCECAADA5441A4703DBA96EC5041A4703D6AADDA5441D7A370BD9AEC5041AE47E13AB3DA5441C3F528CC9BEC504152B81ED5B6DA544100000040A2EC504114AE4741B5DA544166666686AAEC504133333303ACDA5441C3F5288CB1EC50415C8FC245A3DA5441D7A3703D9DEC504152B81E6595DA54417B14AE8796EC50417B14AE3796DA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002000000037720A2E83EC5041BECEEABB8BDA54410623BEED7EEC504181C65ED18ADA5441F7E8A9E17FEC504121BA26DC86DA5441333333C37DEC5041A4703D0A86DA54410AD7A3007CEC5041713D0A9785DA544114AE47F178EC50410AD7A39085DA5441D9F8E36979EC5041B05847D48CDA54417CDB570C7BEC504194B94ACEA3DA54416448E4537CEC50417BB3CB91B1DA5441DD193B467DEC5041CCDB0BDAB7DA5441D5CF994E7EEC5041A3FB045CBDDA5441C8A9370780EC504120722CCABDDA544106023A6683EC504193AA2745BEDA5441C3F528CC9BEC504152B81ED5B6DA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>634102 - 961995
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000024000000713D0AB77DE75041D7A370BD03D654417B14AE0783E750413D0AD7E304D6544185EB51D88AE75041C3F5286C07D65441A4703DEA8FE750418FC2F5F808D65441CDCCCCAC91E75041B81E859B09D6544152B81EA593E75041F6285C4F0AD65441A4703D7A95E750415C8FC2150BD65441CDCCCC5C98E75041666666360CD65441666666769BE75041A4703DDA0DD654411F85EB619FE75041EC51B8AE0FD65441EC51B83EA5E75041000000B012D65441AE47E1FAA8E75041CDCCCCBC14D6544114AE4721ADE75041C3F5286C17D6544114AE47C1ADE75041713D0AA716D65441 [...]
+</a>
+
+<b>
+01060000000200000001030000000100000029000000CDCCCC2C72E750416666661605D65441336C2BBB75E750412EBA365E06D65441C3F5282C79E750415C8FC2A507D65441D7A370DD7CE750410000000009D65441AE47E1AA7FE750413D0AD7E309D65441524AAF5782E75041B3CE03CF0AD6544195D4159084E75041139AA39B0BD654410D1B478486E7504184F986510CD654412D7D26EA88E75041AF085C620DD65441666666E68BE75041A4703D8A0ED6544135851AFA8DE75041CE6A3BC80FD65441722833F48EE750413FCA1E7E10D654418AA3C41B90E75041B129023411D65441B4B2992C91E75041341D29D311D65441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>634330 - 1581513
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000EC51B81E18E25041000000D02AC854416666662612E2504152B81E0532C85441713D0A770CE2504152B81E6537C85441713D0AA7FEE150415C8FC27544C8544185EB5108FCE1504114AE473147C85441AE47E1BAF6E15041A4703DBA4CC854411F85EB41F3E150418FC2F51851C85441EC51B81EF2E1504148E17AF452C854413D0AD7C3FFE15041B81E85EB64C85441CDCCCC6C0DE25041E17A14DE5BC85441000000A022E25041CDCCCC5C4EC85441C3F5288C1DE25041C3F5287C47C854417B14AE6726E2504114AE47413FC85441CDCCCC8C29E250410AD7A3703CC85441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000004BE471BE0CE25041AE17A0515CC85441CDCCCC6C0DE25041E17A14DE5BC85441000000A022E25041CDCCCC5C4EC85441C3F5288C1DE25041C3F5287C47C854417B14AE6726E2504114AE47413FC85441CDCCCC8C29E250410AD7A3703CC85441000000802DE25041A4703DCA38C854413D0AD70331E2504114AE475135C85441D7A3709D31E250413D0AD74334C8544185EB51C831E25041F6285C6F33C85441AE47E10A31E25041F6285CCF2FC85441713D0A8730E25041A4703D7A2AC854410AD7A35023E250419A9999A92AC85441EC51B81E18E25041000000D02AC85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>634330 - 4247184
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000016000000EC51B81E18E25041000000D02AC854416666662612E2504152B81E0532C85441713D0A770CE2504152B81E6537C85441713D0AA7FEE150415C8FC27544C8544185EB5108FCE1504114AE473147C85441AE47E1BAF6E15041A4703DBA4CC854411F85EB41F3E150418FC2F51851C85441EC51B81EF2E1504148E17AF452C854413D0AD7C3FFE15041B81E85EB64C85441CDCCCC6C0DE25041E17A14DE5BC85441000000A022E25041CDCCCC5C4EC85441C3F5288C1DE25041C3F5287C47C854417B14AE6726E2504114AE47413FC85441CDCCCC8C29E250410AD7A3703CC85441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000004BE471BE0CE25041AE17A0515CC85441CDCCCC6C0DE25041E17A14DE5BC85441000000A022E25041CDCCCC5C4EC85441C3F5288C1DE25041C3F5287C47C854417B14AE6726E2504114AE47413FC85441CDCCCC8C29E250410AD7A3703CC85441000000802DE25041A4703DCA38C854413D0AD70331E2504114AE475135C85441D7A3709D31E250413D0AD74334C8544185EB51C831E25041F6285C6F33C85441AE47E10A31E25041F6285CCF2FC85441713D0A8730E25041A4703D7A2AC854410AD7A35023E250419A9999A92AC85441EC51B81E18E25041000000D02AC85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>653594 - 5221664
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003E0000000AD7A3F050A65041CDCCCCACA8DD5441333333734AA650413D0AD733A6DD544185EB51B841A6504185EB5108A2DD5441D7A370FD38A650418FC2F5789DDD54419A9999C92DA65041295C8FC298DD54418FC2F5E820A65041A4703D8A93DD544185EB51B81EA65041F6285C7F91DD54419A9999791BA650418FC2F5C88CDD54410AD7A30019A65041A4703D8A89DD5441A4703DFA12A650417B14AE4783DD544152B81E550CA65041C3F5287C7DDD54413D0AD7B30BA65041F6285C9F7DDD54419A9999C90AA65041000000C083DD5441F6285C0F09A6504114AE475191DD5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003200000052B81E4515A65041D7A3708D89DD54410AD7A3601CA650417B14AEC78FDD54419A9999091EA650415C8FC2D592DD5441000000501FA650413333331394DD54415C8FC26520A65041713D0A5794DD544152B81EB52AA65041713D0AE79ADD5441EC51B84E2EA65041CDCCCC4C9DDD5441A4703D2A34A65041CDCCCC0CA1DD54410000000039A65041295C8FC2A3DD5441B81E85BB3BA6504152B81EF5A4DD5441CDCCCC4C3EA65041295C8F32A6DD5441A4703DBA41A6504166666666A7DD54410AD7A3004BA65041666666C6A9DD544114AE47814EA65041C3F528ACAADD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>613438 - 1325679
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000007000000295C8FE2061A5141C3F5286C6CCC5441D7A3709D2E1A5141D7A3709D5DCC5441E17A14FE201A51415C8FC22549CC5441713D0AD7FD195141E17A143E5CCC5441D7A3709DDA1951410AD7A3606FCC5441EC51B84EDF195141666666367ACC5441295C8FE2061A5141C3F5286C6CCC5441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000D7A3709D2E1A5141D7A3709D5DCC54415BF84E582C1A5141399407765ECC5441E1A782BA271A514124567D2E60CC5441EA4819171F1A51410E9CB06663CC5441C35C6B4A171A51416AD8DB4E66CC5441C9DD0AA6141A5141C457F24A67CC5441019A9FCF121A5141B6F945FA67CC54415D304B2D111A514154AA2F9668CC5441F12D6E370F1A5141C4763B5169CC544139E6B5B30A1A5141B30AF9FF6ACC5441FC12CFDD071A514130CB840E6CCC544119A2CC0F071A5141F6944C5B6CCC5441678CC84F061A5141A5294D9F6CCC5441AAF19967041A5141D91966496DCC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>613438 - 3540338
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000007000000295C8FE2061A5141C3F5286C6CCC5441D7A3709D2E1A5141D7A3709D5DCC5441E17A14FE201A51415C8FC22549CC5441713D0AD7FD195141E17A143E5CCC5441D7A3709DDA1951410AD7A3606FCC5441EC51B84EDF195141666666367ACC5441295C8FE2061A5141C3F5286C6CCC5441
+</a>
+
+<b>
+01060000000100000001030000000100000020000000D7A3709D2E1A5141D7A3709D5DCC54415BF84E582C1A5141399407765ECC5441E1A782BA271A514124567D2E60CC5441EA4819171F1A51410E9CB06663CC5441C35C6B4A171A51416AD8DB4E66CC5441C9DD0AA6141A5141C457F24A67CC5441019A9FCF121A5141B6F945FA67CC54415D304B2D111A514154AA2F9668CC5441F12D6E370F1A5141C4763B5169CC544139E6B5B30A1A5141B30AF9FF6ACC5441FC12CFDD071A514130CB840E6CCC544119A2CC0F071A5141F6944C5B6CCC5441678CC84F061A5141A5294D9F6CCC5441AAF19967041A5141D91966496DCC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>613443 - 1325764
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000700000066666636BD195141F6285C9F9CCC5441A4703D9AC61951419A9999D98ECC544148E17AE4DC195141EC51B81E7DCC544133333353DA19514152B81E0577CC54410AD7A330C919514185EB515883CC5441333333B3B619514152B81EA590CC544166666636BD195141F6285C9F9CCC5441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000074A463E5C419514123374E728DCC5441418A1D3BC41951413CD03B4A8ECC5441216DD188BB1951418AC34A8999CC5441C3F5282CC2195141F6285CBFA5CC5441D7A3707DC21951415C8FC285A5CC544185EB5198C6195141A4703D4AA2CC5441CDCCCCECC219514152B81E959DCC54415563B8B1C21951418B2279989CCC54412D07679DC3195141FC7218F799CC544199BCA019C7195141CE29830895CC54417B14AE97CC1951419A9999998BCC54415C8FC2F5D3195141CDCCCC5C87CC54419A9999F9DE195141295C8F1282CC544170F2DC77DC195141E389A91C7CCC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>613443 - 3343798
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000700000066666636BD195141F6285C9F9CCC5441A4703D9AC61951419A9999D98ECC544148E17AE4DC195141EC51B81E7DCC544133333353DA19514152B81E0577CC54410AD7A330C919514185EB515883CC5441333333B3B619514152B81EA590CC544166666636BD195141F6285C9F9CCC5441
+</a>
+
+<b>
+0106000000010000000103000000010000001100000074A463E5C419514123374E728DCC5441418A1D3BC41951413CD03B4A8ECC5441216DD188BB1951418AC34A8999CC5441C3F5282CC2195141F6285CBFA5CC5441D7A3707DC21951415C8FC285A5CC544185EB5198C6195141A4703D4AA2CC5441CDCCCCECC219514152B81E959DCC54415563B8B1C21951418B2279989CCC54412D07679DC3195141FC7218F799CC544199BCA019C7195141CE29830895CC54417B14AE97CC1951419A9999998BCC54415C8FC2F5D3195141CDCCCC5C87CC54419A9999F9DE195141295C8F1282CC544170F2DC77DC195141E389A91C7CCC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>613965 - 356151
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000011000000A4703D7A1DDB5041713D0AA78529544185EB51E816DB5041CDCCCC5C9A2954410000009021DB50410AD7A3B0A22954418FC2F5682ADB5041295C8F82AC2954417B14AE372FDB50411F85EBE1B129544185EB515836DB5041EC51B82E97295441B81E85AB36DB50415C8FC2F5952954418FC2F51837DB5041C3F5285C94295441713D0A1734DB50413D0AD7F3912954413333339330DB5041666666668F295441713D0AB72DDB5041C3F528DC8C2954413D0AD7632ADB5041EC51B8DE892954419A99992927DB50410AD7A320862954415C8FC2A525DB5041C3F5282C84295441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000015000000DB98AD372FDB5041F8FAEAE1B1295441C686515836DB50416278B82E97295441B81E85AB36DB50415C8FC2F595295441B39BF41837DB50410975285C94295441D8E5081734DB5041EC2BD7F391295441A10B329330DB504106AF67668F295441F4E30AB72DDB5041D59E29DC8C29544182B4D6632ADB5041312CB9DE8929544173033C6A27DB50419380966B86295441B4C5982927DB50415EC6A220862954410ACDC1A525DB5041103A2A2C84295441EE4A6CBC22DB50416A6ACC6C802954410E71152E20DB5041069990227D295441775DD7ED1DDB504162C8953A84295441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>614437 - 3075874
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000003000000010300000001000000180000005C8FC275C7DC5041E17A148E9C275441B81E85CBC7DC5041A4703DCA9D275441D7A3707DC8DC5041EC51B8AE9E275441C3F5280CCADC504114AE47619F275441F6285CEFCBDC5041AE47E10AA027544133333383CFDC50410AD7A390A12754410AD7A390D1DC5041000000A0A22754410AD7A340D3DC5041C3F5287CA3275441D7A370ADD4DC504152B81EA5A42754410AD7A370D5DC5041666666D6A5275441C3F5285CD8DC504166666676A5275441B81E850BE3DC50419A9999A9A5275441713D0A47E3DC5041B81E85DB8A275441B81E854BE3DC5041295C8FD287275441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000380000003ACAF8D5C7DC5041C502BF358427544112FAF23ED0DC5041CE82C63B8527544138A03C3ED7DC5041295D93CC852754417198D52BDDDC50418406085E86275441E6F0C95EE3DC5041CD02ACE786275441435D466EE4DC50415062B6197F275441FD4A060CE6DC504191A4BB327327544172091DACE7DC5041BDEF9C4867275441713D0A07E8DC5041E17A14AE642754413EC6A13FDDDC5041D920D0B165275441B1F9F749D3DC50419DB1CDA166275441CDCCCC5CD0DC504185EB51E8662754410BF662EFD0DC50413AA277296C275441D8820C1ED1DC5041369FA9D56D275441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>614437 - 5260910
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000003000000010300000001000000180000005C8FC275C7DC5041E17A148E9C275441B81E85CBC7DC5041A4703DCA9D275441D7A3707DC8DC5041EC51B8AE9E275441C3F5280CCADC504114AE47619F275441F6285CEFCBDC5041AE47E10AA027544133333383CFDC50410AD7A390A12754410AD7A390D1DC5041000000A0A22754410AD7A340D3DC5041C3F5287CA3275441D7A370ADD4DC504152B81EA5A42754410AD7A370D5DC5041666666D6A5275441C3F5285CD8DC504166666676A5275441B81E850BE3DC50419A9999A9A5275441713D0A47E3DC5041B81E85DB8A275441B81E854BE3DC5041295C8FD287275441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000380000003ACAF8D5C7DC5041C502BF358427544112FAF23ED0DC5041CE82C63B8527544138A03C3ED7DC5041295D93CC852754417198D52BDDDC50418406085E86275441E6F0C95EE3DC5041CD02ACE786275441435D466EE4DC50415062B6197F275441FD4A060CE6DC504191A4BB327327544172091DACE7DC5041BDEF9C4867275441713D0A07E8DC5041E17A14AE642754413EC6A13FDDDC5041D920D0B165275441B1F9F749D3DC50419DB1CDA166275441CDCCCC5CD0DC504185EB51E8662754410BF662EFD0DC50413AA277296C275441D8820C1ED1DC5041369FA9D56D275441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546419 - 1464990
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000060000000AA648D40C5FE50411D055C5119385541066986D5C3FE5041076C111A1A3855418000816BC3FE5041BC1842D41D385541008BC1D6C3FE5041AC28B07121385541F97EDC9FC0FE50419DF0FE7C223855412591C92CBFFE504171DE11F023385541288414A7BAFE5041F968AB82283855410B4CB600B8FE504198DA570A2938554177B25AAFB6FE5041647183A22C3855411D5C42D2B4FE50417B13994A2E385541F308DB79BAFE504148A9A6932F385541BE8DA14CBAFE50413166CB0C3238554196ED23C4B6FE504159064995353855413EB6C3ECB4FE5041DACD2DAE39385541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000360000000C2A5B1AA6FE504115271B6757385541FDA0BB35A4FE504125D6388051385541AE92EFA49FFE50411E88C98052385541415FA5309BFE5041C6184FD65238554149C0534A96FE504158D2C54752385541A01C8FDA99FE504108B1BA9C51385541404C66169FFE50419A6A310E513855419FF610A6A1FE5041E4500CD44E3855417D37E374A8FE504197035AFA4A385541710F368FABFE5041A3CBDF274C38554109F19DCBB1FE50418E07105E47385541638696AAA9FE504187CCDF7844385541FEDFC964A4FE5041D2DB444E45385541C2FC7055A3FE5041F4863FB743385541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>546419 - 3412314
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000060000000AA648D40C5FE50411D055C5119385541066986D5C3FE5041076C111A1A3855418000816BC3FE5041BC1842D41D385541008BC1D6C3FE5041AC28B07121385541F97EDC9FC0FE50419DF0FE7C223855412591C92CBFFE504171DE11F023385541288414A7BAFE5041F968AB82283855410B4CB600B8FE504198DA570A2938554177B25AAFB6FE5041647183A22C3855411D5C42D2B4FE50417B13994A2E385541F308DB79BAFE504148A9A6932F385541BE8DA14CBAFE50413166CB0C3238554196ED23C4B6FE504159064995353855413EB6C3ECB4FE5041DACD2DAE39385541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000360000000C2A5B1AA6FE504115271B6757385541FDA0BB35A4FE504125D6388051385541AE92EFA49FFE50411E88C98052385541415FA5309BFE5041C6184FD65238554149C0534A96FE504158D2C54752385541A01C8FDA99FE504108B1BA9C51385541404C66169FFE50419A6A310E513855419FF610A6A1FE5041E4500CD44E3855417D37E374A8FE504197035AFA4A385541710F368FABFE5041A3CBDF274C38554109F19DCBB1FE50418E07105E47385541638696AAA9FE504187CCDF7844385541FEDFC964A4FE5041D2DB444E45385541C2FC7055A3FE5041F4863FB743385541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978931 - 1124616
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003A000000333333D34F445141D7A370FDCC4354415C8FC22550445141713D0A37CC43544114AE477142445141713D0A27C9435441EC51B81E314451417B14AE47C5435441666666663044514152B81EE5C843544152B81E65314451415C8FC2D5CA43544185EB51D8314451419A999929CC435441295C8F7232445141F6285CCFCF4354413D0AD77334445141EC51B8EEDD435441E17A145E3444514114AE4721E14354417B14AEE733445141B81E853BE443544152B81E353244514100000080EC4354419A99991931445141CDCCCC3CF1435441D7A3708D3A445141C3F528ACF3435441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000420000005C8FC22550445141713D0A37CC43544114AE477142445141713D0A27C9435441EC51B81E314451417B14AE47C5435441666666663044514152B81EE5C843544152B81E65314451415C8FC2D5CA43544185EB51D8314451419A999929CC435441295C8F7232445141F6285CCFCF4354413D0AD77334445141EC51B8EEDD435441E17A145E3444514114AE4721E14354417B14AEE733445141B81E853BE443544152B81E353244514100000080EC4354419A99991931445141CDCCCC3CF1435441D7A3708D3A445141C3F528ACF34354418FC2F5183F4451418FC2F5D8F4435441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>978931 - 3826747
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003A000000333333D34F445141D7A370FDCC4354415C8FC22550445141713D0A37CC43544114AE477142445141713D0A27C9435441EC51B81E314451417B14AE47C5435441666666663044514152B81EE5C843544152B81E65314451415C8FC2D5CA43544185EB51D8314451419A999929CC435441295C8F7232445141F6285CCFCF4354413D0AD77334445141EC51B8EEDD435441E17A145E3444514114AE4721E14354417B14AEE733445141B81E853BE443544152B81E353244514100000080EC4354419A99991931445141CDCCCC3CF1435441D7A3708D3A445141C3F528ACF3435441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000420000005C8FC22550445141713D0A37CC43544114AE477142445141713D0A27C9435441EC51B81E314451417B14AE47C5435441666666663044514152B81EE5C843544152B81E65314451415C8FC2D5CA43544185EB51D8314451419A999929CC435441295C8F7232445141F6285CCFCF4354413D0AD77334445141EC51B8EEDD435441E17A145E3444514114AE4721E14354417B14AEE733445141B81E853BE443544152B81E353244514100000080EC4354419A99991931445141CDCCCC3CF1435441D7A3708D3A445141C3F528ACF34354418FC2F5183F4451418FC2F5D8F4435441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>538333 - 41001
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000170000005D31CC661C5751411858392C1C6754413DE307EA1B5751411C2028391A67544156ABF6F61957514161C6B8DC14675441B0E94CF4175751412A32B6220F6754411F17F43C1457514172087079046754414BF595D31057514129B54527FB66544143C147800C575141988B617EFC66544146F17033075751414AB18287FD665441890C289202575141B8603CA0FE6654415B55E8390657514179155C8E0867544110FD1B130C575141F623EBD817675441858573ED0C5751415F48CBAC196754412CAB94F60D575141351C65991C675441D1E527540E575141FF8F4A1F1E675441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003100000068201DB21A575141550BB6E41A6754411ABE10121B5751413E8B69D71B67544138CFC8B61B575141CA09BE0F1D67544130C49D201C575141443296B81C675441DD884A641C5751411AB632221C675441C964A5601C575141CF259E131C67544192AD965A1C575141FA4863FB1B6754412914CD591C57514156E33CF81B675441DB5A65C51A5751410F2969141767544150CC55B61A5751411161FEEA166754417C4D1D991A5751414904A39A166754419ED7361C1A5751412740294315675441A5636A001A5751413B01B7F61467544110358F061A575141D8004C3A15675441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>903230 - 60213
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000002A0000000AD7A330E8FD50418FC2F52838465441C3F528BCEFFD5041E17A14EE38465441EC51B8FEEFFD504152B81E5536465441333333F3EFFD504148E17A2434465441E17A14CEEFFD50411F85EB712F465441A4703D8AEAFD5041AE47E14A2F4654413D0AD7E3E0FD5041B81E850B2E465441E17A14BED4FD50411F85EBA12B465441EC51B8AEC6FD5041295C8FE228465441295C8FB2BDFD50418FC2F578274654411F85EB31BEFD5041F6285C8F23465441C3F5281CC0FD5041333333931A4654410AD7A370C1FD5041AE47E16A15465441F6285C6FD4FD504152B81E4519465441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000029000000011E3116EBFD5041687AA37438465441C3F528BCEFFD5041E17A14EE38465441690925F4EFFD50415B85C5BE36465441BE11E7F9EFFD5041F584AC6A35465441E17A14CEEFFD50411F85EB712F465441A4703D8AEAFD5041AE47E14A2F4654413D0AD7E3E0FD5041B81E850B2E465441E17A14BED4FD50411F85EBA12B4654418E047E74C6FD50413AFE67D928465441295C8FB2BDFD50418FC2F578274654411F85EB31BEFD5041F6285C8F23465441C3F5281CC0FD5041333333931A4654410AD7A370C1FD5041AE47E16A15465441F6285C6FD4FD504152B81E4519465441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>696791 - 1371802
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000004500000052B81E35B92F51417B14AED755EA5441CFF8BD2EB92F514131E1DEBE50EA544179AD4F88B92F51418DB478324CEA544148E17A14B92F51410AD7A3F03BEA544173CB5A0DB92F5141975A8A9037EA5441A755192EBB2F514198D1DBA233EA5441890D129EBE2F51412FBD5E612FEA5441810A66FFC12F51411C970D7C29EA54412BC3EFBAC22F51411FAE84FD23EA54411F85EBF1C12F5141A4703DAA21EA544185EB5198BE2F5141C3F5287C20EA5441A4703D9ABB2F514185EB51B821EA5441F6285CEFB82F514148E17A4424EA5441F3868316B72F51415F9464DE26EA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A00000064E1EF37B92F514178B1F42956EA544152B81E35B92F51417B14AED755EA5441D4F8BD2EB92F51412CE1DEBE50EA54417DAD4F88B92F514192B478324CEA544148E17A14B92F51410AD7A3F03BEA544173CB5A0DB92F5141975A8A9037EA5441A755192EBB2F514198D1DBA233EA5441890D129EBE2F51412FBD5E612FEA5441810A66FFC12F514117970D7C29EA544127C3EFBAC22F51411AAE84FD23EA54411F85EBF1C12F5141A4703DAA21EA544185EB5198BE2F5141C3F5287C20EA5441A4703D9ABB2F514185EB51B821EA5441F6285CEFB82F514148E17A4424EA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>696791 - 5171163
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000004500000052B81E35B92F51417B14AED755EA5441CFF8BD2EB92F514131E1DEBE50EA544179AD4F88B92F51418DB478324CEA544148E17A14B92F51410AD7A3F03BEA544173CB5A0DB92F5141975A8A9037EA5441A755192EBB2F514198D1DBA233EA5441890D129EBE2F51412FBD5E612FEA5441810A66FFC12F51411C970D7C29EA54412BC3EFBAC22F51411FAE84FD23EA54411F85EBF1C12F5141A4703DAA21EA544185EB5198BE2F5141C3F5287C20EA5441A4703D9ABB2F514185EB51B821EA5441F6285CEFB82F514148E17A4424EA5441F3868316B72F51415F9464DE26EA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A00000064E1EF37B92F514178B1F42956EA544152B81E35B92F51417B14AED755EA5441D4F8BD2EB92F51412CE1DEBE50EA54417DAD4F88B92F514192B478324CEA544148E17A14B92F51410AD7A3F03BEA544173CB5A0DB92F5141975A8A9037EA5441A755192EBB2F514198D1DBA233EA5441890D129EBE2F51412FBD5E612FEA5441810A66FFC12F514117970D7C29EA544127C3EFBAC22F51411AAE84FD23EA54411F85EBF1C12F5141A4703DAA21EA544185EB5198BE2F5141C3F5287C20EA5441A4703D9ABB2F514185EB51B821EA5441F6285CEFB82F514148E17A4424EA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>4316 - 394187
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000031000000EC51B89E93685041E17A144EA51B5541C3F5280C9368504114AE4771A51B55418FC2F56894685041295C8F12A71B5541CDCCCC9C95685041AE47E14AA81B55410AD7A33096685041CDCCCC9CA91B55413D0AD7D3966850418FC2F5F8AA1B55410AD7A37097685041713D0A57AC1B5541EC51B8FE9768504166666686AD1B554148E17A949868504152B81EA5AE1B55417B14AE4799685041A4703DEAAF1B55415C8FC2E599685041F6285CEFB01B55413D0AD7839A6850419A999909B21B55413D0AD7A39B685041EC51B8EEB31B5541B81E856B9C6850415C8FC285B51B5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003400000066666666A268504114AE4731901B5541000000E0A068504148E17AB4921B554145EDFE22A0685041F7EAC3E4931B5541713D0AE794685041AE47E1FAA51B554128CA0E6A946850418BF51F10A71B5541536828699468504189021F12A71B5541CDCCCC9C95685041AE47E14AA81B55410AD7A33096685041CDCCCC9CA91B55413D0AD7D3966850418FC2F5F8AA1B55410AD7A37097685041713D0A57AC1B5541EC51B8FE9768504166666686AD1B554148E17A949868504152B81EA5AE1B55417B14AE4799685041A4703DEAAF1B55415C8FC2E599685041EC51B8EEB01B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>614949 - 86767
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002F00000033333383852B5141AE47E15A68745441CDCCCC0C892B5141000000706B74544152B81EB58B2B51410AD7A3506D7454413D0AD7438C2B51418FC2F5986D7454410AD7A3008C2B5141E17A143E6E7454413D0AD7538B2B5141AE47E13A6E74544148E17AA4882B5141333333636D745441EC51B86E842B51410AD7A3E0697454413D0AD7C3822B5141AE47E14A69745441713D0A17812B5141295C8F026874544152B81E857D2B51418FC2F568667454418FC2F598762B51415C8FC2456F745441000000207D2B51411F85EB81727454413D0AD7D3812B5141CDCCCC2C74745441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000090000009B105A3D782B51417D9BC77049745441EA47C881772B5141A0B91DAB48745441A00B38D6772B5141DCB4DB7E4B745441EB3CB7F7782B51418CD259224E74544106ED25CE7A2B51413CF0D7C55074544132BD33DE7D2B5141CBB7F5E153745441C27DFA82802B51419107CF7154745441684769287B2B5141B6D7F6D54C7454419B105A3D782B51417D9BC77049745441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>615881 - 3077322
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D0000001F85EB71BF3A5141713D0AF735375441B81E856BBF3A5141713D0AF73637544100000030873A5141C3F5288C35375441E17A149E853A51418FC2F5B8363754410AD7A330833A51411F85EBD13F375441D7A370ED803A51415C8FC22548375441D7A370BDA63A5141713D0A17493754418FC2F578B23A51411F85EB61493754418FC2F598C63A5141295C8FE249375441AE47E11ADA3A5141F6285C5F4A3754418FC2F518F13A51411F85EBF14A375441EC51B80EF93A5141A4703D1A393754411F85EB71BF3A5141713D0AF735375441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000A4703D6AA63A51413D0AD7735D3754413001ECCEAA3A51419F2E373D5D375441CEC306E0AA3A51415527A2175A37544116F079D9AA3A51413DB44ECC53375441FBD666D4AA3A51418194F4EB4E375441087200CFAA3A514148938FBB493754412B6F40E3AA3A5141B86477A649375441FE82961AAB3A5141DF8783A24937544136871752AC3A5141221CA39749375441E837CE62B23A51411D625AD04937544145AE9733BA3A51411974CDFF493754410085FB9BBD3A51415ADC7D144A37544190AE79D3C13A51419A9E172E4A3754417B81C5ADC63A5141A921B14A4A375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>615881 - 3385826
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D0000001F85EB71BF3A5141713D0AF735375441B81E856BBF3A5141713D0AF73637544100000030873A5141C3F5288C35375441E17A149E853A51418FC2F5B8363754410AD7A330833A51411F85EBD13F375441D7A370ED803A51415C8FC22548375441D7A370BDA63A5141713D0A17493754418FC2F578B23A51411F85EB61493754418FC2F598C63A5141295C8FE249375441AE47E11ADA3A5141F6285C5F4A3754418FC2F518F13A51411F85EBF14A375441EC51B80EF93A5141A4703D1A393754411F85EB71BF3A5141713D0AF735375441
+</a>
+
+<b>
+01060000000100000001030000000100000029000000A4703D6AA63A51413D0AD7735D3754413001ECCEAA3A51419F2E373D5D375441CEC306E0AA3A51415527A2175A37544116F079D9AA3A51413DB44ECC53375441FBD666D4AA3A51418194F4EB4E375441087200CFAA3A514148938FBB493754412B6F40E3AA3A5141B86477A649375441FE82961AAB3A5141DF8783A24937544136871752AC3A5141221CA39749375441E837CE62B23A51411D625AD04937544145AE9733BA3A51411974CDFF493754410085FB9BBD3A51415ADC7D144A37544190AE79D3C13A51419A9E172E4A3754417B81C5ADC63A5141A921B14A4A375441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335087 - 1486284
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000051000000F6285CAFF6345141713D0AC7C8365541713D0A27F8345141B81E85DBC53655411F85EBB1F834514166666646C5365541713D0A67FF345141666666E6BE3655417B14AE27003551415C8FC235BE3655418FC2F518F534514100000090B736554152B81EC5E7345141B81E85ABAF3655417B14AE27E33451411F85EB81AC365541F6285CAFE234514148E17A74AA3655417B14AEF7E0345141713D0A77AB365541E17A143EDE34514114AE4711AD3655418FC2F598DA345141C3F528FCAF365541E17A142ED53451417B14AE47B5365541B81E85BBD3345141E17A142EB6365541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005C000000E17A143EDE34514114AE4711AD3655418FC2F598DA345141C3F528FCAF365541E17A142ED53451417B14AE47B5365541B81E85BBD3345141E17A142EB63655416AAC56ADCC3451419E12FBD6BB36554114AE4731CC345141A4703D3ABC3655411F85EB01D2345141295C8F52C236554114AE4791D5345141A4703D0AC63655413D0AD7C3D63451411F85EB41C73655410AD7A340D73451413D0AD7D3C73655419A999999D7345141C3F5286CC8365541A4703DDAD734514152B81EF5C836554114AE4701D834514114AE4781C9365541D7A3700DD8345141F6285C2FCA365541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>335087 - 3826796
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000051000000F6285CAFF6345141713D0AC7C8365541713D0A27F8345141B81E85DBC53655411F85EBB1F834514166666646C5365541713D0A67FF345141666666E6BE3655417B14AE27003551415C8FC235BE3655418FC2F518F534514100000090B736554152B81EC5E7345141B81E85ABAF3655417B14AE27E33451411F85EB81AC365541F6285CAFE234514148E17A74AA3655417B14AEF7E0345141713D0A77AB365541E17A143EDE34514114AE4711AD3655418FC2F598DA345141C3F528FCAF365541E17A142ED53451417B14AE47B5365541B81E85BBD3345141E17A142EB6365541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000005C000000E17A143EDE34514114AE4711AD3655418FC2F598DA345141C3F528FCAF365541E17A142ED53451417B14AE47B5365541B81E85BBD3345141E17A142EB63655416AAC56ADCC3451419E12FBD6BB36554114AE4731CC345141A4703D3ABC3655411F85EB01D2345141295C8F52C236554114AE4791D5345141A4703D0AC63655413D0AD7C3D63451411F85EB41C73655410AD7A340D73451413D0AD7D3C73655419A999999D7345141C3F5286CC8365541A4703DDAD734514152B81EF5C836554114AE4701D834514114AE4781C9365541D7A3700DD8345141F6285C2FCA365541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618288 - 1099729
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000250000008D3362538CF05041B39931E21D89544101864EC093F050419F3900441D895441E0E3D74799F05041D1269B7F1C8954413F3FAD40A0F050416B0D37BE1A89544189973C14A9F0504173271EE81889544178D8022BB1F05041AC8FCDF617895441B93332B8B8F0504139BF79A917895441ED8CFC34B9F050416779477A17895441A646D9D3BCF0504139BF79A9178954419930718EC0F0504194AC977F188954419F29CE93C7F05041989A199D1889544162992834E1F05041AB32B53D17895441F680C516E6F050419377F5D0168954418181B30FEDF050413746F77416895441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000030000000000000509DF05041295C8F3246895441CDCCCCCCA3F0504114AE4781428954415C8FC2F5A8F0504114AE471141895441C3F5287CB5F05041A4703D5A3E89544148E17A54C1F0504152B81EB53C89544152B81ED5C5F05041EC51B85E3C895441B81E85DBC8F0504148E17A243C895441295C8FD2D2F05041F6285C1F3C8954417B14AE07E0F05041EC51B8EE3C89544133333353E6F050419A99992940895441AE47E19AE6F0504114AE476141895441D7A370BDE7F050416666663646895441EC51B8AEECF050411F85EB714E89544152B81EE506F1504114AE47314E895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618288 - 3902479
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+010600000001000000010300000001000000250000008D3362538CF05041B39931E21D89544101864EC093F050419F3900441D895441E0E3D74799F05041D1269B7F1C8954413F3FAD40A0F050416B0D37BE1A89544189973C14A9F0504173271EE81889544178D8022BB1F05041AC8FCDF617895441B93332B8B8F0504139BF79A917895441ED8CFC34B9F050416779477A17895441A646D9D3BCF0504139BF79A9178954419930718EC0F0504194AC977F188954419F29CE93C7F05041989A199D1889544162992834E1F05041AB32B53D17895441F680C516E6F050419377F5D0168954418181B30FEDF050413746F77416895441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000030000000000000509DF05041295C8F3246895441CDCCCCCCA3F0504114AE4781428954415C8FC2F5A8F0504114AE471141895441C3F5287CB5F05041A4703D5A3E89544148E17A54C1F0504152B81EB53C89544152B81ED5C5F05041EC51B85E3C895441B81E85DBC8F0504148E17A243C895441295C8FD2D2F05041F6285C1F3C8954417B14AE07E0F05041EC51B8EE3C89544133333353E6F050419A99992940895441AE47E19AE6F0504114AE476141895441D7A370BDE7F050416666663646895441EC51B8AEECF050411F85EB714E89544152B81EE506F1504114AE47314E895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>637422 - 196653
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000001C000000B81E851BADEA5041AE47E18A83275541B81E85EBADEA5041C3F528FC7F275541CDCCCC3CB5EA5041EC51B8DE72275541E17A148EB8EA5041C3F5285C6E2755411F85EBB1C2EA50417B14AE77622755411F85EB01C8EA50410AD7A3C05B275541666666E6C8EA5041333333A359275541EC51B80EC8EA50416666663657275541C3F5281CC5EA5041AE47E18A52275541713D0A17C3EA504148E17AE44F2755418FC2F5F8BDEA5041666666064E275541713D0A27BEEA5041E17A140E5327554114AE4781BCEA504185EB51385B27554166666676B9EA50411F85EB2162275541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000003C31694FB2EA504176FEEDEF6727554163A0234FB2EA5041C6F3E1EF67275541E17A140EAFEA50416666665667275541713D0AE7AEEA5041333333136D27554129CA3EBAACEA5041021E1DEF70275541B5474215ACEA50415B4614917227554189B34373ABEA50419614CC6574275541D6BAB5C9AAEA50414298B55A75275541338F38A1A9EA5041629EF8067727554110F457C3A8EA504157E6F6B47A2755415A0CE00BA9EA5041349DFE997B275541E20D5F37A9EA5041A2804AE47B2755415E89064BA9EA504165DCDC057C275541C3F5288CA9EA504152B81E757C275541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>637422 - 325313
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000001C000000B81E851BADEA5041AE47E18A83275541B81E85EBADEA5041C3F528FC7F275541CDCCCC3CB5EA5041EC51B8DE72275541E17A148EB8EA5041C3F5285C6E2755411F85EBB1C2EA50417B14AE77622755411F85EB01C8EA50410AD7A3C05B275541666666E6C8EA5041333333A359275541EC51B80EC8EA50416666663657275541C3F5281CC5EA5041AE47E18A52275541713D0A17C3EA504148E17AE44F2755418FC2F5F8BDEA5041666666064E275541713D0A27BEEA5041E17A140E5327554114AE4781BCEA504185EB51385B27554166666676B9EA50411F85EB2162275541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000003C31694FB2EA504176FEEDEF6727554163A0234FB2EA5041C6F3E1EF67275541E17A140EAFEA50416666665667275541713D0AE7AEEA5041333333136D27554129CA3EBAACEA5041021E1DEF70275541B5474215ACEA50415B4614917227554189B34373ABEA50419614CC6574275541D6BAB5C9AAEA50414298B55A75275541338F38A1A9EA5041629EF8067727554110F457C3A8EA504157E6F6B47A2755415A0CE00BA9EA5041349DFE997B275541E20D5F37A9EA5041A2804AE47B2755415E89064BA9EA504165DCDC057C275541C3F5288CA9EA504152B81E757C275541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>616340 - 3672307
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000002000000010300000001000000060000008FC2F5D8FA015141D7A370DDA845544148E17A84FB0151415C8FC295A84554410AD7A3F0F9015141666666A69E455441000000D0F70151417B14AEC79F455441713D0A87F90151417B14AE879F4554418FC2F5D8FA015141D7A370DDA84554410103000000010000001F000000A4703D8AEE0151411F85EBF1AD455441EC51B8CEF7015141E17A14CEA9455441F6285C5FF5015141D7A3706DA1455441F6285CEFF001514114AE47B1A3455441C3F5286CEC01514148E17AD4A545544185EB51C8E50151418FC2F508A94554415C8FC255DF0151411F85EBE1AB4554411F85EB [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A0000003FE26578F5015141DCE10F78A14554418F1E9F16F30151415F57E797A2455441F900EACEF20151410D3A81BCA2455441E3AC9A9BF0015141332AEED5A34554418AE6F71CED0151412D8ABA80A5455441CD399FD7EB0151413C2B2D1CA645544101B6CDADE901514126046B27A7455441ECFE0739E60151412E748ED2A845544136A29819E5015141E02E2056A9455441A9DF0BE0E0015141FD27C933AB455441AE1D77E5DE015141D5AA9C10AC455441CA5AE0B8DB015141173E7C62AD4554413BBDA1D5D60151412A47C06AAF455441B81E85ABD001514100000010B2455441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>616457 - 3011624
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000005C8FC215BF0E51417B14AE67F43E5441F6285C1FC40E514152B81EF5F63E5441EC51B8AECB0E514148E17AE4FC3E5441EC51B85ECE0E5141CDCCCC5CFE3E5441A4703DFAD10E5141D7A3707DFF3E5441333333C3E20E51418FC2F5E8D93E544185EB5118F40E5141AE47E11AB33E54419A999959DE0E5141333333C3AB3E54417B14AE47DD0E5141713D0A67AB3E5441C3F5281CBE0E5141E17A142EF43E54415C8FC215BF0E51417B14AE67F43E5441
+</a>
+
+<b>
+0106000000010000000103000000010000001600000065AF9135D20E51410C37C24BFF3E5441E1449BDFD30E514190557CD7FF3E5441CF40AD6BDA0E514186547F46023F54411B28613FDD0E5141817F1CC4033F5441B64BC9B3E00E5141C18E7A91053F5441E2AF3838E50E51415EC34B1C073F54415C583CAFE70E5141054199F3073F5441278AD2B5EA0E514180DEBB8A083F54413F2D84B2F60E51414250B1B4ED3E5441666666A6FA0E514152B81EF5E03E5441F0214A2DFC0E51415819E8C8E03E5441929B8371FE0E5141A86C0695D83E5441EA3D0343000F5141D8E4D961D93E54413BE6CA7A060F5141D2487D26C73E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>616457 - 3324484
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000005C8FC215BF0E51417B14AE67F43E5441F6285C1FC40E514152B81EF5F63E5441EC51B8AECB0E514148E17AE4FC3E5441EC51B85ECE0E5141CDCCCC5CFE3E5441A4703DFAD10E5141D7A3707DFF3E5441333333C3E20E51418FC2F5E8D93E544185EB5118F40E5141AE47E11AB33E54419A999959DE0E5141333333C3AB3E54417B14AE47DD0E5141713D0A67AB3E5441C3F5281CBE0E5141E17A142EF43E54415C8FC215BF0E51417B14AE67F43E5441
+</a>
+
+<b>
+0106000000010000000103000000010000001600000065AF9135D20E51410C37C24BFF3E5441E1449BDFD30E514190557CD7FF3E5441CF40AD6BDA0E514186547F46023F54411B28613FDD0E5141817F1CC4033F5441B64BC9B3E00E5141C18E7A91053F5441E2AF3838E50E51415EC34B1C073F54415C583CAFE70E5141054199F3073F5441278AD2B5EA0E514180DEBB8A083F54413F2D84B2F60E51414250B1B4ED3E5441666666A6FA0E514152B81EF5E03E5441F0214A2DFC0E51415819E8C8E03E5441929B8371FE0E5141A86C0695D83E5441EA3D0343000F5141D8E4D961D93E54413BE6CA7A060F5141D2487D26C73E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617017 - 150587
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002300000052B81E351F0A514152B81E151435544114AE47A1180A51418FC2F5F80E3554415C8FC2850B0A51419A9999290935544152B81E95FC0951415C8FC2B51F355441295C8F62FA095141333333E323355441295C8FF2040A5141713D0A772B3554411F85EBD1FF095141D7A370CD31355441E17A14FE0B0A5141F6285CFF3C355441F6285C4F110A5141295C8F62423554410AD7A3F0070A51418FC2F5A841355441A4703D4A010A5141AE47E18A413554411F85EBD1F9095141CDCCCCAC413554418FC2F5B8EF0951419A9999294A3554415C8FC225EF095141D7A370AD4A355441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000027000000758E4B06F5095141D58AAFB4453554411F85EBD1F9095141CDCCCCAC41355441C2A7153A000A51416917B58F4135544163C9878E010A5141B573567E41355441B3911296080A5141E8C6CF9941355441CCEDDE800C0A5141D7167FDE41355441D072EA08110A5141AA5D3A5B4235544178E1B9BA0B0A5141FC432B0F3D35544178976E8B060A5141DBCC991C38355441DD857F23040A51412AE40AE0353554411EB5B8B2030A5141C9B2DE8436355441C7AEDF4E040A51413C29196F373554419C564694040A514184C6C0B83835544108DE18DE030A5141F811A8AB39355441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617017 - 379232
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002300000052B81E351F0A514152B81E151435544114AE47A1180A51418FC2F5F80E3554415C8FC2850B0A51419A9999290935544152B81E95FC0951415C8FC2B51F355441295C8F62FA095141333333E323355441295C8FF2040A5141713D0A772B3554411F85EBD1FF095141D7A370CD31355441E17A14FE0B0A5141F6285CFF3C355441F6285C4F110A5141295C8F62423554410AD7A3F0070A51418FC2F5A841355441A4703D4A010A5141AE47E18A413554411F85EBD1F9095141CDCCCCAC413554418FC2F5B8EF0951419A9999294A3554415C8FC225EF095141D7A370AD4A355441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000027000000758E4B06F5095141D58AAFB4453554411F85EBD1F9095141CDCCCCAC41355441C2A7153A000A51416917B58F4135544163C9878E010A5141B573567E41355441B3911296080A5141E8C6CF9941355441CCEDDE800C0A5141D7167FDE41355441D072EA08110A5141AA5D3A5B4235544178E1B9BA0B0A5141FC432B0F3D35544178976E8B060A5141DBCC991C38355441DD857F23040A51412AE40AE0353554411EB5B8B2030A5141C9B2DE8436355441C7AEDF4E040A51413C29196F373554419C564694040A514184C6C0B83835544108DE18DE030A5141F811A8AB39355441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617163 - 1095861
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000010000000666666869E105141AE47E1FAD8475441A4703DEAA81051410AD7A310C3475441E17A14AE861051418FC2F5E8A9475441F6285C6F64105141D7A370BD90475441666666365810514185EB51989A4754419A999949571051415C8FC2659D475441CDCCCC4C57105141F6285CAFA147544148E17A645F105141AE47E13AAA4754411F85EBE1671051415C8FC235B1475441713D0A27701051415C8FC255B7475441F6285CBF7A105141B81E850BBF47544152B81E8582105141EC51B80EC6475441AE47E13A8D105141A4703D3ACC475441000000D09410514185EB5198D0475441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E0000007F6ABCCC9E105141C1CAA18DD7475441F4FDD428A110514173689195D3475441CDCCCCE4A3105141D9CEF703CE4754417F916A06A9105141AC2E4B53C3475441A333ED6EA7105141D522EEF9C1475441AC005BCEA6105141B17B3F8EC14754413CC8BFEBA5105141BB3271DDC047544129CDD320A41051416DFB3C8CBF475441CE1BD402A2105141F7CBFDFDBD475441140521C59E1051415774599CBB47544182AB0AAB941051415EA72830B4475441CD016879911051418C9B61D7B1475441590FAB668D105141E83E34D9AE4754419EA7B7B38B1051412D079D99AD475441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617163 - 3584597
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000100000001030000000100000010000000666666869E105141AE47E1FAD8475441A4703DEAA81051410AD7A310C3475441E17A14AE861051418FC2F5E8A9475441F6285C6F64105141D7A370BD90475441666666365810514185EB51989A4754419A999949571051415C8FC2659D475441CDCCCC4C57105141F6285CAFA147544148E17A645F105141AE47E13AAA4754411F85EBE1671051415C8FC235B1475441713D0A27701051415C8FC255B7475441F6285CBF7A105141B81E850BBF47544152B81E8582105141EC51B80EC6475441AE47E13A8D105141A4703D3ACC475441000000D09410514185EB5198D0475441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002E0000007F6ABCCC9E105141C1CAA18DD7475441F4FDD428A110514173689195D3475441CDCCCCE4A3105141D9CEF703CE4754417F916A06A9105141AC2E4B53C3475441A333ED6EA7105141D522EEF9C1475441AC005BCEA6105141B17B3F8EC14754413CC8BFEBA5105141BB3271DDC047544129CDD320A41051416DFB3C8CBF475441CE1BD402A2105141F7CBFDFDBD475441140521C59E1051415774599CBB47544182AB0AAB941051415EA72830B4475441CD016879911051418C9B61D7B1475441590FAB668D105141E83E34D9AE4754419EA7B7B38B1051412D079D99AD475441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617772 - 233274
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000295C8F62AF0D51415C8FC205ED3954411F85EBA1B10D5141AE47E10AFE39544114AE4751B30D514152B81EF50C3A5441A4703DBAB30D51413D0AD773113A5441F6285C7FB30D514100000080173A5441666666D6B50D5141713D0A27183A5441713D0AF7B80D514100000080183A5441C3F528ECBB0D514185EB51A8183A5441000000F0BF0D51411F85EBA1183A5441D7A370BDC30D51417B14AE47193A5441B81E85FBC30D51419A999979183A544100000000C40D51413D0AD7C3173A5441AE47E12AC40D5141C3F528CC163A5441AE47E1DAC30D514114AE4771143A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000ADEF1170BA0D51411C880193163A544175BF169FBA0D5141ED04634D173A544120BCB1ACBA0D5141E5F68E5B173A544164A1FDB1BA0D51417A4A1361173A54415BB3DAE6BC0D5141A00B002E173A5441516F5FF2BF0D51418EA5764D173A54412CD75B7BC20D5141CD7E579B173A544135DE33FFC30D514186F730E4173A5441C355C125C40D514132E9C2E9163A54412AC03DDCC30D514135C1897B143A5441F6F762CDC30D5141E36692E8103A54418772C251C30D5141667BDE24083A5441436C18AFC30D51413BE82DCA043A5441B9C0ECEAC30D5141FDB274C5013A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617772 - 315055
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000295C8F62AF0D51415C8FC205ED3954411F85EBA1B10D5141AE47E10AFE39544114AE4751B30D514152B81EF50C3A5441A4703DBAB30D51413D0AD773113A5441F6285C7FB30D514100000080173A5441666666D6B50D5141713D0A27183A5441713D0AF7B80D514100000080183A5441C3F528ECBB0D514185EB51A8183A5441000000F0BF0D51411F85EBA1183A5441D7A370BDC30D51417B14AE47193A5441B81E85FBC30D51419A999979183A544100000000C40D51413D0AD7C3173A5441AE47E12AC40D5141C3F528CC163A5441AE47E1DAC30D514114AE4771143A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002F000000ADEF1170BA0D51411C880193163A544175BF169FBA0D5141ED04634D173A544120BCB1ACBA0D5141E5F68E5B173A544164A1FDB1BA0D51417A4A1361173A54415BB3DAE6BC0D5141A00B002E173A5441516F5FF2BF0D51418EA5764D173A54412CD75B7BC20D5141CD7E579B173A544135DE33FFC30D514186F730E4173A5441C355C125C40D514132E9C2E9163A54412AC03DDCC30D514135C1897B143A5441F6F762CDC30D5141E36692E8103A54418772C251C30D5141667BDE24083A5441436C18AFC30D51413BE82DCA043A5441B9C0ECEAC30D5141FDB274C5013A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617773 - 51582
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000026000000F6285C9F88FF5041D7A370CDCB4854418FC2F50879FF5041EC51B8FEC74854413D0AD7036FFF5041EC51B82EC5485441000000906AFF50415C8FC2D5C3485441B81E851B69FF5041F6285C5FCA48544114AE479169FF50419A9999E9CD48544114AE47A169FF50418FC2F5E8D1485441A4703D2A6CFF50415C8FC295D748544148E17A046FFF5041666666A6DC4854415C8FC2E572FF50415C8FC275E148544185EB51A879FF504100000020E7485441AE47E18A7FFF50418FC2F578EB485441B81E854B7FFF5041295C8F12EC48544152B81E1587FF5041D7A3700DF2485441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000035000000000000906AFF50415C8FC2D5C3485441FA7C000B71FF5041025E71C0C54854417BC7D38877FF5041B6F7E592C7485441048C6C457CFF504138F615C9C84854410F0A526983FF50412B459487CA4854411B73D8E087FF5041955BE79ECB4854415B64826B8AFF5041FE89B71ECC485441E1D45CAB91FF5041E4F88466CD485441D3C76FEF93FF5041AAAA75C6CD4854417177CE549AFF504184502273CE485441E8223E109EFF504140A23BCCCE4854419812A5E8A3FF504136833029CF4854419B0A0AF1AAFF5041F6B20799CF4854418756C484B1FF504115919F01D0485441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617773 - 85466
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000026000000F6285C9F88FF5041D7A370CDCB4854418FC2F50879FF5041EC51B8FEC74854413D0AD7036FFF5041EC51B82EC5485441000000906AFF50415C8FC2D5C3485441B81E851B69FF5041F6285C5FCA48544114AE479169FF50419A9999E9CD48544114AE47A169FF50418FC2F5E8D1485441A4703D2A6CFF50415C8FC295D748544148E17A046FFF5041666666A6DC4854415C8FC2E572FF50415C8FC275E148544185EB51A879FF504100000020E7485441AE47E18A7FFF50418FC2F578EB485441B81E854B7FFF5041295C8F12EC48544152B81E1587FF5041D7A3700DF2485441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000035000000000000906AFF50415C8FC2D5C3485441FA7C000B71FF5041025E71C0C54854417BC7D38877FF5041B6F7E592C7485441048C6C457CFF504138F615C9C84854410F0A526983FF50412B459487CA4854411B73D8E087FF5041955BE79ECB4854415B64826B8AFF5041FE89B71ECC485441E1D45CAB91FF5041E4F88466CD485441D3C76FEF93FF5041AAAA75C6CD4854417177CE549AFF504184502273CE485441E8223E109EFF504140A23BCCCE4854419812A5E8A3FF504136833029CF4854419B0A0AF1AAFF5041F6B20799CF4854418756C484B1FF504115919F01D0485441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617836 - 1096628
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000006200000085EB51B8F3FF5041AE47E11AA149544185EB5178F5FF5041D7A3705DA0495441AE47E15AF7FF50415C8FC2959B49544100000060000051411F85EBE19E495441F6285CFF0A005141333333E3A3495441AE47E13A160051410000002094495441C3F5283C20005141EC51B8AE85495441333333F32800514166666666784954417B14AE2731005141AE47E1CA6B4954411F85EB61380051415C8FC2B560495441713D0AE7390051419A9999995D4954417B14AE273C0051417B14AE275949544185EB51D83C005141713D0A57554954417B14AED73B00514148E17A044D495441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000046000000257A0F731E005141D3EC0A9E904954410AD7A300220051413D0AD7A391495441A4703DFA22005141295C8F02964954419A99993929005141AE47E1EA8949544152B81EF52F0051413D0AD7E37C4954413D0AD7E33500514185EB51687149544154F48C22350051415BE4E6B5704954414017593D2F005141C8574EBC6E4954414FF928AE2E0051419C9353986F495441C33B9DF52D005141F7C046B4704954417E256A8D2D00514111B8FF53714954419CE963262D00514195644DF271495441402151302C00514180D9686C73495441FBEB820F2B005141676C2D2875495441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617836 - 3471319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000006200000085EB51B8F3FF5041AE47E11AA149544185EB5178F5FF5041D7A3705DA0495441AE47E15AF7FF50415C8FC2959B49544100000060000051411F85EBE19E495441F6285CFF0A005141333333E3A3495441AE47E13A160051410000002094495441C3F5283C20005141EC51B8AE85495441333333F32800514166666666784954417B14AE2731005141AE47E1CA6B4954411F85EB61380051415C8FC2B560495441713D0AE7390051419A9999995D4954417B14AE273C0051417B14AE275949544185EB51D83C005141713D0A57554954417B14AED73B00514148E17A044D495441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000046000000257A0F731E005141D3EC0A9E904954410AD7A300220051413D0AD7A391495441A4703DFA22005141295C8F02964954419A99993929005141AE47E1EA8949544152B81EF52F0051413D0AD7E37C4954413D0AD7E33500514185EB51687149544154F48C22350051415BE4E6B5704954414017593D2F005141C8574EBC6E4954414FF928AE2E0051419C9353986F495441C33B9DF52D005141F7C046B4704954417E256A8D2D00514111B8FF53714954419CE963262D00514195644DF271495441402151302C00514180D9686C73495441FBEB820F2B005141676C2D2875495441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617968 - 353332
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002800000052B81E4516FF5041A4703D6ACF345441CDCCCCFC14FF5041F6285C8FCE345441E17A147E1DFF504185EB51F8CA34544152B81E4520FF5041A4703D6ACA345441713D0AB724FF504148E17AB4C83454415C8FC26525FF504100000080C5345441A4703D6A24FF5041CDCCCC5CBE34544114AE470123FF5041713D0A37BD345441E17A14EE1DFF504133333383BF34544152B81E7517FF50410AD7A370C2345441333333B310FF504152B81E85C534544185EB51380AFF504166666666C8345441713D0A67FDFE504114AE4791CD345441E17A14BEF0FE5041295C8F02D3345441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000FF659E52F5FE5041431E7D0AD13454415F650161F7FE504106744CA0D23454416031C579F7FE5041FF07A74DD3345441007ADB63F7FE504159F94636D43454418E949B30F7FE50417545FF76D5345441AD65141EF7FE504100F118AAD6345441C45F9C14F7FE50419319387DD7345441F35E32B9F6FE5041763A4DF1D8345441B144D493F5FE50417FCF3856DB34544129B831AAF7FE5041D6543571DA345441DEBB2A12F8FE504127C1B323D93454412188AFA5F8FE5041443DA8C1D73454411059A696F9FE5041A171A26FD63454410D2C18ADFBFE5041435D0A5ED5345441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>617974 - 150772
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001200000085EB518855015141CDCCCC0C68355441E17A143E540151418FC2F53865355441C3F5282C50015141E17A14BE62355441666666264F015141AE47E17A633554417B14AE274C01514185EB51F86A355441295C8FA249015141A4703D7A6F355441B81E853B44015141B81E856B7B355441295C8FE240015141E17A14EE823554410AD7A3E03D015141666666A6893554415C8FC2A53E015141EC51B8FE89355441D7A3707D4A015141E17A144E8F35544152B81EB558015141F6285CEF753554410AD7A3105A015141D7A3703D7335544114AE47F1570151415C8FC22570355441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000007B14AE274C01514185EB51F86A3554416CB3111D4C01514176AE4C0B6B3554412F41E9654A015141C137D11C6E35544131DA1BF94A015141E218F2766E355441ABA0DAEE57015141F92A9CE676355441B65DAD2D58015141F8B744E97635544103421C67580151413DDD8F7A763554412AB6EAB0580151412B36DCF6753554411624240E5A015141DE97CC39733554413EECF7D859015141AB7A53EC72355441097A466759015141AD9AAC46723554414CF5344C59015141153D3C1F72355441D64D32A6580151415F595B2D71355441C8B3BF96580151413376D91671355441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618034 - 1096927
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000170000009A9999B9A9065141AE47E1EAC5455441AE47E1CAA3065141295C8F32AF4554415C8FC2B59F0651410AD7A3A0AF455441F6285CCFA00651410AD7A380B94554411F85EBB1A10651410AD7A330BF455441F6285C7FA4065141CDCCCC9CBE455441AE47E1CAA406514133333383BF4554418FC2F508A806514133333363C9455441B81E85CB9F06514148E17AA4CB455441E17A144E9B0651411F85EB11CC455441A4703D4A970651418FC2F578CC45544185EB51389206514114AE47C1CC455441AE47E1DA8D06514152B81E15CD4554417B14AE478A06514152B81E35CD455441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000041000000BBB8069A82065141A4703D5ACD455441F5C2DDBD85065141A4703D5ACD4554418BD4D25A8606514187977157CD45544194B8374A8806514146AA8546CD45544179E9E4FB8A0651412E9DD12ECD4554416FEC744B8D0651413982221ACD4554410394C5D08D065141F7327915CD4554418FCB26318E065141CD8BA60ECD455441F0EEAE0492065141887B27C5CC455441E9F14BE292065141FB14CFB7CC4554418BBEE07A94065141E0F40AA1CC45544129CD352897065141FC2BDB7ACC455441083E0DD29C0651417E08FBECCB4554417B3FB5639F065141F7355DAECB455441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618034 - 3044453
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000170000009A9999B9A9065141AE47E1EAC5455441AE47E1CAA3065141295C8F32AF4554415C8FC2B59F0651410AD7A3A0AF455441F6285CCFA00651410AD7A380B94554411F85EBB1A10651410AD7A330BF455441F6285C7FA4065141CDCCCC9CBE455441AE47E1CAA406514133333383BF4554418FC2F508A806514133333363C9455441B81E85CB9F06514148E17AA4CB455441E17A144E9B0651411F85EB11CC455441A4703D4A970651418FC2F578CC45544185EB51389206514114AE47C1CC455441AE47E1DA8D06514152B81E15CD4554417B14AE478A06514152B81E35CD455441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000041000000FB318110A5065141A9090557C0455441A6675F3FA606514175609FF1C3455441DFCCF63FA7065141DFA711FFC6455441CDDFBF7AA70651412C7419B2C7455441A45AF208A8065141C9D32863C945544139EEDBD9A7065141A8011770C94554410C9CF581A6065141930434CEC94554412020FE16A60651419DEB79EBC945544154DA91F2A5065141DCA571F5C9455441B3F1A86EA406514139EE995FCA455441FAE5A5A5A30651410B799C96CA455441CA36E6B6A206514151CBF2D7CA4554414B7BC383A00651416A180F72CB45544163CDD8CF9F065141FFBE4BA3CB455441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618034 - 5292666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000170000009A9999B9A9065141AE47E1EAC5455441AE47E1CAA3065141295C8F32AF4554415C8FC2B59F0651410AD7A3A0AF455441F6285CCFA00651410AD7A380B94554411F85EBB1A10651410AD7A330BF455441F6285C7FA4065141CDCCCC9CBE455441AE47E1CAA406514133333383BF4554418FC2F508A806514133333363C9455441B81E85CB9F06514148E17AA4CB455441E17A144E9B0651411F85EB11CC455441A4703D4A970651418FC2F578CC45544185EB51389206514114AE47C1CC455441AE47E1DA8D06514152B81E15CD4554417B14AE478A06514152B81E35CD455441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000041000000FB318110A5065141A9090557C0455441A6675F3FA606514175609FF1C3455441DFCCF63FA7065141DFA711FFC6455441CDDFBF7AA70651412C7419B2C7455441A45AF208A8065141C9D32863C945544139EEDBD9A7065141A8011770C94554410C9CF581A6065141930434CEC94554412020FE16A60651419DEB79EBC945544154DA91F2A5065141DCA571F5C9455441B3F1A86EA406514139EE995FCA455441FAE5A5A5A30651410B799C96CA455441CA36E6B6A206514151CBF2D7CA4554414B7BC383A00651416A180F72CB45544163CDD8CF9F065141FFBE4BA3CB455441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618034 - 5292668
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000170000009A9999B9A9065141AE47E1EAC5455441AE47E1CAA3065141295C8F32AF4554415C8FC2B59F0651410AD7A3A0AF455441F6285CCFA00651410AD7A380B94554411F85EBB1A10651410AD7A330BF455441F6285C7FA4065141CDCCCC9CBE455441AE47E1CAA406514133333383BF4554418FC2F508A806514133333363C9455441B81E85CB9F06514148E17AA4CB455441E17A144E9B0651411F85EB11CC455441A4703D4A970651418FC2F578CC45544185EB51389206514114AE47C1CC455441AE47E1DA8D06514152B81E15CD4554417B14AE478A06514152B81E35CD455441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000041000000BBB8069A82065141A4703D5ACD455441F5C2DDBD85065141A4703D5ACD4554418BD4D25A8606514187977157CD45544194B8374A8806514146AA8546CD45544179E9E4FB8A0651412E9DD12ECD4554416FEC744B8D0651413982221ACD4554410394C5D08D065141F7327915CD4554418FCB26318E065141CD8BA60ECD455441F0EEAE0492065141887B27C5CC455441E9F14BE292065141FB14CFB7CC4554418BBEE07A94065141E0F40AA1CC45544129CD352897065141FC2BDB7ACC455441083E0DD29C0651417E08FBECCB4554417B3FB5639F065141F7355DAECB455441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618038 - 1096930
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000DE372D80080751412C9C63D199455441896D9EE602075141AB27CBBE9A45544174B5A325000751414B6AE4319B45544163847F39FD06514197849A969B4554415A6108F7F90651413340DD349C45544122EA82BAF806514183E1696E9C4554411F85EB91FE065141EC51B82EA1455441713D0A07FD06514133333303A3455441E17A14AEFD0651415C8FC275A3455441C3F5283C0D075141713D0A27AE45544185EB51C80E0751413D0AD7E3AD455441B81E850B23075141666666F6AA4554413D0AD7632207514100000050A3455441E17A14FE200751419A9999F99C455441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000BDD6BBE122075141F1ED6FFCAA455441B81E850B23075141666666F6AA4554413D0AD7632207514100000050A3455441E17A14FE200751419A9999F99C455441979CC5811F07514113DE945C96455441EC51B82E1F07514152B81EC594455441AA8B2B60190751413DADAC9895455441CF3AB82710075141A48F98E8964554415FA272EC07075141CCE7831B98455441F0E18E1605075141F76E9C89984554417554F9390007514152B1B94F99455441F9384BCAFA0651413527AD639A45544185EB5128F7065141C3F5283C9B4554411F85EB91FE065141EC51B82EA1455441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>618038 - 5292669
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000012000000DE372D80080751412C9C63D199455441896D9EE602075141AB27CBBE9A45544174B5A325000751414B6AE4319B45544163847F39FD06514197849A969B4554415A6108F7F90651413340DD349C45544122EA82BAF806514183E1696E9C4554411F85EB91FE065141EC51B82EA1455441713D0A07FD06514133333303A3455441E17A14AEFD0651415C8FC275A3455441C3F5283C0D075141713D0A27AE45544185EB51C80E0751413D0AD7E3AD455441B81E850B23075141666666F6AA4554413D0AD7632207514100000050A3455441E17A14FE200751419A9999F99C455441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000BDD6BBE122075141F1ED6FFCAA455441B81E850B23075141666666F6AA4554413D0AD7632207514100000050A3455441E17A14FE200751419A9999F99C455441979CC5811F07514113DE945C96455441EC51B82E1F07514152B81EC594455441AA8B2B60190751413DADAC9895455441CF3AB82710075141A48F98E8964554415FA272EC07075141CCE7831B98455441F0E18E1605075141F76E9C89984554417554F9390007514152B1B94F99455441F9384BCAFA0651413527AD639A45544185EB5128F7065141C3F5283C9B4554411F85EB91FE065141EC51B82EA1455441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>637880 - 56931
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000000F000000C3F5281CE0F150415C8FC295D8325541B81E858BDBF150415C8FC225D63255415C8FC245D4F1504114AE4761D1325541295C8F92C5F15041F6285CBFC632554166666626BDF1504133333373C0325541EC51B86EAFF1504148E17AD4B53255417B14AE27AAF15041295C8F12B1325541F6285CEFA8F1504148E17A44B1325541F6285CAFA6F150418FC2F518B332554152B81E35B7F15041B81E850BC23255415C8FC215CAF1504148E17AF4CF325541713D0A67D1F150418FC2F558D5325541000000D0E3F15041E17A14FEE13255417B14AE97E6F150413D0AD7A3DB325541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D00000008C552C8D8F15041B6A69F6ADA325541000000D0E3F15041E17A14FEE13255417806C2BBE4F15041B4305BE3DF325541FB952D6AE6F15041E7AFD00BDC3255412AA93D88E6F150415D63909CDB325541C3F5281CE0F150415C8FC295D8325541B81E858BDBF150415C8FC225D63255415C8FC245D4F1504114AE4761D1325541295C8F92C5F15041F6285CBFC632554166666626BDF1504133333373C03255417882A259B4F1504107AC1FA3B9325541EC51B86EAFF1504148E17AD4B53255417ACFFF27AAF150419509D912B1325541F6285CEFA8F1504148E17A44B1325541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>922782 - 4394472
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000030000001D000000B81E850BD0E45041A4703D9A5B7C5441C3F528CCD2E4504100000090537C54418FC2F588D1E4504166666636537C5441295C8F92CEE450418FC2F518517C54413D0AD753CCE45041B81E85FB4E7C5441D7A3708DC9E45041A4703D5A4F7C5441A4703DBAC6E45041333333F34E7C54410AD7A330C1E45041A4703DAA4D7C544114AE47B1B3E4504166666666497C544114AE47B1B3E45041B81E852B477C5441B81E85FBC0E45041CDCCCCFC457C54413D0AD773C4E45041D7A3704D447C544148E17A84C8E450411F85EBD1447C544133333373CBE450419A9999B9467C5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001700000024A7E0C5BEE4504150B7685C5E7C54418E0223D5C3E4504145EB8B8D5D7C5441E54415C8C3E45041D21045334E7C544114AE47B1B3E4504166666666497C544114AE47B1B3E45041B81E852B477C5441B81E85FBC0E45041CDCCCCFC457C54413D0AD773C4E45041D7A3704D447C544148E17A84C8E450411F85EBD1447C544133333373CBE450419A9999B9467C54417B14AE37CBE4504133333393427C544133333313CAE4504148E17A04417C54410AD7A320C2E4504100000030407C5441F6285CBFB6E450419A999909407C5441C3F5280CA8E45041AE47E1BA407C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>922965 - 234673
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001B000000713D0A77D5A95041B81E850B7B395441E17A14DED4A9504185EB51787139544114AE47D1D4A950415C8FC2156E3954410AD7A3C0D4A95041F6285C9F69395441B81E857BD4A950413333336362395441A4703DDAD0A95041AE47E15A5E3954415C8FC2D5CBA95041AE47E17A58395441D7A3705DC8A9504114AE47B153395441A4703DCAC5A950418FC2F5484F3954418FC2F548C4A95041CDCCCC1C4639544152B81E15BFA9504152B81EF546395441333333D3C1A950410000008057395441F6285C9FBAA95041EC51B87E533954410AD7A3F0B9A95041713D0A7755395441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000018000000E019A323CEA950418975912D5B395441DB8EC2D5CBA950418347E17A5839544153A0A21ACBA950418209B578573954414BD99632CAA95041CEA78E3856395441C16D8EE0C9A9504158171C1956395441DD962BF8C8A9504136DBE69D56395441AFF4D090C8A95041CB08B5275739544182527629C8A95041613683B15739544183EE5EB4C7A95041B361C91059395441201D2643D1A95041893693AB643954414471C142D2A950413FF25C897A395441C2476D77D5A95041B5FAAC197B395441713D0A77D5A95041B81E850B7B395441E17A14DED4A9504185EB517871395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>440347 - 2316125
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000020000000295C8FD265F5504148E17A94F92955411F85EBF164F55041A4703D6AFC2955410AD7A3C064F55041C3F5283CFF295541333333B364F5504148E17AA4012A5541F6285C2F6BF55041CDCCCCDC032A5541000000E070F550418FC2F5F8052A5541AE47E17A73F55041AE47E1DA062A554148E17AF479F55041D7A3707D0A2A5541830A559F7CF55041F5CE2581062A55414D2CCE637DF55041FF66E382052A55414B09FCAB7FF55041E9DBDA8D002A5541EB4635A781F55041A688A373FC29554189FD212B83F55041CB13590BFA29554171E9FD8886F5504114BA6B77F7295541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000000AD7A3B051F55041000000A0D429554148E17AC452F55041B81E854BD7295541D7A3708D55F5504185EB5188DA295541000000F05CF550415C8FC285DC2955417B14AE3763F55041EC51B84EE62955418FC2F5B869F55041EC51B8FEEA29554152B81EC567F55041E17A148EEC295541D7A370AD64F550410AD7A3B0EF29554114AE47F162F55041C3F5286CF2295541B81E858B61F5504100000020F5295541D7A370DD5FF5504133333323F9295541000000505FF5504152B81E65FE2955419B79DAE864F550415468D833FF29554122D046F064F550412B865082FC295541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>440347 - 3301198
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000020000000295C8FD265F5504148E17A94F92955411F85EBF164F55041A4703D6AFC2955410AD7A3C064F55041C3F5283CFF295541333333B364F5504148E17AA4012A5541F6285C2F6BF55041CDCCCCDC032A5541000000E070F550418FC2F5F8052A5541AE47E17A73F55041AE47E1DA062A554148E17AF479F55041D7A3707D0A2A5541830A559F7CF55041F5CE2581062A55414D2CCE637DF55041FF66E382052A55414B09FCAB7FF55041E9DBDA8D002A5541EB4635A781F55041A688A373FC29554189FD212B83F55041CB13590BFA29554171E9FD8886F5504114BA6B77F7295541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000000AD7A3B051F55041000000A0D429554148E17AC452F55041B81E854BD7295541D7A3708D55F5504185EB5188DA295541000000F05CF550415C8FC285DC2955417B14AE3763F55041EC51B84EE62955418FC2F5B869F55041EC51B8FEEA29554152B81EC567F55041E17A148EEC295541D7A370AD64F550410AD7A3B0EF29554114AE47F162F55041C3F5286CF2295541B81E858B61F5504100000020F5295541D7A370DD5FF5504133333323F9295541000000505FF5504152B81E65FE2955419B79DAE864F550415468D833FF29554122D046F064F550412B865082FC295541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>32946 - 29236
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000030000000000000509DF05041295C8F3246895441CDCCCCCCA3F0504114AE4781428954415C8FC2F5A8F0504114AE471141895441C3F5287CB5F05041A4703D5A3E89544148E17A54C1F0504152B81EB53C89544152B81ED5C5F05041EC51B85E3C895441B81E85DBC8F0504148E17A243C895441295C8FD2D2F05041F6285C1F3C8954417B14AE07E0F05041EC51B8EE3C89544133333353E6F050419A99992940895441AE47E19AE6F0504114AE476141895441D7A370BDE7F050416666663646895441EC51B8AEECF050411F85EB714E89544152B81EE506F1504114AE47314E895441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000028A27CF398F050414979D8941C895441A080302A98F05041700455AF1C895441E584F64497F050416C0904E41C8954419A9B65DF99F0504111CE28F41C8954418687D379A2F05041DA31029E1B895441AB1BE4EFADF05041E98021AA19895441049C75EFBFF05041AE5F978F188954413EC65011BEF05041A73C300D18895441F5173F9BBDF05041CC6833D617895441DAD6560FBCF05041F21C789F17895441526FDB53B9F05041D1E4D97B17895441093B5020B9F05041850E198217895441BA3332B8B8F0504134BF79A91789544183EE9D6EB7F0504141A3A8B617895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>32946 - 70799
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000030000000000000509DF05041295C8F3246895441CDCCCCCCA3F0504114AE4781428954415C8FC2F5A8F0504114AE471141895441C3F5287CB5F05041A4703D5A3E89544148E17A54C1F0504152B81EB53C89544152B81ED5C5F05041EC51B85E3C895441B81E85DBC8F0504148E17A243C895441295C8FD2D2F05041F6285C1F3C8954417B14AE07E0F05041EC51B8EE3C89544133333353E6F050419A99992940895441AE47E19AE6F0504114AE476141895441D7A370BDE7F050416666663646895441EC51B8AEECF050411F85EB714E89544152B81EE506F1504114AE47314E895441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000028A27CF398F050414979D8941C895441A080302A98F05041700455AF1C895441E584F64497F050416C0904E41C8954419A9B65DF99F0504111CE28F41C8954418687D379A2F05041DA31029E1B895441AB1BE4EFADF05041E98021AA19895441049C75EFBFF05041AE5F978F188954413EC65011BEF05041A73C300D18895441F5173F9BBDF05041CC6833D617895441DAD6560FBCF05041F21C789F17895441526FDB53B9F05041D1E4D97B17895441093B5020B9F05041850E198217895441BA3332B8B8F0504134BF79A91789544183EE9D6EB7F0504141A3A8B617895441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>619557 - 44706
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000AE47E18A91C95041333333835AF454417B14AE779BC950418FC2F59867F454410AD7A370A9C9504152B81E0579F45441666666D6A9C950415C8FC2A578F45441B81E859BACC95041000000B075F45441CDCCCCCCB1C9504114AE47A170F45441B81E85CBACC9504148E17A346AF4544114AE47E1A8C95041CDCCCCEC65F45441CDCCCC2CA4C95041A4703DAA5FF45441EC51B8AE9DC950411F85EBF158F45441000000809EC95041EC51B82E58F4544166666606A5C95041333333F35EF4544148E17AB4A9C950410AD7A33065F45441D7A370ADADC9504185EB517869F45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003500000064F20E9F7CC95041D690BC8B39F4544160D57CB87EC9504193AC55EA3CF454410F8530FA7FC95041FAB0BAE43EF4544182A6CE3280C95041D8A1D13D3FF45441C790C6C780C95041C59D392840F4544169B0BAE481C950415EA29BE841F454418BA213E881C95041A2058CEE41F45441B575292582C95041CC8CEC5A42F454413E3B715A82C95041122574B942F454410AD722F182C95041004AD0C443F45441F4006E8F84C950419C0AB27746F45441E1A8704385C9504138AC9A9B47F45441E383A1BB85C95041D89F657A48F45441B0781F7A87C95041CA57FDAC4BF45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>619557 - 59667
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000021000000AE47E18A91C95041333333835AF454417B14AE779BC950418FC2F59867F454410AD7A370A9C9504152B81E0579F45441666666D6A9C950415C8FC2A578F45441B81E859BACC95041000000B075F45441CDCCCCCCB1C9504114AE47A170F45441B81E85CBACC9504148E17A346AF4544114AE47E1A8C95041CDCCCCEC65F45441CDCCCC2CA4C95041A4703DAA5FF45441EC51B8AE9DC950411F85EBF158F45441000000809EC95041EC51B82E58F4544166666606A5C95041333333F35EF4544148E17AB4A9C950410AD7A33065F45441D7A370ADADC9504185EB517869F45441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003500000064F20E9F7CC95041D690BC8B39F4544160D57CB87EC9504193AC55EA3CF454410F8530FA7FC95041FAB0BAE43EF4544182A6CE3280C95041D8A1D13D3FF45441C790C6C780C95041C59D392840F4544169B0BAE481C950415EA29BE841F454418BA213E881C95041A2058CEE41F45441B575292582C95041CC8CEC5A42F454413E3B715A82C95041122574B942F454410AD722F182C95041004AD0C443F45441F4006E8F84C950419C0AB27746F45441E1A8704385C9504138AC9A9B47F45441E383A1BB85C95041D89F657A48F45441B0781F7A87C95041CA57FDAC4BF45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>620986 - 180906
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000049000000F6285C7FC0D050417B14AE570FFF54417B14AEE7C0D0504148E17A140FFF54413D0AD773C1D050415C8FC2C50EFF54415C8FC215C2D050418FC2F5880EFF5441295C8FB2C2D0504148E17A840EFF54415C8FC275C1D05041333333F30CFF5441CDCCCC9CA6D05041C3F528ECEAFE5441E17A14DEA5D05041AE47E19AEBFE5441EC51B85E90D050410AD7A3C0FFFE5441333333838FD05041C3F5288C00FF5441F6285CDF8ED0504152B81E2501FF54410AD7A3208FD050419A9999D901FF54415C8FC2B58FD050411F85EB4103FF5441F6285CEF8FD05041295C8FE205FF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006A00000032DD148EBAD05041B533CEAC18FF54418FC2F588BAD050410000004018FF5441474FEC8ABAD050414133372F18FF54411E8DC195BAD05041BC838ED217FF5441208DD6B3BAD050413FF5F63817FF544152B81EE5BAD0504114AE47C116FF54413A8D1BF7BAD0504125205DA216FF54417A9FF488BBD05041EE32AEA715FF544110193DDABBD050418CFCB61E15FF54417FC45FAABCD050415C873A2B14FF54417B14AE47BDD050413333337313FF54418C8617D3BDD050419952B8AC12FF54411E126586BED0504159AB70AD11FF544125191B36BFD0504173CC94A610FF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>620986 - 382959
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000049000000F6285C7FC0D050417B14AE570FFF54417B14AEE7C0D0504148E17A140FFF54413D0AD773C1D050415C8FC2C50EFF54415C8FC215C2D050418FC2F5880EFF5441295C8FB2C2D0504148E17A840EFF54415C8FC275C1D05041333333F30CFF5441CDCCCC9CA6D05041C3F528ECEAFE5441E17A14DEA5D05041AE47E19AEBFE5441EC51B85E90D050410AD7A3C0FFFE5441333333838FD05041C3F5288C00FF5441F6285CDF8ED0504152B81E2501FF54410AD7A3208FD050419A9999D901FF54415C8FC2B58FD050411F85EB4103FF5441F6285CEF8FD05041295C8FE205FF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006A00000032DD148EBAD05041B533CEAC18FF54418FC2F588BAD050410000004018FF5441474FEC8ABAD050414133372F18FF54411E8DC195BAD05041BC838ED217FF5441208DD6B3BAD050413FF5F63817FF544152B81EE5BAD0504114AE47C116FF54413A8D1BF7BAD0504125205DA216FF54417A9FF488BBD05041EE32AEA715FF544110193DDABBD050418CFCB61E15FF54417FC45FAABCD050415C873A2B14FF54417B14AE47BDD050413333337313FF54418C8617D3BDD050419952B8AC12FF54411E126586BED0504159AB70AD11FF544125191B36BFD0504173CC94A610FF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>621085 - 87394
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001A000000E17A14AE03D65041295C8F42ECF354411F85EBA1FFD55041E17A149EE6F3544185EB5118FBD5504133333343EBF35441295C8F52F6D55041295C8F22F0F3544114AE47B1F3D550410AD7A320F2F354411F85EB21EFD5504114AE47A1F5F35441295C8F72EAD5504152B81E85F6F354410AD7A3F0E5D55041F6285C0FF8F3544133333343E6D550411F85EB81F4F35441F6285CBFE5D55041333333C3F0F3544166666656E5D55041F6285CEFEBF35441EC51B83ED4D550418FC2F5B8F8F35441C3F528DCD1D550410AD7A3C0FBF35441D7A370CDD0D550418FC2F5A8FEF35441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E0000005213D137D0D5504135680B0E01F45441B24132EDCFD550419A98CD3F02F454412D5BCAD2CFD55041116F00AC02F45441A4703D4ACFD55041B81E85DB04F4544100ACED09D0D55041D7118B0405F454414C14E754D1D55041F5C7490BFEF354417FE5B9B6DBD550415F2D3143FBF354410AD7A3F0E5D55041F6285C0FF8F354412763A336E6D550410E5F70F4F4F35441AA3A943CE6D55041557ADACAF4F35441C616213FE6D55041D9E5C2AEF4F35441C4F84016DBD5504193212085F8F354411A45204DD1D55041C318E649FDF354415213D137D0D5504135680B0E01F45441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>621180 - 21080
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000A4703D7A49D050411F85EB41A6FB54415C8FC2B53ED05041000000D092FB54419A99998925D05041713D0A37AAFB54418FC2F5880FD050415C8FC2E5C0FB5441A4703DCA1ED0504100000010CEFB544148E17A3423D05041D7A3708DD1FB5441F6285C5F28D05041713D0A17CBFB544148E17AD42AD0504166666636C8FB5441C3F528AC2ED050410AD7A3A0C3FB544114AE471133D05041B81E856BBEFB5441CDCCCC6C39D05041D7A370EDB7FB5441C3F528EC41D05041CDCCCC4CAEFB5441A4703D7A49D050411F85EB41A6FB5441
+</a>
+
+<b>
+010600000001000000010300000001000000220000000CC7570D24D050411D4A4408D2FB5441A934ADBD26D05041F1766AC0CEFB54418294B05229D05041191F729DCBFB544114742B282DD05041275ABDF8C6FB544185DD146A30D05041682FA0DCC2FB5441E49E977931D05041DA69C895C1FB5441D39F875A34D05041E1A3FF5BBEFB54418A23E4B636D05041FD758917BCFB54419D130E2839D0504176977186B9FB544118DC29143DD05041C421DF36B5FB54412A74C61140D05041E9C76BEDB1FB5441878EAC7F42D050411743EB41AFFB54416443E08D45D05041D6E54EF8ABFB54410DC3C6E347D050411B7DC775A9FB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>621180 - 67102
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000A4703D7A49D050411F85EB41A6FB54415C8FC2B53ED05041000000D092FB54419A99998925D05041713D0A37AAFB54418FC2F5880FD050415C8FC2E5C0FB5441A4703DCA1ED0504100000010CEFB544148E17A3423D05041D7A3708DD1FB5441F6285C5F28D05041713D0A17CBFB544148E17AD42AD0504166666636C8FB5441C3F528AC2ED050410AD7A3A0C3FB544114AE471133D05041B81E856BBEFB5441CDCCCC6C39D05041D7A370EDB7FB5441C3F528EC41D05041CDCCCC4CAEFB5441A4703D7A49D050411F85EB41A6FB5441
+</a>
+
+<b>
+010600000001000000010300000001000000220000000CC7570D24D050411D4A4408D2FB5441A934ADBD26D05041F1766AC0CEFB54418294B05229D05041191F729DCBFB544114742B282DD05041275ABDF8C6FB544185DD146A30D05041682FA0DCC2FB5441E49E977931D05041DA69C895C1FB5441D39F875A34D05041E1A3FF5BBEFB54418A23E4B636D05041FD758917BCFB54419D130E2839D0504176977186B9FB544118DC29143DD05041C421DF36B5FB54412A74C61140D05041E9C76BEDB1FB5441878EAC7F42D050411743EB41AFFB54416443E08D45D05041D6E54EF8ABFB54410DC3C6E347D050411B7DC775A9FB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>621353 - 180903
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000E17A140E8CD050413333330307FF54415C8FC2F58BD050417B14AE5706FF5441666666A68BD05041713D0AD704FF54416666661689D050417B14AE7705FF5441666666C684D050410AD7A34005FF54418FC2F5987FD0504185EB518804FF5441CDCCCCEC7AD050418FC2F59803FF5441333333A36FD05041C3F528BC2EFF54410000005077D05041E17A14EE2FFF5441A4703D3A84D05041333333D32FFF54419A9999C985D05041000000D02FFF5441000000C085D05041F6285C1F2FFF5441295C8FE285D0504152B81E352EFF5441D7A3706D86D050410AD7A3502CFF5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000636DB86576D0504188439AC92FFF544134081C9F77D050414ED46FED2FFF5441A4703D3A84D05041333333D32FFF54419A9999C985D05041000000D02FFF5441000000C085D05041F6285C1F2FFF5441295C8FE285D0504152B81E352EFF5441339D63F785D05041234375EC2DFF5441D7A3706D86D050410AD7A3502CFF5441D7A3702D87D05041E17A141E2AFF54415C8FC22588D05041295C8F2228FF54410AD7A34089D05041295C8F1226FF544114AE47518AD05041AE47E11A24FF5441F5AA47CA8AD05041F5C26A3223FF5441EB0A8B2C8CD05041976F20C21FFF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>641519 - 3156566
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000022000000A4703DCA3C31514152B81E655F55544152B81E153E315141E17A147E5F5554410AD7A34041315141A4703DDA5E555441CDCCCCBC4331514114AE47915C55544152B81E45453151413333332357555441B81E854B4531514152B81EC553555441A4703DFA443151410AD7A3F0525554410AD7A30043315141AE47E1BA53555441666666463F315141295C8F724C555441713D0A9741315141E17A146E4B555441CDCCCCCC403151419A9999D9495554410AD7A31040315141F6285CDF4755544152B81E553F3151410AD7A38045555441000000F03E315141713D0A8743555441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000A43CFEF9383151411604FD8D4C555441534D3B7E3A315141B19926774C5554413FD227E3383151418BEFD05E3E555441BD53CDD8373151414832403235555441F42BC17537315141CD52C5DC325554419897D6623731514122AE561132555441F05E36503731514118F4BDF3305554414926963D373151413D4C3B1430555441B341613937315141CF9E76DD2F555441A5A50E7635315141FD23B3C32F5554415A6E5B783531514105E4050E3055544108CCDE8135315141B4611CF830555441B997478F353151415DBF412A32555441B1712A963531514131BD9BF332555441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>641519 - 3556181
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000022000000A4703DCA3C31514152B81E655F55544152B81E153E315141E17A147E5F5554410AD7A34041315141A4703DDA5E555441CDCCCCBC4331514114AE47915C55544152B81E45453151413333332357555441B81E854B4531514152B81EC553555441A4703DFA443151410AD7A3F0525554410AD7A30043315141AE47E1BA53555441666666463F315141295C8F724C555441713D0A9741315141E17A146E4B555441CDCCCCCC403151419A9999D9495554410AD7A31040315141F6285CDF4755544152B81E553F3151410AD7A38045555441000000F03E315141713D0A8743555441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000A43CFEF9383151411604FD8D4C555441534D3B7E3A315141B19926774C5554413FD227E3383151418BEFD05E3E555441BD53CDD8373151414832403235555441F42BC17537315141CD52C5DC325554419897D6623731514122AE561132555441F05E36503731514118F4BDF3305554414926963D373151413D4C3B1430555441B341613937315141CF9E76DD2F555441A5A50E7635315141FD23B3C32F5554415A6E5B783531514105E4050E3055544108CCDE8135315141B4611CF830555441B997478F353151415DBF412A32555441B1712A963531514131BD9BF332555441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>641896 - 3104769
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000008FC2F588CD31514133333313AD5554410AD7A340CC315141295C8FE2AC55544185EB51E8C93151410AD7A380AC5554418FC2F538C7315141295C8FE2AB555441D7A370FDD3315141EC51B80EC1555441295C8FB2DC3151410AD7A3A0BC555441713D0A47D7315141EC51B8DEAB555441EC51B8CED3315141AE47E13AAC555441AE47E17AD0315141D7A370CDAC555441E17A14AECE315141C3F5280CAD5554418FC2F588CD31514133333313AD555441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000567F244CDD31514154D0E4A9AB555441710ED2DADC315141682E5408AC555441F1F29413D7315141F254D0DAAB5554413EE0F300D731514191C6FDE5AB555441713D0A47D7315141EC51B8DEAB555441295C8FB2DC3151410AD7A3A0BC5554419A999929E9315141295C8F82B6555441EC51B88EE8315141F6285CFFB5555441567F244CDD31514154D0E4A9AB555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>641896 - 3412079
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000B0000008FC2F588CD31514133333313AD5554410AD7A340CC315141295C8FE2AC55544185EB51E8C93151410AD7A380AC5554418FC2F538C7315141295C8FE2AB555441D7A370FDD3315141EC51B80EC1555441295C8FB2DC3151410AD7A3A0BC555441713D0A47D7315141EC51B8DEAB555441EC51B8CED3315141AE47E13AAC555441AE47E17AD0315141D7A370CDAC555441E17A14AECE315141C3F5280CAD5554418FC2F588CD31514133333313AD555441
+</a>
+
+<b>
+01060000000100000001030000000100000009000000567F244CDD31514154D0E4A9AB555441710ED2DADC315141682E5408AC555441F1F29413D7315141F254D0DAAB5554413EE0F300D731514191C6FDE5AB555441713D0A47D7315141EC51B8DEAB555441295C8FB2DC3151410AD7A3A0BC5554419A999929E9315141295C8F82B6555441EC51B88EE8315141F6285CFFB5555441567F244CDD31514154D0E4A9AB555441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>968289 - 101115
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000F00000041007F245F68514189E799E341D85441430BC38B98685141559D7BE845D854410F6651A498685141368A87C145D8544127915A759A685141E1A26F1144D85441515087FD9B6851416EA8079B41D8544114AE47519C685141A4703D0A3FD85441772F5B0C9D6851412F0BCA913DD854411DEBA7459E68514156C3B3F53BD854414542B9BF9D6851413CB1C0FE38D854412B30C6C89A68514158133A5535D854411346968194685141FC9742ED2FD85441049C7FB87368514190D72C022ED854417FC976D66E685141D2186EC333D854419C53B3DC6768514123C790B732D85441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002C0000001735EDD3676851418206D5C632D85441AAF453DC67685141DF2565D532D854415AFA88B9656851417448C37536D8544197DE402E5F685141099D9FD241D85441BA5EA23C5F6851412FF76AE441D85441E5C042786C685141256479D242D854414744EB756F68514143D4140843D85441B17754217A68514112DA51C743D8544154A4C6B07C68514182E035F543D854414DB89DE681685141603E995244D85441DF1B20E78A685141DD9AF2F344D854410D731F8E976851412376B9D645D8544151CF6B519868514187EE65E445D854418C8DD28298685141B53204E245D85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>642970 - 1560112
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3201ABA5041A4703D6A4DFE544114AE47B11BBA50413D0AD7534DFE544185EB518852BA5041C3F528CC1BFE5441000000403CBA5041D7A3705D0CFE5441E17A14AE26BA5041CDCCCC6CFDFD544148E17A641ABA50410AD7A3800AFE5441713D0AD707BA5041F6285C3F1EFE54413D0AD7F3F4B950413333336332FE544166666616F5B950419A9999B933FE54410AD7A3201ABA5041A4703D6A4DFE5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000000884728112BA50410947F12048FE54410AD7A3201ABA5041A4703D6A4DFE544114AE47B11BBA50413D0AD7534DFE54411D263E0D25BA50418B16DFDF44FE54411A6DA77433BA5041B36C80DD37FE5441CAD9117A46BA504148D793AF26FE544185EB518852BA5041C3F528CC1BFE544106B73DAE48BA5041D9A868F914FE5441000000403CBA5041D7A3705D0CFE5441E17A14AE26BA5041CDCCCC6CFDFD544148E17A641ABA50410AD7A3800AFE5441713D0AD707BA5041F6285C3F1EFE54413D0AD7F3F4B950413333336332FE544166666616F5B950419A9999B933FE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>642970 - 3364224
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000000AD7A3201ABA5041A4703D6A4DFE544114AE47B11BBA50413D0AD7534DFE544185EB518852BA5041C3F528CC1BFE5441000000403CBA5041D7A3705D0CFE5441E17A14AE26BA5041CDCCCC6CFDFD544148E17A641ABA50410AD7A3800AFE5441713D0AD707BA5041F6285C3F1EFE54413D0AD7F3F4B950413333336332FE544166666616F5B950419A9999B933FE54410AD7A3201ABA5041A4703D6A4DFE5441
+</a>
+
+<b>
+0106000000010000000103000000010000000F0000000884728112BA50410947F12048FE54410AD7A3201ABA5041A4703D6A4DFE544114AE47B11BBA50413D0AD7534DFE54411D263E0D25BA50418B16DFDF44FE54411A6DA77433BA5041B36C80DD37FE5441CAD9117A46BA504148D793AF26FE544185EB518852BA5041C3F528CC1BFE544106B73DAE48BA5041D9A868F914FE5441000000403CBA5041D7A3705D0CFE5441E17A14AE26BA5041CDCCCC6CFDFD544148E17A641ABA50410AD7A3800AFE5441713D0AD707BA5041F6285C3F1EFE54413D0AD7F3F4B950413333336332FE544166666616F5B950419A9999B933FE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>643163 - 4228514
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000020000001A000000666666A675BB5041B81E85AB85FE5441C3F5285C71BB50417B14AE0790FE5441000000707ABB5041CDCCCC1C90FE54411F85EBB184BB5041F6285CDF8FFE54413D0AD7038BBB50410AD7A3609FFE544185EB513893BB50418FC2F508B4FE544133333333B2BB5041B81E85CBAEFE5441666666C6B2BB504152B81EE5A1FE54413D0AD7D3B2BB504114AE47B1A0FE544166666686B4BB5041F6285CCF94FE5441D7A3700DB4BB50413D0AD7138AFE5441B81E857BB3BB5041AE47E16A83FE5441CDCCCC3CB2BB5041EC51B82E7BFE5441A4703D9AB0BB5041EC51B85E70FE5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000026000000BA0D513893BB504172AAF308B4FE544133333333B2BB5041B81E85CBAEFE5441666666C6B2BB504152B81EE5A1FE54413D0AD7D3B2BB504114AE47B1A0FE544166666686B4BB5041F6285CCF94FE5441D7A3700DB4BB50413D0AD7138AFE5441B81E857BB3BB5041AE47E16A83FE5441CDCCCC3CB2BB5041EC51B82E7BFE5441A4703D9AB0BB5041EC51B85E70FE544100000060AFBB5041EC51B82E64FE5441EC51B8AEAEBB5041B81E854B5DFE5441F6285C9FADBB50419A9999695DFE54419A999989ACBB50418FC2F5C854FE54410AD7A36092BB50410000005059FE5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943121 - 137863
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000320000005C8FC235866A51415C8FC245D26B5441E5DF9F0C856A51416324F88FD26B5441F826C956806A51415EA27EE8D36B5441220BF81D7F6A51410489400BD46B54411F85EBC1796A51411F85EB61D56B54417B14AE07566A51418FC2F598D36B5441067B52D93A6A5141D72CD029D46B54417E7C3658346A514158F0A74FD56B54413E7464CA326A514178F49016D66B5441EF022060316A5141761081EED66B5441944491BB2E6A5141EEB89474DA6B5441F317F7642C6A514181293AD0F56B54414A3BCE7B566A51418482A51CF56B5441F472AAB7566A51411A4B9241FA6B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000713D0A172C6A5141A4703DEAD86B54413D0AD7132E6A51415C8FC2E5D86B544185EB51D8356A514148E17A44D46B54417B14AE07566A51418FC2F598D36B54411F85EBC1796A51411F85EB61D56B54415C8FC235866A51415C8FC245D26B5441EC51B85E866A5141666666D6D16B544114AE47C1876A5141CDCCCC0CCE6B54413D0AD7B3816A5141D7A370FDCE6B5441A4703D7A7B6A51410AD7A3C0CF6B5441AE47E1BA776A514133333353D06B5441AE47E1DA736A514148E17AB4D06B544148E17A946E6A514148E17AA4D06B544148E17AA46A6A514133333353D06B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943121 - 1250112
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000320000005C8FC235866A51415C8FC245D26B5441E5DF9F0C856A51416324F88FD26B5441F826C956806A51415EA27EE8D36B5441220BF81D7F6A51410489400BD46B54411F85EBC1796A51411F85EB61D56B54417B14AE07566A51418FC2F598D36B5441067B52D93A6A5141D72CD029D46B54417E7C3658346A514158F0A74FD56B54413E7464CA326A514178F49016D66B5441EF022060316A5141761081EED66B5441944491BB2E6A5141EEB89474DA6B5441F317F7642C6A514181293AD0F56B54414A3BCE7B566A51418482A51CF56B5441F472AAB7566A51411A4B9241FA6B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000713D0A172C6A5141A4703DEAD86B54413D0AD7132E6A51415C8FC2E5D86B544185EB51D8356A514148E17A44D46B54417B14AE07566A51418FC2F598D36B54411F85EBC1796A51411F85EB61D56B54415C8FC235866A51415C8FC245D26B5441EC51B85E866A5141666666D6D16B544114AE47C1876A5141CDCCCC0CCE6B54413D0AD7B3816A5141D7A370FDCE6B5441A4703D7A7B6A51410AD7A3C0CF6B5441AE47E1BA776A514133333353D06B5441AE47E1DA736A514148E17AB4D06B544148E17A946E6A514148E17AA4D06B544148E17AA46A6A514133333353D06B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943121 - 4007196
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000320000005C8FC235866A51415C8FC245D26B5441E5DF9F0C856A51416324F88FD26B5441F826C956806A51415EA27EE8D36B5441220BF81D7F6A51410489400BD46B54411F85EBC1796A51411F85EB61D56B54417B14AE07566A51418FC2F598D36B5441067B52D93A6A5141D72CD029D46B54417E7C3658346A514158F0A74FD56B54413E7464CA326A514178F49016D66B5441EF022060316A5141761081EED66B5441944491BB2E6A5141EEB89474DA6B5441F317F7642C6A514181293AD0F56B54414A3BCE7B566A51418482A51CF56B5441F472AAB7566A51411A4B9241FA6B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000022000000713D0A172C6A5141A4703DEAD86B54413D0AD7132E6A51415C8FC2E5D86B544185EB51D8356A514148E17A44D46B54417B14AE07566A51418FC2F598D36B54411F85EBC1796A51411F85EB61D56B54415C8FC235866A51415C8FC245D26B5441EC51B85E866A5141666666D6D16B544114AE47C1876A5141CDCCCC0CCE6B54413D0AD7B3816A5141D7A370FDCE6B5441A4703D7A7B6A51410AD7A3C0CF6B5441AE47E1BA776A514133333353D06B5441AE47E1DA736A514148E17AB4D06B544148E17A946E6A514148E17AA4D06B544148E17AA46A6A514133333353D06B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>965540 - 3100465
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000A1D90F43FA5D514178E18C9E029F544162D9D6A8FB5D5141E68B434D139F544159F9C5A1FD5D514178B0B863179F54417757128CFF5D5141EB495D221B9F544197108C37065E51413013E9C7249F54416B28EC3C0F5E5141A104EB0E319F5441EC0E6101155E51412A62453F389F54414C8554AE2D5E51413D38B546329F5441415980323F5E51414B1BA3092E9F5441E3E6D77B505E5141128470D1299F5441BC18E688515E5141573E8A220B9F5441559A6155525E514135DB89D4F39E5441A1D90F43FA5D514178E18C9E029F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000006ABE0A34525E5141CBAE6A42F49E5441EBF8D47D525E514185945FC8ED9E5441A0DF39FBF95D51419798DFEEFB9E54419A9999C9F95D5141CDCCCCDCFC9E54413D0AD7A3FB5D51417B14AE67139F5441295C8FB2FD5D514100000070179F54418FC2F538FF5D5141D7A3709D1A9F5441A4703D3A045E5141CDCCCCFC219F544185EB51780A5E51410AD7A3C02A9F54419A9999B9145E51410AD7A350389F5441B81E857B505E5141AE47E1DA299F54417B71D67F515E51419CCDED8A0A9F54416ABE0A34525E5141CBAE6A42F49E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>965540 - 3276917
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D000000A1D90F43FA5D514178E18C9E029F544162D9D6A8FB5D5141E68B434D139F544159F9C5A1FD5D514178B0B863179F54417757128CFF5D5141EB495D221B9F544197108C37065E51413013E9C7249F54416B28EC3C0F5E5141A104EB0E319F5441EC0E6101155E51412A62453F389F54414C8554AE2D5E51413D38B546329F5441415980323F5E51414B1BA3092E9F5441E3E6D77B505E5141128470D1299F5441BC18E688515E5141573E8A220B9F5441559A6155525E514135DB89D4F39E5441A1D90F43FA5D514178E18C9E029F5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000006ABE0A34525E5141CBAE6A42F49E5441EBF8D47D525E514185945FC8ED9E5441A0DF39FBF95D51419798DFEEFB9E54419A9999C9F95D5141CDCCCCDCFC9E54413D0AD7A3FB5D51417B14AE67139F5441295C8FB2FD5D514100000070179F54418FC2F538FF5D5141D7A3709D1A9F5441A4703D3A045E5141CDCCCCFC219F544185EB51780A5E51410AD7A3C02A9F54419A9999B9145E51410AD7A350389F5441B81E857B505E5141AE47E1DA299F54417B71D67F515E51419CCDED8A0A9F54416ABE0A34525E5141CBAE6A42F49E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>644529 - 236336
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000030000000103000000010000000E000000E17A14FEA43F514185EB51587A3854419A999929A33F51418FC2F5287838544133333363A03F5141AE47E1EA753854411F85EB719F3F5141A4703DFA75385441B81E85CB9E3F5141F6285CCF78385441295C8F429D3F51418FC2F5787D38544152B81EE5993F51418FC2F508873854415C8FC2A5953F51411F85EB119238544185EB5128943F5141333333C395385441AE47E1FA953F51418FC2F588963854413D0AD7E3973F514185EB51E895385441F6285C6F9C3F51413D0AD7E3903854415C8FC2259F3F5141333333938A385441E17A14FEA43F514185EB51587A385441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000713D0AD7993F5141AE47E13A7E385441A4299EC0993F51410FE275747E38544109691181993F51414747A8177F385441AE47E17A983F51418FC2F5B881385441295C8FE2963F5141D7A370BD86385441F8C98C8E933F5141A31316C78D385441A9784B7F923F514137E8610E9038544196E060E5913F5141DE1E425B913854410F679943913F5141399A23B992385441CDCCCC8C903F514148E17A44943854410AD7A340933F514114AE4761953854418F7F9990933F5141ABD02E8395385441944C02DC933F5141545E51BA943854410C21B63A943F514144E6E7BD93385441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>644529 - 289998
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000030000000103000000010000000E000000E17A14FEA43F514185EB51587A3854419A999929A33F51418FC2F5287838544133333363A03F5141AE47E1EA753854411F85EB719F3F5141A4703DFA75385441B81E85CB9E3F5141F6285CCF78385441295C8F429D3F51418FC2F5787D38544152B81EE5993F51418FC2F508873854415C8FC2A5953F51411F85EB119238544185EB5128943F5141333333C395385441AE47E1FA953F51418FC2F588963854413D0AD7E3973F514185EB51E895385441F6285C6F9C3F51413D0AD7E3903854415C8FC2259F3F5141333333938A385441E17A14FEA43F514185EB51587A385441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003B000000713D0AD7993F5141AE47E13A7E385441A4299EC0993F51410FE275747E38544109691181993F51414747A8177F385441AE47E17A983F51418FC2F5B881385441295C8FE2963F5141D7A370BD86385441F8C98C8E933F5141A31316C78D385441A9784B7F923F514137E8610E9038544196E060E5913F5141DE1E425B913854410F679943913F5141399A23B992385441CDCCCC8C903F514148E17A44943854410AD7A340933F514114AE4761953854418F7F9990933F5141ABD02E8395385441944C02DC933F5141545E51BA943854410C21B63A943F514144E6E7BD93385441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>957689 - 57144
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000003F000000F9FA9A645D2B5141D2B8C3C8DDD854418388AFAD5C2B5141612A9752DDD8544151244687572B51410D0F06EBDBD85441387211F4542B5141612A9752DDD854415D80DF194F2B5141612A9752DDD8544128CEAA864C2B5141E9AE848EDDD8544172EA46D2402B5141933C4D42DED85441D16171CC392B5141AF4528BADED854416A015FE4362B514168A03221DED854410F227485362B514105B85F06DED8544184ED9996322B514168A03221DED85441583535592A2B5141612A9752DDD85441EA39C50A212B514175E4EFCFDBD8544122E6F970172B514172AC7079DCD85441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000F103C2715C2B5141AA40350CE5D854415AA977235D2B5141E1BA3D30E0D85441D2F079245D2B51417C1F981FE0D854414EE978FD5C2B5141681096D1DFD85441D3BB967F5B2B5141809770CADFD8544126485529592B5141D0AC4EDCF0D85441645FF7CE552B5141E2AA8A4805D95441F14A0B85562B5141408BC68F10D95441F9AC16ED562B5141C45C824417D9544177D413D3562B5141D61952AF1ED9544141D46DA3522B5141D00577F023D95441148B85BE512B5141C0ECE81124D9544172059863532B5141CDB08CDF24D9544114AE4751532B5141295C8FB224D95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>645068 - 215579
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000AE47E14AA83B51413D0AD743591955411F85EB41A83B51413D0AD703561955413D0AD753A83B5141AE47E1DA541955410AD7A3A0A83B51415C8FC2E553195541C3F528ECA63B5141D7A3701D53195541B81E855B813B5141295C8FB2401955419A999959823B514152B81E85411955413D0AD773863B5141D7A370CD4419554185EB5138873B51419A9999B945195541A4703D7A873B5141A4703DDA46195541A4703D7A873B5141E17A14EE47195541A4703DEA863B514114AE475149195541AE47E14AA83B51413D0AD74359195541
+</a>
+
+<b>
+01060000000100000001030000000100000010000000A4703DEA863B514114AE4751491955414945E14AA83B51410D2CD643591955411F85EB41A83B51413D0AD70356195541F1ACFA44A83B51419C0825D15519554165F2D553A83B51412211E2DA541955416D00A3A0A83B5141DD2CC2E55319554140F7D901A83B51415F88E29C531955414A8529ECA63B514143E7711D531955419292B95B813B514107D4BAB2401955419A999959823B514152B81E85411955413D0AD773863B5141D7A370CD4419554185EB5138873B51419A9999B945195541A4703D7A873B5141A4703DDA46195541A4703D7A873B514118F918AB47195541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>645068 - 361538
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000AE47E14AA83B51413D0AD743591955411F85EB41A83B51413D0AD703561955413D0AD753A83B5141AE47E1DA541955410AD7A3A0A83B51415C8FC2E553195541C3F528ECA63B5141D7A3701D53195541B81E855B813B5141295C8FB2401955419A999959823B514152B81E85411955413D0AD773863B5141D7A370CD4419554185EB5138873B51419A9999B945195541A4703D7A873B5141A4703DDA46195541A4703D7A873B5141E17A14EE47195541A4703DEA863B514114AE475149195541AE47E14AA83B51413D0AD74359195541
+</a>
+
+<b>
+01060000000100000001030000000100000010000000A4703DEA863B514114AE4751491955414945E14AA83B51410D2CD643591955411F85EB41A83B51413D0AD70356195541F1ACFA44A83B51419C0825D15519554165F2D553A83B51412211E2DA541955416D00A3A0A83B5141DD2CC2E55319554140F7D901A83B51415F88E29C531955414A8529ECA63B514143E7711D531955419292B95B813B514107D4BAB2401955419A999959823B514152B81E85411955413D0AD773863B5141D7A370CD4419554185EB5138873B51419A9999B945195541A4703D7A873B5141A4703DDA46195541A4703D7A873B514118F918AB47195541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>652626 - 409244
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000140000009A999929E52B5141D7A3702D1530554133333313E72B5141CDCCCCFC15305541D7A3700DE92B5141A4703D6A13305541295C8F02EA2B51410AD7A320123055418FC2F568E42B51417B14AE770F3055417B14AE97E52B51418FC2F5480D30554152B81EE5D12B514114AE47A104305541AE47E11ABD2B514152B81EB5F82F55413D0AD733B92B5141AE47E1AAF52F5541295C8F92AD2B5141000000C0E82F554114AE47B1A92B5141EC51B80EE52F5541B81E857BA22B5141CDCCCC4CEC2F5541713D0A47A32B5141295C8F92ED2F5541B81E85EBAA2B5141000000D0F92F5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002A0000001F85EB21972B514152B81ED5E12F554166666666992B5141C3F528FCE42F5541D7A370CD9C2B514148E17A04EB2F5541CDCCCCDCA12B514100000090F42F55410AD7A3D0A22B5141EC51B82EF82F5541C3F5283CA92B51419A9999D90430554133333323AA2B514100000010073055415C8FC265AD2B5141295C8F720A305541E17A144EB22B51410AD7A3800D305541CDCCCC0CB72B51419A9999B90F30554133333383BB2B514114AE47211230554185EB51E8C22B514100000060183055417B14AEC7C52B514185EB515819305541295C8FC2CA2B514114AE47211A305541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>423022 - 923030
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000021000000C6D7CFF0A2105141D5F034A3EFF45441EA47479AA010514130FD3B19F1F454419A9999F99E1051417B14AE07F2F45441E17A147E96105141295C8FC2F7F4544152B81EA590105141AE47E11AF8F4544152B81E558C1051417B14AE97FCF45441D7A370ED8D10514166666616FFF45441E17A145E8F10514152B81EB501F554413D0AD7938F105141AE47E12A02F554418FC2F568971051415C8FC2E503F55441333333D39D105141CDCCCCFC04F55441B81E85BBA31051416666668605F55441A4703DBAAC105141E17A14CE05F554418FC2F5F8B01051413D0AD7D304F55441 [...]
+</a>
+
+<b>
+0106000000020000000103000000010000001A00000004613577A5105141688D1E01EEF454417C225769AD1051417560B1F2EDF45441923F6793B4105141F364930FEEF454415B07B198B9105141ED6D5749EEF45441F7643E13BC105141464F2F66EEF45441E693953EBC1051410372DD99EDF454416106191FBF10514199766C48E7F45441B94957D0C01051412A84BF30E1F454419E762BF1C1105141310D5A33DEF4544133333333C41051418FC2F5D8D7F45441593E8385C4105141F5BEAD84D3F4544171C6727AC41051416C26BA80D3F45441CAD91E3CC3105141674CFD69D3F454417D0077BFC0105141674CFD69D3F45441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>923030 - 423022
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000010000001A00000004613577A5105141688D1E01EEF454417C225769AD1051417560B1F2EDF45441923F6793B4105141F364930FEEF454415B07B198B9105141ED6D5749EEF45441F7643E13BC105141464F2F66EEF45441E693953EBC1051410372DD99EDF454416106191FBF10514199766C48E7F45441B94957D0C01051412A84BF30E1F454419E762BF1C1105141310D5A33DEF4544133333333C41051418FC2F5D8D7F45441593E8385C4105141F5BEAD84D3F4544171C6727AC41051416C26BA80D3F45441CAD91E3CC3105141674CFD69D3F454417D0077BFC0105141674CFD69D3F45441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000021000000C6D7CFF0A2105141D5F034A3EFF45441EA47479AA010514130FD3B19F1F454419A9999F99E1051417B14AE07F2F45441E17A147E96105141295C8FC2F7F4544152B81EA590105141AE47E11AF8F4544152B81E558C1051417B14AE97FCF45441D7A370ED8D10514166666616FFF45441E17A145E8F10514152B81EB501F554413D0AD7938F105141AE47E12A02F554418FC2F568971051415C8FC2E503F55441333333D39D105141CDCCCCFC04F55441B81E85BBA31051416666668605F55441A4703DBAAC105141E17A14CE05F554418FC2F5F8B01051413D0AD7D304F55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>680321 - 2947030
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D00000050FCCC997CCA50414DFC20146D8C5441E5726E54B8CA5041B38F0364588C5441225C9D99B8CA50410CFCDB40558C5441356AA167B8CA5041D46A0ACC528C5441A65E6E3DB8CA504126FCCEFC508C54413B87D466B7CA504170B3D0E34D8C54411FC31A18B7CA504192780FCA4C8C5441AE47E16AB5CA5041EC51B81E488C5441C3F528FCB3CA504114AE4721448C544114AE47E1B1CA5041EC51B81E3D8C54419A999999B1CA5041333333033B8C5441AE47E1DA70CA5041A4703D6A518C544150FCCC997CCA50414DFC20146D8C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000AE47E1BA78CA5041EC51B8EE638C5441E17A149E7CCA504152B81E156D8C54413D0AD753B8CA5041AE47E16A588C5441A4703D9AB8CA50419A999939558C54413D0AD743B8CA504148E17A14518C5441D7A3707DB7CA50417B14AE374E8C544133333323B7CA50418FC2F5E84C8C5441AE47E16AB5CA5041EC51B81E488C54413D0AD73376CA5041D7A370FD5D8C5441AE47E1BA78CA5041EC51B8EE638C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>680321 - 3204243
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000D00000050FCCC997CCA50414DFC20146D8C5441E5726E54B8CA5041B38F0364588C5441225C9D99B8CA50410CFCDB40558C5441356AA167B8CA5041D46A0ACC528C5441A65E6E3DB8CA504126FCCEFC508C54413B87D466B7CA504170B3D0E34D8C54411FC31A18B7CA504192780FCA4C8C5441AE47E16AB5CA5041EC51B81E488C5441C3F528FCB3CA504114AE4721448C544114AE47E1B1CA5041EC51B81E3D8C54419A999999B1CA5041333333033B8C5441AE47E1DA70CA5041A4703D6A518C544150FCCC997CCA50414DFC20146D8C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000AE47E1BA78CA5041EC51B8EE638C5441E17A149E7CCA504152B81E156D8C54413D0AD753B8CA5041AE47E16A588C5441A4703D9AB8CA50419A999939558C54413D0AD743B8CA504148E17A14518C5441D7A3707DB7CA50417B14AE374E8C544133333323B7CA50418FC2F5E84C8C5441AE47E16AB5CA5041EC51B81E488C54413D0AD73376CA5041D7A370FD5D8C5441AE47E1BA78CA5041EC51B8EE638C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>906430 - 31733
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000B000000CDCCCC4CD5C05041D7A370CDE50F554148E17A44DEC0504152B81EB5E50F554100000020DEC05041C3F528CCE40F554185EB51F8DCC05041F6285C1FDF0F5541AE47E19ACFC050415C8FC255E10F5541EC51B82EC9C05041295C8F92E20F5541F6285C0FC1C0504100000030E30F5541C3F528BCC0C05041A4703DDAE70F554133333383C8C05041B81E85FBE60F5541EC51B84ECEC0504152B81E55E60F5541CDCCCC4CD5C05041D7A370CDE50F5541
+</a>
+
+<b>
+010600000001000000010300000001000000080000007C480F08CCC0504156777996E60F5541EC51B84ECEC0504152B81E55E60F554118C30F7BD2C050415FFF2404E60F5541FC2096E6D4C05041002563CCE50F5541380F12CAD7C05041FE48A2B5E50F55411F75E696D6C05041E8F897A4E40F55416FAC153CCEC05041F7D89E5AE50F55417C480F08CCC0504156777996E60F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>928250 - 928272
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000002B0000001037A4941CDB5041D85AA7EC5CF2544109ED2FC41EDB5041ED42CFA557F2544158003D6021DB50418C9C035951F25441F1D345D123DB5041128311744BF254419C8676B224DB50418B2E6B5449F254419979793823DB5041A6BC4FE948F25441689FC03D20DB50419EED306A48F25441BB2C97821DDB5041DC39694A48F254419BF01B861BDB50411A86A12A48F254413599492A19DB504112B782AB47F254416247440C18DB5041C4CC0CCD46F254411C2CEDAC17DB504138965E0E46F25441DEDFB4CC17DB504155A61BF243F25441A8629B6B18DB504190C695B93FF25441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000210000009FC8237E19DB5041FBA8F9615CF25441410BC90F16DB5041DA77E2C75BF254412B7D697B14DB5041B94F86805BF254412728248810DB5041A832C3DD5AF2544128E7214710DB504161DE55D55AF2544186DE8CFC0CDB5041A09F1C685AF254418C4023230BDB5041FE56BE2A5AF2544128F255370ADB504182B90E095AF254414275E09F07DB5041621547AA59F254413C495DD004DB5041D07C7D4359F25441B7E1BD7A04DB5041E124423759F2544199CE4DF400DB5041FCC60BC658F2544142695DE6F0DA504131D1ABE556F2544185457763E8DA50414CABFFE655F25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>345360 - 1233869
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000260000007B14AE978F7F51419A9999F9B5B55441CDCCCC5C8B7F5141CDCCCC7CB8B554419A999949887F514100000050BAB554415C8FC285847F51415C8FC2D5BCB55441EC51B88E7B7F5141333333D3C2B554413D0AD7F3787F5141295C8FC2C4B55441A4703D9A777F5141333333C3C5B5544100000050777F514166666636C7B55441CDCCCCCC767F51411F85EB21C9B5544114AE4721767F514148E17A54CCB5544152B81E75757F514114AE4721CDB554418FC2F568737F514148E17AA4CDB55441713D0A77707F51411F85EB81CEB55441A4703D9A6E7F51411F85EBA1CFB55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003900000077DB030F8C7F5141BC04A954D1B5544176376E55927F51417D04C229CDB55441B502E062A27F514141687780C2B55441C1F03EFAA27F5141871B6C2CC2B55441EC51B8BE9F7F5141AE47E1BAC0B5544131C64F719D7F51416FF170F4BEB5544155E2F6109B7F5141D9BA2DD9BCB554416689A90A997F51412A2AB094BAB55441890FC75C987F5141892C6BAFB9B55441714DECE9967F5141784CF6AFB7B554418FC2F558967F514185EB51E8B6B55441D7A370ED957F5141295C8FA2B6B554413D6AC409957F5141D06E401AB6B554415FDD6532947F5141B2024D23B6B55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>345360 - 3597022
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000260000007B14AE978F7F51419A9999F9B5B55441CDCCCC5C8B7F5141CDCCCC7CB8B554419A999949887F514100000050BAB554415C8FC285847F51415C8FC2D5BCB55441EC51B88E7B7F5141333333D3C2B554413D0AD7F3787F5141295C8FC2C4B55441A4703D9A777F5141333333C3C5B5544100000050777F514166666636C7B55441CDCCCCCC767F51411F85EB21C9B5544114AE4721767F514148E17A54CCB5544152B81E75757F514114AE4721CDB554418FC2F568737F514148E17AA4CDB55441713D0A77707F51411F85EB81CEB55441A4703D9A6E7F51411F85EBA1CFB55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003700000077DB030F8C7F5141BC04A954D1B5544176376E55927F51417D04C229CDB55441B502E062A27F514141687780C2B55441C1F03EFAA27F5141871B6C2CC2B55441EC51B8BE9F7F5141AE47E1BAC0B554412CC64F719D7F514172F170F4BEB5544151E2F6109B7F5141DBBA2DD9BCB554416789A90A997F51412B2AB094BAB55441870FC75C987F5141862C6BAFB9B55441724DECE9967F51417A4CF6AFB7B554418FC2F558967F514185EB51E8B6B55441D7A370ED957F5141295C8FA2B6B554413D6AC409957F5141D06E401AB6B5544160DD6532947F5141B7024D23B6B55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>345360 - 256681
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000260000007B14AE978F7F51419A9999F9B5B55441CDCCCC5C8B7F5141CDCCCC7CB8B554419A999949887F514100000050BAB554415C8FC285847F51415C8FC2D5BCB55441EC51B88E7B7F5141333333D3C2B554413D0AD7F3787F5141295C8FC2C4B55441A4703D9A777F5141333333C3C5B5544100000050777F514166666636C7B55441CDCCCCCC767F51411F85EB21C9B5544114AE4721767F514148E17A54CCB5544152B81E75757F514114AE4721CDB554418FC2F568737F514148E17AA4CDB55441713D0A77707F51411F85EB81CEB55441A4703D9A6E7F51411F85EBA1CFB55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A00000077DB030F8C7F5141BC04A954D1B5544176376E55927F51417D04C229CDB55441B502E062A27F514141687780C2B55441C1F03EFAA27F5141871B6C2CC2B55441EC51B8BE9F7F5141AE47E1BAC0B5544131C64F719D7F51416FF170F4BEB5544155E2F6109B7F5141D9BA2DD9BCB554416689A90A997F51412A2AB094BAB55441890FC75C987F5141892C6BAFB9B55441714DECE9967F5141784CF6AFB7B554418FC2F558967F514185EB51E8B6B55441D7A370ED957F5141295C8FA2B6B554413D6AC409957F5141D06E401AB6B554415FDD6532947F5141B2024D23B6B55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>345360 - 398677
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000260000007B14AE978F7F51419A9999F9B5B55441CDCCCC5C8B7F5141CDCCCC7CB8B554419A999949887F514100000050BAB554415C8FC285847F51415C8FC2D5BCB55441EC51B88E7B7F5141333333D3C2B554413D0AD7F3787F5141295C8FC2C4B55441A4703D9A777F5141333333C3C5B5544100000050777F514166666636C7B55441CDCCCCCC767F51411F85EB21C9B5544114AE4721767F514148E17A54CCB5544152B81E75757F514114AE4721CDB554418FC2F568737F514148E17AA4CDB55441713D0A77707F51411F85EB81CEB55441A4703D9A6E7F51411F85EBA1CFB55441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003700000077DB030F8C7F5141BC04A954D1B5544176376E55927F51417D04C229CDB55441B502E062A27F514141687780C2B55441C1F03EFAA27F5141871B6C2CC2B55441EC51B8BE9F7F5141AE47E1BAC0B5544131C64F719D7F51416FF170F4BEB5544155E2F6109B7F5141D9BA2DD9BCB554416689A90A997F51412A2AB094BAB55441890FC75C987F5141892C6BAFB9B55441714DECE9967F5141784CF6AFB7B554418FC2F558967F514185EB51E8B6B55441D7A370ED957F5141295C8FA2B6B554413D6AC409957F5141D06E401AB6B554415FDD6532947F5141B2024D23B6B55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>433171 - 329130
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000F0000000AD7A3A013D850410AD7A3E0009254419A99997924D85041295C8FB200925441E17A142E33D85041295C8F62EC915441CDCCCC8C35D85041A4703D5AE79154410AD7A32038D8504152B81E35DD9154417B14AEE73BD85041C3F5289CC89154411F85EBF13CD8504166666696C2915441C3F5281C00D85041D7A3701DBC915441333333A300D85041000000D0BD915441D7A370BD0DD85041EC51B8EEE1915441000000400FD850418FC2F588E2915441000000F010D85041AE47E11AE79154410000007011D85041333333A3EA9154419A99995912D850415C8FC245F4915441 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000021000000E17A142E33D85041295C8F62EC9154414F0DE58533D850410DB717A8EB9154418CCCCC8C35D85041A4703D5AE7915441BFAB70BF37D85041CA7CB2B3DE9154410AD7A32038D8504152B81E35DD915441490C977738D85041C85F025BDB915441DB7DF56733D85041A1F01D20DB915441BAB7075031D85041971251ECDC9154418A8957892ED85041FBC1CC2EDC915441D1E84E0E2DD8504167E4A025DA91544165C67A172FD8504112F313EDD79154410AF42ADE31D8504112F313EDD79154410181D22933D85041BC6B5A09D99154415A9A21C135D85041BC6B5A09D9915441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>918056 - 3408548
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000026000000333333035C97504166666676191A54410AD7A3E0599750411F85EBF1171A5441333333D3569750411F85EBE1151A54419A9999C95597504185EB51E8141A5441A4703D1A56975041CDCCCC2C171A5441EC51B86E559750413D0AD7B3191A5441666666F6549750419A9999791B1A5441AE47E13A50975041D7A3704D1C1A5441B81E85DB4B9750410AD7A3101D1A5441AE47E10A4B97504152B81E351D1A5441AE47E12A4B975041000000901D1A5441EC51B85E4C97504148E17AF4201A54418FC2F50850975041713D0A17241A54417B14AED756975041E17A14CE271A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000006800000038754A065F9750410283D5CB2B1A54413D0AD7035E97504152B81E252B1A54413D0AD7835C9750411F85EB112A1A5441B81E85DB579750413D0AD733271A54410000000056975041F6285CFF251A5441D7A370FD549750417B14AE47251A5441B81E850B54975041CDCCCC3C241A54419A9999D95397504185EB5108231A5441B81E854B5397504133333353231A54417B14AEE752975041C3F5286C231A5441295C8F725297504133333353231A5441D7A370ED51975041713D0AE7221A5441AE47E1BA51975041B81E858B221A5441295C8FB251975041EC51B81E221A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960708 - 217524
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000200000001030000000100000084000000F9605FBBBFF55041F4879E6542BA54413FF68E8CD0F550410C9A517749BA5441DB7AE442D2F5504127A28D3444BA5441F6285C1FD7F55041EC51B8CE34BA5441E17A14BEDDF55041713D0A5727BA5441CDCCCCACECF55041CDCCCC0C02BA5441A8623A80EEF5504171738906FBB954416587DCBDEFF55041AAB4874FF6B95441ECD3595DF3F55041BC226493EDB95441434B6648F4F550413308D2FCEBB9544142E4DB4CF5F55041CA8D8CEDE9B954416F86FCBDF9F55041904FBD53E3B9544123AB9EFBFAF5504122042A29E2B95441664EA9E101F65041176ACAAFDEB95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000F9A3C778FCF55041DBA18467B7B95441AA60F545FCF5504143ED9257B2B95441EC390459FCF550412FB86E2AAFB95441C2CAB865FCF5504132868321ADB95441E36A4782FCF55041B644B6F4ABB9544115841D94FCF55041501EF3B9A9B9544180DAA45DFDF5504107C38A65A5B954413720A0B5EDF5504118D184F8AFB954419C3D52A6EFF550411BEF0543B0B95441AF1A6A55F3F55041FAC22F07B1B95441CD422AE8F5F5504186663B13B3B9544115841D94FCF5504158E0D0A6BAB954419E246187FCF55041A7BD14F7B7B95441F9A3C778FCF55041DBA18467B7B95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>960708 - 395574
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000200000001030000000100000084000000F9605FBBBFF55041F4879E6542BA54413FF68E8CD0F550410C9A517749BA5441DB7AE442D2F5504127A28D3444BA5441F6285C1FD7F55041EC51B8CE34BA5441E17A14BEDDF55041713D0A5727BA5441CDCCCCACECF55041CDCCCC0C02BA5441A8623A80EEF5504171738906FBB954416587DCBDEFF55041AAB4874FF6B95441ECD3595DF3F55041BC226493EDB95441434B6648F4F550413308D2FCEBB9544142E4DB4CF5F55041CA8D8CEDE9B954416F86FCBDF9F55041904FBD53E3B9544123AB9EFBFAF5504122042A29E2B95441664EA9E101F65041176ACAAFDEB95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000F9A3C778FCF55041DBA18467B7B95441AA60F545FCF5504143ED9257B2B95441EC390459FCF550412FB86E2AAFB95441C2CAB865FCF5504132868321ADB95441E36A4782FCF55041B644B6F4ABB9544115841D94FCF55041501EF3B9A9B9544180DAA45DFDF5504107C38A65A5B95441C34746C9EFF5504148A78F38B0B95441AB4C2754F3F55041B3FD1602B1B95441ED4FBDB0F5F55041278087C7B2B9544115841D94FCF5504158E0D0A6BAB954419E246187FCF55041A7BD14F7B7B95441F9A3C778FCF55041DBA18467B7B95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>302892 - 302806
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000300000001030000000100000011000000F4B790B560DF5041359431530836554185EB518864DF5041A4703D2A04365541B81E85BB72DF5041F6285C8FF4355541D7A370BD72DF5041295C8F12F33555415C8FC2C564DF5041E17A145EE3355541B81E857B62DF5041713D0A77E035554114AE47315FDF5041EC51B88EDD35554152B81E355BDF5041295C8FC2DA3555413D0AD7C359DF5041F6285CBFD93555413D0AD71355DF50415C8FC255D6355541EC51B8DE51DF5041F6285CAFD4355541666666264FDF50410AD7A310D8355541666666E64CDF5041713D0AF7DB355541666666A649DF504133333383E1355541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000090000006666667647DF50419A999999E5355541A4703D0A45DF5041AE47E1FAE93555415C8FC23543DF50415C8FC255ED3555410AD7A3B04FDF5041713D0AE7FE35554148E17AD45ADF5041333333D30E3655419A9999B960DF50418FC2F558083655410AD7A32055DF50415C8FC2C5F73555413D0AD7C347DF50417B14AEE7E43555416666667647DF50419A999999E5355541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>302892 - 302886
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000300000001030000000100000011000000F4B790B560DF5041359431530836554185EB518864DF5041A4703D2A04365541B81E85BB72DF5041F6285C8FF4355541D7A370BD72DF5041295C8F12F33555415C8FC2C564DF5041E17A145EE3355541B81E857B62DF5041713D0A77E035554114AE47315FDF5041EC51B88EDD35554152B81E355BDF5041295C8FC2DA3555413D0AD7C359DF5041F6285CBFD93555413D0AD71355DF50415C8FC255D6355541EC51B8DE51DF5041F6285CAFD4355541666666264FDF50410AD7A310D8355541666666E64CDF5041713D0AF7DB355541666666A649DF504133333383E1355541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000C3F528EC54DF504114AE475115365541CDCCCCDC57DF50415C8FC2151236554148E17AD45ADF5041333333D30E3655410AD7A3B04FDF5041713D0AE7FE3555415C8FC23543DF50415C8FC255ED3555417B14AEA740DF50418FC2F5E8F1355541713D0A473EDF5041AE47E12AF6355541713D0A773ADF50417B14AEA7FE3555419A9999393ADF5041F6285CAFFF3555411F85EBC14EDF50417B14AE171C365541C3F528EC54DF504114AE475115365541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>302892 - 1423621
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000300000001030000000100000011000000F4B790B560DF5041359431530836554185EB518864DF5041A4703D2A04365541B81E85BB72DF5041F6285C8FF4355541D7A370BD72DF5041295C8F12F33555415C8FC2C564DF5041E17A145EE3355541B81E857B62DF5041713D0A77E035554114AE47315FDF5041EC51B88EDD35554152B81E355BDF5041295C8FC2DA3555413D0AD7C359DF5041F6285CBFD93555413D0AD71355DF50415C8FC255D6355541EC51B8DE51DF5041F6285CAFD4355541666666264FDF50410AD7A310D8355541666666E64CDF5041713D0AF7DB355541666666A649DF504133333383E1355541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000C3F528EC54DF504114AE475115365541CDCCCCDC57DF50415C8FC2151236554148E17AD45ADF5041333333D30E3655410AD7A3B04FDF5041713D0AE7FE3555415C8FC23543DF50415C8FC255ED3555417B14AEA740DF50418FC2F5E8F1355541713D0A473EDF5041AE47E12AF6355541713D0A773ADF50417B14AEA7FE3555419A9999393ADF5041F6285CAFFF3555411F85EBC14EDF50417B14AE171C365541C3F528EC54DF504114AE475115365541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>302892 - 1423691
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000300000001030000000100000011000000F4B790B560DF5041359431530836554185EB518864DF5041A4703D2A04365541B81E85BB72DF5041F6285C8FF4355541D7A370BD72DF5041295C8F12F33555415C8FC2C564DF5041E17A145EE3355541B81E857B62DF5041713D0A77E035554114AE47315FDF5041EC51B88EDD35554152B81E355BDF5041295C8FC2DA3555413D0AD7C359DF5041F6285CBFD93555413D0AD71355DF50415C8FC255D6355541EC51B8DE51DF5041F6285CAFD4355541666666264FDF50410AD7A310D8355541666666E64CDF5041713D0AF7DB355541666666A649DF504133333383E1355541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000C0DFBBCF47DF50414B4E79F8E43555413D0AD7C347DF50417B14AEE7E43555416666667647DF50419A999999E5355541A4703D0A45DF5041AE47E1FAE93555415C8FC23543DF50415C8FC255ED3555410AD7A3B04FDF5041713D0AE7FE35554148E17AD45ADF5041333333D30E3655419A9999B960DF50418FC2F55808365541F5B790B560DF5041369431530836554185EB518864DF5041A4703D2A04365541B81E85BB72DF5041F6285C8FF4355541D7A370BD72DF5041295C8F12F33555415C8FC2C564DF5041E17A145EE3355541B81E857B62DF5041713D0A77E0355541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>957765 - 222068
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000200000028000000FCCC30BF5D6F5041446F0C3221165541C40B9E105E6F5041FA1FAA421B1655412A1C20835E6F504157927E9814165541D36C3D515F6F5041B626C441101655417E0DF3A85F6F5041FF801E150E165541BCEE295C606F5041FA18C18508165541213E91D6606F50412CD2A55C01165541D8FDD924616F50417F8BC82BFE155541A8E52681606F5041C0B916F8FD15554108AC1C82606F5041C1CAA14DFE1555416ABC74835E6F5041C1CAA1650E16554156FCB4DE596F5041C13CA09C0D16554160E5D0DA596F5041D9CEF79B0D165541133331745A6F50415DE5262607165541 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000260000003A0593925F6F50415C621FA30E165541E034EF78606F5041384DE3D6061655418FD6709C606F504188A725C304165541E72BD0B2606F5041D388197403165541213E91D6606F50412CD2A55C01165541AC59A1FD606F5041C6A80AC5FF15554148E17A24616F5041E17A142EFE155541A8E52681606F5041C0B916F8FD15554108AC1C82606F5041C1CAA14DFE1555416ABC74835E6F5041C1CAA1650E16554156FCB4DE596F5041C13CA09C0D16554160E5D0DA596F5041D9CEF79B0D165541133331745A6F50415DE526260716554129A488C15A6F50410D9832E403165541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>652745 - 4189910
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000200000001030000000100000016000000A4703D4A12AB5041333333A394E054417B14AE270EAB50413333338394E054413D0AD7530EAB504152B81EE5A5E054411F85EBC12EAB50413D0AD753A9E05441E17A14EE32AB50415C8FC285A9E054413D0AD75334AB504166666616A8E05441295C8F6237AB5041B81E85DB89E05441C3F528CC38AB5041A4703D7A78E05441333333D339AB5041666666D660E05441AE47E10A35AB5041666666D660E05441AE47E11A2CAB5041B81E857B61E05441A4703DEA24AB50417B14AE6762E0544185EB518823AB504148E17A2463E054418FC2F5C822AB50416666668664E05441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001900000084AB5C8F13AB50410715046D79E0544158655CA413AB5041DFCFC14579E05441A4703D4A12AB5041333333A394E0544192A9AF4511AB5041F282E3A494E054417CFE492711AB50417EB7ED9AA3E05441FC7D9C8B11AB5041D1B91E37A6E054411F85EBC12EAB50413D0AD753A9E05441E17A14EE32AB50415C8FC285A9E054413D0AD75334AB504166666616A8E05441295C8F6237AB5041B81E85DB89E05441C3F528CC38AB5041A4703D7A78E05441333333D339AB5041666666D660E05441AE47E10A35AB5041666666D660E05441AE47E11A2CAB5041B81E857B61E05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>652745 - 5275312
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+01060000000200000001030000000100000016000000A4703D4A12AB5041333333A394E054417B14AE270EAB50413333338394E054413D0AD7530EAB504152B81EE5A5E054411F85EBC12EAB50413D0AD753A9E05441E17A14EE32AB50415C8FC285A9E054413D0AD75334AB504166666616A8E05441295C8F6237AB5041B81E85DB89E05441C3F528CC38AB5041A4703D7A78E05441333333D339AB5041666666D660E05441AE47E10A35AB5041666666D660E05441AE47E11A2CAB5041B81E857B61E05441A4703DEA24AB50417B14AE6762E0544185EB518823AB504148E17A2463E054418FC2F5C822AB50416666668664E05441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000090000001C8ADDC113AB5041F6C8193D75E0544131D08BF811AB504141AFD8937BE0544180CF479111AB504166B370FF7DE05441CFCE032A11AB50417E6C11A594E0544192A9AF4511AB5041F282E3A494E05441A4703D4A12AB5041333333A394E054419F7B569B13AB50415058A05679E0544184AB5C8F13AB50410715046D79E054411C8ADDC113AB5041F6C8193D75E05441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>646239 - 207445
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000F0000003D0AD7D3BC6151418FC2F5B8143A5441A4703D5ACE615141F6285C8F0C3A5441EC51B87ECC61514185EB5158093A5441B81E85EBCB615141C3F5288C063A5441C3F5284CCA615141295C8F42033A5441CDCCCC8CC96151417B14AEA7003A5441AE47E1CAB8615141333333B3033A54410AD7A3E0B7615141E17A14DE033A5441B81E852BB7615141AE47E13A053A54419A9999E9B5615141AE47E17A063A5441F6285C3FB36151411F85EB31093A544152B81E35AF6151413D0AD7130D3A54411F85EB81AD615141000000400E3A54418FC2F5C8AE6151419A9999891B3A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000C8A25DE1C6615141A8DADD23013A54416510AF7AC961514131CDF8AA003A54417A40AC74C9615141D3DAD465003A54418429A2D1C8615141E3F9DBA8FE395441136F50D9C7615141E1FC8B81FB3954415888155EC7615141E89A86ACF9395441D07412B9C56151412B208C85F23954417BD4475CC561514110C96EF7F0395441474A57F5C3615141ED560671F139544116DE7ACCC0615141B813E78FF239544123841F73BF6151412DCF0DE6F23954413D0AD733BE6151411F85EB31F3395441C7AEB6B0BC61514125B5F920F239544138FFB0D7BA615141F5C96C11F4395441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>668414 - 7569
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002A00000066666636D7D150413D0AD7E3CA16554166666686E1D150418FC2F508CB165541E17A147EEED15041C3F5287CCB165541295C8F72FBD150413D0AD753CB1655413D0AD703FCD1504185EB5148CB165541D7A3706D05D25041CDCCCC8CCA16554148E17A1410D2504152B81E75CB16554148E17A0411D2504152B81EE5C01655416666666618D250411F85EBD1C016554148E17AF420D25041C3F5284CBF16554148E17A4423D250417B14AE37BD165541F6285CFF24D2504148E17A34BC165541A4703D7A27D2504185EB5158B81655419A99990928D25041CDCCCCACB5165541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000B692AAE204D2504135C9BFA399165541C277B6C5EBD1504196C2700194165541A310026BEBD1504116A8FBF593165541F433C53EF3D1504153AFB71396165541825412D0F8D150419E4F448A97165541BA399343FED150411858FCF898165541F0C6C18F04D25041E1C6A7709A1655414C179B4C08D2504126BB4E239B165541922C2EF909D250415C8253739B165541C193DAB20BD25041F7D6ED699B165541F175CC690DD250412B654B5F9B165541CBAF18EB0ED25041EAAEF5559B165541739FA17611D250417416D03E9B165541FB52A72B13D250417289E40F9B165541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>668414 - 58352
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000002A00000066666636D7D150413D0AD7E3CA16554166666686E1D150418FC2F508CB165541E17A147EEED15041C3F5287CCB165541295C8F72FBD150413D0AD753CB1655413D0AD703FCD1504185EB5148CB165541D7A3706D05D25041CDCCCC8CCA16554148E17A1410D2504152B81E75CB16554148E17A0411D2504152B81EE5C01655416666666618D250411F85EBD1C016554148E17AF420D25041C3F5284CBF16554148E17A4423D250417B14AE37BD165541F6285CFF24D2504148E17A34BC165541A4703D7A27D2504185EB5158B81655419A99990928D25041CDCCCCACB5165541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000031000000B692AAE204D2504135C9BFA399165541C277B6C5EBD1504196C2700194165541A310026BEBD1504116A8FBF593165541F433C53EF3D1504153AFB71396165541825412D0F8D150419E4F448A97165541BA399343FED150411858FCF898165541F0C6C18F04D25041E1C6A7709A1655414C179B4C08D2504126BB4E239B165541922C2EF909D250415C8253739B165541C193DAB20BD25041F7D6ED699B165541F175CC690DD250412B654B5F9B165541CBAF18EB0ED25041EAAEF5559B165541739FA17611D250417416D03E9B165541FB52A72B13D250417289E40F9B165541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>668462 - 2391
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000350000008FC2F51827D15041C3F5282C26175541D7A370AD2AD15041CDCCCCAC271755413D0AD74330D15041B81E85EB291755419A99990931D150415C8FC2C5291755410000008031D15041C3F5282C29175541CDCCCC1C33D150413D0AD7F32317554185EB51B833D15041B81E854B20175541CDCCCC3C34D150418FC2F5181F175541CDCCCC7C34D150415C8FC2851E1755413D0AD7E338D150419A99994918175541713D0AA739D15041713D0A7717175541CDCCCC4C3CD15041C3F5289C141755415C8FC2553ED15041333333A311175541D7A3701D40D150415C8FC2650F175541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D000000666666F607D150418FC2F528E8165541EDC7982E10D15041822FB32EED165541E13A4C6215D150417DCA318FF01655414FACD3831BD150419288BA98F41655415D041F8020D15041292E7F1DF8165541204B5BAB25D15041C91C0B17FC1655419C9B216027D15041D481EA66FD1655414B632A2D29D1504136A671C9FE1655419B6D559A2BD150417AB61CA7001755418309CEC42CD15041B6B1A18C011755410AD7A3F02DD150413333337302175541333333332FD15041000000B000175541EF8725582ED150416D4EEB1100175541AE0CEC4C2BD15041B6A096DFFD165541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>668462 - 57099
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000002000000350000008FC2F51827D15041C3F5282C26175541D7A370AD2AD15041CDCCCCAC271755413D0AD74330D15041B81E85EB291755419A99990931D150415C8FC2C5291755410000008031D15041C3F5282C29175541CDCCCC1C33D150413D0AD7F32317554185EB51B833D15041B81E854B20175541CDCCCC3C34D150418FC2F5181F175541CDCCCC7C34D150415C8FC2851E1755413D0AD7E338D150419A99994918175541713D0AA739D15041713D0A7717175541CDCCCC4C3CD15041C3F5289C141755415C8FC2553ED15041333333A311175541D7A3701D40D150415C8FC2650F175541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D000000666666F607D150418FC2F528E8165541EDC7982E10D15041822FB32EED165541E13A4C6215D150417DCA318FF01655414FACD3831BD150419288BA98F41655415D041F8020D15041292E7F1DF8165541204B5BAB25D15041C91C0B17FC1655419C9B216027D15041D481EA66FD1655414B632A2D29D1504136A671C9FE1655419B6D559A2BD150417AB61CA7001755418309CEC42CD15041B6B1A18C011755410AD7A3F02DD150413333337302175541333333332FD15041000000B000175541EF8725582ED150416D4EEB1100175541AE0CEC4C2BD15041B6A096DFFD165541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>652850 - 943452
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000170000005C8FC2E5C7A95041E17A141E62E254415C8FC2E5C7A95041295C8FB262E25441A4703D5AC7A95041F6285C2F69E254418FC2F51820AA5041D7A3707D53E254419A9999B91FAA5041CDCCCC6C4FE2544185EB51481FAA504114AE47C14CE254419A9999691EAA5041713D0A8747E2544185EB51681CAA5041AE47E1BA40E25441666666661AAA5041295C8FC23AE25441F6285CAF12AA50411F85EB2126E25441D7A3708D10AA50417B14AEF71FE2544185EB51B803AA504185EB519824E254418FC2F5B8F9A950413333333328E25441C3F528BCF8A95041EC51B88E28E25441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000F5DDF81AFEA95041E60C9D9E26E254419406F57710AA50413F0EDCAF1FE254416BB961D40EAA5041C42622C51AE25441C80E09C10DAA5041FAED4F2F17E25441F6285CDF06AA5041666666A619E254411F85EB3106AA504152B81EE519E25441C3F5284CFFA950411F85EB611CE25441613E4748FFA95041EF8512541CE25441E56C889AF6A95041300A4D6E1FE254416B0FC32AF7A950414B5351D020E254415317448408AA504102914E6B1AE254417674E2790AAA50411E888AEA20E25441BF680393F9A9504186ED815127E2544168DB2CA8F9A95041A3C9463928E25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>652894 - 3154715
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001B000000F6285C6F1FA85041D7A370CD54E15441C3F528CC29A850410000002069E15441E17A14EE2BA8504148E17AF46DE154417B14AEC72DA85041C3F528FC72E1544148E17A742FA85041B81E851B78E154410AD7A3E031A85041295C8F8283E15441713D0A3733A85041666666E688E15441E17A14BE34A85041333333138AE154413D0AD72337A850415C8FC2058AE15441000000B039A850410AD7A3208AE154419A9999B93EA85041C3F528BC8AE154413D0AD7C348A850417B14AE378CE154413D0AD76349A850417B14AE378CE154411F85EB3145A85041A4703D3A84E15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000000FDC5B8A50A85041A4A9CF3269E15441501E6C3944A8504149EC95DD5AE15441501E6C3944A850417F9C513A57E154411A2A239441A850413B6BB6EB53E15441AD4191493CA85041CF8224A14EE15441F0EA110733A85041629A925649E1544191835FAE34A850414720EE0348E15441A1C89C683CA850417C67B29943E15441126746E63EA850413CF689DE41E15441828E67D143A85041155F7B3F3FE15441FF3799D24CA85041385B81C93AE15441F2FA46294CA850411DE1DC7639E154415062F9814AA85041E7EC93D136E154411A6EB0DC47A85041608A5D3430E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>652894 - 3280822
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001B000000F6285C6F1FA85041D7A370CD54E15441C3F528CC29A850410000002069E15441E17A14EE2BA8504148E17AF46DE154417B14AEC72DA85041C3F528FC72E1544148E17A742FA85041B81E851B78E154410AD7A3E031A85041295C8F8283E15441713D0A3733A85041666666E688E15441E17A14BE34A85041333333138AE154413D0AD72337A850415C8FC2058AE15441000000B039A850410AD7A3208AE154419A9999B93EA85041C3F528BC8AE154413D0AD7C348A850417B14AE378CE154413D0AD76349A850417B14AE378CE154411F85EB3145A85041A4703D3A84E15441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001D0000000FDC5B8A50A85041A4A9CF3269E15441501E6C3944A8504149EC95DD5AE15441501E6C3944A850417F9C513A57E154411A2A239441A850413B6BB6EB53E15441AD4191493CA85041CF8224A14EE15441F0EA110733A85041629A925649E1544191835FAE34A850414720EE0348E15441A1C89C683CA850417C67B29943E15441126746E63EA850413CF689DE41E15441828E67D143A85041155F7B3F3FE15441FF3799D24CA85041385B81C93AE15441F2FA46294CA850411DE1DC7639E154415062F9814AA85041E7EC93D136E154411A6EB0DC47A85041608A5D3430E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>647490 - 2986535
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001000000048E17AE44E3051413D0AD7830B355441295C8FA24230514185EB51180E3554410AD7A34041305141CDCCCCCC0E355441666666F63F30514152B81E750F355441713D0AD73C305141713D0A0713355441A4703D1A40305141F6285CAF1F35544152B81ED541305141C3F5288C2735544148E17A8441305141A4703DDA29355441D7A370AD4030514152B81E952B3554411F85EB713F3051413D0AD7632C355441F6285C7F453051410AD7A3F03A355441CDCCCC6C4B30514114AE47314935544152B81EB55A3051415C8FC20543355441E17A144E60305141EC51B8DE40355441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000CDCCCC6C4B30514114AE47314935544152B81EB55A3051415C8FC20543355441E17A144E60305141EC51B8DE40355441F6285C2F64305141295C8FB23E35544148E17AE44E3051413D0AD7830B355441295C8FA24230514185EB51180E35544140A0BBA045305141E839AE6F15355441CB7AFBE146305141F9F9AD8318355441F44FCE62493051417B7B91A71E355441699570014A305141A436AF2C20355441897B64674C3051412383D3ED273554411F85EB713F3051413D0AD7632C3554417AE2E33E4430514171D632F137355441E1F68C304630514141D486823C355441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>647490 - 3816247
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001000000048E17AE44E3051413D0AD7830B355441295C8FA24230514185EB51180E3554410AD7A34041305141CDCCCCCC0E355441666666F63F30514152B81E750F355441713D0AD73C305141713D0A0713355441A4703D1A40305141F6285CAF1F35544152B81ED541305141C3F5288C2735544148E17A8441305141A4703DDA29355441D7A370AD4030514152B81E952B3554411F85EB713F3051413D0AD7632C355441F6285C7F453051410AD7A3F03A355441CDCCCC6C4B30514114AE47314935544152B81EB55A3051415C8FC20543355441E17A144E60305141EC51B8DE40355441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000014000000CDCCCC6C4B30514114AE47314935544152B81EB55A3051415C8FC20543355441E17A144E60305141EC51B8DE40355441F6285C2F64305141295C8FB23E35544148E17AE44E3051413D0AD7830B355441295C8FA24230514185EB51180E35544140A0BBA045305141E839AE6F15355441CB7AFBE146305141F9F9AD8318355441F44FCE62493051417B7B91A71E355441699570014A305141A436AF2C20355441897B64674C3051412383D3ED273554411F85EB713F3051413D0AD7632C3554417AE2E33E4430514171D632F137355441E1F68C304630514141D486823C355441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>963580 - 889841
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A0000000B8B1377226A51416D22DE1F31365441CCCA5395236A5141998099531C365441615EA4D7246A51418D85C90AEE35544197404745216A514137F7BB47EE35544123ED7CF9206A51415FAC3A95F535544116D5A448206A5141D6877B4904365441559F53CA1F6A51414266647A1B36544143B660341F6A51418790D44A2C36544114AE47F11E6A5141C3F528EC2B3654410B8B1377226A51416D22DE1F31365441
+</a>
+
+<b>
+010600000001000000010300000001000000450000007735AD63206A5141CA5F120A023654415AED14BA206A5141AE5EE0DAFA35544197404745216A514137F7BB47EE355441615EA4D7246A51418D85C90AEE355441D155DE92246A5141DDBE4D3EF835544170869581246A514198D1B6E5FA35544161956749246A514180985E1C04365441CCCA5395236A5141998099531C3654410B8B1377226A51416D22DE1F31365441CDCCCC7C226A514185EB512831365441F3DE50C4246A514182ECBE8634365441290C4931276A5141BA2C397C2B365441A89C5A2A296A5141E394C09D18365441507940402A6A5141BB57CBE702365441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>647719 - 990843
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000006000000AE47E1FAC13351413D0AD7732A37544133333343C03351413D0AD77330375441295C8F92F33351418FC2F52830375441F6285CFFF333514114AE47612A3754411F85EB01F4335141AE47E12A2A375441AE47E1FAC13351413D0AD7732A375441
+</a>
+
+<b>
+01060000000100000001030000000100000008000000DC2894EBF3335141D7154E6E2B375441F47D9AAAC1335141932F488C2B3754410F3E1643C0335141BDF33B743037544196E29220C5335141E695BD6C303754415BEEFF5BC8335141C1110668303754414638A647CC335141F0604D6230375441D137D892F333514102E4162530375441DC2894EBF3335141D7154E6E2B375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>647719 - 3275851
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000006000000AE47E1FAC13351413D0AD7732A37544133333343C03351413D0AD77330375441295C8F92F33351418FC2F52830375441F6285CFFF333514114AE47612A3754411F85EB01F4335141AE47E12A2A375441AE47E1FAC13351413D0AD7732A375441
+</a>
+
+<b>
+01060000000100000001030000000100000008000000DC2894EBF3335141D7154E6E2B375441F47D9AAAC1335141932F488C2B3754410F3E1643C0335141BDF33B743037544196E29220C5335141E695BD6C303754415BEEFF5BC8335141C1110668303754414638A647CC335141F0604D6230375441D137D892F333514102E4162530375441DC2894EBF3335141D7154E6E2B375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>647913 - 20608
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000005000000E17A145E782D5141295C8F92F93654411F85EB318D2D514114AE47F1F9365441CDCCCCDC8F2D5141A4703D5ABD3654415C8FC2157A2D514148E17A64C0365441E17A145E782D5141295C8F92F9365441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000446C822E782D5141B0A097E9F9365441F233C3097A2D5141A27F45EAF93654414445856B7B2D5141AEEBC6EAF936544113D3C7ED892D514177C715F0F93654415986EB318D2D51413B9247F1F93654417A16213D8D2D51419AE1ABF2F83654411B59B1C68C2D5141727C4091F9365441B8124FEA8B2D5141263F8D9DF936544122C5D1328B2D51414896FFB1F93654415D46321D8A2D5141F71449B5F936544177339F40862D51412D52D4C7F936544156D18EFA7B2D51413CBBFBA2F9365441C443EEF7772D51414E678AACF9365441F4BA7E2B722D51419D0DB74EF9365441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>647913 - 61238
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000005000000E17A145E782D5141295C8F92F93654411F85EB318D2D514114AE47F1F9365441CDCCCCDC8F2D5141A4703D5ABD3654415C8FC2157A2D514148E17A64C0365441E17A145E782D5141295C8F92F9365441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000446C822E782D5141B0A097E9F9365441F233C3097A2D5141A27F45EAF93654414445856B7B2D5141AEEBC6EAF936544113D3C7ED892D514177C715F0F93654415986EB318D2D51413B9247F1F93654417A16213D8D2D51419AE1ABF2F83654411B59B1C68C2D5141727C4091F9365441B8124FEA8B2D5141263F8D9DF936544122C5D1328B2D51414896FFB1F93654415D46321D8A2D5141F71449B5F936544177339F40862D51412D52D4C7F936544156D18EFA7B2D51413CBBFBA2F9365441C443EEF7772D51414E678AACF9365441F4BA7E2B722D51419D0DB74EF9365441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>648599 - 960012
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000CA000000EC51B88E8FA950419A9999C9653354410AD7A38094A9504148E17A846A335441B81E85AB97A95041EC51B84E6E335441E17A141E98A950417B14AE076F335441E17A145E98A95041D7A3703D703354417B14AE7798A950419A9999C971335441713D0AE798A950415C8FC20573335441295C8F829CA950411F85EB81793354413D0AD753A0A9504185EB51F87C335441D7A3709DA3A95041C3F5287C7F335441713D0AB7A6A95041D7A370DD82335441B81E852BA8A95041B81E856B82335441713D0A17AAA95041333333738133544148E17A34AAA950410AD7A3407F335441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000036000000C5538E516DA95041F4480A8D7F3354417013A6366EA95041B1307B1C8033544145A8953183A950412A0611BD893354411154488999A950413E3310608933544187BDC8B799A9504117D9111A8A3354417646567783A9504103AC12778A335441F42F95517FA9504102D30234893354415ECE90CA80A950411A21352F8A335441F2EA394983A95041C770BABF8B335441C2EE02F485A9504138B5EB6B8D3354410AD7A3708BA95041CDCCCCDC90335441C3F528EC90A95041AE47E18A9333544104DC96BE98A950412A2134C090335441C244C6A098A9504153161ABC8D335441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13730 - 1415581
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000007700000015028677C80B51413639160276165541E184652CBF0B51410E551CFA6F165541C9508721BF0B5141C0C50EF36F16554112560A37B90B5141B339341C6C165541ABBCA5E7B80B51416786E6436C16554112AEBAB4C00B51417ABF1D9F71165541AE0A8F8EC80B5141711CF5F376165541CAA3428EC80B51412335E102771655415E8F139AC80B5141A825FE0A77165541B50A8F8EC80B514119A87C4D7816554116860A83C80B51416805D733791655418057DD0FC80B51411EAD79D27A16554139E77F08C20B5141099E4046881655419AC86D07BE0B51415FA32EBE8F165541 [...]
+</a>
+
+<b>
+010600000001000000010300000002000000700000007AF9804AD80B5141DC13411DB51655418FC2F5B8D90B51413D0AD783B5165541C3F5285CDC0B51413D0AD773B51655417B14AE97E20B5141B81E853BB416554152B81EB5E40B5141D7A3702DB3165541CDCCCC9CE80B5141AE47E10AAF1655417B14AE57EC0B514100000080AA165541295C8F92F90B5141E17A141E98165541713D0A27FB0B5141295C8F52951655418FC2F538FE0B5141C3F528BC8D1655415184F760FE0B51418F089F3E8D165541D9239614F70B5141050ED13C8B16554135961115EF0B514141CDDAA188165541C4B4901BEF0B51411161B00288165541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13730 - 1415616
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000007700000015028677C80B51413639160276165541E184652CBF0B51410E551CFA6F165541C9508721BF0B5141C0C50EF36F16554112560A37B90B5141B339341C6C165541ABBCA5E7B80B51416786E6436C16554112AEBAB4C00B51417ABF1D9F71165541AE0A8F8EC80B5141711CF5F376165541CAA3428EC80B51412335E102771655415E8F139AC80B5141A825FE0A77165541B50A8F8EC80B514119A87C4D7816554116860A83C80B51416805D733791655418057DD0FC80B51411EAD79D27A16554139E77F08C20B5141099E4046881655419AC86D07BE0B51415FA32EBE8F165541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000210000009CFB6B57D30B5141B6E3FA8C6316554133DFE403D60B5141ACEE26695F16554150BC920ED90B51419E173AEE58165541AC05518BD60B5141B6CA61DF571655415C9714DDCE0B51413DC75110561655415AA6B606C80B514128F8FF3653165541A145DB59C50B5141B8E7799451165541C3F5283CC50B5141000000E051165541295C8FA2C40B51417B14AE6753165541AE47E11AC20B51410000003058165541F6285C9FBF0B51410AD7A3B05C1655419A999939BC0B5141CDCCCC3C62165541F6285C5FB70B5141E17A141E6B165541713D0AE7B00B514114AE479174165541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13730 - 3616437
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000007700000015028677C80B51413639160276165541E184652CBF0B51410E551CFA6F165541C9508721BF0B5141C0C50EF36F16554112560A37B90B5141B339341C6C165541ABBCA5E7B80B51416786E6436C16554112AEBAB4C00B51417ABF1D9F71165541AE0A8F8EC80B5141711CF5F376165541CAA3428EC80B51412335E102771655415E8F139AC80B5141A825FE0A77165541B50A8F8EC80B514119A87C4D7816554116860A83C80B51416805D733791655418057DD0FC80B51411EAD79D27A16554139E77F08C20B5141099E4046881655419AC86D07BE0B51415FA32EBE8F165541 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000006A00000040207CB6F30B51416340869678165541F62D0CAEF30B51419AADC47F781655419E7BF2B5F00B5141C39C01D77616554149D4702BEC0B5141450643F5731655411CC34E7EE60B514191EF54116F16554133333333DF0B5141B81E85EB691655417061BAF5DD0B51413C99E8246A16554112AC0196DD0B5141E526AC396B165541BF9572B6DC0B51411100B9B56C165541B99045B3DC0B51416E963FC36E165541F9D520A2DD0B5141B3380CBE6F1655416A03E673DF0B5141497E8829701655412096D1BAE00B5141E15329FD7016554174CD28E3DC0B5141BCA7994475165541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>13730 - 4107428
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000007700000015028677C80B51413639160276165541E184652CBF0B51410E551CFA6F165541C9508721BF0B5141C0C50EF36F16554112560A37B90B5141B339341C6C165541ABBCA5E7B80B51416786E6436C16554112AEBAB4C00B51417ABF1D9F71165541AE0A8F8EC80B5141711CF5F376165541CAA3428EC80B51412335E102771655415E8F139AC80B5141A825FE0A77165541B50A8F8EC80B514119A87C4D7816554116860A83C80B51416805D733791655418057DD0FC80B51411EAD79D27A16554139E77F08C20B5141099E4046881655419AC86D07BE0B51415FA32EBE8F165541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000230000009CFB6B57D30B5141B6E3FA8C631655415B6C855BD50B514187C1DB6D6016554133DFE403D60B5141ACEE26695F16554150BC920ED90B51419E173AEE58165541AC05518BD60B5141B6CA61DF571655415C9714DDCE0B51413DC75110561655415AA6B606C80B514128F8FF3653165541A145DB59C50B5141B8E7799451165541C3F5283CC50B5141000000E051165541295C8FA2C40B51417B14AE6753165541AE47E11AC20B51410000003058165541F6285C9FBF0B51410AD7A3B05C1655419A999939BC0B5141CDCCCC3C62165541F6285C5FB70B5141E17A141E6B165541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>649156 - 359193
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000295C8FA29B28514185EB51A8153654415C8FC2459C285141C3F5287C17365441D7A3708D9D285141333333F31836544148E17A749F28514114AE47F119365441A4703D9AA62851419A9999391D365441AE47E11AA8285141295C8F121736544148E17A14AA285141D7A370FD0E365441F6285C1FB0285141EC51B85E0F3654413D0AD723B7285141F6285CCF0F365441B81E857BB62851415C8FC285083654417B14AEA7AB285141EC51B85E083654415C8FC2E59B285141C3F528CC08365441AE47E1EA9B2851419A9999B90936544152B81EB59B2851411F85EBB10E365441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000D66C88D6AC2851416398D7290F36544122925D1FB0285141E00EB75E0F3654410EFBD623B7285141AF805BCF0F365441BABDD023B72851416E5816CF0F36544118498B23B7285141268614CC0F36544185E3837BB6285141EC8AC28508365441288981E5B2285141A689D478083654411D3589C6AF2851418EBE936D08365441274BADA7AB28514194E8B85E0836544143B3C2E59B285141830F29CC08365441A172E1EA9B28514166E699B9093654417E0820B59B285141397BEBB10E3654417B08F6789B285141529114BE133654417A7A8FA29B2851416E4252A815365441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>633576 - 1581683
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000C3F5284C58E35041A4703DFA00C754416666663657E35041713D0A9701C75441A4703D7A55E35041CDCCCCAC02C75441B81E856B52E350410000002004C7544152B81E054EE35041D7A3706D05C75441F6285C3F49E35041C3F528FC05C75441AE47E10A41E3504185EB51F805C75441D7A370DD3FE350417B14AEF705C75441666666C63FE3504185EB51680BC75441EC51B8DE43E350415C8FC2A50BC754413D0AD7134AE35041E17A14AE0CC754415C8FC2A54FE350415C8FC2650DC75441C3F5285C49E35041EC51B86E0EC75441C3F5281C44E3504148E17AF40DC75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C3F5284C58E35041A4703DFA00C754416666663657E35041713D0A9701C75441A4703D7A55E35041CDCCCCAC02C75441B81E856B52E350410000002004C7544152B81E054EE35041D7A3706D05C75441F6285C3F49E35041C3F528FC05C75441AE47E10A41E3504185EB51F805C75441D7A370DD3FE350417B14AEF705C75441666666C63FE3504185EB51680BC75441EC51B8DE43E350415C8FC2A50BC754413D0AD7134AE35041E17A14AE0CC754415C8FC2A54FE350415C8FC2650DC75441C3F5285C49E35041EC51B86E0EC75441C3F5281C44E3504148E17AF40DC75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>633576 - 4247338
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000C3F5284C58E35041A4703DFA00C754416666663657E35041713D0A9701C75441A4703D7A55E35041CDCCCCAC02C75441B81E856B52E350410000002004C7544152B81E054EE35041D7A3706D05C75441F6285C3F49E35041C3F528FC05C75441AE47E10A41E3504185EB51F805C75441D7A370DD3FE350417B14AEF705C75441666666C63FE3504185EB51680BC75441EC51B8DE43E350415C8FC2A50BC754413D0AD7134AE35041E17A14AE0CC754415C8FC2A54FE350415C8FC2650DC75441C3F5285C49E35041EC51B86E0EC75441C3F5281C44E3504148E17AF40DC75441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000C3F5284C58E35041A4703DFA00C754416666663657E35041713D0A9701C75441A4703D7A55E35041CDCCCCAC02C75441B81E856B52E350410000002004C7544152B81E054EE35041D7A3706D05C75441F6285C3F49E35041C3F528FC05C75441AE47E10A41E3504185EB51F805C75441D7A370DD3FE350417B14AEF705C75441666666C63FE3504185EB51680BC75441EC51B8DE43E350415C8FC2A50BC754413D0AD7134AE35041E17A14AE0CC754415C8FC2A54FE350415C8FC2650DC75441C3F5285C49E35041EC51B86E0EC75441C3F5281C44E3504148E17AF40DC75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>654639 - 171689
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000010000000EC51B80EC7DA50419A99992936345541B81E85EBC5DA50411F85EB1137345541333333A3C2DA5041AE47E12A393455419A999939BFDA50419A9999593B3455410AD7A330B8DA5041295C8F623E345541EC51B8BEADDA5041D7A3707D413455418FC2F568AFDA50418FC2F5784634554133333373B6DA5041666666865B3455418FC2F5A8C3DA5041C3F5280C58345541CDCCCC5CCADA504185EB511856345541713D0A97CCDA5041CDCCCCCC543455419A999909CFDA504148E17A24523455417B14AEE7D2DA5041AE47E1EA4D34554100000020D9DA5041A4703DBA46345541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000130000003A627860D7DA5041D6B58FBF483455419D9FFF1FD9DA50414F183DBA46345541D7A3702DCBDA50410AD7A3F039345541D1B52D1FCBDA504173A9C0F9393455412BB15FC2BEDA50416BF5F4DF4134554134DEF568AFDA50413B15F67846345541E1E03C87AFDA50410BCC80D34634554126FD7FD6AFDA50415D9387C0473455411E44DD09B0DA5041CF54215A48345541AC2A66B8B0DA504128A10F644A345541B21C3473B6DA50415D4465865B345541471D3673B6DA5041FFA165865B345541FD2FF6A8C3DA5041BB6C280C58345541477ACD5CCADA5041527E501856345541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>656640 - 172033
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000290000007B14AE278CD550418FC2F57833395541E17A14DE8CD55041295C8FC23639554152B81E058DD550415C8FC275373955411F85EBC191D55041713D0AA738395541AE47E13A93D550410AD7A37034395541000000B095D550417B14AEF72E395541F6285C5F9BD55041EC51B8CE2B395541000000D0A2D550418FC2F5282C3955418FC2F5F8A9D5504185EB51B82C3955413D0AD783AFD550411F85EBA12D395541E17A144EB3D5504152B81E0530395541295C8FE2B6D55041713D0A873339554166666606BDD55041295C8F323B39554148E17A64D1D550418FC2F5F828395541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003E0000008C32548CC5D55041EB6C2C9316395541E17A14DEC3D550418FC2F5D8163955416E6666D6C1D55041B91E858B163955413E333353BFD55041BE0AD783173955415DE17A24BDD550410DCDCC5C18395541C614AE57BBD55041493333531939554195285C0FBAD5504187666646193955418D1E857BB8D550414AAE47E117395541A2F5288CB6D55041A8B81EF517395541C73ED2D7B5D550417CF28F181839554114AE47D1B4D55041C3F5284C18395541D7A3701DB2D55041CDCCCC8C193955411EBD27B9AFD55041FB0CC1AD1A395541AF999919AAD55041B3B81E551D395541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>656640 - 387808
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000290000007B14AE278CD550418FC2F57833395541E17A14DE8CD55041295C8FC23639554152B81E058DD550415C8FC275373955411F85EBC191D55041713D0AA738395541AE47E13A93D550410AD7A37034395541000000B095D550417B14AEF72E395541F6285C5F9BD55041EC51B8CE2B395541000000D0A2D550418FC2F5282C3955418FC2F5F8A9D5504185EB51B82C3955413D0AD783AFD550411F85EBA12D395541E17A144EB3D5504152B81E0530395541295C8FE2B6D55041713D0A873339554166666606BDD55041295C8F323B39554148E17A64D1D550418FC2F5F828395541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003E0000008C32548CC5D55041EB6C2C9316395541E17A14DEC3D550418FC2F5D8163955416E6666D6C1D55041B91E858B163955413E333353BFD55041BE0AD783173955415DE17A24BDD550410DCDCC5C18395541C614AE57BBD55041493333531939554195285C0FBAD5504187666646193955418D1E857BB8D550414AAE47E117395541A2F5288CB6D55041A8B81EF517395541C73ED2D7B5D550417CF28F181839554114AE47D1B4D55041C3F5284C18395541D7A3701DB2D55041CDCCCC8C193955411EBD27B9AFD55041FB0CC1AD1A395541AF999919AAD55041B3B81E551D395541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>657980 - 3828135
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000001B00000052B81ED5AB0D5141B81E85AB707F5441D7A370EDB50D5141F6285CAF737F5441AE47E19AB60D514133333303737F5441295C8F72B50D51411F85EB116F7F5441B81E852BB50D5141CDCCCC7C607F544152B81E35B10D51411F85EBD1617F5441295C8F02AE0D5141AE47E1BA617F5441333333B3AB0D5141D7A370DD5F7F544148E17A74AA0D5141F6285C9F5A7F54419A999989A80D5141EC51B8BE5A7F544148E17A04A50D514185EB51685B7F5441E17A142EA20D5141E17A14BE4C7F5441EC51B86E9B0D5141C3F5289C4D7F5441AE47E13A9B0D5141000000504C7F5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001B000000295C8F12900D514148E17AB4317F5441B81E85FB8C0D5141EC51B8DE2D7F5441D7A3700D880D514185EB51C8257F54415C8FC245840D5141E17A14FE197F5441295C8FE27E0D5141295C8FA20C7F5441295C8F42790D514148E17AE4027F5441333333D3770D51419A9999E9FF7E5441F6285CAF730D5141A4703DBAF27E5441D7A370DD700D5141A4703DBAE77E5441295C8FD2670D514133333313E97E5441713D0AD7690D51413D0AD7B3F57E544114AE47516B0D5141F6285C2F097F544114AE47B16B0D5141295C8F721D7F54411F85EBF16C0D514148E17A242D7F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>658692 - 3916930
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000003C000000B81E85EB430F5141333333E37D8554418FC2F568410F5141E17A149E7B855441CDCCCCBC3F0F5141F6285CEF79855441A4703DFA3C0F5141AE47E1CA77855441E17A14AE390F51418FC2F5B875855441F6285CBF350F514148E17AB47285544100000010340F5141713D0A777185544100000040320F5141A4703D2A70855441A4703D6A300F5141333333936E855441AE47E1AA2E0F51415C8FC2356D855441EC51B84E2D0F51418FC2F5F86B855441F6285C8F2B0F51418FC2F5786A855441CDCCCCCC280F51411F85EBD168855441333333F3270F514185EB516868855441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003C000000105839EC130F5141EE7C3FB56A855441BA490C22160F5141E17A14666A855441666666D6170F5141DBF97EEA69855441295C8F721B0F51417368917D6C855441508D9766210F51413F355EBA708554411E1A1BDA250F5141CF5914F173855441AE47E1BA2D0F5141643BDF9F798554418CE8EBD6300F5141C89A5EA77B855441169411C5330F514150716E7D7D8554412E51D243360F5141745428157F8554416F1283A8380F5141AE47E1AA80855441B4C8768E370F5141C976BE3782855441D78028283A0F5141752A8E8184855441666666B63A0F51410AD7A3B084855441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>659629 - 3040408
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B000000F6285C8FBCB75041AE47E17A46E15441C3F5284CC0B75041EC51B88E46E15441AE47E1FAC3B75041713D0A0747E154415C8FC235D2B75041C3F5288C49E15441295C8F52E2B75041666666664CE154417B14AEC7E3B750419A9999B94DE15441E17A14BE27B85041AE47E1BA62E154411F85EBE129B850413D0AD7D35FE15441666666162AB85041A4703DAA5DE15441713D0AE729B8504152B81E255CE15441E17A14CE0EB850413D0AD7F345E1544148E17AB4FEB750413D0AD79333E15441F6285CFFE8B75041CDCCCCAC22E15441B81E85FBECB75041F6285C4F0DE15441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000D4D86B21D2B7504159E68E8849E1544169C6FAACE2B750412C8199B84CE154413DE66E53E4B75041590DCBE44DE1544116DD8031FCB7504136A0374555E15441987C66DF10B85041D08763A95BE15441097008E427B85041E771678762E1544168F8C6E729B8504191CC89CA5FE15441E4563BE929B8504186D520375CE15441E8A8F8FF27B850416A9337965AE154418C996E841FB850413E31C1A353E1544158434E8F17B85041B2EC5F1F4DE154414A52CF9310B850411958706747E15441DD9944B20EB85041571719D445E154411F4FB0B809B850411F748E2640E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>659629 - 3272042
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001B000000F6285C8FBCB75041AE47E17A46E15441C3F5284CC0B75041EC51B88E46E15441AE47E1FAC3B75041713D0A0747E154415C8FC235D2B75041C3F5288C49E15441295C8F52E2B75041666666664CE154417B14AEC7E3B750419A9999B94DE15441E17A14BE27B85041AE47E1BA62E154411F85EBE129B850413D0AD7D35FE15441666666162AB85041A4703DAA5DE15441713D0AE729B8504152B81E255CE15441E17A14CE0EB850413D0AD7F345E1544148E17AB4FEB750413D0AD79333E15441F6285CFFE8B75041CDCCCCAC22E15441B81E85FBECB75041F6285C4F0DE15441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000D4D86B21D2B7504159E68E8849E1544169C6FAACE2B750412C8199B84CE154413DE66E53E4B75041590DCBE44DE1544116DD8031FCB7504136A0374555E15441987C66DF10B85041D08763A95BE15441097008E427B85041E771678762E1544168F8C6E729B8504191CC89CA5FE15441E4563BE929B8504186D520375CE15441E8A8F8FF27B850416A9337965AE154418C996E841FB850413E31C1A353E1544158434E8F17B85041B2EC5F1F4DE154414A52CF9310B850411958706747E15441DD9944B20EB85041571719D445E154411F4FB0B809B850411F748E2640E15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660021 - 59101
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000A00000000000010C8B55041C3F5282C4BD1544114AE4791DBB5504152B81EB54BD154417B14AE47E3B55041AE47E13A4CD15441713D0A07E5B55041666666363BD15441AE47E19AD1B550417B14AE4739D1544100000070D2B55041C3F5286C37D1544114AE4701CBB550411F85EB6136D1544152B81E55C0B550418FC2F5484BD15441713D0AE7C1B55041333333434BD1544100000010C8B55041C3F5282C4BD15441
+</a>
+
+<b>
+0106000000010000000103000000010000001500000040836E31CBB550414A5DA86836D154411D576278D2B55041F322E26737D15441BBFD48A3D1B55041C1977B4639D15441AB5E2376E1B55041416E91DB3AD15441C55B0004E5B55041990019363BD15441F89BE72AE5B550410CB28FDA39D154415C8FC235E5B5504114AE477139D15441B81E853BE5B55041F6285CEF37D154411DBDFF8ADEB550419DA0253737D154414DBC8B4CBBB550411426CA7233D15441AB7D0CEAB9B5504110638FDF40D154415C8FC2F5B8B55041713D0A274AD1544106BBE439B8B5504126B1E1D24AD15441E5B94EA4B7B550417DD5C0654BD15441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660088 - 1497705
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000002000000010300000001000000130000001F85EB510ABB504166666686EFDB544185EB51C80FBB5041333333E3EEDB54418FC2F5C80ABB50415C8FC2C5E9DB54413D0AD76303BB50415C8FC2D5E2DB544114AE47E1FCBA5041295C8F12DBDB5441A4703D2AF6BA50410AD7A370D2DB54410AD7A360F1BA5041C3F5281CCADB544185EB51F8EEBA5041F6285CEFC5DB5441EC51B8AEE8BA5041295C8FC2C5DB54411F85EBE1E6BA5041B81E85BBC8DB54413D0AD7D3E2BA5041666666B6CEDB544133333373E0BA5041B81E853BD3DB5441CDCCCCACDDBA5041713D0AD7DADB5441AE47E1DAE4BA5041B81E850BDFDB5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000048000000C34FA3E105BB5041B5267471F1DB5441CDCCCC5C03BB50417B14AE67F1DB5441D7A3705DF2BA5041F6285C5FF3DB54415C8FC2B5E6BA50417B14AE77F3DB5441CDCCCC2CDABA5041D7A370DDF3DB54419A999959D6BA5041666666B6F2DB54410AD7A3B0D4BA504148E17A84F3DB5441E17A143ED1BA50419A999909FCDB5441B81E859BCFBA5041C3F528DCFDDB5441295C8F72CABA5041295C8F6204DC5441D7A370BDC7BA50417B14AE2708DC5441713D0A47C3BA50411F85EB910EDC544185EB5138C1BA50410000006011DC54417B14AE67BFBA5041EC51B82E14DC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660088 - 3283524
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+010600000002000000010300000001000000130000001F85EB510ABB504166666686EFDB544185EB51C80FBB5041333333E3EEDB54418FC2F5C80ABB50415C8FC2C5E9DB54413D0AD76303BB50415C8FC2D5E2DB544114AE47E1FCBA5041295C8F12DBDB5441A4703D2AF6BA50410AD7A370D2DB54410AD7A360F1BA5041C3F5281CCADB544185EB51F8EEBA5041F6285CEFC5DB5441EC51B8AEE8BA5041295C8FC2C5DB54411F85EBE1E6BA5041B81E85BBC8DB54413D0AD7D3E2BA5041666666B6CEDB544133333373E0BA5041B81E853BD3DB5441CDCCCCACDDBA5041713D0AD7DADB5441AE47E1DAE4BA5041B81E850BDFDB5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000048000000C34FA3E105BB5041B5267471F1DB5441CDCCCC5C03BB50417B14AE67F1DB5441D7A3705DF2BA5041F6285C5FF3DB54415C8FC2B5E6BA50417B14AE77F3DB5441CDCCCC2CDABA5041D7A370DDF3DB54419A999959D6BA5041666666B6F2DB54410AD7A3B0D4BA504148E17A84F3DB5441E17A143ED1BA50419A999909FCDB5441B81E859BCFBA5041C3F528DCFDDB5441295C8F72CABA5041295C8F6204DC5441D7A370BDC7BA50417B14AE2708DC5441713D0A47C3BA50411F85EB910EDC544185EB5138C1BA50410000006011DC54417B14AE67BFBA5041EC51B82E14DC5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660106 - 312925
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000440000008FC2F598FBBE5041B81E851BCDDA5441666666C6F6BE50419A999959DDDA54410AD7A3D0F8BE5041EC51B80EDEDA544148E17A44FABE504148E17AF4DEDA5441CDCCCC3CFBBE50419A999939DEDA544133333323FEBE504148E17AD4DCDA54417B14AEF7FEBE50413D0AD793DBDA54413D0AD793FFBE504114AE4731DADA54415C8FC285FEBE50411F85EB11CDDA5441713D0A47FFBE504148E17A04CADA54417B14AE87FFBE504133333313C8DA544152B81E1502BF50415C8FC2B5BDDA544114AE47C101BF5041A4703DEAB3DA54418FC2F50802BF50410AD7A330B0DA5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003100000048E17A644CBF5041295C8FE296DA5441F6285CBF52BF5041EC51B82E99DA5441EB05F88556BF5041E6C39CD297DA544131B224CC61BF5041163B33C393DA544144AF1ACC61BF50419A4D33C393DA54412140FCF55EBF50418E4C72C893DA5441FA903DEA5BBF5041A0CF15CE93DA5441C82DC19151BF5041D6ED240692DA544166EC939151BF504167231D0692DA5441E0AD7F9151BF50413BA7190692DA54416E4CD3D150BF5041E4A920E591DA5441056AD4664EBF50413FBCBA1092DA5441075E2F794CBF50410F81803392DA544198A9C3053CBF50414E87275C93DA5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660110 - 2963342
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000020000003A000000295C8F52E5BE5041333333D355DB54411F85EBF1E3BE50413D0AD7D34EDB5441A4703D0AE5BE50418FC2F5F84EDB5441F6285C4FFDBE504185EB518852DB544100000030FFBE5041D7A3708D50DB544152B81E95FEBE504185EB51484EDB544114AE478101BF504148E17AA44FDB544185EB518804BF5041713D0AA750DB5441C3F5288C06BF5041000000D051DB54411F85EB8107BF50413D0AD79353DB5441333333D307BF50413333331354DB5441295C8F820ABF50417B14AE7754DB544185EB51C80BBF5041AE47E1AA53DB5441295C8FC20DBF50413D0AD7834DDB5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000250681B5CEBE50418716D97E5DDB54417B4A4F89CEBE5041664FFCCA61DB5441C83985C0CDBE5041E663E36363DB54410C022B47CEBE50413D0AD7A367DB5441A8C64B27CDBE50419A99990169DB5441234DE343CEBE5041903B23BC69DB544139263A30D0BE5041AC83F4F76BDB54414F0B80A5D1BE50416EA49A2E6DDB544160BECC18D4BE5041638C8C6B6CDB544123DBF98ED4BE5041E7FBA9296DDB5441AE47E182D5BE5041AE47E1CA6CDB544183C43E01D6BE504100EF2F866BDB544137894168D7BE5041000000C86ADB544146FD37DBD8BE50417515B10E6BDB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660110 - 3621831
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000020000000103000000020000003A000000295C8F52E5BE5041333333D355DB54411F85EBF1E3BE50413D0AD7D34EDB5441A4703D0AE5BE50418FC2F5F84EDB5441F6285C4FFDBE504185EB518852DB544100000030FFBE5041D7A3708D50DB544152B81E95FEBE504185EB51484EDB544114AE478101BF504148E17AA44FDB544185EB518804BF5041713D0AA750DB5441C3F5288C06BF5041000000D051DB54411F85EB8107BF50413D0AD79353DB5441333333D307BF50413333331354DB5441295C8F820ABF50417B14AE7754DB544185EB51C80BBF5041AE47E1AA53DB5441295C8FC20DBF50413D0AD7834DDB5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000250681B5CEBE50418716D97E5DDB54417B4A4F89CEBE5041664FFCCA61DB5441C83985C0CDBE5041E663E36363DB54410C022B47CEBE50413D0AD7A367DB5441A8C64B27CDBE50419A99990169DB5441234DE343CEBE5041903B23BC69DB544139263A30D0BE5041AC83F4F76BDB54414F0B80A5D1BE50416EA49A2E6DDB544160BECC18D4BE5041638C8C6B6CDB544123DBF98ED4BE5041E7FBA9296DDB5441AE47E182D5BE5041AE47E1CA6CDB544183C43E01D6BE504100EF2F866BDB544137894168D7BE5041000000C86ADB544146FD37DBD8BE50417515B10E6BDB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660542 - 176322
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000001000000010300000001000000160000003D0AD753B0D75041AE47E10A3BDB5441C3F5280CB0D75041333333733CDB54419A999949ACD75041EC51B84E4FDB54418FC2F5B8BED7504148E17A5450DB5441F6285C1FD5D75041D7A370FD4DDB544148E17AA4E2D750419A99990948DB5441A4703DDAEBD75041AE47E19A47DB5441D7A370CDF1D75041E17A147E48DB544100000030FBD750417B14AEE74BDB54417B14AE57FED750410AD7A3A04BDB544133333393F8D7504114AE47213BDB54411F85EB31F7D75041E17A146E3CDB544148E17A44F3D750419A9999793BDB54417B14AE97EED75041D7A370CD3DDB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001F0000004B4C4D02B1D7504132E3DB2B3BDB5441C01BD853B0D75041657BE10A3BDB544111D5290CB0D75041E44F33733CDB54419A999949ACD75041EC51B84E4FDB54417B93F4B8BED7504124A3795450DB54416EB385E4C9D75041C603C2294FDB5441F6285C1FD5D75041D7A370FD4DDB544148E17AA4E2D750419A99990948DB544139BF9BE9E5D7504174E149E247DB54413AA03CDAEBD75041CA3BE09A47DB544196D570CDF1D75041FC93137E48DB5441BCE70030FBD750414235ADE74BDB544139336C65FCD75041DEEB76CC4BDB5441BFDEAD57FED75041C4DBA3A04BDB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660688 - 409551
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001C0000003D0AD703E6B650416666666606DB5441B81E859BEDB650418FC2F5A809DB5441713D0A87F1B650417B14AEB70ADB5441D7A3705DF6B6504114AE47B10CDB54413D0AD793FAB6504185EB51F80FDB5441333333B3FAB650413333332311DB54413D0AD753FDB650410000005011DB54417B14AE97FEB650415C8FC2B50FDB54411F85EB0105B75041AE47E1CA0FDB5441666666560BB75041666666A611DB5441D7A370CD0FB75041EC51B87E11DB5441F6285CEF12B75041F6285C6F14DB54418FC2F5D815B750413D0AD7B314DB5441CDCCCC0C19B750410000008012DB5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000026000000786580F1F4B65041C7FFB11C0CDB5441AC1C715DF6B65041330C48B10CDB5441310AD793FAB650419FEB51F80FDB54415394F293FAB6504136CE5AF90FDB5441D38D8BABFAB65041F542BC0B10DB5441CA3BB2ED08B75041EB70BF3711DB54414D6814A310B750413C4CDAD511DB54417C1F40A610B75041164F34DA11DB5441917E4A8B11B75041F3098B1413DB5441B2F9329B11B75041F12C602A13DB54412EA22DCC14B750419B59076B13DB54413B7C077417B75041A493DB9513DB544156C169FE18B750410783C78912DB5441CDCCCC0C19B750410000008012DB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660881 - 1505926
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000200000001030000000100000005000000AE47E12A8BD35041D7A370DD6EDD54410AD7A39088D35041333333736CDD5441000000B079D350410AD7A3107EDD5441713D0AD77ED350419A9999E983DD5441AE47E12A8BD35041D7A370DD6EDD54410103000000010000000D0000003D0AD7238DD35041EC51B80E72DD54419A9999C98DD35041C3F5284C71DD5441713D0AD78ED35041295C8F926FDD5441A4703D2A95D35041A4703D3A65DD54413D0AD7F398D35041EC51B8FE5DDD54410AD7A3709DD35041B81E856B56DD5441EC51B81EA1D35041F6285C0F52DD54410AD7A3909ED35041AE47E15A4FDD5441F6285C [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001500000067895D8A86D3504160A0824578DD5441A4703D5A7FD35041E17A147E84DD5441A4703D1A88D3504185EB51F877DD54413D0AD7238DD35041EC51B80E72DD54419A9999C98DD35041C3F5284C71DD5441713D0AD78ED35041295C8F926FDD54414296E80B95D35041F994B28565DD54410241F0F198D3504131AE08315EDD5441FF49497D9DD350417EB8577756DD5441EC51B81EA1D35041F6285C0F52DD54410AD7A3909ED35041AE47E15A4FDD5441F6285C3F8CD350415C8FC2856EDD5441C3F528BC8BD3504148E17A646FDD54419889D86587D350412F9C79C876DD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>660881 - 3583925
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+01060000000200000001030000000100000005000000AE47E12A8BD35041D7A370DD6EDD54410AD7A39088D35041333333736CDD5441000000B079D350410AD7A3107EDD5441713D0AD77ED350419A9999E983DD5441AE47E12A8BD35041D7A370DD6EDD54410103000000010000000D0000003D0AD7238DD35041EC51B80E72DD54419A9999C98DD35041C3F5284C71DD5441713D0AD78ED35041295C8F926FDD5441A4703D2A95D35041A4703D3A65DD54413D0AD7F398D35041EC51B8FE5DDD54410AD7A3709DD35041B81E856B56DD5441EC51B81EA1D35041F6285C0F52DD54410AD7A3909ED35041AE47E15A4FDD5441F6285C [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001500000067895D8A86D3504160A0824578DD5441A4703D5A7FD35041E17A147E84DD5441A4703D1A88D3504185EB51F877DD54413D0AD7238DD35041EC51B80E72DD54419A9999C98DD35041C3F5284C71DD5441713D0AD78ED35041295C8F926FDD54414296E80B95D35041F994B28565DD54410241F0F198D3504131AE08315EDD5441FF49497D9DD350417EB8577756DD5441EC51B81EA1D35041F6285C0F52DD54410AD7A3909ED35041AE47E15A4FDD5441F6285C3F8CD350415C8FC2856EDD5441C3F528BC8BD3504148E17A646FDD54419889D86587D350412F9C79C876DD5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>661050 - 242871
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001700000014AE47D131C250417B14AE0703CA5441F6285C6F33C250410AD7A3F0F2C95441D7A3704D22C2504166666666F5C9544148E17AC409C25041666666F6F5C95441EC51B87E06C2504100000020FEC95441EC51B81E04C250413333333302CA5441D7A3702D01C2504185EB510807CA5441713D0A97FDC1504148E17A940CCA54411F85EB21FAC150419A99993911CA544133333383F5C15041D7A370ED16CA5441295C8F62F0C15041D7A3703D1CCA54410AD7A300ECC15041B81E850B20CA54411F85EB31E2C15041295C8FD227CA54410AD7A360DAC1504185EB51982DCA5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000002B462F7408C2504171F98856F9C95441E966C4C60FC25041CE8CF0A4F9C9544122282AF21CC25041223D11ACF9C95441E7AD82D121C25041EE87E532F9C95441DCA7488728C250417911379DF8C9544139ACAD1433C25041D1FD0AD5F6C95441F6285C6F33C250410AD7A3F0F2C95441D7A3704D22C2504166666666F5C954415E16DDE521C25041974EC668F5C954415E3CDFAD21C250417A8EA870F5C954417E911FD115C25041641DAEAFF5C95441A4CBB57614C250417B459FB7F5C9544155E4956E13C250417A76ADBDF5C9544184CAB49D12C25041026977C2F5C95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>661050 - 345431
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001700000014AE47D131C250417B14AE0703CA5441F6285C6F33C250410AD7A3F0F2C95441D7A3704D22C2504166666666F5C9544148E17AC409C25041666666F6F5C95441EC51B87E06C2504100000020FEC95441EC51B81E04C250413333333302CA5441D7A3702D01C2504185EB510807CA5441713D0A97FDC1504148E17A940CCA54411F85EB21FAC150419A99993911CA544133333383F5C15041D7A370ED16CA5441295C8F62F0C15041D7A3703D1CCA54410AD7A300ECC15041B81E850B20CA54411F85EB31E2C15041295C8FD227CA54410AD7A360DAC1504185EB51982DCA5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000002B462F7408C2504171F98856F9C95441E966C4C60FC25041CE8CF0A4F9C9544122282AF21CC25041223D11ACF9C95441E7AD82D121C25041EE87E532F9C95441DCA7488728C250417911379DF8C9544139ACAD1433C25041D1FD0AD5F6C95441F6285C6F33C250410AD7A3F0F2C95441D7A3704D22C2504166666666F5C954415E16DDE521C25041974EC668F5C954415E3CDFAD21C250417A8EA870F5C954417E911FD115C25041641DAEAFF5C95441A4CBB57614C250417B459FB7F5C9544155E4956E13C250417A76ADBDF5C9544184CAB49D12C25041026977C2F5C95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>962508 - 407032
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000009D0000008E422D0C9FA250418826142C1358554164F463119FA250410D4DEA3013585541CD5E240C9FA250416127DD27135855416EC1501C9FA25041EBD3603A13585541D42525B19FA250410BDD3A0712585541BB58E28FA0A25041EDBC0BCB0E58554136246AB5A0A250410DF43B230E585541F039E898A1A250411AB698AE0B585541C8C8DFFFA2A25041F4DCE589085855413CB20500A4A25041D001555F05585541938278E5A7A25041C847E83CF85755412191387AA8A25041F4DB5B74F55755412621CBF0AAA250411FE382D8EE5755414799C373ABA250412D9EB452ED575541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A00000057BB7C5D62A25041AF98836BEA57554152B2034262A2504143466F9CEA575541B159E04162A25041DAD28EA1EB575541A79CA3FD62A250414F2C450AEC57554123B63F1F64A250410D39139BEC575541B38AFD2F64A2504102121EB5EC575541B1B77BFC65A2504126937081EF575541BCCDAD1366A250410EFD2ED8EF575541FE3A9E5567A25041D7129A70F4575541BE44EFAB68A25041184A7E6AF8575541000015FB6AA25041FA843FDAFA5755414CDE19FC6FA2504168F6706CFF5755411C1DC24472A25041F5A1B4410158554108FA1A0875A25041DBD9717903585541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>962508 - 419780
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000009D0000008E422D0C9FA250418826142C1358554164F463119FA250410D4DEA3013585541CD5E240C9FA250416127DD27135855416EC1501C9FA25041EBD3603A13585541D42525B19FA250410BDD3A0712585541BB58E28FA0A25041EDBC0BCB0E58554136246AB5A0A250410DF43B230E585541F039E898A1A250411AB698AE0B585541C8C8DFFFA2A25041F4DCE589085855413CB20500A4A25041D001555F05585541938278E5A7A25041C847E83CF85755412191387AA8A25041F4DB5B74F55755412621CBF0AAA250411FE382D8EE5755414799C373ABA250412D9EB452ED575541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000003A00000057BB7C5D62A25041AF98836BEA57554152B2034262A2504143466F9CEA575541B159E04162A25041DAD28EA1EB575541A79CA3FD62A250414F2C450AEC57554123B63F1F64A250410D39139BEC575541B38AFD2F64A2504102121EB5EC575541B1B77BFC65A2504126937081EF575541BCCDAD1366A250410EFD2ED8EF575541FE3A9E5567A25041D7129A70F4575541BE44EFAB68A25041184A7E6AF8575541000015FB6AA25041FA843FDAFA5755414CDE19FC6FA2504168F6706CFF5755411C1DC24472A25041F5A1B4410158554108FA1A0875A25041DBD9717903585541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>661825 - 344203
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001E0000001F85EBA146C15041E17A145ED0CA544185EB51183CC1504152B81E85D2CA544114AE47912BC150413D0AD7F3D8CA544185EB512829C1504133333303DBCA5441000000C01BC15041295C8F12EFCA5441E17A143E16C15041713D0AE7F4CA5441333333B308C15041F6285C1FFFCA5441666666D603C15041AE47E12A01CB5441713D0A1701C150418FC2F57803CB5441C3F5280CFEC0504148E17AC405CB5441EC51B86EF3C05041333333230DCB54418FC2F598EFC05041B81E856B0FCB54415C8FC2E5E0C05041000000102CCB54418FC2F588DBC050410AD7A30034CB5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001500000085EB510802C1504148E17A540BCB54416019235C01C15041631A3C2E0ACB5441F4B21EC500C150417CCF292C09CB54412DDBFD1400C150412EC53AE208CB5441A4703D5AFFC050413D0AD79308CB5441E4A3280CFEC05041201A7BC405CB5441746DDB67F9C0504155F084FD08CB544123AFB96EF3C05041270C33230DCB54412FDFF698EFC05041D0E0846B0FCB5441DA8AC3E5E0C05041009EFE0F2CCB5441E501F688DBC0504120F7A30034CB5441D1B04993DCC050418ACAA08734CB54410F7CDD09DEC05041337B7B4535CB5441CD70E649DEC05041603DF06535CB5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662034 - 986562
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001C000000333333C3BAD65041A4703D2A8FD9544114AE47F1B6D65041A4703D5A8ED95441EC51B8AEB4D650417B14AEC78DD954418FC2F598B2D65041F6285C2F8DD9544185EB51B8B0D65041EC51B88E8CD9544166666676AFD650417B14AE478CD9544152B81E85ADD65041295C8FE28BD9544152B81E85ABD650410AD7A3A08BD9544100000060A9D650411F85EB818BD95441A4703D4AA6D650419A9999698BD9544133333303A4D65041EC51B85E8BD9544114AE47E1A1D65041A4703D6A8BD95441295C8FB29DD650413D0AD7B38BD9544185EB51689BD650417B14AE878CD95441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000A4E01AD4BED65041DC3F99E790D95441FB8C3264BFD65041DCA71DEA8ED9544125A63B65BFD65041096771EA8ED9544144375612C0D65041BFAD238B8CD95441F6285C3FC0D65041333333E38BD954414BA3AF6AC0D65041CB802E558BD9544187B4B9B1C2D65041AA6258C983D954415C4FF051BBD65041F3387E1A82D954417CA87F62B8D65041BD6612708AD95441F6285CAFB7D65041AE47E17A8CD95441E20DB054B7D65041B08D8B5F8DD95441A9C402FAB6D65041C7D5185C8ED95441055A36C2BAD65041FBA8072A8FD95441A4E01AD4BED65041DC3F99E790D95441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>669221 - 87319
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000003E000000F6285C1F23C850417B14AEA716105541666666F61CC85041E17A149E141055411F85EBC11BC8504114AE4751151055410AD7A30018C8504148E17A4414105541295C8F3213C850413D0AD7831210554148E17A4413C850413D0AD7C3131055410AD7A3F01AC85041666666961E10554114AE47E11CC850418FC2F5E822105541A4703DAA22C8504152B81E45261055415C8FC2F528C85041F6285C8F271055413D0AD70337C8504114AE4731251055413D0AD7733BC85041B81E85EB23105541713D0A774BC850410AD7A3401F1055419A9999F94CC850419A9999592D105541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000027000000A5A27E8958C850414FEEEEDE2E105541CD3BB49658C85041CCDE153A2F1055414FD7DC9059C850415035F9782E1055413C7854DB5BC850414FF9A36C2D10554155C2692D5EC850417186FE712C10554131312F515FC8504139BB43342C105541DD5AC25061C850414D9AAECD2B1055416D368FD762C85041B24A767D2B105541A680E23863C850418337CD6B2B105541E67B498063C85041185E85562B1055417701926165C85041A9E284B42A10554112E09BB767C850416A8737EB29105541DEDF315468C85041FD5CCBB72910554132FB721C6AC850419ECF7C2A29105541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662642 - 232738
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000330000000AD7A3A022B75041295C8FF24CE0544114AE475122B75041B81E85CB4EE05441C3F528EC22B750413D0AD7B34FE054413D0AD7133FB7504185EB515857E05441000000F04CB7504185EB51085BE054413D0AD7D353B7504114AE47015DE05441AE47E11A57B75041666666465EE0544148E17A8459B750419A9999E960E054419A9999595BB750415C8FC27563E05441CDCCCC6C5EB75041A4703D5A64E05441AE47E10A60B750417B14AED765E05441B81E85FB60B750410000006063E05441AE47E16A62B75041B81E85AB62E054417B14AED763B75041EC51B85E63E05441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000042000000BCA86D8F23B750412FF2ED004AE05441C840F45122B75041E8A380C74EE05441F893580D23B750416E1FD9BC4FE054411D244FE42CB7504139E49A6852E054418E18E21D35B75041AD6926A454E0544172BDF1C53CB75041094C32B856E054413D0AD7133FB7504185EB515857E05441000000F04CB7504185EB51085BE054413D0AD7D353B7504114AE47015DE0544153C0925D54B750415F7BA6365DE05441AE47E11A57B75041666666465EE0544148E17A8459B750419A9999E960E054410D4A12E559B750419815E16F61E05441711832925BB75041E9C12F8663E05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662642 - 255533
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000330000000AD7A3A022B75041295C8FF24CE0544114AE475122B75041B81E85CB4EE05441C3F528EC22B750413D0AD7B34FE054413D0AD7133FB7504185EB515857E05441000000F04CB7504185EB51085BE054413D0AD7D353B7504114AE47015DE05441AE47E11A57B75041666666465EE0544148E17A8459B750419A9999E960E054419A9999595BB750415C8FC27563E05441CDCCCC6C5EB75041A4703D5A64E05441AE47E10A60B750417B14AED765E05441B81E85FB60B750410000006063E05441AE47E16A62B75041B81E85AB62E054417B14AED763B75041EC51B85E63E05441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000044000000E7D5744489B7504102DFEB424FE05441DDF15E7489B75041E26BB6674EE0544158F528DC85B75041380AD7F34BE05441AB285C3F84B7504154D7A3B048E054416B8FC28583B75041287B147E48E05441D1DCF60663B750416E49D8B93FE054414F7D932752B7504184D6667E5CE054413D0AD7D353B7504114AE47015DE0544116F1193055B75041B75A3A885DE05441AE47E11A57B75041666666465EE0544148E17A8459B750419A9999E960E0544195B3BBE95AB7504152CD3EDA62E05441AA9999595BB75041458FC27563E05441883169355CB75041010C8FB563E05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>662642 - 304182
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000330000000AD7A3A022B75041295C8FF24CE0544114AE475122B75041B81E85CB4EE05441C3F528EC22B750413D0AD7B34FE054413D0AD7133FB7504185EB515857E05441000000F04CB7504185EB51085BE054413D0AD7D353B7504114AE47015DE05441AE47E11A57B75041666666465EE0544148E17A8459B750419A9999E960E054419A9999595BB750415C8FC27563E05441CDCCCC6C5EB75041A4703D5A64E05441AE47E10A60B750417B14AED765E05441B81E85FB60B750410000006063E05441AE47E16A62B75041B81E85AB62E054417B14AED763B75041EC51B85E63E05441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000044000000E7D5744489B7504102DFEB424FE05441DDF15E7489B75041E26BB6674EE0544158F528DC85B75041380AD7F34BE05441AB285C3F84B7504154D7A3B048E054416B8FC28583B75041287B147E48E05441D1DCF60663B750416E49D8B93FE054414F7D932752B7504184D6667E5CE054413D0AD7D353B7504114AE47015DE0544116F1193055B75041B75A3A885DE05441AE47E11A57B75041666666465EE0544148E17A8459B750419A9999E960E0544195B3BBE95AB7504152CD3EDA62E05441AA9999595BB75041458FC27563E05441883169355CB75041010C8FB563E05441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>428747 - 1263905
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001000000029F1EBADDC625141C5E09BD515C3544114AE47D1DE625141D7A3708D19C354414F282E8EE362514158989DCA21C3544199FA7C89E66251417D2E668224C3544154AA926FE862514131F48FD823C35441201EACDAE962514178EF1D6524C354416BB40B16EC625141B41EC07C22C354415C8FC2C5EB62514152B81E3522C3544166666676E8625141000000201EC35441DB433C76E562514196BED3321BC3544181D906F2E2625141B4438F9A1AC35441A32A84F4E06251415C4CE09819C3544136B307FFDF6251414A28F5FB18C3544133855B4BDF625141E1D42F7E18C35441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000002AF1EBADDC625141C7E09BD515C3544114AE47D1DE625141D7A3708D19C3544152282E8EE362514157989DCA21C354419DFA7C89E66251417D2E668224C3544152AA926FE862514134F48FD823C35441211EACDAE962514174EF1D6524C3544169B40B16EC625141B41EC07C22C354415C8FC2C5EB62514152B81E3522C3544166666676E8625141000000201EC35441DE433C76E562514199BED3321BC3544183D906F2E2625141B5438F9A1AC35441A72A84F4E06251415B4CE09819C3544132B307FFDF6251414B28F5FB18C3544137855B4BDF625141E5D42F7E18C35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>428747 - 4018361
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001000000029F1EBADDC625141C5E09BD515C3544114AE47D1DE625141D7A3708D19C354414F282E8EE362514158989DCA21C3544199FA7C89E66251417D2E668224C3544154AA926FE862514131F48FD823C35441201EACDAE962514178EF1D6524C354416BB40B16EC625141B41EC07C22C354415C8FC2C5EB62514152B81E3522C3544166666676E8625141000000201EC35441DB433C76E562514196BED3321BC3544181D906F2E2625141B4438F9A1AC35441A32A84F4E06251415C4CE09819C3544136B307FFDF6251414A28F5FB18C3544133855B4BDF625141E1D42F7E18C35441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000100000002AF1EBADDC625141C7E09BD515C3544114AE47D1DE625141D7A3708D19C3544152282E8EE362514157989DCA21C354419DFA7C89E66251417D2E668224C3544152AA926FE862514134F48FD823C35441211EACDAE962514174EF1D6524C3544169B40B16EC625141B41EC07C22C354415C8FC2C5EB62514152B81E3522C3544166666676E8625141000000201EC35441DE433C76E562514199BED3321BC3544183D906F2E2625141B5438F9A1AC35441A72A84F4E06251415B4CE09819C3544132B307FFDF6251414B28F5FB18C3544137855B4BDF625141E5D42F7E18C35441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>924164 - 236530
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000CDCCCC5CA7AA5041B81E850B4B0E5441713D0AA7A5AA5041EC51B82E4A0E544133333323A3AA50413D0AD7E3470E5441CDCCCCACA2AA504166666686470E5441AE47E14A9FAA504185EB51B8460E54415C8FC255A0AA504133333343480E54411F85EBC1A6AA5041B81E856B520E544114AE4771A7AA50410AD7A350570E544100000060A3AA50417B14AEC75B0E5441333333C3A2AA5041000000705C0E544166666656A2AA504148E17AE45C0E544133333363A2AA5041C3F528FC5C0E5441713D0A27A3AA504152B81EB55E0E54415C8FC225A4AA5041000000C0600E5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000200000005C8FC255A0AA504133333343480E5441958AAE46A5AA50411772BC13500E5441FC79AAADA6AA50414EE62742520E54416832A1AFA6AA5041A1CB974E520E54411F85EBC1A6AA5041B81E856B520E54411B42DE2CA7AA5041042FC567550E544161BE5F7CA7AA50415D974E5F570E544170F23E0BA6AA5041B7CEA9D9580E544100000060A3AA50417B14AEC75B0E5441333333C3A2AA5041000000705C0E544166666656A2AA504148E17AE45C0E544133333363A2AA5041C3F528FC5C0E544148556187A2AA5041CEE49F4D5D0E5441245C2A3CB2AA5041D45CA0FE550E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>924164 - 372190
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000001B000000CDCCCC5CA7AA5041B81E850B4B0E5441713D0AA7A5AA5041EC51B82E4A0E544133333323A3AA50413D0AD7E3470E5441CDCCCCACA2AA504166666686470E5441AE47E14A9FAA504185EB51B8460E54415C8FC255A0AA504133333343480E54411F85EBC1A6AA5041B81E856B520E544114AE4771A7AA50410AD7A350570E544100000060A3AA50417B14AEC75B0E5441333333C3A2AA5041000000705C0E544166666656A2AA504148E17AE45C0E544133333363A2AA5041C3F528FC5C0E5441713D0A27A3AA504152B81EB55E0E54415C8FC225A4AA5041000000C0600E5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000200000005C8FC255A0AA504133333343480E5441958AAE46A5AA50411772BC13500E5441FC79AAADA6AA50414EE62742520E54416832A1AFA6AA5041A1CB974E520E54411F85EBC1A6AA5041B81E856B520E54411B42DE2CA7AA5041042FC567550E544161BE5F7CA7AA50415D974E5F570E544170F23E0BA6AA5041B7CEA9D9580E544100000060A3AA50417B14AEC75B0E5441333333C3A2AA5041000000705C0E544166666656A2AA504148E17AE45C0E544133333363A2AA5041C3F528FC5C0E544148556187A2AA5041CEE49F4D5D0E5441245C2A3CB2AA5041D45CA0FE550E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>436705 - 436736
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000F000000CDCCCCBCBA115141E17A141EBBF95441A4703D4ABA1151419A999929BBF95441EC51B8EEB9115141A4703D2ABDF954411F85EBA1B9115141295C8FC2C3F9544166666666B91151411F85EB41C7F95441AE47E1BAB7115141A4703D1AD0F95441B81E854BB71151415C8FC265D2F9544148E17A24B7115141666666C6D3F95441B54E3F20B61151410B93215AD9F95441F1909714D2115141B024EF40CBF9544185EB51B8D311514133333303C6F95441F6285C4FD41151415C8FC2E5BFF95441EC51B8CED41151417B14AE27BEF954417B14AE77C7115141C3F5289CBCF95441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000017000000A6574D1BB111514121AEB590BDF95441C0687C5D9D1151411C968790BAF9544182972CB79C1151413C89D24CBEF95441E17A140E9C11514185EB5108C2F95441C3F5289C9A1151410AD7A3A0C5F954415C8FC2559911514185EB51D8CBF95441713D0A7798115141713D0A17D0F95441AE47E12A99115141AE47E17ADEF9544186AAEB0F9B11514106E8011AE0F9544164A950A29D11514193551078E0F95441FFB83EB2A311514125D6DD2EDFF95441BEC9C72FA71151417D8DB214DEF95441AE47E1EAAF115141CDCCCC6CDBF954419A1E1011B6115141DD6A05ACD9F95441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>361497 - 360585
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000EDA9AAB383ED50415AB730A2A68754412C13553086ED5041231F702E7587544160D12FDB66ED50410D8AD2D375875441CDCCCCFC5BED50411F85EB01768754418FC2F5D859ED5041AE47E1DAA2875441BABFA53E5FED50416F803D63A5875441D2E6E23669ED5041BF173FA3A9875441843150906DED5041CFDD2781AB87544168A365B873ED50416671BFC4AD875441713D0A577CED50410AD7A330B08754418059B40583ED5041C2029B4BB2875441EDA9AAB383ED50415AB730A2A6875441
+</a>
+
+<b>
+010600000001000000010300000001000000090000000AD7A33086ED504185EB512875875441E17A141E83ED50410AD7A340B28754413D0AD7638DED50410AD7A360B587544148E17AA494ED5041000000A0B6875441E17A14BE94ED504152B81E95B4875441AE47E1FA96ED5041B81E85FB7E875441E17A14BE93ED504152B81ED57587544185EB516892ED50418FC2F5E8748754410AD7A33086ED504185EB512875875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>361497 - 1857902
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000EDA9AAB383ED50415AB730A2A68754412C13553086ED5041231F702E7587544160D12FDB66ED50410D8AD2D375875441CDCCCCFC5BED50411F85EB01768754418FC2F5D859ED5041AE47E1DAA2875441BABFA53E5FED50416F803D63A5875441D2E6E23669ED5041BF173FA3A9875441843150906DED5041CFDD2781AB87544168A365B873ED50416671BFC4AD875441713D0A577CED50410AD7A330B08754418059B40583ED5041C2029B4BB2875441EDA9AAB383ED50415AB730A2A6875441
+</a>
+
+<b>
+010600000001000000010300000001000000090000000AD7A33086ED504185EB512875875441E17A141E83ED50410AD7A340B28754413D0AD7638DED50410AD7A360B587544148E17AA494ED5041000000A0B6875441E17A14BE94ED504152B81E95B4875441AE47E1FA96ED5041B81E85FB7E875441E17A14BE93ED504152B81ED57587544185EB516892ED50418FC2F5E8748754410AD7A33086ED504185EB512875875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>361497 - 4481334
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000C000000EDA9AAB383ED50415AB730A2A68754412C13553086ED5041231F702E7587544160D12FDB66ED50410D8AD2D375875441CDCCCCFC5BED50411F85EB01768754418FC2F5D859ED5041AE47E1DAA2875441BABFA53E5FED50416F803D63A5875441D2E6E23669ED5041BF173FA3A9875441843150906DED5041CFDD2781AB87544168A365B873ED50416671BFC4AD875441713D0A577CED50410AD7A330B08754418059B40583ED5041C2029B4BB2875441EDA9AAB383ED50415AB730A2A6875441
+</a>
+
+<b>
+010600000001000000010300000001000000090000000AD7A33086ED504185EB512875875441E17A141E83ED50410AD7A340B28754413D0AD7638DED50410AD7A360B587544148E17AA494ED5041000000A0B6875441E17A14BE94ED504152B81E95B4875441AE47E1FA96ED5041B81E85FB7E875441E17A14BE93ED504152B81ED57587544185EB516892ED50418FC2F5E8748754410AD7A33086ED504185EB512875875441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943320 - 3001687
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003D0000003D0AD7833D6350413D0AD7E33A1B55411F85EB2143635041666666A6371B55417B14AE5745635041A4703D6A3B1B554114AE479145635041E17A144E3A1B5541AE47E16A5363504152B81E75401B554185EB510853635041713D0A073F1B554185EB5138516350419A9999993B1B55410AD7A3A04F6350415C8FC295381B55415C8FC2054F63504166666646351B5541EC51B81E476350419A9999D9311B55417B14AE2741635041333333C32F1B5541D7A370FD40635041F6285C6F331B55413D0AD7E33F63504185EB51B8311B5541EC51B8BE3E635041F6285CEF2F1B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000C79B00D94263504168D3E516371B5541506A2BDF436350413C4A91B8371B5541B74EE24646635041F799BB7C391B5541FA7B5B9B48635041717A12D73A1B554142A87CAC4A6350413AC734D13B1B554185D5F5004D6350414A82D2F13C1B554155DF65A24F635041C961D1083E1B55416B57516A526350411F8BEA4F3F1B5541A5B0B8325363504110F587A43F1B55413382D11A53635041B191BF4B3F1B554182F288CE52635041E837C4993E1B554168D23FE2516350415232F1DA3C1B554185EB5138516350419A9999993B1B5541A1A035DA506350415EE06CE73A1B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>943320 - 3600453
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000003D0000003D0AD7833D6350413D0AD7E33A1B55411F85EB2143635041666666A6371B55417B14AE5745635041A4703D6A3B1B554114AE479145635041E17A144E3A1B5541AE47E16A5363504152B81E75401B554185EB510853635041713D0A073F1B554185EB5138516350419A9999993B1B55410AD7A3A04F6350415C8FC295381B55415C8FC2054F63504166666646351B5541EC51B81E476350419A9999D9311B55417B14AE2741635041333333C32F1B5541D7A370FD40635041F6285C6F331B55413D0AD7E33F63504185EB51B8311B5541EC51B8BE3E635041F6285CEF2F1B5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000020000000C79B00D94263504168D3E516371B5541506A2BDF436350413C4A91B8371B5541B74EE24646635041F799BB7C391B5541FA7B5B9B48635041717A12D73A1B554142A87CAC4A6350413AC734D13B1B554185D5F5004D6350414A82D2F13C1B554155DF65A24F635041C961D1083E1B55416B57516A526350411F8BEA4F3F1B5541A5B0B8325363504110F587A43F1B55413382D11A53635041B191BF4B3F1B554182F288CE52635041E837C4993E1B554168D23FE2516350415232F1DA3C1B554185EB5138516350419A9999993B1B5541A1A035DA506350415EE06CE73A1B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>924798 - 160293
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000120000009BF16CCF953B5141C4379CB4AE225541DB7652F3983B5141C69AD9B8B22255414A4E9A03A13B51414A8C8E94BE22554199DA6D4AA93B5141CFE688CDC72255413331E171AD3B51417B924B20CB225541FD1A0120B13B514187FDFB47CF22554170B423C2B23B51418722F2A0D02255418FC2F5D8B33B5141CDCCCC9CCD22554133333393B43B51413D0AD783CB22554100000090B43B514185EB5178C8225541F6285C8FB43B5141713D0A87C7225541A4703DFAAD3B514114AE4721C2225541713D0AA7A93B51418FC2F598BD225541CDCCCC5CA53B51411F85EB51B8225541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A0000001EC3D4DA953B514119940BA5AE2255419A9999C9883B5141A4703D7AC02255411F85EB01883B5141C3F5288CC0225541B81E852B873B514148E17A84C4225541AE47E19A833B5141295C8F42CD225541EC51B83E8F3B514100000060D52255411F85EB01933B51410AD7A310D822554148E17AF4953B5141CDCCCC2CDA225541D7A3703DA93B5141C3F528ECE722554152B81E15AA3B51417B14AEA7E822554197D2ACC6B23B51412B446576D0225541FD1A0120B13B514187FDFB47CF225541B145C151B03B514184461F5FCE225541C6DA1A66AF3B5141CECD1055CD225541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>924798 - 1384575
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000120000009BF16CCF953B5141C4379CB4AE225541DB7652F3983B5141C69AD9B8B22255414A4E9A03A13B51414A8C8E94BE22554199DA6D4AA93B5141CFE688CDC72255413331E171AD3B51417B924B20CB225541FD1A0120B13B514187FDFB47CF22554170B423C2B23B51418722F2A0D02255418FC2F5D8B33B5141CDCCCC9CCD22554133333393B43B51413D0AD783CB22554100000090B43B514185EB5178C8225541F6285C8FB43B5141713D0A87C7225541A4703DFAAD3B514114AE4721C2225541713D0AA7A93B51418FC2F598BD225541CDCCCC5CA53B51411F85EB51B8225541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000001F85EB01883B5141C3F5288CC0225541B81E852B873B514148E17A84C42255416B17529C833B514178E68041CD225541EC51B83E8F3B514100000060D52255411F85EB01933B51410AD7A310D822554148E17AF4953B5141CDCCCC2CDA225541D7A3703DA93B5141C3F528ECE722554152B81E15AA3B51417B14AEA7E822554194677FC4B23B51412D4B6A9AD02255414DEBBEFDB33B5141F89BBD32CD225541E192A78BB43B5141F53A9899CB225541447F328DB43B5141C03F4485C72255411C34AA75B13B5141C8623AFCC422554153D00856AD3B514181443275C1225541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>924798 - 3809554
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+010600000001000000010300000001000000120000009BF16CCF953B5141C4379CB4AE225541DB7652F3983B5141C69AD9B8B22255414A4E9A03A13B51414A8C8E94BE22554199DA6D4AA93B5141CFE688CDC72255413331E171AD3B51417B924B20CB225541FD1A0120B13B514187FDFB47CF22554170B423C2B23B51418722F2A0D02255418FC2F5D8B33B5141CDCCCC9CCD22554133333393B43B51413D0AD783CB22554100000090B43B514185EB5178C8225541F6285C8FB43B5141713D0A87C7225541A4703DFAAD3B514114AE4721C2225541713D0AA7A93B51418FC2F598BD225541CDCCCC5CA53B51411F85EB51B8225541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000150000001F85EB01883B5141C3F5288CC0225541B81E852B873B514148E17A84C42255416B17529C833B514178E68041CD225541EC51B83E8F3B514100000060D52255411F85EB01933B51410AD7A310D822554148E17AF4953B5141CDCCCC2CDA225541D7A3703DA93B5141C3F528ECE722554152B81E15AA3B51417B14AEA7E822554194677FC4B23B51412D4B6A9AD02255414DEBBEFDB33B5141F89BBD32CD225541E192A78BB43B5141F53A9899CB225541447F328DB43B5141C03F4485C72255411C34AA75B13B5141C8623AFCC422554153D00856AD3B514181443275C1225541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540694 - 3071168
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000012000000E7DF1E52336051417FD2314359535441FE37BE6537605141818E8EAB59535441BE667B74426051415AC9C47A5B53544103E43C6542605141FD4587185B535441F6285CEF60605141333333A360535441B81E85BB60605141713D0AB75B53544114AE475160605141CDCCCC8C49535441A4703D4A6060514100000010455354419A999999606051417B14AE973F535441E17A142E4D60514152B81E653A535441EC51B85E4060514148E17AA43653544152B81ED53F60514148E17A543A535441E17A140E3D6051410000006041535441295C8FA23B605141713D0AC744535441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000C2ED1C433D605141A1E0B9C15A535441DA91EA673360514187C5E80A595354416BCC5B7133605141058086F2585354411E69DC6D336051419682E1F158535441C3F5285C2A605141F6285C2F7053544185EB5118346051411F85EBA17253544148E17A94416051410AD7A350765354417B14AEA7446051410AD7A300775354410BD029A644605141A593CF18775354413A98C63D486051411DE3DEDD7753544185EB513848605141CDCCCCCC77535441C3F528CC43605141A4703DDA655354419AAB76DC43605141569784DD655354410E53E54D41605141DA48CD845B535441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>540694 - 3366587
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000012000000E7DF1E52336051417FD2314359535441FE37BE6537605141818E8EAB59535441BE667B74426051415AC9C47A5B53544103E43C6542605141FD4587185B535441F6285CEF60605141333333A360535441B81E85BB60605141713D0AB75B53544114AE475160605141CDCCCC8C49535441A4703D4A6060514100000010455354419A999999606051417B14AE973F535441E17A142E4D60514152B81E653A535441EC51B85E4060514148E17AA43653544152B81ED53F60514148E17A543A535441E17A140E3D6051410000006041535441295C8FA23B605141713D0AC744535441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000010000000C2ED1C433D605141A1E0B9C15A535441DA91EA673360514187C5E80A595354416BCC5B7133605141058086F2585354411E69DC6D336051419682E1F158535441C3F5285C2A605141F6285C2F7053544185EB5118346051411F85EBA17253544148E17A94416051410AD7A350765354417B14AEA7446051410AD7A300775354410BD029A644605141A593CF18775354413A98C63D486051411DE3DEDD7753544185EB513848605141CDCCCCCC77535441C3F528CC43605141A4703DDA655354419AAB76DC43605141569784DD655354410E53E54D41605141DA48CD845B535441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>952761 - 2976752
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D000000CDCCCC8C68F350417B14AEF7DD4B5441EC51B82E69F350417B14AEF7E14B5441AE47E1BA69F35041CDCCCC6CE54B54419A9999D96DF35041F6285C6FE44B5441713D0AA774F350415C8FC255E24B5441000000C076F350411F85EBD1E14B5441C3F5284C7EF35041EC51B80EE04B54418FC2F55884F35041C3F528DCDE4B5441587632E58CF3504111194324DD4B5441DE3120B598F35041E134FBF0DA4B5441EC51B8DEA1F35041AE47E13ADA4B544185EB51C8A8F35041713D0A27D94B5441713D0A67A9F35041E17A140ED94B5441C3F5283CA8F35041B81E858BD74B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000036000000C3F528FCB1F350415C8FC295024C5441D7A3700DB2F35041C3F5288C024C5441B599FE39B0F35041A72D7AB6FA4B5441911F9BECAFF350414A0F0478F84B54416E30DA4EAFF35041AB28515DF44B544112F4BEDDAEF35041308B4E78EB4B54414FCCBB60AEF350412B13A3E9E14B5441F611D0ADADF35041809FFFC2DF4B5441ADB11EB4ACF35041FCB05F16DE4B54413B53BCA4AAF3504170E774C8DA4B544119CCE766A9F35041DCEEE70DD94B5441E9DC86DBA6F350418AEADA73D94B544121B1672EA2F35041857C752EDA4B54416B43217AA0F3504164649056DA4B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>952761 - 5248540
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001D000000CDCCCC8C68F350417B14AEF7DD4B5441EC51B82E69F350417B14AEF7E14B5441AE47E1BA69F35041CDCCCC6CE54B54419A9999D96DF35041F6285C6FE44B5441713D0AA774F350415C8FC255E24B5441000000C076F350411F85EBD1E14B5441C3F5284C7EF35041EC51B80EE04B54418FC2F55884F35041C3F528DCDE4B5441587632E58CF3504111194324DD4B5441DE3120B598F35041E134FBF0DA4B5441EC51B8DEA1F35041AE47E13ADA4B544185EB51C8A8F35041713D0A27D94B5441713D0A67A9F35041E17A140ED94B5441C3F5283CA8F35041B81E858BD74B5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000036000000C3F528FCB1F350415C8FC295024C5441D7A3700DB2F35041C3F5288C024C5441B599FE39B0F35041A72D7AB6FA4B5441911F9BECAFF350414A0F0478F84B54416E30DA4EAFF35041AB28515DF44B544112F4BEDDAEF35041308B4E78EB4B54414FCCBB60AEF350412B13A3E9E14B5441F611D0ADADF35041809FFFC2DF4B5441ADB11EB4ACF35041FCB05F16DE4B54413B53BCA4AAF3504170E774C8DA4B544119CCE766A9F35041DCEEE70DD94B5441E9DC86DBA6F350418AEADA73D94B544121B1672EA2F35041857C752EDA4B54416B43217AA0F3504164649056DA4B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>663590 - 1232725
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000030000003F0000005C8FC2B5C373514100000090C4B75441333333E3C17351413D0AD7D3C8B7544148E17AF4BE7351411F85EBA1CCB754417B14AE37BB735141AE47E1BAD2B7544185EB51F8B973514114AE4791D4B754415C8FC215B6735141AE47E1FAD9B7544114AE4781AE735141333333D3E4B75441EC51B82EA97351410AD7A3C0ECB754415C8FC235A8735141E17A140EEEB754418FC2F5C8A173514152B81EA5F6B754413D0AD7F3A573514185EB5198F8B7544185EB5178A6735141713D0AB7F7B75441713D0A47A973514114AE4731F4B75441F6285C7FAB7351418FC2F548F2B75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000053000000713D0AA7C5735141F6285CCFD1B75441264BE049C8735141DE502236CEB75441043AEC7FCA7351412AF76A31CBB75441671E8AFACB7351410960AF58C9B75441564CC62DD073514129E573F0C3B75441CD7FEC2FDB7351413ED4A0D9B6B75441E9A16A2FDD735141D994F866B4B75441C9174EE6DA735141C9468C30B7B754417E421354E173514119A9712FAFB754414124C9B4E27351415789F5F1ACB75441F81A1510E373514114620B10ACB7544192F04184E37351415905D6A4ABB7544106270782E4735141373677D3AAB7544147369946E57351410BD77E8BAAB75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>663590 - 3566215
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000030000003F0000005C8FC2B5C373514100000090C4B75441333333E3C17351413D0AD7D3C8B7544148E17AF4BE7351411F85EBA1CCB754417B14AE37BB735141AE47E1BAD2B7544185EB51F8B973514114AE4791D4B754415C8FC215B6735141AE47E1FAD9B7544114AE4781AE735141333333D3E4B75441EC51B82EA97351410AD7A3C0ECB754415C8FC235A8735141E17A140EEEB754418FC2F5C8A173514152B81EA5F6B754413D0AD7F3A573514185EB5198F8B7544185EB5178A6735141713D0AB7F7B75441713D0A47A973514114AE4731F4B75441F6285C7FAB7351418FC2F548F2B75441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000053000000713D0AA7C5735141F6285CCFD1B75441264BE049C8735141DE502236CEB75441043AEC7FCA7351412AF76A31CBB75441671E8AFACB7351410960AF58C9B75441564CC62DD073514129E573F0C3B75441CD7FEC2FDB7351413ED4A0D9B6B75441E9A16A2FDD735141D994F866B4B75441C9174EE6DA735141C9468C30B7B754417E421354E173514119A9712FAFB754414124C9B4E27351415789F5F1ACB75441F81A1510E373514114620B10ACB7544192F04184E37351415905D6A4ABB7544106270782E4735141373677D3AAB7544147369946E57351410BD77E8BAAB75441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>664029 - 58966
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000300000001030000000100000021000000713D0A079C2A5141AE47E1CABE2E544152B81E35A22A5141000000C0C42E5441295C8F52A72A5141B81E855BC52E5441713D0A37A82A5141F6285CDFC12E5441F6285C8FA22A5141C3F5284CC12E5441713D0A179D2A5141E17A14CEBD2E544100000030A02A5141E17A14EEBA2E5441A4703DCA992A5141C3F5281CB42E5441C3F5287C962A5141A4703D3AB12E54411F85EB91952A514185EB5158AE2E54415C8FC205942A514185EB51F8A12E54417B14AE07862A5141666666269B2E54417B14AE17832A5141B81E85DB9A2E5441CDCCCC3C852A5141F6285CFF9C2E5441 [...]
+</a>
+
+<b>
+0106000000030000000103000000010000003B000000243FDC376E2A514125D4A82D5B2F5441BFE624326F2A51414C7222645D2F5441D6A09CA3752A5141ED46CF31672F5441B81E85DB752A5141EC51B87E672F54415C8FC235762A51417B14AEB7672F5441295C8F12772A51410AD7A3C0672F5441666666A6782A5141CDCCCCFC672F54413D0AD7037B2A514152B81E25682F544152B81E057D2A514114AE4761682F5441A4703D8A7E2A514185EB51C8682F54413D0AD713802A5141E17A148E692F5441D7A3700D812A5141B81E854B6A2F54415C8FC2E5812A5141713D0A476B2F54418FC2F568822A51410AD7A3E06B2F5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>669909 - 3451874
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000B00000066666686BBE65041295C8F32260D5541666666D6BBE6504114AE47E12A0D55415C8FC205BDE650410AD7A3502E0D5541295C8F02C9E65041F6285C2F330D5541CDCCCCCCE0E65041CDCCCC7C3C0D5541C3F528DCE2E65041CDCCCC5C3C0D5541A4703D1AEAE65041E17A141E370D5541B81E858BF0E65041333333F32E0D55410AD7A3A0D0E6504148E17AF41E0D55415C8FC2C5BDE650415C8FC2051A0D554166666686BBE65041295C8F32260D5541
+</a>
+
+<b>
+0106000000010000000103000000010000001300000075280F88BBE65041F3639229260D5541B52DB186BBE650417BD7EF36260D5541666666D6BBE6504114AE47E12A0D55413B6A7292BCE6504163C960022D0D554177BE9FBABDE65041F4FDD4782E0D554167F4BD5FBEE65041DD8B32DD2E0D5541C3BF2B71C4E65041F7BD4954310D5541D578E92EC8E65041B07268A1320D554196438B8CD3E6504137894148370D55413B03FDF2D4E650410F7980DA370D5541CDCCCCCCE0E65041CDCCCC7C3C0D5541C3042D89E2E65041C6DFD5613C0D55418D976EA2E7E650417D3F35CE380D5541EB4CB3AAEBE650415B226522350D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>143943 - 1584057
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000012000000073271A2DDF35041CAA63FC473BF5441AE47E19ADDF3504152B81EC573BF544119980AE2D9F35041E113BA9B74BF5441299A5A46DAF3504140BBF7367ABF54416BB8597FDDF35041E90BC2B39BBF544146A738DBE0F350411919A6409CBF5441713D0AF7E9F35041EC51B8BE9DBF54418FC2F598F4F35041D7A3706D9FBF54411F85EB41FEF3504114AE4791A0BF54417B14AEC703F450413D0AD703A1BF5441CDCCCC4C11F45041000000E09EBF5441AE47E19A0DF45041F6285C1F73BF54415C8FC27508F45041333333F373BF5441A4703D5A00F45041C3F5288C74BF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000731312B2DDF35041A58188F573BF5441AE47E19ADDF3504152B81EC573BF54417D3F3506DBF3504179E9265974BF54418F013286DBF3504146170D177ABF54411A576D8BDBF3504111F922537ABF5441ACF9EB93DBF35041FE0DB2B47ABF5441B0726869DEF350415839B4409BBF54413A35648AE1F350411A1C4AD19BBF5441A122CBC7E9F35041704F705D9DBF544149141081F4F35041C8384A229FBF5441395E33E0FDF3504102A62424A0BF5441705F25AE03F4504128DCFF3FA0BF54419EEFA7FE08F450410E2DB23DA0BF54415EBA490C11F45041508D97469FBF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>143943 - 3354273
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000100000012000000073271A2DDF35041CAA63FC473BF5441AE47E19ADDF3504152B81EC573BF544119980AE2D9F35041E113BA9B74BF5441299A5A46DAF3504140BBF7367ABF54416BB8597FDDF35041E90BC2B39BBF544146A738DBE0F350411919A6409CBF5441713D0AF7E9F35041EC51B8BE9DBF54418FC2F598F4F35041D7A3706D9FBF54411F85EB41FEF3504114AE4791A0BF54417B14AEC703F450413D0AD703A1BF5441CDCCCC4C11F45041000000E09EBF5441AE47E19A0DF45041F6285C1F73BF54415C8FC27508F45041333333F373BF5441A4703D5A00F45041C3F5288C74BF5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001E000000731312B2DDF35041A58188F573BF5441AE47E19ADDF3504152B81EC573BF54417D3F3506DBF3504179E9265974BF54418F013286DBF3504146170D177ABF54411A576D8BDBF3504111F922537ABF5441ACF9EB93DBF35041FE0DB2B47ABF5441B0726869DEF350415839B4409BBF54413A35648AE1F350411A1C4AD19BBF5441A122CBC7E9F35041704F705D9DBF544149141081F4F35041C8384A229FBF5441395E33E0FDF3504102A62424A0BF5441705F25AE03F4504128DCFF3FA0BF54419EEFA7FE08F450410E2DB23DA0BF54415EBA490C11F45041508D97469FBF5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>533018 - 3899164
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001B000000821C2D5169255141BC936321744C5441C1F7444268255141A85D24D76C4C5441AA4C27CA65255141BFCCBD335D4C5441666666F666255141A4703DDA5C4C5441F6285CAF6C25514114AE47E1594C5441295C8FC27E255141E17A140E534C5441EC51B88E7F255141000000B0514C54415C8FC2F57E25514152B81E754C4C5441F6285C6F722551415C8FC205514C5441F6285CFF632551411F85EB11574C54415C8FC2C5542551417B14AEA75D4C5441D7A3709D42255141CDCCCCBC654C544152B81EB541255141AE47E19A694C54419A99990940255141A4703D7A714C5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000260000004C21DD307E255141560AE2BC4C4C54418F68E7F47E2551412AF2F9744C4C5441AC7A50377E255141B89369EF454C5441C05CA8787D2551411D53DC713F4C54410627076B7D255141ED399FFB3E4C544133F7311A7D255141AD74F14F3D4C544152FD39877C255141439F7A463A4C544192A66C047C25514147D19E80374C5441F3F50AD472255141809DD91C3B4C5441F0C59149722551410142987E3A4C5441CD2040406A2551411EB9FFE43D4C5441DA34FC7B5A2551416EC25A6E444C5441761E77F1492551418404B0164B4C5441A5A362C343255141F5185E3E654C5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>665965 - 3133680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000016000000D7A3709D7A655141E17A148EC6625441A4703D5A7465514185EB51D8C9625441E17A14AE6A6551417B14AEE7CE6254413D0AD7E35B65514152B81EA5D6625441C3F5281C54655141000000D0DA625441295C8F624A6551418FC2F5E8DF625441E17A146E39655141295C8FE2E86254415C8FC2D526655141A4703DBAF2625441E17A146E0F655141E17A141EFF625441C3F5283C0C6551419A9999C905635441EC51B83E0A655141EC51B87E0C635441295C8F5208655141F6285CCF14635441C3F5288C1A655141713D0A270B635441B81E85FB2D655141CDCCCCDC00635441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001200000050D56DFF086551411AA35494116354418CC22AA208655141C7BF8BC813635441B0A0C78F08655141EE5CEBAE146354416114BCE9136551412AD60AAB0E635441489A12B61B6551415CD94E890A635441F8FB67FE20655141382A4EBD07635441EE3091032E655141F12B88D80063544145CF10F933655141B3A66EAFFD62544124D203294165514180FAEDB0F6625441A6D9593C476551413E06AD78F3625441B62E56854D655141E88BFD23F06254412818BD8F54655141B3DABC66EC625441DA8B0DAD526551417F30EE55EA625441D7985C7D3B655141F60ED90CF7625441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>666340 - 3088417
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000F6285C9F014E5141C3F5285C85C5544114AE4751FB4D5141D7A370DD7FC55441C3F528FCF84D514185EB51F881C554417B14AE67F64D5141D7A370AD84C554413D0AD763F44D51410AD7A35086C55441EC51B8CEF14D514148E17A5488C554419A999929EF4D51417B14AE078AC554410AD7A330EB4D5141000000408CC554418FC2F5F8EF4D51416666660694C55441EC51B86EF64D5141666666869EC55441CDCCCC7C064E5141AE47E1DA8DC5544148E17A04094E5141000000D08BC55441F6285C9F014E5141C3F5285C85C55441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000028DE19D0FF4D51410C8ED36988C554412BB165C2FF4D51416352D87688C554417FC9CC83FB4D5141484767278CC55441C4201DD0F74D51419F84355F8FC554416DCB833EF44D5141CB20627992C5544169E03E4BF34D5141C445DA4C93C55441273DAC56F14D5141EC25483294C5544177CE1986F04D5141CDEBB58594C554411E45EF4AF04D51419EF9A38B94C55441420CBFB2F24D51417E15707498C554415E814982F54D5141325C12069DC55441EC51B86EF64D5141666666869EC55441850AA672FB4D5141041A4A5199C55441A19995A4FE4D51415FA0050096C55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>666340 - 3434060
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000D000000F6285C9F014E5141C3F5285C85C5544114AE4751FB4D5141D7A370DD7FC55441C3F528FCF84D514185EB51F881C554417B14AE67F64D5141D7A370AD84C554413D0AD763F44D51410AD7A35086C55441EC51B8CEF14D514148E17A5488C554419A999929EF4D51417B14AE078AC554410AD7A330EB4D5141000000408CC554418FC2F5F8EF4D51416666660694C55441EC51B86EF64D5141666666869EC55441CDCCCC7C064E5141AE47E1DA8DC5544148E17A04094E5141000000D08BC55441F6285C9F014E5141C3F5285C85C55441
+</a>
+
+<b>
+0106000000010000000103000000010000001A00000028DE19D0FF4D51410C8ED36988C554412BB165C2FF4D51416352D87688C554417FC9CC83FB4D5141484767278CC55441C4201DD0F74D51419F84355F8FC554416DCB833EF44D5141CB20627992C5544169E03E4BF34D5141C445DA4C93C55441273DAC56F14D5141EC25483294C5544177CE1986F04D5141CDEBB58594C554411E45EF4AF04D51419EF9A38B94C55441420CBFB2F24D51417E15707498C554415E814982F54D5141325C12069DC55441EC51B86EF64D5141666666869EC55441850AA672FB4D5141041A4A5199C55441A19995A4FE4D51415FA0050096C55441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>666566 - 3086560
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+010600000001000000010300000001000000190000001F85EB710F51514185EB51C835C354410AD7A3A01A5151416666664638C354415C8FC2751B515141A4703DFA37C354418FC2F5082D515141D7A370BD31C35441CDCCCC1C3B51514148E17A4421C35441AE47E14A44515141F6285CAF15C35441295C8F024C515141EC51B87E0DC354415C8FC2E5525151411F85EB7105C3544166666606515151419A9999D903C354411F85EBB14F51514114AE47B102C35441333333134E5151418FC2F58801C3544148E17A744C515141E17A14BEFFC254410AD7A3104B515141F6285C1FFEC25441AE47E1CA49515141E17A149EFCC25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000ACBE09F00E5151416669CD0134C354413DC254E31A51514196DB00C936C354410B41FB271D515141EFAB216037C354418FC2F5082D515141D7A370BD31C35441CDCCCC1C3B51514148E17A4421C35441810BDFD43F515141F37D3E501BC3544192E155773B515141912DE4A21CC354412556F10E2C51514187178A2B22C3544194D758E616515141016B11332AC35441A4E96A2C0D515141DC0F5FD52DC35441ACBE09F00E5151416669CD0134C35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>666566 - 3409015
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+010600000001000000010300000001000000190000001F85EB710F51514185EB51C835C354410AD7A3A01A5151416666664638C354415C8FC2751B515141A4703DFA37C354418FC2F5082D515141D7A370BD31C35441CDCCCC1C3B51514148E17A4421C35441AE47E14A44515141F6285CAF15C35441295C8F024C515141EC51B87E0DC354415C8FC2E5525151411F85EB7105C3544166666606515151419A9999D903C354411F85EBB14F51514114AE47B102C35441333333134E5151418FC2F58801C3544148E17A744C515141E17A14BEFFC254410AD7A3104B515141F6285C1FFEC25441AE47E1CA49515141E17A149EFCC25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000B000000ACBE09F00E5151416669CD0134C354413DC254E31A51514196DB00C936C354410B41FB271D515141EFAB216037C354418FC2F5082D515141D7A370BD31C35441CDCCCC1C3B51514148E17A4421C35441810BDFD43F515141F37D3E501BC3544192E155773B515141912DE4A21CC354412556F10E2C51514187178A2B22C3544194D758E616515141016B11332AC35441A4E96A2C0D515141DC0F5FD52DC35441ACBE09F00E5151416669CD0134C35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>668082 - 35103
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001400000048E17AD42533514100000040E02955410AD7A34023335141000000C0DD2955418FC2F5781D33514100000050D5295541B81E85DB1A335141295C8F72D129554152B81E0517335141CDCCCC7CD5295541E17A146E0C33514133333363E32955418FC2F5C81D3351413D0AD783F62955418FC2F5082E33514185EB5168082A5541D7A370CD3D3351415C8FC265172A55415C8FC2854333514152B81EB50B2A55413D0AD7E33D33514133333363072A5541D7A3703D3E335141B81E85AB062A5541E17A14EE423351418FC2F578FE29554133333313423351415C8FC225FE295541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000390000000B44FA1032335141F716C8C4EE29554117E02A24313351410D507240EE2955418FC2F5E830335141F6285C1FEE29554110871291303351416A1DD1D7ED295541FEF5911C303351419307FB78ED29554192DB94BF2D335141BF74808CEB295541B4A0B9FE2B335141A98C1E1FEA2955414A95F5802B335141B002BEB8E92955417D88A8052A33514155DDFA83E82955415B99DBB5283351413CD9A072E7295541CCC67B4527335141A8BAC246E6295541A8660B43273351410578C644E6295541255A084027335141E5CF5242E629554185AA1FB926335141451871E7E6295541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>668082 - 74637
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000001400000048E17AD42533514100000040E02955410AD7A34023335141000000C0DD2955418FC2F5781D33514100000050D5295541B81E85DB1A335141295C8F72D129554152B81E0517335141CDCCCC7CD5295541E17A146E0C33514133333363E32955418FC2F5C81D3351413D0AD783F62955418FC2F5082E33514185EB5168082A5541D7A370CD3D3351415C8FC265172A55415C8FC2854333514152B81EB50B2A55413D0AD7E33D33514133333363072A5541D7A3703D3E335141B81E85AB062A5541E17A14EE423351418FC2F578FE29554133333313423351415C8FC225FE295541 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000390000000B44FA1032335141F716C8C4EE29554117E02A24313351410D507240EE2955418FC2F5E830335141F6285C1FEE29554110871291303351416A1DD1D7ED295541FEF5911C303351419307FB78ED29554192DB94BF2D335141BF74808CEB295541B4A0B9FE2B335141A98C1E1FEA2955414A95F5802B335141B002BEB8E92955417D88A8052A33514155DDFA83E82955415B99DBB5283351413CD9A072E7295541CCC67B4527335141A8BAC246E6295541A8660B43273351410578C644E6295541255A084027335141E5CF5242E629554185AA1FB926335141451871E7E6295541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>974054 - 690719
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000214421E40B8050411BA82D6C8B1D544128FF1BE60F805041CF8EA0B38E1D5441DE9677C31480504145CD2D3B921D5441AE8B0B1018805041D45DAF6D941D5441CEBE8534188050412323A227941D544192DEBBC8188050413E5AFF0A931D544121618FA31B805041D60E2D9E941D5441773156311C805041ACFF63EC941D5441A0021D821C805041BF377396941D5441D357ADEB1F8050412070DA918F1D5441E38CE0F824805041A25E2B19911D5441CF0B6BE42C8050411502E003861D5441AF4B6FA131805041EBE23DF77C1D5441ABCADCB02D80504174CD6DEC7A1D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000009000000713D0AE713805041EC51B80E9B1D5441333333831680504114AE47C1971D5441295C8F1218805041F6285C6F941D5441A4703DEA1280504100000000911D54415C8FC2950F805041666666768E1D5441F6285CAF0D805041666666E68C1D544152B81ED509805041C3F5286C921D54418FC2F5F80E80504148E17AD4961D5441713D0AE713805041EC51B80E9B1D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>974054 - 1818647
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000214421E40B8050411BA82D6C8B1D544128FF1BE60F805041CF8EA0B38E1D5441DE9677C31480504145CD2D3B921D5441AE8B0B1018805041D45DAF6D941D5441CEBE8534188050412323A227941D544192DEBBC8188050413E5AFF0A931D544121618FA31B805041D60E2D9E941D5441773156311C805041ACFF63EC941D5441A0021D821C805041BF377396941D5441D357ADEB1F8050412070DA918F1D5441E38CE0F824805041A25E2B19911D5441CF0B6BE42C8050411502E003861D5441AF4B6FA131805041EBE23DF77C1D5441ABCADCB02D80504174CD6DEC7A1D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000009000000713D0AE713805041EC51B80E9B1D5441333333831680504114AE47C1971D5441295C8F1218805041F6285C6F941D5441A4703DEA1280504100000000911D54415C8FC2950F805041666666768E1D5441F6285CAF0D805041666666E68C1D544152B81ED509805041C3F5286C921D54418FC2F5F80E80504148E17AD4961D5441713D0AE713805041EC51B80E9B1D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>974054 - 4449580
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000001A000000214421E40B8050411BA82D6C8B1D544128FF1BE60F805041CF8EA0B38E1D5441DE9677C31480504145CD2D3B921D5441AE8B0B1018805041D45DAF6D941D5441CEBE8534188050412323A227941D544192DEBBC8188050413E5AFF0A931D544121618FA31B805041D60E2D9E941D5441773156311C805041ACFF63EC941D5441A0021D821C805041BF377396941D5441D357ADEB1F8050412070DA918F1D5441E38CE0F824805041A25E2B19911D5441CF0B6BE42C8050411502E003861D5441AF4B6FA131805041EBE23DF77C1D5441ABCADCB02D80504174CD6DEC7A1D5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000009000000713D0AE713805041EC51B80E9B1D5441333333831680504114AE47C1971D5441295C8F1218805041F6285C6F941D5441A4703DEA1280504100000000911D54415C8FC2950F805041666666768E1D5441F6285CAF0D805041666666E68C1D544152B81ED509805041C3F5286C921D54418FC2F5F80E80504148E17AD4961D5441713D0AE713805041EC51B80E9B1D5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>670277 - 978753
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000E000000713D0A975FD25041E17A145E661B5541D7A3705D63D2504133333353591B5541D7A3704D60D25041A4703D4A581B55418FC2F5E858D2504100000020561B55413D0AD76352D25041C3F5283C541B5541295C8F424AD25041D7A370ED531B55418FC2F53843D250417B14AE47541B55417B14AE073CD250413D0AD7A3541B5541A4703D7A3BD2504185EB51B8541B55419A9999A93ED250419A999999671B55416666661641D25041333333836F1B554148E17A645FD250418FC2F5686D1B5541CDCCCC4C5FD250410AD7A390691B5541713D0A975FD25041E17A145E661B5541
+</a>
+
+<b>
+01060000000100000001030000000100000021000000C51755515FD2504127640A4D6A1B55416265EA3D5FD250416861354E6A1B5541CDCCCC4C5FD250410AD7A390691B5541E31755515FD2504107640A4D6A1B5541393434146DD250419D772379691B5541B793B04A7AD250419D772379691B5541A6D6A1947CD25041643A815E691B554142F698DF7DD2504197B836C1691B55417078C18282D25041DBDB79836A1B5541AC9425A688D25041E0022E736B1B5541DF6221EA8CD25041A7C58B586B1B5541FAA982B08ED25041E872EE056B1B5541C3F5286C8FD250418FC2F5C8691B5541AE47E1EA8FD25041713D0A27631B5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>672356 - 5219058
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000C000000D7A370CD12CC5041F6285C1F74155541A4703DAA0DCC50417B14AED764155541713D0AD7F4CB50417B14AEC7671555410AD7A3B0DBCB504114AE47C16A155541A4703D1AE1CB5041D7A370FD79155541666666C6E4CB504148E17A5484155541A4703D1AE6CB50417B14AE2785155541F6285C9FFFCB5041E17A141E821555415C8FC2750DCC50419A9999897F1555419A99999912CC504185EB51187D1555415C8FC21515CC5041A4703DFA7A155541D7A370CD12CC5041F6285C1F74155541
+</a>
+
+<b>
+0106000000010000000103000000010000000A000000C9E91CEBE4CB50416B9F14118515554189684376F0CB5041015906EC83155541CA47953A01CC50412A5268D1811555419A9487A10DCC504184799F7C7F155541F405C48912CC5041437B052B7D155541B32EFE1C15CC50418DDCB8F27A1555418C41D18313CC5041E3D8A00574155541C7CAC60BE1CB50419E7FBAD4791555414788F212E1CB50415BB4E9E879155541C9E91CEBE4CB50416B9F141185155541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>672539 - 3182172
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000001A0000008FC2F5B8E1C65041AE47E18ACA0A5541CDCCCC6CDEC6504152B81EE5CD0A55410AD7A3E0DFC65041713D0A47CF0A5541C3F5281CDEC65041B81E858BD10A55413D0AD7F3E0C65041295C8FE2D30A5541666666A6E1C650418FC2F5F8D40A5541F6285C1FE4C650415C8FC265D20A5541CDCCCCACEBC650410AD7A340CE0A5541D7A3700DF1C6504152B81E25CA0A554100000040F7C6504114AE47D1C60A5541D7A3703DFCC65041EC51B84EC80A5541EC51B87EFDC65041666666C6C90A5541000000D001C750415C8FC215C80A5541A4703D8A04C750411F85EBD1C80A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000008000000174DE8B4DAC650413D2B8220D40A554166666676D9C6504114AE47F1D20A5541B81E85DBD6C650417B14AE97D50A55419A999949D6C650411F85EBD1D60A554114AE4791D8C650413D0AD753D80A5541EC51B87EDBC650410AD7A3E0D40A554163613E7BDBC650415B9754DDD40A5541174DE8B4DAC650413D2B8220D40A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>672539 - 3276826
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000020000000103000000010000001A0000008FC2F5B8E1C65041AE47E18ACA0A5541CDCCCC6CDEC6504152B81EE5CD0A55410AD7A3E0DFC65041713D0A47CF0A5541C3F5281CDEC65041B81E858BD10A55413D0AD7F3E0C65041295C8FE2D30A5541666666A6E1C650418FC2F5F8D40A5541F6285C1FE4C650415C8FC265D20A5541CDCCCCACEBC650410AD7A340CE0A5541D7A3700DF1C6504152B81E25CA0A554100000040F7C6504114AE47D1C60A5541D7A3703DFCC65041EC51B84EC80A5541EC51B87EFDC65041666666C6C90A5541000000D001C750415C8FC215C80A5541A4703D8A04C750411F85EBD1C80A5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000008000000174DE8B4DAC650413D2B8220D40A554166666676D9C6504114AE47F1D20A5541B81E85DBD6C650417B14AE97D50A55419A999949D6C650411F85EBD1D60A554114AE4791D8C650413D0AD753D80A5541EC51B87EDBC650410AD7A3E0D40A554163613E7BDBC650415B9754DDD40A5541174DE8B4DAC650413D2B8220D40A5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>672539 - 52912
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000020000000103000000010000001A0000008FC2F5B8E1C65041AE47E18ACA0A5541CDCCCC6CDEC6504152B81EE5CD0A55410AD7A3E0DFC65041713D0A47CF0A5541C3F5281CDEC65041B81E858BD10A55413D0AD7F3E0C65041295C8FE2D30A5541666666A6E1C650418FC2F5F8D40A5541F6285C1FE4C650415C8FC265D20A5541CDCCCCACEBC650410AD7A340CE0A5541D7A3700DF1C6504152B81E25CA0A554100000040F7C6504114AE47D1C60A5541D7A3703DFCC65041EC51B84EC80A5541EC51B87EFDC65041666666C6C90A5541000000D001C750415C8FC215C80A5541A4703D8A04C750411F85EBD1C80A5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000002D000000F6285CAF16C75041EC51B8AEBC0A55410A74BB0E1AC75041CD644FC9BA0A55417EE36D5617C75041DCB1E056B60A55413CAF083117C75041EB12001BB60A5541AE0821E316C750416649429EB50A55412C6F5E9816C75041458C8D26B50A554190BFB48916C75041B524130FB50A55412ACF2D4316C75041FE8F259EB40A55417BF83A2B16C7504107DCCC77B40A5541F525220216C7504159E9FE35B40A5541DD07225C11C750419079AED5AC0A55411BBB256E10C750412343940DAD0A5541A44EFE870FC75041A7798356AD0A55411B256BF50CC7504113463627AE0A5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>673557 - 110567
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001900000052B81E5555E9504148E17A44EB0D5541000000F054E95041EC51B86EED0D55411F85EB4157E9504114AE4771EC0D5541CDCCCCFC5FE95041713D0AE7EB0D5541333333936CE95041D7A3701DEB0D5541295C8F827AE95041F6285CFFE90D5541D7A370ED7BE95041F6285CFFE70D554152B81ED581E950419A9999C9DD0D5541AE47E18A81E95041AE47E1DADC0D5541295C8F9275E95041295C8F02DE0D5541333333D36BE9504148E17A54DF0D5541EC51B8DE5CE95041CDCCCCECE10D55413D0AD72357E950413D0AD7A3E40D5541E17A148E53E950410AD7A3A0E60D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000AAA11E3357E950417C7D9877EC0D55411F85EB4157E9504114AE4771EC0D5541CDCCCCFC5FE95041713D0AE7EB0D5541333333936CE95041D7A3701DEB0D5541295C8F827AE95041F6285CFFE90D5541D7A370ED7BE95041F6285CFFE70D554152B81ED581E950419A9999C9DD0D5541AE47E18A81E95041AE47E1DADC0D5541295C8F9275E95041295C8F02DE0D5541333333D36BE9504148E17A54DF0D5541EC51B8DE5CE95041CDCCCCECE10D55413D0AD72357E950413D0AD7A3E40D5541E17A148E53E950410AD7A3A0E60D55416666667642E95041AE47E16AE70D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>673557 - 295643
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 4  </desc>
+<a>
+0106000000010000000103000000010000001900000052B81E5555E9504148E17A44EB0D5541000000F054E95041EC51B86EED0D55411F85EB4157E9504114AE4771EC0D5541CDCCCCFC5FE95041713D0AE7EB0D5541333333936CE95041D7A3701DEB0D5541295C8F827AE95041F6285CFFE90D5541D7A370ED7BE95041F6285CFFE70D554152B81ED581E950419A9999C9DD0D5541AE47E18A81E95041AE47E1DADC0D5541295C8F9275E95041295C8F02DE0D5541333333D36BE9504148E17A54DF0D5541EC51B8DE5CE95041CDCCCCECE10D55413D0AD72357E950413D0AD7A3E40D5541E17A148E53E950410AD7A3A0E60D5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001A000000AAA11E3357E950417C7D9877EC0D55411F85EB4157E9504114AE4771EC0D5541CDCCCCFC5FE95041713D0AE7EB0D5541333333936CE95041D7A3701DEB0D5541295C8F827AE95041F6285CFFE90D5541D7A370ED7BE95041F6285CFFE70D554152B81ED581E950419A9999C9DD0D5541AE47E18A81E95041AE47E1DADC0D5541295C8F9275E95041295C8F02DE0D5541333333D36BE9504148E17A54DF0D5541EC51B8DE5CE95041CDCCCCECE10D55413D0AD72357E950413D0AD7A3E40D5541E17A148E53E950410AD7A3A0E60D55416666667642E95041AE47E16AE70D5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>676058 - 244388
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000130000009A999929CBEA504114AE47810F1155411F85EB11C5EA5041000000700B1155410AD7A3A0C0EA5041EC51B88E08115541A4703D0ABDEA5041295C8F9206115541B81E854BBAEA5041CDCCCC8C0D115541CDCCCCDCC3EA5041A4703D8A14115541333333D3CBEA5041CDCCCC8C19115541A4703D2AD2EA50415C8FC2651C11554133333373D4EA5041EC51B81E17115541333333E3D3EA504185EB51481511554185EB51E8CCEA50418FC2F5A810115541E17A14FECBEA5041C3F5280C1211554148E17A14CDEA5041F6285CCF12115541295C8FC2CBEA50419A9999B914115541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000039000000A4703D2ADDEA5041B81E852B23115541B8CB1B23DDEA5041FBA9965D231155416ED8380DDDEA5041668DF400241155416F35C4DCDEEA50419E84ED3524115541E32935B4DFEA504181146B4D241155419A9999A9E2EA5041000000A0241155414E488A24E8EA5041D4E79509251155417B14AE07ECEA504148E17A542511554185EB5138F0EA50411F85EBD1241155413D0AD7A3F3EA5041A4703D1A231155413D222AA6F3EA5041DA192A1A23115541C987897CF7EA5041F6EFFABA231155418ADAA661F9EA5041B8612B0A24115541919E44D4F9EA50415214E11C24115541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>676058 - 392024
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+010600000002000000010300000001000000130000009A999929CBEA504114AE47810F1155411F85EB11C5EA5041000000700B1155410AD7A3A0C0EA5041EC51B88E08115541A4703D0ABDEA5041295C8F9206115541B81E854BBAEA5041CDCCCC8C0D115541CDCCCCDCC3EA5041A4703D8A14115541333333D3CBEA5041CDCCCC8C19115541A4703D2AD2EA50415C8FC2651C11554133333373D4EA5041EC51B81E17115541333333E3D3EA504185EB51481511554185EB51E8CCEA50418FC2F5A810115541E17A14FECBEA5041C3F5280C1211554148E17A14CDEA5041F6285CCF12115541295C8FC2CBEA50419A9999B914115541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000039000000A4703D2ADDEA5041B81E852B23115541B8CB1B23DDEA5041FBA9965D231155416ED8380DDDEA5041668DF400241155416F35C4DCDEEA50419E84ED3524115541E32935B4DFEA504181146B4D241155419A9999A9E2EA5041000000A0241155414E488A24E8EA5041D4E79509251155417B14AE07ECEA504148E17A542511554185EB5138F0EA50411F85EBD1241155413D0AD7A3F3EA5041A4703D1A231155413D222AA6F3EA5041DA192A1A23115541C987897CF7EA5041F6EFFABA231155418ADAA661F9EA5041B8612B0A24115541919E44D4F9EA50415214E11C24115541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>690199 - 236460
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000700000014AE4781D57E5041000000A0021F5441666666E6C57E5041AE47E19AED1E5441D7A370FDC47E504152B81E05EE1E5441713D0A77C07E50413D0AD7A3F01E54417B14AEC7BE7E5041AE47E1DAF11E5441D7A3706DD37E5041A4703DCA0A1F544114AE4781D57E5041000000A0021F5441
+</a>
+
+<b>
+01060000000100000001030000000100000013000000D7A370FDC47E504152B81E05EE1E54419E057377C07E5041E55E9AA3F01E544135E10977C07E50414B5BD8A3F01E544119FDAEC7BE7E5041971DE2DAF11E5441602B9732C17E5041F6044FC6F41E5441BE8E706DD37E504123573DCA0A1F54413A7F4781D57E5041E4C0FF9F021F5441AF435780D57E5041C028BC9E021F5441D7B50580D57E5041374E4E9E021F544148E19B67D57E50410FC26B7D021F5441470D5754D57E5041CE377763021F54415B5A114ED57E5041BB55045B021F5441FAAA4744D57E5041AA2AD54D021F5441466155E1D27E50412CA2E216FF1E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>690199 - 397565
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000700000014AE4781D57E5041000000A0021F5441666666E6C57E5041AE47E19AED1E5441D7A370FDC47E504152B81E05EE1E5441713D0A77C07E50413D0AD7A3F01E54417B14AEC7BE7E5041AE47E1DAF11E5441D7A3706DD37E5041A4703DCA0A1F544114AE4781D57E5041000000A0021F5441
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000004519DD99C57E5041C7AFC8BDED1E5441EABDF578C57E50418D1BCACCED1E5441BB993270C57E50412614C9D0ED1E54411DE5DE66C57E504135FA09D5ED1E54410CA81C57C57E50417DC439DCED1E544141D71D4BC57E5041C131B2E1ED1E54419550E849C57E5041125A3FE2ED1E5441994ADA42C57E504156FA76E5ED1E54418F88743FC57E504131A003E7ED1E54419D4D8332C57E5041BE9AEAECED1E5441D70B70FDC47E5041A34D1F05EE1E544135E10977C07E50414B5BD8A3F01E544119FDAEC7BE7E5041971DE2DAF11E5441602B9732C17E5041F6044FC6F41E5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>677291 - 3181618
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000100000014000000C3F5284CA0305141A4703D8A0A9A5441E17A149E7C305141CDCCCC9C159A54413D0AD79383305141CDCCCC5C289A5441CDCCCCBC88305141295C8F42369A5441C3F5282C8D30514152B81E35429A54418FC2F59890305141295C8F923F9A5441CDCCCC9C96305141D7A3704D3B9A54415C8FC2D59E305141295C8F92369A544148E17A04A43051411F85EB11359A5441B81E85BBA830514148E17AD4329A544114AE4711AE30514114AE47A12F9A5441000000A0AF305141C3F5284C2E9A5441CDCCCC1CB3305141A4703DFA2A9A54417B14AED7B6305141D7A370CD259A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000600000024364CD1A63051418CE45FBD339A5441843583BBA8305141B1C97BD4329A544113EED544AA30514107C08FE7319A54417C8F84DF9B3051413E01BBE90B9A544153AC5C3898305141FF78EF0B0D9A544124364CD1A63051418CE45FBD339A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>677360 - 251141
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000020000002B000000C3F528BC862A514148E17A24D79854415C8FC2A5822A5141713D0A47D598544185EB5158822A5141E17A141ED198544152B81E858C2A5141295C8F92D1985441A4703D6A912A51410AD7A3C0D19854411F85EB21992A51411F85EBD1CF985441E17A146E9A2A5141CDCCCCFCCF985441CDCCCC2C9A2A514166666616D1985441000000909D2A5141A4703D0AD2985441A4703D5A9E2A51411F85EBE1D298544152B81E75A12A5141666666A6D2985441333333B3A02A5141B81E856BD098544152B81EB59E2A51410AD7A330CE9854415C8FC2459D2A51411F85EBE1CC985441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000027000000AE47E19A722A5141D7A370DDCE985441576663B47A2A51419EF6EDB9D298544114AE4751852A5141B81E859BD89854414BB7FC81912A5141F47360A9DD98544185468B14962A51410D5C3504DF98544185EB5148962A514114AE4711DF985441A585AAB2962A5141371EA88ADD985441D8BEFC3C982A5141D61C2296D7985441333333C3992A51418FC2F548D298544148E17A94942A5141D7A3701DDB985441666666868E2A5141C3F5289CD99854418FC2F5588D2A5141AE47E1FAD5985441C3F528BC862A514148E17A24D79854415C8FC2A5822A5141713D0A47D5985441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956719 - 418534
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000027000000D4035606B6335141445D89A4971F55414E7081BEB43351415255C4549E1F55418F515EF1B3335141055E2E84A21F5541B81E85DBB2335141F6285C2FA81F554151DDEA47B13351412D3BD169B01F5541641819C0B03351412871AD2EB31F55415080C1F4AF33514168C0F253B71F554139F14C6FAF3351416149780CBA1F554161A2C0F3AE335141D4BE8B75BD1F55416C250CB6AE3351414417B697C01F5541728D7168B633514138C11BA3C21F5541A7E1A716BF335141E3AB2609C51F55414EC98028C5335141D41C87B6C61F554109630662D13351416D5B7B17CA1F5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D7A370BDA433514152B81E35BF1F554148E17A44A1335141F6285CDFD21F5541AE47E15AA63351411F85EBD1D31F554148E17A54A93351418FC2F538D41F554152B81E65AA335141E17A145ED41F5541000000A0AE33514166666646BE1F5541B81E85DBB2335141F6285C2FA81F55413D0AD743B7335141A4703D2A911F5541000000C0B6335141000000708D1F5541C3F528DCB33351411F85EBF18A1F5541CDCCCCACAA335141713D0A37911F55417B14AE67A933514185EB51C8A41F5541D7A370BDA433514152B81E35BF1F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956719 - 1390064
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000027000000D4035606B6335141445D89A4971F55414E7081BEB43351415255C4549E1F55418F515EF1B3335141055E2E84A21F5541B81E85DBB2335141F6285C2FA81F554151DDEA47B13351412D3BD169B01F5541641819C0B03351412871AD2EB31F55415080C1F4AF33514168C0F253B71F554139F14C6FAF3351416149780CBA1F554161A2C0F3AE335141D4BE8B75BD1F55416C250CB6AE3351414417B697C01F5541728D7168B633514138C11BA3C21F5541A7E1A716BF335141E3AB2609C51F55414EC98028C5335141D41C87B6C61F554109630662D13351416D5B7B17CA1F5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000D7A370BDA433514152B81E35BF1F554148E17A44A1335141F6285CDFD21F5541AE47E15AA63351411F85EBD1D31F554148E17A54A93351418FC2F538D41F554152B81E65AA335141E17A145ED41F5541000000A0AE33514166666646BE1F5541B81E85DBB2335141F6285C2FA81F55413D0AD743B7335141A4703D2A911F5541000000C0B6335141000000708D1F5541C3F528DCB33351411F85EBF18A1F5541CDCCCCACAA335141713D0A37911F55417B14AE67A933514185EB51C8A41F5541D7A370BDA433514152B81E35BF1F5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>956719 - 4106005
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+01060000000100000001030000000100000027000000D4035606B6335141445D89A4971F55414E7081BEB43351415255C4549E1F55418F515EF1B3335141055E2E84A21F5541B81E85DBB2335141F6285C2FA81F554151DDEA47B13351412D3BD169B01F5541641819C0B03351412871AD2EB31F55415080C1F4AF33514168C0F253B71F554139F14C6FAF3351416149780CBA1F554161A2C0F3AE335141D4BE8B75BD1F55416C250CB6AE3351414417B697C01F5541728D7168B633514138C11BA3C21F5541A7E1A716BF335141E3AB2609C51F55414EC98028C5335141D41C87B6C61F554109630662D13351416D5B7B17CA1F5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001200000048E17A44A1335141F6285CDFD21F5541AE47E15AA63351411F85EBD1D31F554148E17A54A93351418FC2F538D41F554152B81E65AA335141E17A145ED41F5541000000A0AE33514166666646BE1F5541B81E85DBB2335141F6285C2FA81F55413D0AD743B7335141A4703D2A911F5541000000C0B6335141000000708D1F5541C3F528DCB33351411F85EBF18A1F5541CDCCCCACAA335141713D0A37911F55417B14AE67A933514185EB51C8A41F5541295C8FA29B335141000000F0A41F5541D7A370ED9833514114AE4701AA1F55417B14AE4798335141B81E856BA91F5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>678877 - 96666
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002600000014AE4751E84351418FC2F5F89C865441F6285C7FE74351413D0AD7C39B8654419A999989E643514114AE4701A7865441EC51B86EE64351410AD7A340A88654418FC2F5E8E2435141AE47E18AD186544185EB5198E043514114AE47B1EC865441295C8F82E04351410AD7A3B0ED86544114AE47F1C74351411F85EB41EB865441AE47E10AC5435141A4703D2AEC865441333333D3C3435141AE47E1FAED865441EC51B8DEC2435141C3F528BC04875441CDCCCCACC84351410AD7A39004875441666666B6C94351413D0AD7C308875441713D0A07D243514152B81E2506875441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000290000006A1B62D9164451415F36C2EDCE865441940733DA164451418C6326EBCE86544176E9D99F164451416345CDB0CE865441333333731744514114AE4701CD865441A68E3ED21644514199851318CB8654412D51AA9016445141706C68E4CA865441A73FDA6C14445141CCA4BA53C9865441E875191A12445141A9A5B7A0C78654410B84B89E10445141D4684BAFC6865441611BEF790F4451414E3C4EBBC58654410B45AB5F0F44514174DADFA1C586544148E17A140F445141AE47E16AC58654415C8FC265094451418FC2F5E8BF865441EF1737DE0844514173558DABBF865441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>678877 - 296906
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+0106000000010000000103000000010000002600000014AE4751E84351418FC2F5F89C865441F6285C7FE74351413D0AD7C39B8654419A999989E643514114AE4701A7865441EC51B86EE64351410AD7A340A88654418FC2F5E8E2435141AE47E18AD186544185EB5198E043514114AE47B1EC865441295C8F82E04351410AD7A3B0ED86544114AE47F1C74351411F85EB41EB865441AE47E10AC5435141A4703D2AEC865441333333D3C3435141AE47E1FAED865441EC51B8DEC2435141C3F528BC04875441CDCCCCACC84351410AD7A39004875441666666B6C94351413D0AD7C308875441713D0A07D243514152B81E2506875441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000290000006A1B62D9164451415F36C2EDCE865441940733DA164451418C6326EBCE86544176E9D99F164451416345CDB0CE865441333333731744514114AE4701CD865441A68E3ED21644514199851318CB8654412D51AA9016445141706C68E4CA865441A73FDA6C14445141CCA4BA53C9865441E875191A12445141A9A5B7A0C78654410B84B89E10445141D4684BAFC6865441611BEF790F4451414E3C4EBBC58654410B45AB5F0F44514174DADFA1C586544148E17A140F445141AE47E16AC58654415C8FC265094451418FC2F5E8BF865441EF1737DE0844514173558DABBF865441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ </run>
+
diff --git a/testxml/stmlf/stmlf-cases-20061020_int.xml b/testxml/stmlf/stmlf-cases-20061020_int.xml
new file mode 100644
index 0000000..3d9812b
--- /dev/null
+++ b/testxml/stmlf/stmlf-cases-20061020_int.xml
@@ -0,0 +1,337 @@
+  <!--
+ The test cases have been taken from the robustness improvement project
+ funded by the Bavarian State Ministry of Agriculture and Forestry
+ (StMLF) and the State Survey of Bavaria (LVG). Written permission
+ to use the data for tests has been given by email on the 22 Nov 2006.
+ -->
+<run>
+ 	<desc>Overlay Robustness cases from StMLF (all handled by snapping)</desc>
+ 	<precisionModel type="FLOATING"/>
+ 	<geometryOperation>com.vividsolutions.jtstest.geomop.OverlayValidatedGeometryOperation</geometryOperation>
+
+ <case><desc>966094 - 2025063
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -12  </desc>
+<a>
+010600000001000000010300000001000000080000009CF43774FF0951412374234411E95441BF77617BFF095141190A467611E9544188E1D28E040A51410F26D5D00FE95441B63AEC27040A5141850B95540EE954417AE0F580030A51410B25BEB20CE95441F07D6BC4010A5141D66A6B2F05E9544100000010010A5141A4703D5A01E954419CF43774FF0951412374234411E95441
+</a>
+
+<b>
+0106000000010000000103000000010000001300000000000010010A5141A4703D5A01E9544152B81ED5010A5141A4703D8A05E95441EC51B86E020A5141295C8F8208E95441D7A370FD020A51419A9999690BE95441A4703DEA040A5141AE47E13A10E95441C3F528AC040A5141F6285C9F0FE95441295C8FE2080A514114AE477110E954419A999969080A5141666666260AE95441AE47E19A070A5141D7A3708D05E954419A9999E9060A514152B81E5501E95441E17A148E060A51413D0AD733FEE85441A4703D0A060A51413D0AD703FAE85441D7A3708D050A514152B81E85F6E854417B14AE17050A51417B14AE07F4E85441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>99455 - 3082006
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -9  </desc>
+<a>
+0106000000010000000103000000010000000F000000AAC4C227788350416D0791EFF11B54417780D7447783504110D8543CF11B54411DEDE0BE73835041BC6CD80CF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B54417B14AEC7718350419A999939F91B54410AD7A3F07183504133333343FA1B54413333334372835041CDCCCC5CFF1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C54410AD7A3D07783504166666656031C5441A4703D5A7883504133333303FF1B5441A4703D7A78835041333333A3F91B5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000140000007B14AE6777835041B81E853B061C544189F2BB14788350413D27166A011C5441C811B85A7883504136229AEEFE1B5441B1C92C6D78835041133EFFD4FB1B54411305C67478835041EBE17921F91B5441578C1E457883504175099BB6F41B54411BEC9428788350410EEA6211F21B5441D1FE145C778350411E22B04EF11B5441215B5F1877835041997FFD39F11B54410BB901D976835041C078A736F11B5441CE4C93C775835041AD3C4228F11B54417BB0BCC873835041594B5D0DF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275046 - 3361837
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -7  </desc>
+<a>
+0106000000010000000103000000010000000D000000B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54417B14AE97B92D51418FC2F5F87B3C5441713D0A17BA2D5141AE47E16A963C5441D7A3704DBA2D5141EC51B84EA23C5441AE47E1DABA2D514148E17A54BD3C5441E17A14DEBA2D51419A9999E9BD3C54418FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000008FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54415287AC97B92D514144D9A1F87B3C544136AB1718BA2D5141DA9CC4A5963C54414BDDE007B92D5141DFAC7E33953C5441028739EAB92D514174B3776DBD3C5441D8EE8E24BA2D5141CE1FC8B2BD3C54418FC2F5D8BA2D51411F85EB81BE3C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>984559 - 984543
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000020000004100000012DA570FC0A55041D2589D1DB8065541F71C3BAEC4A55041AFFA4E68B80655414692F7AFC7A55041A7EDE998B80655416F002CF8CEA550413532A10EB906554124282305D0A55041FB0C7E0AAF065541AC4D8A52D2A550410796841799065541D4F53E49D4A55041DD0AE1DA87065541F23CDF21D4A5504120F16BD687065541E9FB5D2BD4A55041C1D4E67B87065541341AD0ECC3A550411D50D33F85065541B8231ACAC3A55041C5E70C3B850655416A1791F2C3A55041296FF07D830655411EAC79F6C3A550418B0BF252830655417971A807BFA55041114AC6BD82065541 [...]
+</a>
+
+<b>
+01060000001200000001030000000100000033000000E7608D2561A55041ADC66F500F075541354F24CA5FA55041307794240D07554124EDC81A3EA55041168FC3750A0755410A05F86B3BA550415B8B817F04075541B62069B33EA5504119ACD748E7065541B62069B33EA550414C02EFA5CD0655416F52E8503CA55041F48DC796B7065541B62069B33EA55041575A27FEB606554175BB497D40A55041CBF3643CDF0655416F52E8503CA55041F63D919A03075541E487A9E43FA550412A0E33F80807554173A53B2746A550412A0E33F8080755414F37F57862A550417BDCB35A0B075541185145C562A55041F990E4700D075541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>982104 - 1320680
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000001000000028E1365521FD5041343426C820D2544159C8D3351CFD50415976C67A29D254410B8DFD8011FD5041C4DB59EE3FD254412E3CADFB0CFD50412506A86346D25441FDD9532F05FD5041EB3E4A994BD25441F697714AF8FC50417FF05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001000000028E1365521FD5041323426C820D2544154C8D3351CFD50415C76C67A29D25441098DFD8011FD5041C9DB59EE3FD254412E3CADFB0CFD50412406A86346D25441FDD9532F05FD5041E83E4A994BD25441F397714AF8FC504181F05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>720830 - 32827
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000900000085EB512855C550419A9999A9703955410000004055C550419A9999196A395541B81E853B43C55041AE47E1AA6D395541000000403DC55041B81E85BB6E395541295C8F022AC55041F6285CAF75395541295C8F722DC55041333333A3843955417B14AEB738C550418FC2F55882395541C3F5284C4DC55041333333137239554185EB512855C550419A9999A970395541
+</a>
+
+<b>
+0106000000010000000103000000010000000A0000009B74AFA82AC550419DA4F981783955411FF4C0C12AC5504165E17AE178395541DCDE5F772DC55041C7C238A2843955410E087AE22EC55041D3007158843955416AD06EF02DC55041C01F2D6E803955416D85C44F2EC55041C16D7D6B7B39554121826EA22DC55041206F787176395541656754762DC550412108017074395541E0698F022AC55041A0645CAF753955419B74AFA82AC550419DA4F98178395541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>11503 - 422581
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000600000085EB511885D95041295C8F62F58B54417B14AE8733D9504152B81E85E68B54413333336334D95041D7A3706DEE8B5441CDCCCCEC87D950419A9999A9FD8B54410AD7A32088D9504148E17AF4FB8B544185EB511885D95041295C8F62F58B5441
+</a>
+
+<b>
+010600000001000000010300000001000000080000000EBCBD6683D95041B3AF66D6FC8B54410CCCE3C083D950419081D7E6FC8B5441B067BACF83D9504133458CE9FC8B54410DDFC4E287D950415DEEFE9CFD8B5441C1AC0C1888D95041315BB61AFC8B54410193290685D9504126B26A64F58B5441FBD8957381D95041F05692B8F48B54410EBCBD6683D95041B3AF66D6FC8B5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>35309 - 21138
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000002D00000048E17AC43C32514148E17AB4782C5541E17A145E42325141D7A3703D7B2C5541295C8FF2443251418FC2F5D87A2C5541A4703D7A49325141666666D67B2C55413D0AD773533251418FC2F528822C55415C8FC255613251410AD7A3C0872C5541000000A06A3251410AD7A3808D2C55413D0AD7336C3251418FC2F578902C55415C8FC2556E325141C3F528BC8F2C5541000000706E3251415C8FC235982C5541D7A370DD70325141EC51B84E9C2C55413D0AD7237732514166666686A52C5541C3F5289C6C325141F6285CDFB62C5541F6285CCF6E325141A4703D8AB62C5541 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000011000000106B8EEE6832514161B65C748C2C5541778EF64C67325141CF0AFC58862C5541E8DCA88B61325141FEAB7FDF872C55415D2A447862325141068B7274882C55416A3C20E4623251411CE634B7882C5541557D4D9563325141808CDE24892C5541F02C873964325141610B848A892C554120FA216564325141AD3481A5892C5541971F8D1B65325141E76969168A2C5541D656643165325141BF11EE238A2C5541C6266B4E66325141398558D48A2C554115AEA39B66325141812724048B2C5541D0CE633867325141344329658B2C5541B7CC6354673251411FDB7D768B2C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>189022 - 7822
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+01060000000100000001030000000100000051000000333333F36FE650417B14AE27992C5541B81E85FB6AE65041D7A3704D9C2C55410000008061E65041713D0AD7A02C554114AE47D15BE650415C8FC235A32C554148E17AF457E650411F85EB11A52C55416666667656E650418FC2F5C8A52C5541B81E856B54E65041D7A3700DA72C55415C8FC2A557E6504100000020AD2C55413D0AD7535AE65041C3F5286CB12C554114AE47D15CE65041B81E851BB12C55410000008061E650419A999919AE2C55413333335369E650419A999959A92C5541CDCCCCDC6CE65041E17A14EEA72C5541D7A3700D70E6504166666646A62C5541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000004F9D43E684E650415AE8839B892C5541CB4447E684E65041FFCAC59B892C5541852155E684E65041DFB9BF9C892C554192BB5FE684E65041E5DF7E9D892C5541133B4FE784E65041EF303AA6892C5541C0050AEA84E65041781F10BC892C5541B17ABDEA84E65041E5B012C3892C5541DA8D61EB84E6504159707BC9892C5541DA8D61EB84E65041958A3ACC892C5541C5238E0685E6504189ACDAC98A2C55415E58D90D85E65041D2A4FBD68A2C55413A54801085E6504191D0C1DB8A2C5541307DDC1F85E65041010ECCF28A2C5541CC78813E85E65041D99CBA238B2C5541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>191097 - 2916437
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000065000000D7A370CDE662514133333383275B5441AE47E14AE7625141AE47E1BA255B54411F85EBB1E7625141D7A370CD255B544148E17A64EA6251418FC2F5281A5B544114AE47F1EB625141F6285C1F125B5441B81E85CBEF62514152B81EA5FF5A54411F85EBC1F162514100000080F75A5441E17A148EF262514152B81E25F45A5441E17A14FEF36251417B14AE77F05A544185EB51B8F7625141713D0AF7E95A5441AE47E19AFA62514114AE4761E55A54413D0AD763FC62514166666666E25A5441333333B3FF6251413D0AD773DD5A5441D7A3700D00635141666666E6DB5A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001200000068C7D3FA856251410925E3B0B95A5441B10394108B6251412A36E4E6B85A5441D66D2E429362514176D5ECB3B75A544110B2FA739A6251418AAF1EB4B65A54417105C6BEA46251410D14FE4DB55A544186B9883CB06251412CDB48CEB35A5441AE1D0350C5625141A4FAF81DB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>256271 - 367713
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 5  </desc>
+<a>
+0106000000010000000103000000010000001E0000003333331371C050410AD7A340502A54415C8FC2756CC05041CDCCCC8C502A5441713D0A2757C05041CDCCCCEC512A54413D0AD7333EC050418FC2F588532A54410AD7A34025C0504152B81E25552A54418FC2F5D813C05041713D0A27562A54416666667612C050419A999999522A544148E17A640EC050411F85EB31482A5441C3F528FC0CC0504133333303492A544148E17AC40BC050417B14AEB7492A5441000000D007C05041EC51B84E4B2A54415C8FC22501C05041F6285C2F4E2A5441295C8F32FABF5041E17A149E512A544148E17A44F9BF5041713D0A17522A5441 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000009000000713D0A2757C05041CDCCCCEC512A5441677A56726CC05041AD55058D502A5441146EC3B16BC05041F16159044E2A5441306B52721CC05041453D8A60532A5441088679DB16C05041486A9979542A5441F502C4F513C0504166605F25562A54410AD7A34025C0504152B81E25552A54413D0AD7333EC050418FC2F588532A5441713D0A2757C05041CDCCCCEC512A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275129 - 384120
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000200000001030000000100000009000000E17A146E8A2B5141B81E85FB8A3754418FC2F5788F2B51415C8FC2C58A375441AE47E1DA9A2B5141000000808A375441AE47E10A9C2B5141295C8F728A3754413D0AD7D3A12B5141AE47E1FA86375441A4703D3AA02B5141295C8F028737544114AE4721962B5141A4703D4A87375441713D0A778A2B51419A99998987375441E17A146E8A2B5141B81E85FB8A37544101030000000100000009000000C3F5283CB92B51419A9999D989375441EC51B82EB92B5141AE47E1BA8637544133333323A62B51417B14AEE78637544166666676A32B51413D0AD7F386375441333333 [...]
+</a>
+
+<b>
+01060000000100000001030000000100000007000000ABEA7DD0B02B5141547E90CE86375441D17118A9B02B514194AF78D586375441899E0EA3B02B5141FBCB70FE893754416B2DEBC4B02B514182FB9C008A375441C3F5283CB92B51419A9999D989375441EC51B82EB92B5141AE47E1BA86375441ABEA7DD0B02B5141547E90CE86375441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>275562 - 3361837
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+0106000000010000000103000000010000000E000000AE47E1DABA2D514148E17A54BD3C5441D7A3704DBA2D5141EC51B84EA23C5441713D0A17BA2D5141AE47E16A963C5441E17A149EB82D5141B81E85EB943C5441CDCCCC8CAB2D51413D0AD7A3873C544166666686A42D514100000080803C5441A4703D8A9B2D5141333333338A3C5441EC51B81E952D51419A9999B9903C5441E17A147E912D51419A999919943C54410AD7A3D0A52D5141F6285C5FAB3C5441EC51B83EB92D5141AE47E1AABC3C54418FC2F5D8BA2D51411F85EB81BE3C5441E17A14DEBA2D51419A9999E9BD3C5441AE47E1DABA2D514148E17A54BD3C5441
+</a>
+
+<b>
+0106000000010000000103000000010000000D0000008FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54415287AC97B92D514144D9A1F87B3C544136AB1718BA2D5141DA9CC4A5963C54414BDDE007B92D5141DFAC7E33953C5441028739EAB92D514174B3776DBD3C5441D8EE8E24BA2D5141CE1FC8B2BD3C54418FC2F5D8BA2D51411F85EB81BE3C5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>466188 - 3072591
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000A000000F6285C8F26A5504114AE47111D1F55419A9999C926A55041295C8FC21B1F5541C3F528AC0BA55041AE47E13AF81E554152B81EF5F6A45041000000C0D61E5541F6285C0FF5A45041EC51B88ED51E5541295C8FE2E7A45041C3F5285CD41E55418FC2F568E6A450417B14AE77D41E55411F85EB2101A5504152B81E55001F5541A4703D1A1CA550415C8FC2A5231F5541F6285C8F26A5504114AE47111D1F5541
+</a>
+
+<b>
+0106000000010000000103000000010000000800000081649D95F3A4504145CEA078D81E5541D85D39BAF4A45041D8E5536BD81E5541D0D78DD0F6A450412D5F379ED81E5541C5A26F08F7A450418E1238DFD61E5541A77AF94EF5A450419AF7B2B6D51E5541F270E2E5F4A450418941F38AD51E5541FA48048EF3A450417808B26BD51E554181649D95F3A4504145CEA078D81E5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>415163 - 3180189
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -5  </desc>
+<a>
+010600000001000000010300000001000000110000007B14AE5706C250419A9999A9F63E54413D0AD7C3DBC150418FC2F568F53E544148E17AE4DBC15041000000C0283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E54413D0AD7E306C25041B81E850BFB3E5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000600000020B8CE7FE1C15041DA0A7BF1283F5441BD752992DCC150417E633D060C3F5441FCF373D3DBC15041BA5A41B4FA3E5441AE91B8C6DBC15041122208F1F93E544148E17AE4DBC15041000000C0283F544120B8CE7FE1C15041DA0A7BF1283F5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>401167 - 3148390
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000010000000103000000010000000C0000003D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C29554152B81E3500625041713D0AE79C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541
+</a>
+
+<b>
+0106000000010000000103000000010000000500000013C6A342F86150410B730BFD9C2955411D116A24FA615041396A8855A0295541446AAD4D006250419CA2C5E69C29554152B81E3500625041713D0AE79C29554113C6A342F86150410B730BFD9C295541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>164313 - 164648
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000030000000103000000010000001700000052B81E05C937514185EB51681209554148E17A84C937514152B81E751209554166666676CC375141295C8FC212095541AC33776FCC3751415F8BDF4713095541EB20A09ECC3751413CD783B5120955415349DAA5CD3751414C9E9A421109554185EB5138CF37514148E17A740F095541CDCCCCCCD337514152B81EE5FF0855413D0AD793D5375141000000F0F808554185EB5188D5375141AE47E14AF508554185EB5108D237514166666606EC08554152B81EE5CF3751410AD7A340E40855415C8FC215CF3751410AD7A3D0DA0855417B14AEA7CD37514100000010D9085541 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000E000000EC51B82ECD3751410AD7A3001C09554166666666CC3751411F85EBD119095541EC51B8EECB375141AE47E11A18095541C3F528DCCB3751416666667616095541CDCCCC5CCC375141EC51B8AE1409554166666676CC375141295C8FC21209554148E17A84C937514152B81E751209554152B81E05C937514185EB51681209554133333313C93751419A9999A914095541F6285CAFC83751419A9999D91C095541D7A3708DCD375141F6285C6F1F095541B81E855BCE37514152B81EC51F0955411F85EBD1CD3751417B14AEB71D095541EC51B82ECD3751410AD7A3001C095541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>464026 - 6704
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -3  </desc>
+<a>
+0106000000010000000103000000010000000E000000A4703DEAC9F35041000000607AA35441A4703DAAE5F35041EC51B83E76A35441AE47E16AEAF350418FC2F58875A3544100000070E7F35041666666A661A35441C3F5289CE4F35041A4703DCA4EA35441666666A6E0F35041E17A145E34A35441EC51B88EDFF350415C8FC2152DA354415C8FC235CCF350410AD7A3D02FA354415C8FC245CDF35041F6285C7F37A354417B14AE97AEF350413D0AD7733CA3544166666646AEF35041B81E858B3CA3544148E17A04AFF35041295C8F8241A3544114AE47F1B7F35041CDCCCC0C7DA35441A4703DEAC9F35041000000607AA35441
+</a>
+
+<b>
+010600000001000000010300000001000000050000002957BC1AADF35041CAD27BBD34A3544126CEE97FAEF35041FF981A0C3EA35441DE66C3D9AFF35041923ED48B3DA3544120E0FAE1AEF3504180A4C27B34A354412957BC1AADF35041CAD27BBD34A35441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>469351 - 5219716
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+0106000000010000000103000000010000000A000000295C8FD220AB5041666666D6F52D5541B81E85CB20AB50417B14AE87F52D5541A4703D2AD1AA5041666666D6F42D554114AE4711DAAA50415C8FC2E5FB2D55413D0AD7C3E7AA5041C3F528BC072E554152B81E75F6AA50419A9999B90A2E55416666660603AB5041CDCCCCBC0E2E5541E17A14EE09AB504148E17A04112E5541AE47E19A1BAB5041C3F528FC102E5541295C8FD220AB5041666666D6F52D5541
+</a>
+
+<b>
+01060000000100000001030000000100000006000000295C8FD220AB5041666666D6F52D5541B81E85CB20AB50417B14AE87F52D5541437244AFFDAA504143908339F52D5541313017541FAB50414293A393FA2D554139DEBAD41FAB504162741EFFFA2D5541295C8FD220AB5041666666D6F52D5541
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>975328 - 1755529
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+01060000000100000001030000000100000011000000BF4C611B19EA5041C220B911FA80544125B95E2719EA50412EA0EBF0FA805441CCC5F0CF1CEA504173EE2094F98054412B1C1C981EEA5041560AE4E8F88054411CD0625429EA5041FF041818F5805441AF6A20242AEA5041CB1F42CEF48054419E13D1F62CEA5041560F3329F480544192481A222DEA50419BE2151EF48054410C53E54D2DEA5041E09E4F15F48054416004EA6835EA50419217633BF28054410CC7166031EA50410A0AECBCDC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA805441B0A9541919EA5041D11DE9B5ED805441 [...]
+</a>
+
+<b>
+0106000000010000000103000000020000003A00000088EE881719EA5041DA0E337AED805441B0A9541919EA5041D11DE9B5ED805441A1095AE818EA5041B2DF2CEFED805441E86A4CC218EA5041AA82F034EE805441C14C611B19EA5041BE20B911FA80544129B95E2719EA50412CA0EBF0FA8054418124492219EA5041CCF09BF5FA8054418F2B01C419EA50410A453C8A02815441B6383AF31AEA50418B90B654098154415C4297D11BEA504101B861E20C815441595FAE6C1EEA5041FEB0A9400C8154412E008D0528EA504138FCC7840981544152B81E5528EA504148E17A44098154417B14AE6737EA504114AE477104815441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>525923 - 45230
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+010600000001000000010300000001000000310000006666667675C950413D0AD723FC2E5441C3F528FC73C9504148E17A04FE2E5441C3F5281C73C9504133333393FF2E5441CDCCCC9C76C95041295C8F02082F54415C8FC24577C950419A999999092F54410000005078C9504152B81E95092F5441AE47E1AA7BC95041F6285C5F092F54410000008086C9504148E17A64082F5441A4703D2A87C95041E17A14BE082F5441CDCCCCAC86C950410AD7A320092F5441AE47E1AA7BC95041000000000A2F54411F85EB1178C95041295C8F620A2F54417B14AEE777C95041EC51B81E0B2F54415C8FC22578C9504148E17AB40B2F5441 [...]
+</a>
+
+<b>
+010600000001000000010300000001000000060000002EADC44C73C950417962AD3CFF2E544148A8F87175C95041EF284218FC2E5441934291FB73C9504179222545F82E54418DC0104D6FC95041E26A30C6F52E5441B3C1B42471C95041AA411ECCFA2E54412EADC44C73C950417962AD3CFF2E5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>532351 - 3180577
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -2  </desc>
+<a>
+0106000000050000000103000000010000000F0000007B14AE47B91E51417B14AE27B47A5441E17A145EB71E5141C3F528ECB47A544114AE4751B61E514152B81EF5B57A5441D7A370ADB31E514152B81E05B67A5441F6285C1FAD1E5141B81E85ABB77A5441333333B3B61E5141CDCCCCFCB87A54411F85EB11B91E514114AE4791B87A544166666676BA1E51418FC2F5C8B77A54417B14AE67BB1E5141CDCCCCACB67A5441F6285C0FBC1E5141AE47E1CAB57A5441AE47E1BABB1E514152B81E95B57A544114AE47F1BB1E5141D7A3700DB47A5441AE47E1BABB1E5141D7A3709DB37A54418FC2F5B8BA1E51410AD7A3A0B37A5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000000D000000665A6437A21E514171778B93AB7A544159DB026DA21E51410F537DD6AB7A5441AB6A7D34AF1E514169C45674AB7A5441F2CD22B5B01E5141035575B6A97A54415139B88CB91E514148BBE42FAA7A5441E6B49FA5C11E514107F7D6E7A87A5441330EEEBAC01E5141ED07BD1DA87A54418E7E8C1FBC1E51417676D7E4A77A5441DA182420B81E51411EF24C47A77A54410B5B86FCB41E514148D230AFA77A54415F0943B7AF1E5141DDA19D40A77A5441C163F0C0A21E51410478C3CFA77A5441665A6437A21E514171778B93AB7A5441
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>587497 - 409926
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 2  </desc>
+<a>
+0106000000010000000103000000010000000A00000052B81E457B3C51410AD7A3F04967544148E17A047A3C51416666665626675441A4703D8A773C5141A4703D1A2567544152B81E95733C51413D0AD79321675441000000F0743C5141E17A14DE46675441AE47E19A753C5141B81E851B5967544152B81E35783C5141AE47E1DA58675441713D0AC7783C51419A9999A96B67544152B81E857C3C5141AE47E18A6D67544152B81E457B3C51410AD7A3F049675441
+</a>
+
+<b>
+01060000000100000001030000000100000014000000C2DD97B2733C514113B1F3BE24675441FECDBCF2703C514192B37A8E21675441491ADF3F6F3C5141B86C9815206754418F63E1226F3C51411F6C98152067544157AEF33A6E3C514198DCB3B91E675441537C342F6D3C514120D49C221E675441458C0A196D3C5141D594C10B1E67544153A4A14F683C5141E51737911D67544168F79A09693C51411FD40A1741675441A1F938B6693C5141D133374A6367544110AD838A6F3C514179EC79676367544101E6B76D6F3C51419D8376C7636754410199958B6F3C51412B60D8ED6667544152B81EE56F3C5141B81E851B67675441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>589978 - 39794
+abs( area(A) - difference(A,B) - intersection(A,B) ) = 3  </desc>
+<a>
+01060000000100000001030000000200000016000000AE47E1EAED9C50411F85EBF1E37B5441B81E85FBF79C5041B81E85DBE17B5441713D0AB7059D50417B14AE47E07B54411F85EB110C9D504148E17A24E07B54418FC2F598209D5041713D0AA7E17B544148E17A44239D50418FC2F5A8DB7B5441C3F528EC259D504185EB5198D77B54413D0AD7C32B9D5041B81E855BD17B544185EB51D8309D5041CDCCCC0CCC7B5441A4703D0A309D50410AD7A320CC7B5441EC51B85E209D5041AE47E1FACE7B5441333333431A9D5041713D0A17D07B54418FC2F538089D5041D7A3705DD27B54415C8FC255FF9C5041A4703D2AD47B5441 [...]
+</a>
+
+<b>
+0106000000010000000103000000010000001C0000001DDB3460E49C5041C2798DDDE87B5441DD941617ED9C50411F0292D8E57B54411E67F240ED9C50412E1782C8E57B54413E1C4A86F19C5041F950DAC2E47B544100583A97F49C50415EFBD202E47B544102D115CEF49C5041BF1FE0F9E37B544110ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B5441DACEA3E1FD9C504166C9D77EE27B544174047CECFD9C504110EA127DE27B54413E3B4637059D5041016CC096E17B54410A1E724E069D504143653E74E17B5441FCACB282099D5041AAABD870E17B5441691C90890C9D50414B8B2156E17B5441 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+ <case><desc>671968 - 1396084
+abs( area(A) - difference(A,B) - intersection(A,B) ) = -4  </desc>
+<a>
+01060000000100000001030000000200000043000000773AEE5C36C35041952DEA16AA15554101B3DB5336C350412E0E5D19AA15554118980D6736C35041ED2F7355AA15554106864A7936C35041698089A0AA155541C6BE947C36C3504196DEE3AFAA1555414785F57A36C350416A659EB0AA155541105DEE8936C35041364D56EDAA1555411A34929A36C35041D9BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE4155541 [...]
+</a>
+
+<b>
+01060000000100000001030000000200000041000000F8994F264CC35041534848BC8C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A155541 [...]
+</b>
+<test><op name="intersection" arg1='A' arg2='B'>GEOMETRYCOLLECTION EMPTY</op></test>
+</case>
+
+
+</run>
diff --git a/test/validate/TestRelateAA-big.xml b/testxml/validate/TestRelateAA-big.xml
similarity index 100%
rename from test/validate/TestRelateAA-big.xml
rename to testxml/validate/TestRelateAA-big.xml
diff --git a/test/validate/TestRelateAA.xml b/testxml/validate/TestRelateAA.xml
similarity index 94%
rename from test/validate/TestRelateAA.xml
rename to testxml/validate/TestRelateAA.xml
index 4e6a3f1..82c5999 100644
--- a/test/validate/TestRelateAA.xml
+++ b/testxml/validate/TestRelateAA.xml
@@ -182,36 +182,6 @@
 </case>
 
 <case>
-<desc>A/A-3-1-8: the closing point of a polygon touching the boundary of another polygon where the closing point touching the boundary at a vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}]</desc>
-  <a>
-    POLYGON(
-      (160 200, 210 70, 120 70, 160 200))
-  </a>
-  <b>
-    POLYGON(
-      (160 200, 260 40, 70 40, 160 200, 20 20, 310 20, 160 200))
-  </b>
-  <test>
-    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
-  </test>
-</case>
-
-<case>
-<desc>A/A-3-1-9: the closing point of a polygon touching the boundary of another polygon where the closing point intersecting the boundary at a non-vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}]</desc>
-  <a>
-    POLYGON(
-      (110 140, 200 70, 200 160, 110 140))
-  </a>
-  <b>
-    POLYGON(
-      (110 140, 110 50, 60 50, 60 90, 160 190, 20 110, 20 20, 200 20, 110 140))
-  </b>
-  <test>
-    <op name="relate" arg1="A" arg2="B" arg3="FF2F01212">true</op>
-  </test>
-</case>
-
-<case>
 <desc>A/A-3-2-1: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}]</desc>
   <a>
     POLYGON(
diff --git a/test/validate/TestRelateAC.xml b/testxml/validate/TestRelateAC.xml
similarity index 100%
rename from test/validate/TestRelateAC.xml
rename to testxml/validate/TestRelateAC.xml
diff --git a/test/validate/TestRelateLA.xml b/testxml/validate/TestRelateLA.xml
similarity index 100%
rename from test/validate/TestRelateLA.xml
rename to testxml/validate/TestRelateLA.xml
diff --git a/testxml/validate/TestRelateLC.xml b/testxml/validate/TestRelateLC.xml
new file mode 100644
index 0000000..73f3d5d
--- /dev/null
+++ b/testxml/validate/TestRelateLC.xml
@@ -0,0 +1,37 @@
+<run>
+<precisionModel type="FLOATING"/>
+
+<case>
+<desc>LC - topographically equal with no boundary</desc>
+  <a>
+    LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0)
+  </a>
+  <b>
+    MULTILINESTRING(
+      (0 0, 0 50), 
+      (0 50, 50 50), 
+      (50 50, 50 0), 
+      (50 0, 0 0))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="1FFFFFFF2">true</op>
+  </test>
+</case>
+
+<case>
+<desc>LC - equal with boundary intersection</desc>
+  <a>
+    LINESTRING(0 0, 60 0, 60 60, 60 0, 120 0)
+  </a>
+  <b>
+    MULTILINESTRING(
+      (0 0, 60 0), 
+      (60 0, 120 0), 
+      (60 0, 60 60))
+  </b>
+  <test>
+    <op name="relate" arg1="A" arg2="B" arg3="10FF0FFF2">true</op>
+  </test>
+</case>
+
+</run>
diff --git a/test/validate/TestRelateLL.xml b/testxml/validate/TestRelateLL.xml
similarity index 100%
rename from test/validate/TestRelateLL.xml
rename to testxml/validate/TestRelateLL.xml
diff --git a/test/validate/TestRelatePA.xml b/testxml/validate/TestRelatePA.xml
similarity index 88%
rename from test/validate/TestRelatePA.xml
rename to testxml/validate/TestRelatePA.xml
index dae0bfe..99482b6 100644
--- a/test/validate/TestRelatePA.xml
+++ b/testxml/validate/TestRelatePA.xml
@@ -16,7 +16,7 @@
 </case>
 
 <case>
-<desc>P/A-2-2: a point outside a converx polygon [dim(0){A.P.Int = B.A.Ext}]</desc>
+<desc>P/A-2-2: a point outside a convex polygon [dim(0){A.P.Int = B.A.Ext}]</desc>
   <a>
     POINT(70 170)
   </a>
@@ -64,7 +64,7 @@
   </a>
   <b>
     POLYGON(
-      (20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150))
+      (20 150, 90 150, 40 50, 160 50, 110 150, 180 150, 180 20, 20 20, 20 150))
   </b>
   <test>
     <op name="relate" arg1="A" arg2="B" arg3="FF0FFF212">true</op>
@@ -114,20 +114,6 @@
 </case>
 
 <case>
-<desc>P/A-3-4: a point on the touching point of boudary [dim(0){A.P.Int = B.A.Bdy.TP}]</desc>
-  <a>
-    POINT(100 150)
-  </a>
-  <b>
-    POLYGON(
-      (20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150))
-  </b>
-  <test>
-    <op name="relate" arg1="A" arg2="B" arg3="F0FFFF212">true</op>
-  </test>
-</case>
-
-<case>
 <desc>P/A-5: a point on the interior of a polygon [dim(0){A.P.Int = B.A.Int}]</desc>
   <a>
     POINT(100 80)
@@ -311,7 +297,7 @@
 <case>
 <desc>mP/A-2: 3 points outside a polygon [dim(0){A.2P.Int = B.A.Ext}]</desc>
   <a>
-    MULTIPOINT(20 80, 110 160, 20 160)
+    MULTIPOINT((20 80), (110 160), (20 160))
   </a>
   <b>
     POLYGON(
@@ -325,7 +311,7 @@
 <case>
 <desc>mP/A-3-1: one of 3 points on the closing point of the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}]</desc>
   <a>
-    MULTIPOINT(20 80, 60 120, 20 160)
+    MULTIPOINT((20 80), (60 120), (20 160))
   </a>
   <b>
     POLYGON(
@@ -339,7 +325,7 @@
 <case>
 <desc>mP/A-3-2: one of 3 points on the boundary of a polygon at a non-vertex [dim(0){A.3P3 = B.A.Bdy.NV}]</desc>
   <a>
-    MULTIPOINT(10 80, 110 170, 110 120)
+    MULTIPOINT((10 80), (110 170), (110 120))
   </a>
   <b>
     POLYGON(
@@ -353,7 +339,7 @@
 <case>
 <desc>mP/A-3-3: one of 3 points on the boundary of a polygon at a vertex [dim(0){A.3P1.Int = B.A.Bdy.V}]</desc>
   <a>
-    MULTIPOINT(10 80, 110 170, 160 120)
+    MULTIPOINT((10 80), (110 170), (160 120))
   </a>
   <b>
     POLYGON(
@@ -367,7 +353,7 @@
 <case>
 <desc>mP/A-3-4: 3 of the 5 points on the boundary of a polygon [dim(0){A.5P2.Int = B.A.Bdy.CP}, dim(0){A.5P3.Int = B.A.Bdy.NV}, dim(0){A.5P4.Int = B.A.Bdy.V}]</desc>
   <a>
-    MULTIPOINT(20 120, 60 120, 110 120, 160 120, 200 120)
+    MULTIPOINT((20 120), (60 120), (110 120), (160 120), (200 120))
   </a>
   <b>
     POLYGON(
@@ -381,7 +367,7 @@
 <case>
 <desc>mP/A-3-5: all 3 points on the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Bdy.V}]</desc>
   <a>
-    MULTIPOINT(60 120, 110 120, 160 120)
+    MULTIPOINT((60 120), (110 120), (160 120))
   </a>
   <b>
     POLYGON(
@@ -395,7 +381,7 @@
 <case>
 <desc>mP/A-3-6: all 4 points on the boundary of a polygon [dim(0){A.4P = B.A.Bdy}]</desc>
   <a>
-    MULTIPOINT(60 120, 160 120, 160 40, 60 40)
+    MULTIPOINT((60 120), (160 120), (160 40), (60 40))
   </a>
   <b>
     POLYGON(
@@ -409,7 +395,7 @@
 <case>
 <desc>mP/A-4-1: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.CP}, dim(0){A.3P3.Int = B.A.Int}]</desc>
   <a>
-    MULTIPOINT(20 150, 60 120, 110 80)
+    MULTIPOINT((20 150), (60 120), (110 80))
   </a>
   <b>
     POLYGON(
@@ -423,7 +409,7 @@
 <case>
 <desc>mP/A-4-2: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.V}, dim(0){A.3P3.Int = B.A.Int}]</desc>
   <a>
-    MULTIPOINT(110 80, 160 120, 200 160)
+    MULTIPOINT((110 80), (160 120), (200 160))
   </a>
   <b>
     POLYGON(
@@ -437,7 +423,7 @@
 <case>
 <desc>mP/A-4-3: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Int}]</desc>
   <a>
-    MULTIPOINT(110 80, 110 120, 110 160)
+    MULTIPOINT((110 80), (110 120), (110 160))
   </a>
   <b>
     POLYGON(
@@ -451,7 +437,7 @@
 <case>
 <desc>mP/A-4-4: 1 point outside a polygon, 1 point inside [dim(0){A.2P1.Int = B.A.Ext}, dim(0){A.2P2.Int = B.A.Int}]</desc>
   <a>
-    MULTIPOINT(110 170, 110 80)
+    MULTIPOINT((110 170), (110 80))
   </a>
   <b>
     POLYGON(
@@ -465,7 +451,7 @@
 <case>
 <desc>mP/A-4-5: 1 point outside a polygon, 2 points on the boundary and 1 point inside [dim(0){A.4P1.Int = B.A.Ext}, dim(0){A.4P2.Int = B.A.Bdy.CP}, dim(0){A.4P3.Int = B.A.Bdy.V}, dim(0){A.4P4.Int = B.A.Int}]</desc>
   <a>
-    MULTIPOINT(60 120, 160 120, 110 80, 110 170)
+    MULTIPOINT((60 120), (160 120), (110 80), (110 170))
   </a>
   <b>
     POLYGON(
@@ -479,7 +465,7 @@
 <case>
 <desc>mP/A-5-1: 2 points within a polygon [dim(0){A.2P.Int = B.A.Int]</desc>
   <a>
-    MULTIPOINT(90 80, 130 80)
+    MULTIPOINT((90 80), (130 80))
   </a>
   <b>
     POLYGON(
@@ -493,7 +479,7 @@
 <case>
 <desc>mP/A-5-2: 1 point on the boundary and 1 point inside a polygon [dim(0){A.2P1.Int = B.A.Bdy.CP}, dim(0){A.2P2.Int = B.A.Int}]</desc>
   <a>
-    MULTIPOINT(60 120, 160 120, 110 80)
+    MULTIPOINT((60 120), (160 120), (110 80))
   </a>
   <b>
     POLYGON(
@@ -507,7 +493,7 @@
 <case>
 <desc>mP/Ah-2-1: 3 points outside a polygon [dim(0){A.3P.Int = B.Ah.Ext}]</desc>
   <a>
-    MULTIPOINT(40 170, 40 90, 130 170)
+    MULTIPOINT((40 170), (40 90), (130 170))
   </a>
   <b>
     POLYGON(
@@ -522,7 +508,7 @@
 <case>
 <desc>mP/Ah-2-2: 2 points outside a polygon and 1 point inside the hole of the polygon [dim(0){A.3P1.Int = B.Ah.Ext}, dim(0){A.3P2.Int = B.Ah.Ext}, dim(0){A.3P3.Int = B.Ah.Ext.h}]</desc>
   <a>
-    MULTIPOINT(90 170, 280 170, 190 90)
+    MULTIPOINT((90 170), (280 170), (190 90))
   </a>
   <b>
     POLYGON(
@@ -537,7 +523,7 @@
 <case>
 <desc>mP/Ah-2-3: all 3 points in polygon's hole [dim(0){A.3P.Int = B.Ah.Ext.h}]</desc>
   <a>
-    MULTIPOINT(190 110, 150 70, 230 70)
+    MULTIPOINT((190 110), (150 70), (230 70))
   </a>
   <b>
     POLYGON(
diff --git a/test/validate/TestRelatePL.xml b/testxml/validate/TestRelatePL.xml
similarity index 94%
rename from test/validate/TestRelatePL.xml
rename to testxml/validate/TestRelatePL.xml
index b732216..66dc6ae 100644
--- a/test/validate/TestRelatePL.xml
+++ b/testxml/validate/TestRelatePL.xml
@@ -1075,7 +1075,7 @@
 <case>
 <desc>mP/L-2-1: MultiPoint and a line disjoint (points on one side of the line) [dim(0){A.3P.Int = B.L.Ext}]</desc>
   <a>
-    MULTIPOINT(50 250, 90 220, 130 190)
+    MULTIPOINT((50 250), (90 220), (130 190))
   </a>
   <b>
     LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
@@ -1088,7 +1088,7 @@
 <case>
 <desc>mP/L-2-2: MultiPoint and a line disjoint (points over the line but no intersection) [dim(0){A.3P.Int = B.L.Ext}]</desc>
   <a>
-    MULTIPOINT(180 180, 230 130, 280 80)
+    MULTIPOINT((180 180), (230 130), (280 80))
   </a>
   <b>
     LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
@@ -1101,7 +1101,7 @@
 <case>
 <desc>mP/L-3-1: one of the points intersecting the start point of a line [dim(0){A.3P2.Int = B.L.Bdy.SP}]</desc>
   <a>
-    MULTIPOINT(50 120, 90 80, 130 40)
+    MULTIPOINT((50 120), (90 80), (130 40))
   </a>
   <b>
     LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
@@ -1114,7 +1114,7 @@
 <case>
 <desc>mP/L-3-2: one of the points intersecting the end point of a line [dim(0){A.3P2 = B.L.Bdy.EP}]</desc>
   <a>
-    MULTIPOINT(300 280, 340 240, 380 200)
+    MULTIPOINT((300 280), (340 240), (380 200))
   </a>
   <b>
     LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
@@ -1127,7 +1127,7 @@
 <case>
 <desc>mP/L-4-1: one of the points intersecting the interior of a line at a non-vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.NV]</desc>
   <a>
-    MULTIPOINT(230 150, 260 120, 290 90)
+    MULTIPOINT((230 150), (260 120), (290 90))
   </a>
   <b>
     LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
@@ -1140,7 +1140,7 @@
 <case>
 <desc>mP/L-4-2: one of the points intersecting the interior of a line at a non-vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.NV]</desc>
   <a>
-    MULTIPOINT(200 190, 240 150, 270 110)
+    MULTIPOINT((200 190), (240 150), (270 110))
   </a>
   <b>
     LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
@@ -1153,7 +1153,7 @@
 <case>
 <desc>mP/L-4-3: one of the points intersecting the interior of a line at a vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.V]</desc>
   <a>
-    MULTIPOINT(160 150, 190 120, 220 90)
+    MULTIPOINT((160 150), (190 120), (220 90))
   </a>
   <b>
     LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
@@ -1166,7 +1166,7 @@
 <case>
 <desc>mP/L-4-4: one of the points intersecting the interior of a line at a vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.V]</desc>
   <a>
-    MULTIPOINT(120 190, 160 150, 200 110)
+    MULTIPOINT((120 190), (160 150), (200 110))
   </a>
   <b>
     LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
@@ -1179,7 +1179,7 @@
 <case>
 <desc>mP/L-5-1: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Bdy.EP}]</desc>
   <a>
-    MULTIPOINT(90 80, 160 150, 340 240)
+    MULTIPOINT((90 80), (160 150), (340 240))
   </a>
   <b>
     LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
@@ -1192,7 +1192,7 @@
 <case>
 <desc>mP/L-5-2: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}]</desc>
   <a>
-    MULTIPOINT(90 80, 160 150, 300 150)
+    MULTIPOINT((90 80), (160 150), (300 150))
   </a>
   <b>
     LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
@@ -1205,7 +1205,7 @@
 <case>
 <desc>mP/L-5-3: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}]</desc>
   <a>
-    MULTIPOINT(90 80, 160 150, 240 150)
+    MULTIPOINT((90 80), (160 150), (240 150))
   </a>
   <b>
     LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
@@ -1218,7 +1218,7 @@
 <case>
 <desc>mP/L-5-4: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}]</desc>
   <a>
-    MULTIPOINT(90 80, 130 120, 210 150)
+    MULTIPOINT((90 80), (130 120), (210 150))
   </a>
   <b>
     LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
@@ -1231,7 +1231,7 @@
 <case>
 <desc>mP/L-5-5: all the points on a line [dim(0){A.3P1.Int = B.L.Int.NV}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}]</desc>
   <a>
-    MULTIPOINT(130 120, 210 150, 340 200)
+    MULTIPOINT((130 120), (210 150), (340 200))
   </a>
   <b>
     LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
@@ -1244,7 +1244,7 @@
 <case>
 <desc>mP/L-5-6: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}]</desc>
   <a>
-    MULTIPOINT(160 150, 240 150, 340 210)
+    MULTIPOINT((160 150), (240 150), (340 210))
   </a>
   <b>
     LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
@@ -1257,7 +1257,7 @@
 <case>
 <desc>mP/L-5-7: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}]</desc>
   <a>
-    MULTIPOINT(160 150, 300 150, 340 150)
+    MULTIPOINT((160 150), (300 150), (340 150))
   </a>
   <b>
     LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
@@ -1270,7 +1270,7 @@
 <case>
 <desc>mP/L-5-8: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Bdy.EP}]</desc>
   <a>
-    MULTIPOINT(160 150, 240 150, 340 240)
+    MULTIPOINT((160 150), (240 150), (340 240))
   </a>
   <b>
     LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240)
diff --git a/test/validate/TestRelatePP.xml b/testxml/validate/TestRelatePP.xml
similarity index 72%
rename from test/validate/TestRelatePP.xml
rename to testxml/validate/TestRelatePP.xml
index 67b14e9..59fb9d3 100644
--- a/test/validate/TestRelatePP.xml
+++ b/testxml/validate/TestRelatePP.xml
@@ -33,7 +33,7 @@
     POINT(40 40)
   </a>
   <b>
-    MULTIPOINT(20 20, 80 80, 20 120)
+    MULTIPOINT((20 20), (80 80), (20 120))
   </b>
   <test>
     <op name="relate" arg1="A" arg2="B" arg3="FF0FFF0F2">true</op>
@@ -46,7 +46,7 @@
     POINT(20 20)
   </a>
   <b>
-    MULTIPOINT(20 20, 80 80, 20 120)
+    MULTIPOINT((20 20), (80 80), (20 120))
   </b>
   <test>
     <op name="relate" arg1="A" arg2="B" arg3="0FFFFF0F2">true</op>
@@ -56,10 +56,10 @@
 <case>
 <desc>mP/mP-1-1: same points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P2.Int = B.3P2.Int}, dim(0){A.3P3.Int = B.3P3.Int}]</desc>
   <a>
-    MULTIPOINT(40 40, 80 60, 120 100)
+    MULTIPOINT((40 40), (80 60), (120 100))
   </a>
   <b>
-    MULTIPOINT(40 40, 80 60, 120 100)
+    MULTIPOINT((40 40), (80 60), (120 100))
   </b>
   <test>
     <op name="relate" arg1="A" arg2="B" arg3="0FFFFFFF2">true</op>
@@ -69,10 +69,10 @@
 <case>
 <desc>mP/mP-1-2: same but different sequence of points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P1.Int = B.3P3.Int}, dim(0){A.3P3.Int = B.3P2.Int}]</desc>
   <a>
-    MULTIPOINT(40 40, 80 60, 120 100)
+    MULTIPOINT((40 40), (80 60), (120 100))
   </a>
   <b>
-    MULTIPOINT(40 40, 120 100, 80 60)
+    MULTIPOINT((40 40), (120 100), (80 60))
   </b>
   <test>
     <op name="relate" arg1="A" arg2="B" arg3="0FFFFFFF2">true</op>
@@ -82,10 +82,10 @@
 <case>
 <desc>mP/mP-2: different points [dim(0){A.4P.Int = B.4P.Ext}]</desc>
   <a>
-    MULTIPOINT(40 40, 60 100, 100 60, 120 120)
+    MULTIPOINT((40 40), (60 100), (100 60), (120 120))
   </a>
   <b>
-    MULTIPOINT(20 120, 60 60, 100 100, 140 40)
+    MULTIPOINT((20 120), (60 60), (100 100), (140 40))
   </b>
   <test>
     <op name="relate" arg1="A" arg2="B" arg3="FF0FFF0F2">true</op>
@@ -95,10 +95,10 @@
 <case>
 <desc>mP/mP-5-1: same points [dim(0){A.4P.Int = B.4P.Int}]</desc>
   <a>
-    MULTIPOINT(20 20, 80 70, 140 120, 200 170)
+    MULTIPOINT((20 20), (80 70), (140 120), (200 170))
   </a>
   <b>
-    MULTIPOINT(20 20, 80 70, 140 120, 200 170)
+    MULTIPOINT((20 20), (80 70), (140 120), (200 170))
   </b>
   <test>
     <op name="relate" arg1="A" arg2="B" arg3="0FFFFFFF2">true</op>
@@ -108,10 +108,10 @@
 <case>
 <desc>mP/mP-5-2: same points but different sequence [dim(0){A.4P.Int = B.4P.Int}]</desc>
   <a>
-    MULTIPOINT(20 20, 140 120, 80 70, 200 170)
+    MULTIPOINT((20 20), (140 120), (80 70), (200 170))
   </a>
   <b>
-    MULTIPOINT(80 70, 20 20, 200 170, 140 120)
+    MULTIPOINT((80 70), (20 20), (200 170), (140 120))
   </b>
   <test>
     <op name="relate" arg1="A" arg2="B" arg3="0FFFFFFF2">true</op>
@@ -121,10 +121,10 @@
 <case>
 <desc>mP/mP-5-3: some points same [dim(0){A.4P2.Int = B.2P1.Int}, dim(0){A.4P3.Int = B.2P2.Int}]</desc>
   <a>
-    MULTIPOINT(20 20, 80 70, 140 120, 200 170)
+    MULTIPOINT((20 20), (80 70), (140 120), (200 170))
   </a>
   <b>
-    MULTIPOINT(80 70, 140 120)
+    MULTIPOINT((80 70), (140 120))
   </b>
   <test>
     <op name="relate" arg1="A" arg2="B" arg3="0F0FFFFF2">true</op>
@@ -134,10 +134,10 @@
 <case>
 <desc>mP/mP-5-4: some points same, in a different sequence [dim(0){A.4P1.Int = B.2P2.Int}, dim(0){A.4P4.Int = B.2P1.Int}]</desc>
   <a>
-    MULTIPOINT(80 70, 20 20, 200 170, 140 120)
+    MULTIPOINT((80 70), (20 200), (200 170), (140 120))
   </a>
   <b>
-    MULTIPOINT(140 120, 80 70)
+    MULTIPOINT((140 120), (80 70))
   </b>
   <test>
     <op name="relate" arg1="A" arg2="B" arg3="0F0FFFFF2">true</op>
@@ -147,10 +147,10 @@
 <case>
 <desc>mP/mP-6-1: some points same, some different [dim(0){A.4P4.Int = B.3P2.Int}]</desc>
   <a>
-    MULTIPOINT(80 70, 20 20, 200 170, 140 120)
+    MULTIPOINT((80 70), (20 20), (200 170), (140 120))
   </a>
   <b>
-    MULTIPOINT(80 170, 140 120, 200 80)
+    MULTIPOINT((80 170), (140 120), (200 80))
   </b>
   <test>
     <op name="relate" arg1="A" arg2="B" arg3="0F0FFF0F2">true</op>
@@ -160,10 +160,10 @@
 <case>
 <desc>mP/mP-6-2: dim(0){A.4P1.Int = B.4P4.Int}, dim(0){A.4P4.Int = B.4P2.Int}</desc>
   <a>
-    MULTIPOINT(80 70, 20 20, 200 170, 140 120)
+    MULTIPOINT((80 70), (20 20), (200 170), (140 120))
   </a>
   <b>
-    MULTIPOINT(80 170, 140 120, 200 80, 80 70)
+    MULTIPOINT((80 170), (140 120), (200 80), (80 70))
   </b>
   <test>
     <op name="relate" arg1="A" arg2="B" arg3="0F0FFF0F2">true</op>

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/jts.git



More information about the Pkg-grass-devel mailing list